<SEC-DOCUMENT>0000851205-21-000005.txt : 20210211
<SEC-HEADER>0000851205-21-000005.hdr.sgml : 20210211
<ACCEPTANCE-DATETIME>20210211160711
ACCESSION NUMBER:		0000851205-21-000005
CONFORMED SUBMISSION TYPE:	10-K
PUBLIC DOCUMENT COUNT:		135
CONFORMED PERIOD OF REPORT:	20201231
FILED AS OF DATE:		20210211
DATE AS OF CHANGE:		20210211

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:		21619674

	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-20201231.htm
<DESCRIPTION>10-K
<TEXT>
<XBRL>
<?xml version="1.0" ?><!--XBRL Document Created with Wdesk from Workiva--><!--Copyright 2021 Workiva--><!--r:efc8e161-eaa0-41a1-b62b-bbec49e61a75,g:1ad2e941-41d2-4cfb-86c0-34f5fd33bff4,d:1a430d3f39e74769965c1cc9f7e66842--><html xmlns:xbrldi="http://xbrl.org/2006/xbrldi" xmlns="http://www.w3.org/1999/xhtml" xmlns:currency="http://xbrl.sec.gov/currency/2020-01-31" xmlns:srt="http://fasb.org/srt/2020-01-31" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:country="http://xbrl.sec.gov/country/2020-01-31" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:dei="http://xbrl.sec.gov/dei/2020-01-31" xmlns:ixt-sec="http://www.sec.gov/inlineXBRL/transformation/2015-08-31" xmlns:ixt="http://www.xbrl.org/inlineXBRL/transformation/2015-02-26" xmlns:us-gaap="http://fasb.org/us-gaap/2020-01-31" xmlns:cgnx="http://cognex.com/20201231" xmlns:ix="http://www.xbrl.org/2013/inlineXBRL" xml:lang="en-US"><head><meta http-equiv="Content-Type" content="text/html"/>


<title>cgnx-20201231</title></head><body><div style="display:none"><ix:header><ix:hidden><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:AmendmentFlag" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF8yLTEtMS0xLTA_049d0dd0-b08b-44e9-9299-dd255b91bb0c">false</ix:nonNumeric><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:DocumentFiscalYearFocus" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF80LTEtMS0xLTA_77daac8c-37b5-448e-9b7e-289ac2e5db29">2020</ix:nonNumeric><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:DocumentFiscalPeriodFocus" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF81LTEtMS0xLTA_24d8985e-4019-417c-aee3-3cd32280dfaa">FY</ix:nonNumeric><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:EntityCentralIndexKey" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF84LTEtMS0xLTA_4e1f7e9b-80ce-425a-a772-b5b6859c35a2">0000851205</ix:nonNumeric><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt:datemonthday" name="dei:CurrentFiscalYearEndDate" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF85LTEtMS0xLTA_b7b20165-eab2-40ea-bd1a-62c751611237">12/31</ix:nonNumeric><ix:nonFraction unitRef="shares" contextRef="i339b13469197477d94eadc65702c8699_I20210131" decimals="0" format="ixt:numdotdecimal" name="dei:EntityCommonStockSharesOutstanding" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF8xNy0yLTEtMS0w_7f626ba7-73ed-4201-a6c2-959e4bd166aa">176,028,184</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i1e5c63c6777548228466750a07807abe_I20200628" decimals="0" format="ixt:numdotdecimal" name="dei:EntityPublicFloat" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF8xOC0zLTEtMS0w_377ce1a4-4606-4958-8c25-295b68f23f1c">9,792,441,959</ix:nonFraction><ix:footnote id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83MC9mcmFnOmRmNzE1YWU1YzgzZTRkYjU4NmI0MDBjZWUwZjFmZWJhL3RleHRyZWdpb246ZGY3MTVhZTVjODNlNGRiNTg2YjQwMGNlZTBmMWZlYmFfMTc2_57fc51a2-a860-4939-bb07-1cb794b56f77" footnoteRole="http://www.xbrl.org/2003/role/footnote"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Prior period results have been adjusted to reflect the two-for-one stock split effected in the form of a stock dividend which occurred in the fourth quarter of 2017.</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:120%">2 </span></div></ix:footnote><ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMS0xLTEtMS0w_4cfd1d40-5b79-4261-b32d-1cfe4f080f60">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMS0yLTEtMS0w_209c0f18-436d-43cc-ade3-79df510fe9fc">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMS0zLTEtMS0w_6749c586-9077-40b6-b736-3c224db8097f">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMi0xLTEtMS0w_8e8ccadc-a8a8-43cd-bf25-d569baf562cd">981</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMi0yLTEtMS0w_902c69d0-c0cb-4ade-beac-7a92b32f9d13">515</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMi0zLTEtMS0w_cec1392c-5191-4d16-b9d0-822345e1069c">188</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMy0xLTEtMS0w_e7936057-2167-4a99-806b-021cbe133aba">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMy0yLTEtMS0w_837c3cd8-d2b3-4e78-8bd9-e1ffdc3b1e4a">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMy0zLTEtMS0w_472a82fb-15e9-46bf-8728-c0e3b8b5045d">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMS0xLTEtMS0w_bbcc1240-5030-4e5d-b1a1-032a0ce32aca">831</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMS0yLTEtMS0w_e9bfccf2-e344-4be0-aaeb-f9860fd88aa2">530</ix:nonFraction><ix:nonFraction unitRef="usdPerShare" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="INF" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMi0xLTEtMS0w_ec5636a0-79a6-4a90-b863-04622d3663f1">0.01</ix:nonFraction><ix:nonFraction unitRef="usdPerShare" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="INF" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMi0yLTEtMS0w_98616528-de19-40b5-a2b5-5c0b59b8f048">0.01</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="INF" name="us-gaap:PreferredStockSharesAuthorized" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMy0xLTEtMS0w_5a54da6d-9014-426f-84f2-b6fa4c19dcb6">400</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="INF" name="us-gaap:PreferredStockSharesAuthorized" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMy0yLTEtMS0w_da714c2d-70b8-4290-b952-0a626daef343">400</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="INF" format="ixt:zerodash" name="us-gaap:PreferredStockSharesIssued" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNC0xLTEtMS0w_4049b6b8-48af-4a8b-a4ac-37c2e05676e9">&#8212;</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="INF" format="ixt:zerodash" name="us-gaap:PreferredStockSharesIssued" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNC0yLTEtMS0w_6b9e254c-7f01-4a1f-8719-079b11a44bf1">&#8212;</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="INF" format="ixt:zerodash" name="us-gaap:PreferredStockSharesOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNS0xLTEtMS0w_35a1d101-847d-4fc4-9852-b950a20533f1">&#8212;</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="INF" format="ixt:zerodash" name="us-gaap:PreferredStockSharesOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNS0yLTEtMS0w_db60ae97-52d6-489b-9e5f-8173deb71728">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usdPerShare" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="INF" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNi0xLTEtMS0w_10362c69-265a-49e9-9b3e-16a19dd8151d">0.002</ix:nonFraction><ix:nonFraction unitRef="usdPerShare" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="INF" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNi0yLTEtMS0w_b8595c3b-7996-4f12-a566-d3bdc3262005">0.002</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesAuthorized" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNy0xLTEtMS0w_5a976a41-e5c2-48eb-bbc2-a0f15330fc94">300,000</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesAuthorized" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNy0yLTEtMS0w_2996478d-0c8a-48ab-b36b-541cf94ab95f">300,000</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesIssued" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfOC0xLTEtMS0w_c172acba-9e1d-482b-b7c8-92ba1de4559b">175,790</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesIssued" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfOC0yLTEtMS0w_28dd0399-4017-4411-a545-6b587ffe94d3">172,440</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfOS0xLTEtMS0w_bcc8c8b2-fb34-4758-973c-54b476286f0b">175,790</ix:nonFraction><ix:nonFraction unitRef="shares" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfOS0yLTEtMS0w_15e8d9fb-4b19-455c-bd1d-d36bd2cbb997">172,440</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMS0xLTEtMS0w_41ccee45-806c-433d-bfcf-81586bce79dc">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMS0yLTEtMS0w_aade9a64-be27-407f-913b-08ea4dd4ad1f">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMS0zLTEtMS0w_48c119fa-1670-4480-8345-a9e44c89e682">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMi0xLTEtMS0w_d6498411-6385-41c9-a852-8b71c5fd8d10">981</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMi0yLTEtMS0w_a7e75e90-169d-44ae-95e7-df92ede43805">515</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMi0zLTEtMS0w_b53b0f3c-7098-45e0-ae28-d4859a2c52ff">188</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMy0xLTEtMS0w_56535b3b-2056-4028-ad58-cfb6a34d1cf8">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMy0yLTEtMS0w_2c61268d-cdac-43b9-a21a-f2e4fccabb0a">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMy0zLTEtMS0w_9b7a2ba8-1665-4477-ab9c-c6aa0ac14bab">&#8212;</ix:nonFraction><ix:footnote id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6" footnoteRole="http://www.xbrl.org/2003/role/footnote">Prior period amounts have been adjusted to reflect the two-for-one stock split effected in the form of a stock dividend which occurred in the fourth quarter of 2017.</ix:footnote><ix:nonNumeric contextRef="idcbb75f3495b46c795238fd12b0aa33d_D20200101-20201231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2MTY_1993dea7-2551-4816-80cd-4137c69069dd">P11Y</ix:nonNumeric><ix:nonNumeric contextRef="i68fc84ecbb8a43adb8e29a1f59702ea0_D20200101-20201231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2NTc_a4acc09f-a1f8-4829-97e1-5e2e1d62e3a6">P5Y</ix:nonNumeric><ix:nonNumeric contextRef="id295a98d84ed4145b2fde7a52e5db2ee_D20200101-20201231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2OTg_1ba8638a-e4db-4203-9056-3c3066dac80d">P5Y</ix:nonNumeric><ix:nonNumeric contextRef="ie90785a53db34fff861b69bab7968858_D20200101-20201231" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3Mzk_2ef3c53a-ab25-4b57-bc54-77289ccd63fa">P3Y</ix:nonNumeric><ix:nonNumeric contextRef="i0f77d4a1ec5f45e88a15ed192e49d2f7_D20200101-20201231" name="cgnx:ProductWarrantyPeriod" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTc4NTM_da3b6d83-8fe8-41be-be75-64b34b1da43f">P1Y</ix:nonNumeric><ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzEtMS0xLTEtMA_8475946e-ad85-4f67-a075-a159b4ce6409">1,271,000</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzEtMi0xLTEtMA_a7da17d9-0e9f-4890-9db5-91eded3e0b67">1,271,000</ix:nonFraction><ix:nonNumeric contextRef="i7e7e0780689c440b8357752ce62fbac1_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzMtMS0xLTEtMA_9bc00107-3e2c-42d5-b4b4-32943a316b04">2</ix:nonNumeric><ix:nonNumeric contextRef="id38d793df24e43ae9d8398d2c1445363_D20200101-20201231" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzMtMi0xLTEtMA_feffe1c0-b7e0-4532-9a64-0e0655cfd365">P2Y</ix:nonNumeric><ix:nonNumeric contextRef="i66c410db46994afdbd8eab3a179f9761_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzQtMS0xLTEtMA_04b2657f-3707-4b29-b512-310d772f071c">5</ix:nonNumeric><ix:nonNumeric contextRef="i552f23c3101048d4ad40b89158a2b96a_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzYtMS0xLTEtMA_3fc7e247-4087-41d8-9d0d-6b7425ee53b3">2</ix:nonNumeric><ix:nonNumeric contextRef="ic8ac339cd888416e99fef2280bcb1383_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzctMS0xLTEtMA_5ca351ba-1d05-4ebf-ba0b-a67a6f76767f">5</ix:nonNumeric><ix:nonFraction unitRef="number" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="INF" name="cgnx:MaximumInvestmentOfCompanyInPartnership" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzgtMS0xLTEtMA_7e6223e8-b342-43d1-a612-a12f52dcc510">5</ix:nonFraction><ix:nonNumeric contextRef="idcbb75f3495b46c795238fd12b0aa33d_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTpkYTQxOGVmYjcxNzc0NTkzYjM5MTgzM2E1ZDVjMzViYS90YWJsZXJhbmdlOmRhNDE4ZWZiNzE3NzQ1OTNiMzkxODMzYTVkNWMzNWJhXzEtMS0xLTEtMA_5baf5446-9b2d-47ce-b861-92883002e602">11</ix:nonNumeric><ix:nonNumeric contextRef="id295a98d84ed4145b2fde7a52e5db2ee_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTpkYTQxOGVmYjcxNzc0NTkzYjM5MTgzM2E1ZDVjMzViYS90YWJsZXJhbmdlOmRhNDE4ZWZiNzE3NzQ1OTNiMzkxODMzYTVkNWMzNWJhXzItMS0xLTEtMA_c20915d9-8f62-471c-8243-fd442eaa0c83">5</ix:nonNumeric><ix:nonNumeric contextRef="i68fc84ecbb8a43adb8e29a1f59702ea0_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTpkYTQxOGVmYjcxNzc0NTkzYjM5MTgzM2E1ZDVjMzViYS90YWJsZXJhbmdlOmRhNDE4ZWZiNzE3NzQ1OTNiMzkxODMzYTVkNWMzNWJhXzMtMS0xLTEtMA_cab6dfa3-3f17-4ca4-8567-a6c17537c33a">5</ix:nonNumeric><ix:nonNumeric contextRef="ie90785a53db34fff861b69bab7968858_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTpkYTQxOGVmYjcxNzc0NTkzYjM5MTgzM2E1ZDVjMzViYS90YWJsZXJhbmdlOmRhNDE4ZWZiNzE3NzQ1OTNiMzkxODMzYTVkNWMzNWJhXzQtMS0xLTEtMA_817ec49e-b4c0-46f5-ac92-e3e4ad2bd964">3</ix:nonNumeric><ix:nonNumeric contextRef="i0f77d4a1ec5f45e88a15ed192e49d2f7_D20200101-20201231" format="ixt-sec:duryear" name="cgnx:ProductWarrantyPeriod" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplMGEwZTg4ZmE5Nzk0MGExYTQyZGU3ZmZmZTZkNmVmMi90YWJsZXJhbmdlOmUwYTBlODhmYTk3OTQwYTFhNDJkZTdmZmZlNmQ2ZWYyXzEtMS0xLTEtMA_e1644270-2350-42be-a54e-9852ca80d185">1</ix:nonNumeric><ix:nonNumeric contextRef="i0f77d4a1ec5f45e88a15ed192e49d2f7_D20200101-20201231" format="ixt-sec:durday" name="cgnx:RevenuePaymentTerms" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTo4NGYyZDZjZDI3ZDM0ZDA5ODdhZjgxOTY0NjY3MmRhMC90YWJsZXJhbmdlOjg0ZjJkNmNkMjdkMzRkMDk4N2FmODE5NjQ2NjcyZGEwXzEtMS0xLTEtMA_bdea20ec-62da-4dfc-b96e-272e5b9fdec8">30</ix:nonNumeric><ix:nonFraction unitRef="usd" contextRef="i90fc7fe205754f009adf7ecf46482ca0_D20200101-20201231" decimals="INF" format="ixt:zerodash" name="us-gaap:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzEtMS0xLTEtMA_0dd8be4e-7581-4620-abc4-318edc3bbb81">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i41bf1923baf84302b5799a45b6d13a02_D20190101-20191231" decimals="INF" format="ixt:zerodash" name="us-gaap:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzEtMi0xLTEtMA_6f570a8a-bfd7-456d-8d78-3df78edc3356">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i7c8798724232442baaef89052ef86b4f_D20180101-20181231" decimals="INF" format="ixt:zerodash" name="us-gaap:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzEtMy0xLTEtMA_49a992be-f0ce-4ab3-9a34-b0a6d73dd60b">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i90fc7fe205754f009adf7ecf46482ca0_D20200101-20201231" decimals="INF" format="ixt:zerodash" name="cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzItMS0xLTEtMA_fa44b201-f020-4c4f-8bdc-53ca6f0e535a">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i41bf1923baf84302b5799a45b6d13a02_D20190101-20191231" decimals="INF" format="ixt:zerodash" name="cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzItMi0xLTEtMA_b02482b5-6aec-41e8-94f3-f4a228fe0b6c">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i7c8798724232442baaef89052ef86b4f_D20180101-20181231" decimals="INF" format="ixt:zerodash" name="cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzItMy0xLTEtMA_4f2d91d2-8f6c-4b93-9c1d-66c69ceb225d">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertySubjectToOrAvailableForOperatingLeaseGross" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjQvZnJhZzo2NmVmZGIxOTA5Y2E0YjhjYTU5NDJhN2E5NGM0ODU2MC90YWJsZTo5NmMyNDQ3Y2IzNmQ0NDBkOGE0MmRlZDljNzJkMDc1Zi90YWJsZXJhbmdlOjk2YzI0NDdjYjM2ZDQ0MGQ4YTQyZGVkOWM3MmQwNzVmXzEtMi0xLTEtMA_3447703c-f938-4ac9-89d9-af1dbd28ab5b">800,000</ix:nonFraction><ix:nonNumeric contextRef="i7f525d4341784263bb99a14dc9cf941a_D20200101-20201231" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzQwMA_385ebae8-1c19-44f1-862e-1dcc62372ed6">P4Y</ix:nonNumeric><ix:nonNumeric contextRef="i7f525d4341784263bb99a14dc9cf941a_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzItMS0xLTEtMA_29726baf-4dca-4850-89c0-007041a84844">4</ix:nonNumeric><ix:nonNumeric contextRef="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231" xsi:nil="true" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzQtMS0xLTEtMA_2d819fab-9128-43f8-973f-11b8718f6bb7"></ix:nonNumeric><ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="0" format="ixt:zerodash" name="cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzUtMS0xLTEtMA_6a907aab-5a45-4859-94c7-dc88e81c8c96">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="0" format="ixt:zerodash" name="cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzUtMi0xLTEtMA_73104e66-07f4-4e3e-8224-2e6fbc6a4247">&#8212;</ix:nonFraction><ix:nonFraction unitRef="usd" contextRef="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="0" format="ixt:zerodash" name="cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzUtMy0xLTEtMA_15a150af-5c6c-4703-b0fc-e732be01b829">&#8212;</ix:nonFraction><ix:nonNumeric contextRef="ic34831677ded4373b4d68ec0ccb0a15b_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzYtMS0xLTEtMA_ae165ff7-5c38-4f88-a422-985e49f641bc">3</ix:nonNumeric><ix:nonFraction unitRef="number" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="INF" name="us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjkvZnJhZzo2ZTcwYTc0NDQxYmQ0ZGFmOGZkYjNmOTUwYmU0N2NhMi90YWJsZTo4YmQxNDM4MDJmOTU0NTE2OTBiZDJhMTg4YjEzY2I5Yy90YWJsZXJhbmdlOjhiZDE0MzgwMmY5NTQ1MTY5MGJkMmExODhiMTNjYjljXzEtMS0xLTEtMA_ba1eb775-9f76-48af-a4c0-d5fba96a90ab">50</ix:nonFraction><ix:nonFraction unitRef="segment" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="INF" format="ixt-sec:numwordsen" name="us-gaap:NumberOfReportableSegments" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODQvZnJhZzpjOTFjOWQyM2RmZDc0MzUyOWIwYjljNGQ0M2U1ZjQzZC90ZXh0cmVnaW9uOmM5MWM5ZDIzZGZkNzQzNTI5YjBiOWM0ZDQzZTVmNDNkXzMw_5683dc4f-4fed-4377-bbd6-53719c30696d">one</ix:nonFraction><ix:nonNumeric contextRef="i0edb3f43f00449ceb40a0bed0beafa85_D20170412-20170412" format="ixt-sec:duryear" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTAvZnJhZzo3ZDc1N2VkZThjMDU0N2ZhYjA0NGU5OWQzYjJkYTIxMi90YWJsZTplY2IzZTI3NDJiNWY0OTFkYmRkZjhhM2U2NDFiM2UxOC90YWJsZXJhbmdlOmVjYjNlMjc0MmI1ZjQ5MWRiZGRmOGEzZTY0MWIzZTE4XzItMS0xLTEtMA_5142364d-04f1-42b4-b435-9cff51cf7909">6</ix:nonNumeric></ix:hidden><ix:references xml:lang="en-US"><link:schemaRef xlink:type="simple" xlink:href="cgnx-20201231.xsd"></link:schemaRef></ix:references><ix:resources><xbrli:context id="ie28d7d4d82cf4926b2eb2f5b46e79f89_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:unit id="usd"><xbrli:measure>iso4217:USD</xbrli:measure></xbrli:unit><xbrli:context id="i1e5c63c6777548228466750a07807abe_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:unit id="shares"><xbrli:measure>xbrli:shares</xbrli:measure></xbrli:unit><xbrli:context id="i339b13469197477d94eadc65702c8699_I20210131"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2021-01-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if37f3b9e731b4d1e91e114764a70d4e3_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></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="i2929afbc60be4803907a61e4c5f55328_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="i9fff755b6c964c4bb8475318c4c49aa3_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:context id="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-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="ia5e209f0702b4c21aa1c9a42a15a02af_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="i75e8b9e5dee441478b9993822d16dbea_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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_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="ib740d5d51df04ae39bc1007f04b7006f_I20171231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i4c1657bbb1e14689bca7759ab900536a_I20171231"><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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i196202ba57cc46579609aed9942d10f2_I20171231"><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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3ca99dcef7da4e51a06a7b5b68dff825_I20171231"><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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if2f71f53722e4bff8659e08cb2a42c5a_I20171231"><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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ibf40038bb52a4f1181e2f742f8d40d87_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ia1e13233ac8647048845e2ac09a72110_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ieb56650aacb54d5db569f14310bf4ebc_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iedffb70ace1a4bad959695c50169dcfb_I20171231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i220fc0bd47034127b63419a5a59121cf_I20171231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ia4775eba0847484d8a60d2898aa44e7d_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic56795ffbed44cb0a764c893a61f362c_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="ia62e59cca4464221bd523e2d6a7fa886_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="i834d53a969284896ab357f2b0c3ce657_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="i3b2f6aa05d494335a02b2ec5ac168e04_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="ia5a7f0963d0a41e48eca3667ebc4158c_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="i68c7c78a53c24716aad2cceea35dacec_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="i7008e007f58a4b5899374ec64dccc60a_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="i71c39cc633c0412297a724a3b198be69_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="ibdc0572db597422ca189e88018b0643f_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="i9d842e36605b43ed998c954d642af881_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="ide1cceaa5ce0486d98bb6affeac5ae3e_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="ib07c07bbfb5544c0bb97b2d16c24b634_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="i614c651180bc4855b70dad93f31f1adb_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="i9331cd59f3404613b09d551f5497228b_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="ib93dfd73638e4f62aa3d14c2f68e837e_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="iaac1bff8fed84c9892e20cf9f3b4cd94_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="i7128fd43290d4ce6ae12cf03ea620b76_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="i24a0b5b69e504b0a896f227f2e9fbeb6_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="i4fc0936b019746c399fb17074b41e6c6_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="ieeb8bb7dd2d740d5859437f51890dfc9_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i48348e745c5148028dcaf82df7d0d8a0_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4117606912f54ef5b9e2782948d44c65_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="idcbb75f3495b46c795238fd12b0aa33d_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if36850dcbd1740589493383b1e09703b_D20200101-20201231"><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:DistributionRightsMember</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="i68fc84ecbb8a43adb8e29a1f59702ea0_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i9bce38372afb46f1aa436c4c366ee94c_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id295a98d84ed4145b2fde7a52e5db2ee_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i182946fdfefd4286be6379d3fb85519d_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ie90785a53db34fff861b69bab7968858_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0bac989307494e9480022581cd700e24_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i34092537a9cf4f458b524cfe7470dcf1_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0f77d4a1ec5f45e88a15ed192e49d2f7_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4cb9bac3005844c5b3ae926944c6a28e_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7e7e0780689c440b8357752ce62fbac1_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id38d793df24e43ae9d8398d2c1445363_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i66c410db46994afdbd8eab3a179f9761_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i552f23c3101048d4ad40b89158a2b96a_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</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="ic8ac339cd888416e99fef2280bcb1383_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:unit id="number"><xbrli:measure>xbrli:pure</xbrli:measure></xbrli:unit><xbrli:context id="i3105dceca27c41bea714c34ef0d49b64_I20201231"><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><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel1Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i50d1c612bfe54d33a636415a8399e08a_I20201231"><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><xbrldi:explicitMember dimension="us-gaap:FairValueByFairValueHierarchyLevelAxis">us-gaap:FairValueInputsLevel2Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib80d5a29b52141d2acf74afd3a3894ce_I20201231"><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>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i4fb853a9f1a949509cbf8fc704fad5a9_D20190101-20191231"><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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i99a19abb27ee4bb487e56611ad25d4e8_D20190101-20191231"><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>2019-01-01</xbrli:startDate><xbrli:endDate>2019-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i127ae93373df4175b0d7362a4868665b_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="i47edaa0105b14a2abb0d25130a7122bc_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="i57ab937996f3463d94ec12d192aa0658_I20201231"><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>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib6e966fb06894826a5f17d7c75db01e1_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i763bb4fb2d5f4ff196fee6ca401674d9_I20201231"><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:BusinessAcquisitionAxis">cgnx:GViVenturesInc.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i07177f365f7c4768b8d6f79d1941bd9b_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="i90fc7fe205754f009adf7ecf46482ca0_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="i41bf1923baf84302b5799a45b6d13a02_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="i7c8798724232442baaef89052ef86b4f_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i43cb724ca92b4d529471388e4c6aa1c1_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="id84753405a3f4ea0ada1581e69e5e83b_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic699385aee064f088395dd1a1145c14f_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="i6f32895aae07493ba2be1294738fc07c_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ife6d3b1743a642a3ab1be80d73ca9b4c_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="i500374dc2fa943ee973d4e8eb7768bf5_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2c24ca74f8564fd39926e7a3f5ef51a6_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="i7c1b53d9a7ee4f3e840dee641c3d7e70_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i86d4d2ca8e2343a6b857331595592807_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="i1ccb72574960407e9799ead9ecf20985_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if5707525027143bbab21055ba6ecb30a_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ifc5414a3304845e5bda45a454f655774_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i324afc1a28ff430a9a4489d8845df9d3_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="ie8277ff2013144aa872677ea05263934_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i5ea119f35960478b80c8c23a7bfa29f4_I20201231"><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">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic6dbb15ae5b740ab9bdd27fbbc2efda0_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><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic4d8f4817c754d62ae932c2959592db4_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><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id5fb5c3c941c482980cbee5c7db0d507_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><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i1408636db4ac405b9c208760e205a9a3_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><xbrldi:explicitMember dimension="us-gaap:InvestmentTypeAxis">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i202533b994e74b5c833a5628cd152023_I20201231"><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:CorporateBondSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i55d96b4194b247fcbe5346f132d94964_I20201231"><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>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i2efefbc6cef645aa8b0601e7585c8b93_I20201231"><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:AssetBackedSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="icff2afc806564b9bb491036d05dd55e5_I20201231"><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">cgnx:AgencyBondsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i71022fedb4fb4f8ba4f38fce1d72eca6_I20201231"><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>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0eaceaa1dcd04d4e83c5dc04e5c35116_I20201231"><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:SovereignDebtSecuritiesMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id71e8694ba5f492184d2c743f99ad454_I20201231"><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>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ibcc3f33ed9014cb08b2e1293011a9151_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="i48b62d90851749ac9c03fc1cb1c1ebbc_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i218148f2a7544001b13f07777e27f0fc_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="i3b0c04aa43fb48cda5ae8bfd82141d82_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3b0ec7f8d69d49c18cf9da3008df7d44_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="ie12dbe3e996e42e9b339bcf6aed23d6f_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i8d4ad474693841178fd01634beadc2cb_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="i2c7f1534acdc41b6b83fef288833ab1f_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i0e5e7ce331ec483fbd7ebf4d80540114_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="i8732058db3184ba59c6e2cc6cccf3974_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i799593d8b62b419ea601b7af8f7a1e5f_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="i87982faadf4f416eb7ec7c3a6c8216c5_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i3e3040ff593242ae84a0a31f6baccf93_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="i3dfc489296454de1a7b79e56d536e5c7_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ia0c071df8b2c4479a45a92ebc539394b_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="i011aed5572fd480ab06c7ea32ab87210_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="i09e30511c6b84ebeb0e0ab61e3e3dafa_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="i39a995f9a76945dcb35a1f3f5dab89b0_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="iaa79f869e70d44c48285a931a374a8e3_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="ic0f9eb803c134de98161f8b3dbc1ce95_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="i6ee9ee02e4bf4822b6c259421cc22dd9_I20201231"><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>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i308f31c5d8ba450ba20913a309267fb4_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="i1eac7832e000472982f73ab5c4639a3e_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib499337978d64c0996f876ba7e3c08b8_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id65d8c0bdbf74398a35cfe8104c30b2d_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ib24b605f63cf45cba1a5241a4474e599_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InProcessResearchAndDevelopmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="if5088b63841d443ea2181e2aac05f114_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InProcessResearchAndDevelopmentMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ie17bd31409ec49ada21e79d6bc9f4905_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ifa6e76ebd0604c6fb7f2534a1457c766_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i6e84999093c84481a74e39726977d099_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="i2ec5ea0b1ca4492e80d0a8603b4039d2_D20200330-20200628"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InProcessResearchAndDevelopmentMember</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="ib4a1793dd0e94c0b9920e9fa24b518b4_D20200330-20200628"><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="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="if86e7b3ca23041ce8ac0f7a210ea1142_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="i5dc07c358d534713bc54541683dc51e8_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="if0dc89428d034c9082662b3998a327f0_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:unit id="eur"><xbrli:measure>iso4217:EUR</xbrli:measure></xbrli:unit><xbrli:context id="id125001a88314a6cb3e00cd9cfaebd63_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="i4503ad3ffbcb438ab03343baa505dad7_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="mxn"><xbrli:measure>iso4217:MXN</xbrli:measure></xbrli:unit><xbrli:context id="i3dda9084cd3d41309db2a7e221067614_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="i27e1097059694622a8c3700d3d84510d_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="krw"><xbrli:measure>iso4217:KRW</xbrli:measure></xbrli:unit><xbrli:context id="i256cacfc43da44b1a64b0b147f385a07_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="i1c105ea70aa24e3c81daeb00339a62e9_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="jpy"><xbrli:measure>iso4217:JPY</xbrli:measure></xbrli:unit><xbrli:context id="ie18106478531477d9cf2a90de218a21c_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="i4728f332e46840d7aea525c9eaa35aaf_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="huf"><xbrli:measure>iso4217:HUF</xbrli:measure></xbrli:unit><xbrli:context id="i9f6d19bc81a2447cb20b33ed5d4e72e8_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="i82422d1a11ca4a77b1f16cb2de6e0881_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="gbp"><xbrli:measure>iso4217:GBP</xbrli:measure></xbrli:unit><xbrli:context id="i27e2ae5199ff4981a2777a3ba46d555a_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="id2b1b3d989764ca4a14ee11ef0312f70_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="twd"><xbrli:measure>iso4217:TWD</xbrli:measure></xbrli:unit><xbrli:context id="i98836da978c546fda0472b613300f607_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:TWD</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i63ab6dd878f44d6391ba8aa3d6ade87b_I20191231"><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:TWD</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="sgd"><xbrli:measure>iso4217:SGD</xbrli:measure></xbrli:unit><xbrli:context id="ic0e8d638d38640898e535a75e7cbcba0_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="ic91b735b9c514594bf98f5c8c01a0479_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:unit id="cad"><xbrli:measure>iso4217:CAD</xbrli:measure></xbrli:unit><xbrli:context id="ie26e559fd2fc4181af7adeae0db48039_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="ib69a426c887140268968b1645cfc6863_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id2536238c18941b1b330f426e3f204c1_I20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:PrepaidExpensesAndOtherCurrentAssetsMember</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="i3e64074e131b49e786d6d237d108eea8_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:BalanceSheetLocationAxis">us-gaap:PrepaidExpensesAndOtherCurrentAssetsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:HedgingDesignationAxis">us-gaap:NondesignatedMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ia35a06653c644fd3919ff12db60fe22d_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="id668c42d5d03462d90e84f0641b25f23_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iab20f4d47e244a76ace9b260b5743e28_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="ib5afb25330124ebcae58b0e8d3dc05a2_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="i322fd20d156f460fb46528a0407d0f6d_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i45bf844ee822481abb812259f0c55cf5_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="i28319ee35cab4f669cc68e5c779ce9a2_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="i005b7b838db94fae896c3e37497e3a38_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ibfe6673ddcfd4beda048b11f578ced24_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="i2455679b0dc24386ae718a31db1121f5_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="i0f9a6d89f1af40dab151c1916512c5a3_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ib9cc7499227e47a1bce0663b99b3a27a_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="i3c0cc26b301d41ec94472b653c04964d_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="iee1584fb047e4cd0aadbe377ee63edb0_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i0b7584e39a7e4678a6ed685684989018_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="id39fbd1324fc4c9e9dea6a121e2ad1b7_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="i1693f4a03a22420681a119048a5f80d4_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7ef1b2f387074286a1f393195b0d6023_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="i7871153220d1465d8b9175beda208c9a_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="i7cc61298d56c4c5a8ea7c807f888fb48_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i2d31200b11d44782a5477bfdc49ea925_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="i8302b4fda4d440c28ff639b7e1be6c18_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="ia9f2c2eca7cf407d99a3940e46c8337b_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i68be99e07a8140f985fd37cc10ad792c_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="id6b1384256a24d76b0b52d56219d0b4e_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="ia5190f5ec7d04c8eb5bff1a85d304050_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="i189ffbc258f445c5a5406966389b4ac6_I20170412"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramApril2017Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2017-04-12</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i680260920a244ceea6d6b45594dda05e_D20180101-20180401"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramApril2017Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-04-01</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4fabd548970d4d4a8f0d64285da4ee5c_D20180101-20180401"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramApril2017Member</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonStockMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-04-01</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i82791ebbdb2d4f73853570e7517f3d7d_I20180201"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramFebruary2018Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2018-02-01</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i84808d8bcf3b40a8bf77cc46b34bcf52_D20180201-20180228"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramFebruary2018Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-02-01</xbrli:startDate><xbrli:endDate>2018-02-28</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ifae0eb830ac74cccafe0924a206f022e_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="i473e7a64a83447199f7bf33c5a6abd76_D20181001-20181231"><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>2018-10-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4e62174a29dc4fc7b8238d08ab0deeec_D20180101-20181231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramFebruary2018Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i8f883d77d8a34a5d99abb929376f85dd_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i1661c3b621a94e96a52ae601c8ee5e7b_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="iab80bdfd853640dc95144e692cb58029_D20200101-20200329"><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-03-29</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iba2e5e421b5b4a57b2a259c12b514f1e_I20201231"><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>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic6c4df4e7a9a402fbdd4bbc4286660dd_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="ic2a942828c2a44139ac97717f4ba97b7_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="if71679ad1ab44c19930e3c255a129572_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="i651cdc8b58564e339fa15af8d913fa7b_I20201231"><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>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7f525d4341784263bb99a14dc9cf941a_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><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</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="ibc99913a4dd04ed587dd18819f2860b9_D20200101-20201231"><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: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="i368f9eb389bf44adbc815e7aa2868e04_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="i38980c90881940f69c5ee24c245a2ff9_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:PerformanceSharesMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</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="ida6e37838d504208943572dbc92ab92b_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="i809038d6962540f18bd0b417106a9f55_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="id2ec20935d9d4d07b547537940241758_I20191231"><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>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i893a4f0e467b4b9f938475ebd56e35b5_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: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="ib541eff2ba94440dbea39fc8fbf7e5de_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="i779443a03a8044f2ad85a8a7ef9d1010_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="i0100324df77340559da96b293701bf79_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4a55c180e4c04a52b6246037f9445c54_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:unit id="group"><xbrli:measure>cgnx:group</xbrli:measure></xbrli:unit><xbrli:context id="if426f384a9bb46cbacd084e8d71c197a_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="i3f22b7eff3054cdc99db890d8f600218_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="i4bb46d4ab7b349518f7b7d7470bab716_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i1db9dd2158be4fd2a250c3e922e31be2_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="ifa6acb19879149b1ae589acfec1446b0_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="ieed8f593cfe7487bb17f454efb335bdd_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i462c024635b94c3bb4a833b35d0998ca_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="icd5ea7b2dba043e39df4b54b2bfa446f_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="i2903f39accda4c9fbc44e47302e41e23_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ic34831677ded4373b4d68ec0ccb0a15b_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ifbdf0ae819594cb49f4c1e2f90ad10af_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="idc4d65f03e5f4807a2e320e83cb6f52c_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ChangeInAccountingEstimateByTypeAxis">cgnx:ChangeinGlobalIntangibleLowTaxedIncomeMember</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="ie91c97a2dae54d89aca19258376342cd_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="i9585a4990b0841d78d4b36d1b378c43b_I20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RestatementAxis">srt:RestatementAdjustmentMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:ChangeInAccountingEstimateByTypeAxis">cgnx:ChangeinGlobalIntangibleLowTaxedIncomeMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic48912cbc17b4251b7d020048b72df79_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="ia73f3fc2b64c4e2582288e0adf3c57b1_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="i5a515bc5bae6415eab49241663c963be_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="i6190f02336a543c295b3b8bcc1483263_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="ide172e3d496d43dd8c49b008179d1944_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityNameAxis">us-gaap:RevenueCommissionersIrelandMember</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="i646f28e36e1549a997f83f579e5fcc4e_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iac4b14509e984788854e67cef6971927_D20200101-20201231"><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>2020-01-01</xbrli:startDate><xbrli:endDate>2020-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ie355c14ef9d34a27b2d42fbc0aa3a07d_I20201231"><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>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="id6f2d6204d6d4481aa38f21288abe631_I20201231"><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>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i7d5054231975477bbc455390b1195587_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="ib6eaadfb2aab4fa68a92113aa083ed66_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="i77bd997d9cd240a0a39403e13f7fa372_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4d22de0a070640c0969df0023f0d5bd4_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="i91547104c6e54802adc08015c4e816c4_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="i0c04c5967faf43108a2b44e1eb1467ba_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="i3c10e6816b864f37a86cb0f6bb0735a9_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="iacfa50daa2fe4c539ad33435ea3b8a08_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="i5df31456d9734b238cf6d82c794debfd_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="i00ca102b165c4c3db45dab357f1bec1a_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="i648bad067bdc4d4489358d8b681752f7_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="i746a867e03db40d2ba017800c468fef6_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="i5fdf4bf4bded45cbbbb2b5fe9674984d_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="ib2628019e5884269a64b6816274d0949_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="i3a5907b6d38040178c89577a865ccdd9_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="id26bbc6a4fce4ee4b4844c551ffbcd52_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="i1f2df605085e4c16b8cb6bae2c82dc17_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="i52bc079d60364e258cd8c95018302d13_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i3e5a7c3891874475803e5cc3eff8e278_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ifafb1a8d25934dc08c31868b6bcbe384_I20181231"><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>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iab0087b78f23431ca5626d7b81c5b2e7_I20181231"><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>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ibc01324d910d4a5f891ff127e62379a9_I20181231"><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>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iba687ef314c646918abb65b1eeb24670_I20181231"><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>2018-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i34d8f3c69efc42209391814f2a19744e_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="i5fa2c3db08364cf9bd07608173af36a1_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ibffce964090a497c887ee131bacc1fd5_D20200101-20201231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli: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></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="i65add4e3d5b64520a77634d4325ac6ae_D20190101-20191231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli: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></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="i026f4bd009c043c0862c4af3db857458_D20180101-20181231"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli: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></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i3181f39a9ece4d42a19fcf211f42e203_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="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</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="ief4089b8c7b34be5b00f1b2f4403ceed_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="us-gaap:ConcentrationRiskByTypeAxis">us-gaap:CustomerConcentrationRiskMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="srt:MajorCustomersAxis">cgnx:Customer2Member</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="i9f1cef1658d7425f8fb46c98ade30cb0_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="ib3b9e3e754784b8a883740beb69647f9_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="i53c699b5269249168914134a4dba2402_I20191016"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CompletedTechnologyMember</xbrldi:explicitMember><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="if17d8ab6bbd442cebb0469b4030f8993_I20191016"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:InprocessTechnologyMember</xbrldi:explicitMember><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="iab276190f0f64ca79a123e6fbc3e0f84_I20191016"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember><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="i3feb9908ffcc411ca51ca9428c2087d7_I20191016"><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="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="i90630e79dfaa43649fce5b15a9b58931_I20191016"><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><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="i49224b955c854388a485ddf240f6b6c2_D20191016-20191016"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CompletedTechnologyMember</xbrldi:explicitMember><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="i9323aa33b7ba4726a2ca36589f0a5e3e_D20191016-20191016"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember><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="i9f4951f283f745dd9d4fdca84cb3d759_D20191016-20191016"><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><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="i2821a398bffd46768fe52ad96d602eeb_D20191016-20191016"><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><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="i1ef9b43f5b59456bb824e0eda27daf6e_D20191016-20191016"><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:IndefiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:InprocessTechnologyMember</xbrldi:explicitMember><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="i0edb3f43f00449ceb40a0bed0beafa85_D20170412-20170412"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier><xbrli:segment><xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember><xbrldi:explicitMember dimension="us-gaap:BusinessAcquisitionAxis">cgnx:SualabCo.Ltd.Member</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:startDate>2017-04-12</xbrli:startDate><xbrli:endDate>2017-04-12</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="ib391e5eb31594e308bef2a25810dbf65_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="i3dd19d64ad784899a5163158c879090b_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="ibf69a777edc9439f8408d65906e118f2_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="i1014d0429e234545a0da021351ef7a26_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="ib2ec5da1c598442e83cb678d4c0703a7_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><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i58b0269806a34ecf901f561c702ca253_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="i74ff1e1493a0418daa710e42429847e6_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><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2019-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i15e487b1cb144371b2d581e8b6c32c6c_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="i697b402587d640b29a6131eec6eee921_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><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="ie03bd6caf6c04201a1251cc3ccce7ef5_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="i4cf92bf23f0c48f9933406a00f53bbf9_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><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:context id="i910901a831a74c5a94efe291993cb6db_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="i0f3836fb4ff448cb8224c36be297098e_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><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OneTimeTerminationBenefitsMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="icc6eade4fc96482cbe1fda703ab9bec1_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="i1c3a59091e4241499f1eb919fa67a6c9_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><xbrldi:explicitMember dimension="us-gaap:RestructuringCostAndReserveAxis">us-gaap:OtherRestructuringMember</xbrldi:explicitMember></xbrli:segment></xbrli:entity><xbrli:period><xbrli:instant>2020-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iacfefc04f8504b0784f70c45f9371633_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="ibe2a9b71d2a34641867e257f72e7ac89_I20210211"><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>2021-02-11</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="iea3807e5f96a4f27a97d05dbb4f0c9dd_D20210211-20210211"><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>2021-02-11</xbrli:startDate><xbrli:endDate>2021-02-11</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329"><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-03-29</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2020-06-29</xbrli:startDate><xbrli:endDate>2020-09-27</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331"><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-03-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2019-04-01</xbrli:startDate><xbrli:endDate>2019-06-30</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929"><xbrli:entity><xbrli:identifier scheme="http://www.sec.gov/CIK">0000851205</xbrli:identifier></xbrli:entity><xbrli:period><xbrli:startDate>2019-07-01</xbrli:startDate><xbrli:endDate>2019-09-29</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i461ae862bded4902a73b0e4183842825_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="i8e972664ec3c438389db17b50d0ad10f_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="i37775b2adc474d559a494eed1d8f6ac5_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="ie492a4ee7d994b01bc240511c5f5ca36_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="ie90ec26745b74b1890b61791666978fb_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="ibb41123b05be4a27ad6c96526002ec57_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="ie9684df3af564d50a07cfe28f4f69336_I20171231"><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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="ic78dc423d96c4e29987c28f52c27bc95_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="i54b2ed2f00304fdfa3f801687140ae81_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="i199f3e5533e043ac9c6f62f8fc1ed886_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="ie4b7cc11c49c4137b5953a249b30e99c_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="i840c3d1abc6941068b772313fe40c779_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="ibee2fce1153a48d38797395e471767dc_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="iba36066cec554376853522d4c65c284f_I20171231"><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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i496f14a2f40e4f87b27a64cd626ba072_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><xbrli:context id="iff0b1f4df45343c4b855bba0c1cb0a1e_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="i62f1344296954ca19a69714d6e44cdba_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="ib63ab0f617af4d9fb37d199aca629b2c_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="if2e1eff52c264d429b1146b698c8ad14_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="i6a93ce3bf60c414c9a02243f3e5fe615_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><xbrli:context id="i759f2e339dc54f62882a481da1682c75_I20171231"><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>2017-12-31</xbrli:instant></xbrli:period></xbrli:context><xbrli:context id="i48c9b3bfd9b84764b06ddf508e993169_D20180101-20181231"><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>2018-01-01</xbrli:startDate><xbrli:endDate>2018-12-31</xbrli:endDate></xbrli:period></xbrli:context><ix:relationship arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" fromRefs="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMy0xLTEtMA_fcf9ac05-73e0-4b9a-9f42-051740b17006 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMS0xLTEtMA_3fcc5ff5-86e9-4ec4-b05d-ed578f6b733e id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItNS0xLTEtMA_cf5434e1-c84e-40e6-ae37-abdc8b82c0fb" linkRole="http://www.xbrl.org/2003/role/link" toRefs="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83MC9mcmFnOmRmNzE1YWU1YzgzZTRkYjU4NmI0MDBjZWUwZjFmZWJhL3RleHRyZWdpb246ZGY3MTVhZTVjODNlNGRiNTg2YjQwMGNlZTBmMWZlYmFfMTc2_57fc51a2-a860-4939-bb07-1cb794b56f77" order="1"></ix:relationship><ix:relationship arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" fromRefs="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNC0xLTEtMA_d2213fd1-bdbf-41ca-89f3-4abbae7005e1 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtMi0xLTEtMA_14baac37-176a-46da-a9bd-1fc18e35b395 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNi0xLTEtMA_c5131655-9e82-4715-b160-56721b0fc3b6 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC04LTEtMS0w_080ff9e1-117c-4112-9676-839dc83b6532 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNS02LTEtMS0w_6dc2f805-559c-4217-9e65-ee730488199d id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy04LTEtMS0w_229f1c19-7a07-418f-befd-ff97f4674e2f id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTktOC0xLTEtMA_2f630d93-31b9-4665-8ce3-c5897bea9348 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtMi0xLTEtMA_a8456ff2-6c8e-4327-9767-95e0aab8bc6f id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctOC0xLTEtMA_71d789d2-d005-43da-9967-b51be795e669 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy0yLTEtMS0w_7e137acc-b71e-4fcc-8be3-7d9be1b8df98 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi00LTEtMS0w_e73dfbc5-c92b-45b2-86a3-6b2ce8ca339d id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtMi0xLTEtMA_fbd83d7f-f0cd-42b8-ae99-fee6369b5000 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNC0xLTEtMA_acd85e5b-1f79-40a0-99d9-c2be23943359 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNi0xLTEtMA_8149619e-d381-4bac-a976-5e8949ceaadd id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy02LTEtMS0w_7a8f4424-377c-47b0-8ed8-5678f90a66d7 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjgtNi0xLTEtMA_dca86476-293c-4ad4-99cb-4b6675969150 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctMi0xLTEtMA_33cce827-38a3-449f-949c-d6ff313a061a id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC0yLTEtMS0w_c319c94c-9d08-4046-b823-681d92f5ae90 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNi0xLTEtMA_86878b94-446c-4751-b747-53766ecc532e id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtMi0xLTEtMA_0022d7be-0047-4a75-85db-40447966923d id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtMi0xLTEtMA_d48391c5-c93c-4ca8-84f7-87c69ab6b519 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtOC0xLTEtMA_0fb24a7b-2556-4979-a60f-9291ff96ee81 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtNC0xLTEtMA_a751e0f1-753e-47fb-9d55-6d3a74ad1d63 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTctOC0xLTEtMA_b8a33808-ccdd-442f-a364-f30093273e58 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNC0xLTEtMA_fd1403d8-b01a-49d8-af68-9ab0091a74df id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTYtNi0xLTEtMA_bb353597-ac6e-4360-a250-05c0590c7a5e id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtOC0xLTEtMA_f1fb524c-80ad-487e-bbbb-4a916c92385f id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNC0xLTEtMA_6390b954-bf90-4800-ab31-63f8cd1e2827 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi02LTEtMS0w_36bb30b6-f359-4d6b-9e2d-d0d471f131f5 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjktOC0xLTEtMA_0ad125f1-e142-488e-97fc-3980b44ffb5a id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy00LTEtMS0w_cabb0072-09e1-4075-b53c-ea0a18e894b0 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi0yLTEtMS0w_5cdbaf78-2bf5-43cb-af9e-67554557063d id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtOC0xLTEtMA_f8467d93-a030-4341-95a4-4b3e376e1b2b id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNi0xLTEtMA_fcb04f98-617c-43c6-9d4b-24816237d53a id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNi04LTEtMS0w_3ea9afc7-0cfd-435d-b528-9f9c80ab70b9 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNi0xLTEtMA_eac98b88-4a0d-4608-8f13-ca18c1caba5e id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC00LTEtMS0w_90389b71-c309-48c6-9c56-d09124fdb990 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctNC0xLTEtMA_5e569250-0a3e-400c-94ab-ddb15f9ac54c id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi04LTEtMS0w_452815a1-2492-4932-95b1-77aeae6e331c id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNC0xLTEtMA_3c7db71d-765a-4371-a27f-d97efe6c933b id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtMi0xLTEtMA_f6b63f9c-710d-4bca-be6e-b95ac093b305 id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtOC0xLTEtMA_5d60a2fd-a71d-4dd1-a5f1-fc8412f5fc24" linkRole="http://www.xbrl.org/2003/role/link" toRefs="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6" order="1"></ix:relationship></ix:resources></ix:header></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:DocumentType" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI0_bf5ac2d6-aeb4-4d0b-bb2e-738af7b32068">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:boolballotbox" name="dei:DocumentAnnualReport" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI1_b9fc307f-cb42-42d7-a2a3-42e936cd6b4e">&#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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt:datemonthdayyearen" name="dei:DocumentPeriodEndDate" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yMTQ_8b91a193-7788-4c05-9974-44e5ad8927d5">December 31, 2020</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:boolballotbox" name="dei:DocumentTransitionReport" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI5_28998993-3c4d-4c49-9aea-2984729a0a4e">&#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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:EntityFileNumber" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI2_12037397-e30f-4334-bacd-c304cb8050e8">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:EntityRegistrantName" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI3_ae8958c6-01c1-456f-918d-330fd9817bee">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-bottom:5pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:stateprovnameen" name="dei:EntityIncorporationStateCountryCode" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6MGJhM2E3ODRjMGVjNDA0ZWFhZGM5M2QzYzAzODcxNDAvdGFibGVyYW5nZTowYmEzYTc4NGMwZWM0MDRlYWFkYzkzZDNjMDM4NzE0MF8wLTEtMS0xLTA_85e7f8eb-8157-4983-b2a1-69433f41d5ec">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:EntityTaxIdentificationNumber" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6MGJhM2E3ODRjMGVjNDA0ZWFhZGM5M2QzYzAzODcxNDAvdGFibGVyYW5nZTowYmEzYTc4NGMwZWM0MDRlYWFkYzkzZDNjMDM4NzE0MF8wLTMtMS0xLTA_7e635f44-70ff-43ed-aa72-aa97bb268542">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:EntityAddressAddressLine1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI4_4043b89e-2212-466e-8ae5-19293f8df04a">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:EntityAddressCityOrTown" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzMw_36a432a6-d84a-469d-9253-e472f4716647">Natick</ix:nonNumeric>,&#160;<ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:stateprovnameen" name="dei:EntityAddressStateOrProvince" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzIx_f47405ba-2e17-45d4-b319-f0734ed2008a">Massachusetts</ix:nonNumeric>&#160;<ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:EntityAddressPostalZipCode" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzIy_7b53a760-5f50-4798-a28d-bf2625fa547e">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:CityAreaCode" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzMx_f9852ec7-c1c8-4534-a63d-8508a0972ea2">508</ix:nonNumeric>) <ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:LocalPhoneNumber" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzIz_68c554dd-1cdd-45db-8c83-bb57df55c6ff">650-3000</ix:nonNumeric> </span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:Security12bTitle" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6MzMzZjZjOGEyYWQ2NGU1OTg1OGM2YjI1ZDRjMjAwZDIvdGFibGVyYW5nZTozMzNmNmM4YTJhZDY0ZTU5ODU4YzZiMjVkNGMyMDBkMl8xLTAtMS0xLTA_abc3fd53-2180-4b35-98f1-3b965295511f">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:TradingSymbol" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6MzMzZjZjOGEyYWQ2NGU1OTg1OGM2YjI1ZDRjMjAwZDIvdGFibGVyYW5nZTozMzNmNmM4YTJhZDY0ZTU5ODU4YzZiMjVkNGMyMDBkMl8xLTEtMS0xLTA_6719c744-800b-4253-a4e1-e68444374b13">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:exchnameen" name="dei:SecurityExchangeName" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6MzMzZjZjOGEyYWQ2NGU1OTg1OGM2YjI1ZDRjMjAwZDIvdGFibGVyYW5nZTozMzNmNmM4YTJhZDY0ZTU5ODU4YzZiMjVkNGMyMDBkMl8xLTItMS0xLTA_2b0393ce-7dd7-4ced-9f6e-8531ee03da55">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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:EntityWellKnownSeasonedIssuer" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6NmI5ZjY1MTQyYWQzNDRkOGE2ZmIxZjVhM2I5NTViOTgvdGFibGVyYW5nZTo2YjlmNjUxNDJhZDM0NGQ4YTZmYjFmNWEzYjk1NWI5OF8wLTItMS0xLTA_50d343f2-c64c-4820-a4be-f6c678756f49">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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:EntityVoluntaryFilers" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6YWMyZGU1MzJkNDk0NDJjZWE4MjQ4MmQ4NDI5ZDM0ZjIvdGFibGVyYW5nZTphYzJkZTUzMmQ0OTQ0MmNlYTgyNDgyZDg0MjlkMzRmMl8wLTgtMS0xLTA_f1c45ef0-5f3a-4968-b7fd-a1c2ff7da416">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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:EntityCurrentReportingStatus" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6YTVmMTEzYjg5N2FmNDYwNjllMGIzZmNkZDg4N2Q3ODYvdGFibGVyYW5nZTphNWYxMTNiODk3YWY0NjA2OWUwYjNmY2RkODg3ZDc4Nl8wLTItMS0xLTA_70130db6-3501-4ffe-9423-8ae4b7f178c5">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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="dei:EntityInteractiveDataCurrent" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6OTc0ZGUyZjI0N2IyNDlhOTk3NGRlNTBlODI1NzBiMjUvdGFibGVyYW5nZTo5NzRkZTJmMjQ3YjI0OWE5OTc0ZGU1MGU4MjU3MGIyNV8wLTItMS0xLTA_89febf95-ba78-4160-a097-cb5c088ca945">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 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 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:entityfilercategoryen" name="dei:EntityFilerCategory" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6NWU3ZDkyMWM3NjlhNGNhYmFkMmFlODAzNGJjMmIzYmMvdGFibGVyYW5nZTo1ZTdkOTIxYzc2OWE0Y2FiYWQyYWU4MDM0YmMyYjNiY18wLTEtMS0xLTA_7bc51882-6d20-48da-93c4-4581cf037873">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:boolballotbox" name="dei:EntitySmallBusiness" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6NWU3ZDkyMWM3NjlhNGNhYmFkMmFlODAzNGJjMmIzYmMvdGFibGVyYW5nZTo1ZTdkOTIxYzc2OWE0Y2FiYWQyYWU4MDM0YmMyYjNiY18xLTMtMS0xLTA_94e63dcc-5a96-4309-bdc3-985c45534906">&#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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:boolballotbox" name="dei:EntityEmergingGrowthCompany" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6NWU3ZDkyMWM3NjlhNGNhYmFkMmFlODAzNGJjMmIzYmMvdGFibGVyYW5nZTo1ZTdkOTIxYzc2OWE0Y2FiYWQyYWU4MDM0YmMyYjNiY18yLTMtMS0xLTA_062b74ef-952b-4cb1-b27e-142061edcc56">&#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 style="margin-top:2pt"><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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:boolballotbox" name="dei:IcfrAuditorAttestationFlag" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6ZTc2MWE2MTc4Yzk2NGE2MWJlODY5N2MxYTFlMmQ1ZTEvdGFibGVyYW5nZTplNzYxYTYxNzhjOTY0YTYxYmU4Njk3YzFhMWUyZDVlMV8wLTQtMS0xLTE0MTQz_8b22e0bb-ae51-43d2-aeb6-501bcf6bc245">&#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 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 is a shell company (as defined in Rule 12b-2 of the Exchange Act).</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:boolballotbox" name="dei:EntityShellCompany" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6NGY5NmJhZWYzOTZkNDc2Y2E2ZmM1YjU2NDM1Y2VlYjQvdGFibGVyYW5nZTo0Zjk2YmFlZjM5NmQ0NzZjYTZmYzViNTY0MzVjZWViNF8wLTQtMS0xLTA_8bad4994-90e5-4649-bfcf-7ef49332e282">&#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 June&#160;28, 2020: $<ix:nonFraction unitRef="usd" contextRef="i1e5c63c6777548228466750a07807abe_I20200628" decimals="0" format="ixt:numdotdecimal" name="dei:EntityPublicFloat" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yMzc1_377ce1a4-4606-4958-8c25-295b68f23f1c">9,792,441,959</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;31, 2021: <ix:nonFraction unitRef="shares" contextRef="i339b13469197477d94eadc65702c8699_I20210131" decimals="0" format="ixt:numdotdecimal" name="dei:EntityCommonStockSharesOutstanding" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNDQy_7f626ba7-73ed-4201-a6c2-959e4bd166aa">176,028,184</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, 2020. 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="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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, 2020 </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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:1.0%"></td><td style="width:68.254%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:14.297%"></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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_22">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 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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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">INFORMATION ABOUT OUR <a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_31">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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_34">16</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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_37">16</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="#i1a430d3f39e74769965c1cc9f7e66842_40">SELECTED FINANCIAL 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="#i1a430d3f39e74769965c1cc9f7e66842_40">18</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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_43">19</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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_58">31</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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_61">34</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="#i1a430d3f39e74769965c1cc9f7e66842_202">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="#i1a430d3f39e74769965c1cc9f7e66842_202">76</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="#i1a430d3f39e74769965c1cc9f7e66842_205">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="#i1a430d3f39e74769965c1cc9f7e66842_205">76</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="#i1a430d3f39e74769965c1cc9f7e66842_208">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="#i1a430d3f39e74769965c1cc9f7e66842_208">78</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="#i1a430d3f39e74769965c1cc9f7e66842_211">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="#i1a430d3f39e74769965c1cc9f7e66842_211">78</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="#i1a430d3f39e74769965c1cc9f7e66842_214">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="#i1a430d3f39e74769965c1cc9f7e66842_214">78</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="#i1a430d3f39e74769965c1cc9f7e66842_217">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="#i1a430d3f39e74769965c1cc9f7e66842_217">78</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="#i1a430d3f39e74769965c1cc9f7e66842_220">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="#i1a430d3f39e74769965c1cc9f7e66842_220">78</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="#i1a430d3f39e74769965c1cc9f7e66842_223">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="#i1a430d3f39e74769965c1cc9f7e66842_223">79</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="#i1a430d3f39e74769965c1cc9f7e66842_226">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="#i1a430d3f39e74769965c1cc9f7e66842_226">79</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="#i1a430d3f39e74769965c1cc9f7e66842_229">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="#i1a430d3f39e74769965c1cc9f7e66842_229">79</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="#i1a430d3f39e74769965c1cc9f7e66842_232">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="#i1a430d3f39e74769965c1cc9f7e66842_232">79</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="#i1a430d3f39e74769965c1cc9f7e66842_235">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="#i1a430d3f39e74769965c1cc9f7e66842_235">79</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="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="i1a430d3f39e74769965c1cc9f7e66842_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%">Although Cognex sells to customers in a variety of industries, our largest industries are the consumer electronics, logistics, and automotive industries, which combined represented approximately 70% of our total revenue in 2020. While we sell to a variety of customers in the automotive industry, we have two large customers in the consumer electronics and logistics industries that each represented a significant portion of revenue in their respective industries and each represented over 10% of our total revenue in 2020. Our total revenue and quarterly timing of revenue is impacted by the purchasing cycles of these two large 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%">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. </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 can achieve better quality and manufacturing efficiency by using machine vision, and therefore, Cognex products are used by a broad base of customers across a variety of industries, including consumer electronics, automotive, consumer products, food and beverage, and medical-related. Cognex products are also used to automate distribution processes in the logistics industry for applications in retail distribution and ecommerce to scan, track, and sort goods through distribution centers. </span></div><div style="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 may 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. </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="#i1a430d3f39e74769965c1cc9f7e66842_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%">Cognex&#8217;s ability to compete depends upon 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 vendor reputation, product functionality and performance, ease of use, price, and post-sales support. The importance of each of these factors varies depending upon the specific customer&#8217;s needs.</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%">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 ranged 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, highly educated, experienced 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. We believe that our acquisition of Sualab Co., Ltd. in 2019 will continue to expand our deep learning technology to visual inspection tasks that could replace human inspectors and make automated inspection tasks fast, easy, and cost-effective.</span></div><div style="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 consumer electronics and automotive, 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 retail distribution and ecommerce.</span></div><div style="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 and 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. This includes investment in China, where rising wages for assembly workers and a greater focus on product quality are driving assembly automation, particularly in the consumer electronics 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%">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. </span></div><div style="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, Cognex acquired Sualab Co., Ltd. (Sualab), a provider of deep learning-based vision software for industrial image analysis based in Korea. The total consideration of approximately $194 million included cash payments of $170 million and deferred payments of $24 million that may become payable on the fourth anniversary date of the closing, contingent upon continued employment of key talent. Sualab's intellectual property, engineering expertise, and market coverage are expected to increase the Company's deep learning capabilities. Combined with intellectual property acquired from ViDi Systems S.A. in 2017, we believe that Cognex is now a leading provider of deep learning-based industrial 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%">Management considers 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 our long-term growth rate 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 </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="#i1a430d3f39e74769965c1cc9f7e66842_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%">solve complex applications with unpredictable defects and deviations. Our products also have a variety of physical forms, depending upon 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.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%"> vision systems and sensors, which includes 2D, 3D, alignment, and deep learning models, meet various price and performance requirements for factory automation customers. Our newest deep learning systems introduced in 2020 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="margin-top:5pt;text-align:justify"><span style="background-color:#ffffff;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</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%"> software offers an extensive suite of patented vision tools for advanced programming, while Cognex Designer</span><span style="color:#000000;font-family:'Calibri',sans-serif;font-size:11pt;font-weight:400;line-height:120%">&#8482;</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> allows customers to build complete vision applications with the simplicity of a graphical, flowchart-based programming environment. Cognex Deep Learning software solves difficult applications that are too complicated and time-consuming to program and maintain with traditional machine vision rule-based algorithms.</span></div><div style="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:115%">Cognex image-based barcode readers quickly and reliably read 1D, 2D, 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:9pt;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 16% in 2020, 16% in 2019, and 14% in 2018. 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 a turnkey operation whereby the majority of component procurement, system assembly, and initial testing are performed by third-party contract manufacturers. Cognex&#8217;s primary contract manufacturer is located in Indonesia. The contract manufacturers use specified components sourced from a vendor list approved by Cognex and assembly/test documentation created and controlled by Cognex. Certain components are presently sourced from a single vendor that is selected based on price and performance considerations. In the event of a supply disruption from a single-source vendor, these components may be purchased from alternative vendors. </span></div><div style="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, a fully-assembled product from the contract manufacturers is routed to our distribution centers in Cork, Ireland or Natick, Massachusetts, USA, where trained Cognex personnel load Cognex software onto the product 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, </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="#i1a430d3f39e74769965c1cc9f7e66842_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%">Massachusetts distribution center, while finished products for customers outside of the Americas are shipped from our Cork, Ireland distribution center. In 2020, the Company began stocking certain fully-configured finished products in its Mexico facility in order to provide faster delivery to local 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: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 65% of our total revenue in 2020, with approximately 26% from customers based in Europe, 21% from customers based in Greater China, and 18% 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 Yuan 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%">At Cognex, we refer to our employees as "Cognoids." As of December&#160;31, 2020, Cognex employed 2,055 Cognoids, including 1,149 in sales, marketing, and service activities; 537 in research, development, and engineering; 164 in manufacturing and quality assurance; and 205 in information technology, finance, and administration. Of our 2,055 Cognoids, 1,247 are based outside of the United States. We have not experienced any work stoppages due to labor disputes. We believe that our employee relations are good.</span></div><div style="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 a strong and unique corporate culture to guide the actions and behaviors of our Cognoids. Our culture 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%"> - and is represented by our motto - </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%">. We believe our culture enables us to attract and retain smart, energetic, and creative talent, and is critical to our ability to execute on our operating plans and strategic initiatives. To preserve and enhance our culture, we have a global team of Cognoids who serve as </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:400;line-height:120%">Ministers of Culture</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> and are led by our Chief Culture Officer, Robert J. Shillman, our Founder and Chairman of the 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%">We have a robust talent development process that focuses on identifying and developing high-potential employees, as well as succession planning for key positions. Our compensation programs are based on pay-for-performance, with a greater percentage of total compensation tied to variable incentive programs, such as performance-based bonuses and stock-based awards, as Cognoids advance to more senior positions. </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 </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><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="#i1a430d3f39e74769965c1cc9f7e66842_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%">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 id="i1a430d3f39e74769965c1cc9f7e66842_16"></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 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%">Our business has been, and is expected to continue to be, adversely affected by 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%">The COVID-19 (also referred to as &#8220;coronavirus&#8221;) outbreak developed into a global pandemic in March 2020. The COVID-19 outbreak had a modest adverse impact on our business in the first quarter of 2020, primarily near the end of the quarter. This impact expanded and accelerated into the second quarter of 2020, as we noted lower demand for our products in certain industries, additional disruptions to our supply chain, longer customer delivery times, higher delivery costs, and further shutdowns of customer facilities. These conditions triggered a review of long-lived assets that resulted in intangible asset impairment charges of $19,571,000 and excess inventory exposures that resulted in charges of $7,718,000 in the second quarter of 2020. Although the impact of these conditions on our business to date appears to have been most severe in the second quarter of 2020, certain industries we serve continue to be adversely impacted by the global pandemic, most notably the automotive industry, which was our largest market in 2019. Furthermore, the impact of the pandemic could worsen in any of our major industries or geographies in the future, resulting in deteriorating economic and business conditions and adverse effects on our business, results of operations, and financial condition. We 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 changing governmental regulations and the scope and duration of social distancing and commercial restrictions. These risks and uncertainties include, among others:</span></div><div style="margin-top:5pt;padding-left:72pt;text-align:justify;text-indent:-18pt"><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:14.5pt">our customers may further delay or cancel orders for our products, </span></div><div style="margin-top:5pt;padding-left:72pt;text-align:justify;text-indent:-18pt"><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:14.5pt">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:72pt;text-align:justify;text-indent:-18pt"><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:14.5pt">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:72pt;text-align:justify;text-indent:-18pt"><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:14.5pt">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:72pt;text-align:justify;text-indent:-18pt"><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:14.5pt">our vendors may 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,</span></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><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:14.5pt">our contract manufacturers may experience interruptions that result in delivery delays and higher costs for our products, </span></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><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:14.5pt">we may experience manufacturing delays and higher costs in the event of a supply disruption from a single-source vendor, </span></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><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:14.5pt">we may experience extended customer delivery times and higher delivery costs, </span></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><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:14.5pt">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:72pt;text-indent:-18pt"><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:14.5pt">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:72pt;text-indent:-18pt"><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:14.5pt">challenges involved in working from home may delay certain of our new product introductions, </span></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><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:14.5pt">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:72pt;text-indent:-18pt"><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:14.5pt">lower cash flows may result in impairment charges for acquired intangible assets, </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="#i1a430d3f39e74769965c1cc9f7e66842_7">Table of Content</a></span></div></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><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:14.5pt">our investment portfolio of debt securities may be exposed to material credit losses, and</span></div><div style="margin-top:5pt;padding-left:72pt;text-indent:-18pt"><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:14.5pt">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"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-style:italic;font-weight:700;line-height:120%">Our restructuring activities may result in disruption to 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 May 2020, our Board of Directors approved a restructuring plan intended to reduce our operating costs, optimize our business model, and address the impact of the COVID-19 pandemic. The restructuring plan included a workforce reduction of approximately 8% and office closures. These restructuring actions, together with other actions to reduce the Company's overall costs, were designed to generate an aggregate annualized cost savings of approximately $25 million versus our original planned cost structure. As of December 31, 2020, the majority of these actions have been completed to achieve the annualized cost savings from this restructuring plan. Furthermore, as of the date of this report, business levels have improved from our financial projections in May 2020, when we believe the impact of the pandemic on our business was most severe. While we do not anticipate further restructuring actions, we continue to tightly manage our operating costs and optimize our business model. Although we expect to continue to make investments in strategic areas, the restructuring actions we completed in 2020 may nevertheless negatively impact programs we believe are important to the long-term success of our company, such as the ability to accelerate time to market for new products. In addition, our ability to provide a high level of service to our customers may be negatively impacted by these actions, particularly in regions where we have downsized our 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">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, two 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 2020, the Company had two large customers in the consumer electronics and logistics industries that each represented a significant portion of revenue in their respective industries and each represented over 10% of our total revenue in 2020. Our total revenue and quarterly timing of revenue is impacted by the purchasing cycles of these two large 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%">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 revenue 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 further curtailment of purchases by, any one or more of our larger 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-style:italic;font-weight:700;line-height:120%">A continued downturn in the automotive industry may further 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%">Revenue from customers in the automotive industry, which was our largest market in 2019, declined by approximately 20% in 2020. It has been reported that the automotive industry has been significantly and adversely impacted by the COVID-19 pandemic, as consumer demand for new automobiles has been curtailed and investment in new electric vehicle technology has been delayed. Furthermore, the surge in demand for electronics during the pandemic has resulted in chip shortages that may constrain vehicle production and delay a recovery of our business in this industry. Despite the decline in revenue from customers in the automotive industry in 2020, automotive revenue continues to represent a significant portion of our total revenue, and we are dependent upon revenue from customers in this industry to achieve our longer-term, high-margin growth plans. As a result, our operating results could continue to be materially and adversely affected by further declining sales in this 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">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 deliver quality product in a timely manner or 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%">A significant portion of our products is 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 and when that may be applicable. We rely upon 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. We also rely upon our contract manufacturers to meet delivery schedules. </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="#i1a430d3f39e74769965c1cc9f7e66842_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 have in the past experienced, and may continue in the future to experience, delays in the delivery of our finished 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 finished products from China and other regions that experienced interruptions in production and delivery during the pandemic as factories were closed. 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, in turn, result in delayed deliveries to our customers past their requested delivery date and negatively impact customer satisfaction.</span></div><div style="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 components are presently sourced from a single vendor that is selected based on price and performance considerations. In the event of a supply disruption from a single-source vendor, these components may be purchased from alternative vendors, which may result in manufacturing delays based on the lead time of the new vendor and higher costs. Certain key electronic and mechanical components that are purchased from strategic suppliers, such as processors or imagers, are fundamental to the design of Cognex products. A disruption in the supply of these key components, such as a last-time-buy announcement, natural disaster, financial bankruptcy, or other event, may require us to purchase a significant amount of inventory at unfavorable prices resulting in lower gross margins and higher risk of carrying excess inventory. If we are unable to secure adequate supply from alternative vendors, we may have to redesign our products, which may lead to a delay in manufacturing and a possible loss of sales. Furthermore, the surge in demand for electronics during the COVID-19 pandemic has resulted in chip shortages that may impact the supply for our products. Although we are taking certain actions to mitigate supply risk, an interruption in, termination of, or material change in the purchase terms of any key components 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%">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="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 take advantage of favorable pricing, address concerns about the availability of future supplies, or build safety stock to help ensure customer shipments are not delayed should we experience higher than anticipated demand for materials with long lead times. 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%">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 of 2020. 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%">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="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="#i1a430d3f39e74769965c1cc9f7e66842_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">Risks Related to Execution of our Business Strategy</span></div><div style="margin-top:5pt"><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 from their homes 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 essential businesses. 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 allow, we anticipate returning to a more collaborative, largely on-site work environment. If work-from-home conditions continue longer than anticipated or we are unable to successfully bring people back into the office once safe to do so, 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 are highly dependent upon the management and leadership of our senior management team. Although we have many experienced and qualified senior managers, the loss of key personnel could have a material adverse effect on our 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%">We use stock options and restricted stock units (RSUs) as a key component of our employee compensation program 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="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 effectively manage our growth, 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%">We have in the past experienced, and may again in the future experience, periods of rapid revenue growth due to such factors as the level of investment from key customers or the impact of general economic recoveries on automation spending. The growth and expansion of our business and product offerings place significant demand on our employees and, in particular, our management team. This growth may require significant additional resources, which may not scale in a cost-effective manner or may negatively impact our customers&#8217; experience. We may not be able to hire and train new employees and contractors quickly enough to meet our business needs. If we fail to quickly adapt our hiring and training plans to our business levels or effectively execute on our hiring plans, our efficiency and ability to meet our operating goals could suffer. Furthermore, employee productivity, morale, and retention could suffer, which may have a material adverse effect on 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-style:italic;font-weight:700;line-height:120%">Our inability to achieve growth in revenue and profits from our logistics business 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%">We are pursuing applications to automate distribution processes in the logistics industry including applications for retail distribution and ecommerce to scan, track, and sort goods through distribution centers. Our future growth plans are dependent upon growth in this industry. Our gross margin percentage in this industry is currently lower than our average gross margin percentage, as certain sales in this industry are for application-specific customer solutions that include deployment services. Our strategy is to shift our focus as the logistics market matures from Cognex providing deployment services to utilizing partner integrators to provide these services for end users, which we believe will result in improved gross margins that will be more in line with our overall average over time. In addition, we are making significant investments in engineering and sales to further develop our logistics business. Failure to generate revenue in this industry in the amounts and at the gross margins anticipated may have a material adverse impact on our revenue growth and operating results.</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="#i1a430d3f39e74769965c1cc9f7e66842_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 upon 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 upon 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 upon 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%">Finished products for customers in the Americas, with the exception of certain products stocked locally in Mexico, are shipped from our Natick, Massachusetts distribution center, while finished products for customers outside of the Americas are shipped from our Cork, Ireland distribution center. In 2020, we began stocking certain fully-configured finished products in our Mexico facility in order to provide faster delivery to local customers. To support the expansion of our business internationally, we may decide to make changes to our operating structure in other countries in the future 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:115%">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 may 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. Any of these competitors may have greater financial and other resources than we do. 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 result in the impairment of acquired 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%">In 2019, we completed our largest acquisition to date when we acquired Sualab Co., Ltd., a provider of deep learning-based vision software based in Korea. Our business may be negatively impacted by risks related to this acquisition, as well as other smaller acquisitions we have completed in the past few years, and future acquisitions that we may make. These risks include, among others:</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="#i1a430d3f39e74769965c1cc9f7e66842_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 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:'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 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:'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">the inability to realize expected synergies or other benefits resulting from the acquisition,</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">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">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:'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 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:'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">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%">In 2021, 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. We expect these new sales systems to be placed into service in the first quarter of 2022. 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 a new system 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 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 infrastructure and management information systems to effectively run our business. We may be subject to information security breaches caused by hacking, malicious software, or acts of vandalism or terrorism. 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, the violation of privacy or other laws, 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 past that have included malware, viruses, phishing attacks, and intrusion attempts to Cognex&#8217;s internet-facing systems. 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, 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, specifically from companies in Russia and China, may result in counterfeit products that are misrepresented in the market as Cognex products or pirated products that contain stolen technology such as software source code. 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="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="#i1a430d3f39e74769965c1cc9f7e66842_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 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 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: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 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 of December&#160;31, 2020, we had approximately $498 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&#160;31, 2020, our portfolio of debt securities had an unrealized gain of $5,690,000, and no unrealized losses. However, at any point in time, we may hold securities in an unrealized loss position. 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. </span></div><div style="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, 2020, we had approximately $16 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. 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 in the second quarter of 2020, primarily related to lower projected cash flows from the technologies and customer relationships acquired from Sualab. 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, 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%">We are subject to taxes in the United States, as well as in numerous foreign jurisdictions, including income taxes, indirect taxes such as value-added taxes (VAT), and payroll-related taxes and withholding obligations. Significant judgment is required in determining our worldwide provision for income and other taxes. In the ordinary course of business, there are many transactions and calculations where the ultimate tax determination is uncertain. We are regularly under audit by 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 and any related litigation could be materially different than that which 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="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="#i1a430d3f39e74769965c1cc9f7e66842_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 success of our foreign currency risk management program depends upon 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 Yuan is limited, which has resulted in unhedged exposures. To date, foreign currency gains and losses related to the Chinese Yuan 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 Yuan, and to a lesser extent the Japanese Yen, Korean Won, and Mexican Peso. We estimate that approximately 45% of our sales in 2020 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: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. Economic downturns 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:'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 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:'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 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:'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">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:'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">lower cash flows may result in impairment charges for acquired intangible assets or goodwill,</span></div><div style="margin-top:5pt;padding-left:81pt;text-align:justify;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">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:'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">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&#160;31, 2020, the Company had approximately $767 million in cash and investments. In addition, Cognex has no long-term debt and we do not anticipate needing debt financing in the near future. 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%">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 2020, approximately 65% 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="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="#i1a430d3f39e74769965c1cc9f7e66842_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:'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:'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">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:'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">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:'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">public health epidemics or pandemics, such as the COVID-19 pandemic,</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 our products. To date, these cost increases have been immaterial to our total cost of goods sold and primarily relate to components sourced in China for new products that we build in the United States in their infancy before they are moved to our contract manufacturer in Indonesia; however, cost increases as a result of trade tariffs could become 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. Further escalations of trade conflicts between the United States and China, or other countries where Cognex has operations, may have a further adverse effect on our revenue. 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, without limitation, any 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-weight:400;line-height:120%">Finally, Brexit, or the withdrawal of the United Kingdom (U.K.) from the European Union, resulted in a new trade agreement between these two parties that became effective on January 1, 2021. Revenue from customers in the U.K. represented approximately 1% of our total revenue in 2020. Under the new trade process, our U.K. customers have experienced, and may continue to experience, delivery delays as additional customs documents are required to complete delivery.</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="i1a430d3f39e74769965c1cc9f7e66842_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 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="i1a430d3f39e74769965c1cc9f7e66842_22"></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="#i1a430d3f39e74769965c1cc9f7e66842_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 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 sales, marketing, service, logistics, 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. </span></div><div style="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 where we had previously leased space for several years. 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 leased facilities. These lease agreements expire at various dates through 2030. Certain of these leases contain renewal options, retirement obligations, escalation clauses, rent holidays, and leasehold improvement incentives.</span></div><div id="i1a430d3f39e74769965c1cc9f7e66842_25"></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="i1a430d3f39e74769965c1cc9f7e66842_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="i1a430d3f39e74769965c1cc9f7e66842_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, 2020:</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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&#160;J.&#160;Shillman</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%">74</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%">Chairman of the Board of Directors 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%">Robert J. Willett</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%">53</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%">President and Chief Executive 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%">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%">Executive Vice President of Employee Services</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 Gerst</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%">53</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 Products and Platforms</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%">Paul Todgham</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%">44</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%">Senior Vice President of Finance and Chief Financial Officer</span></td></tr></table></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%">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%">Dr.&#160;Shillman and Mr. Willett, who are both members of the Company's Board of Directors, have been employed by Cognex in their current positions 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%">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. 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. In 2020, Mr. Gerst was promoted to Executive Vice President of Vision and ID Products and his leadership role was expanded to include Vision Products and Global Marketing Communications. Prior to joining Cognex, Mr. Gerst held roles in engineering, sales, and product marketing for Hand Held Products (now Honeywell Imaging and Mobility), a leading supplier of Automatic Identification and Data Collection equipment. 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><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="#i1a430d3f39e74769965c1cc9f7e66842_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%">Mr. Todgham joined Cognex in March 2020. Prior to joining Cognex, Mr. Todgham spent six years at Levi Strauss &amp; Company, where he held a range of senior leadership positions, including leading finance for the company&#8217;s Global Supply Chain, Distribution, Merchandising, Planning, Design, and Marketing teams. He previously served as Vice President of Finance for Ross Stores, Inc., where he oversaw financial planning &amp; analysis and treasury functions. 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 Master in Business Administration from Stanford University, a Master in Economics from the University of Cambridge, and a Bachelor of Arts degree in Applied Mathematics from Harvard University.</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><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="i1a430d3f39e74769965c1cc9f7e66842_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;31, 2021, 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. As of December 31, 2020, the Company repurchased 2,816,000 shares at a cost of $121,348,000 under this program, including 1,215,000 shares at a cost of $51,036,000 during 2020, leaving a remaining balance of $78,652,000. 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. Purchases under this March 2020 program will commence upon completion of the October 2018 program. 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 2020:</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">September 28 - October 25, 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%">&#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"></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%">&#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"></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%">&#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"></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%">278,652,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%">October 26 - November 22, 2020</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">&#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%">&#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%">278,652,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 23 - December 31, 2020</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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%">&#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%">&#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%">278,652,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%">&#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"></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%">&#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"></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%">&#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"></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%">278,652,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="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 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, and $0.055 in the fourth quarter of 2019, as well as in the first, second, and third quarters of 2020. The dividend was increased to $0.060 per share in the fourth quarter of 2020. 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 $390,508,000 in 2020, which included $351,428,000 paid for the special cash dividend, $35,124,000 in 2019, and $31,865,000 in 2018. Future dividends will be declared at the discretion of the Company's Board of Directors and will depend upon 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%">16</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="#i1a430d3f39e74769965c1cc9f7e66842_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-20201231_g1.jpg" alt="cgnx-20201231_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="margin-bottom:5pt;margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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/2015 in stock or index, including reinvestment of dividends.  Fiscal year ended December 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%">12/15</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%">12/16</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%">12/17</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%">12/18</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%">12/19</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%">12/20</span></td></tr><tr><td colspan="3" style="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="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="border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="2" style="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%">189.58</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="border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="2" style="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%">365.72</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="border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="2" style="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%">232.13</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="border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="2" style="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%">337.84</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="border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="border-top:1pt solid #000000;padding:0 1pt"></td><td colspan="2" style="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%">498.56</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="border-top:1pt solid #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="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="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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="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%">108.87</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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="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%">141.13</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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="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%">137.12</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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="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%">187.44</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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="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%">271.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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="3" style="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="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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="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%">103.62</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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="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%">158.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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="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%">149.08</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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="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%">207.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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></td><td colspan="2" style="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%">280.67</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="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr><td colspan="30" style="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="padding:0 1pt"></td><td colspan="3" 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%">17</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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;SELECTED FINANCIAL DATA</span></div><div style="margin-bottom:5pt;margin-top:14pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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><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="27" 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%">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><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%">2018</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%">2017</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%">2016</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="27" 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><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%">Statement of Operations Data:</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><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="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%">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: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%">811,020</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%">725,625&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 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%">806,338&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 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%">766,083&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 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%">529,515&#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%">Cost of revenue (1)</span></td><td colspan="2" style="background-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%">206,421</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%">189,754&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">206,052&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">187,289&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">131,070&#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%">Gross margin</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%">604,599</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%">535,871&#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%">600,286&#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%">578,794&#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%">398,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"></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%">Research, development, and engineering expenses (1)</span></td><td colspan="2" style="background-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%">130,982</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%">119,427&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">116,445&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">99,205&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">78,269&#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%">Selling, general, and administrative expenses (1)</span></td><td colspan="2" style="background-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%">267,593</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%">273,842&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">262,699&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">220,728&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">166,110&#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%">Restructuring 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%">15,924</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%">&#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></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%">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%">19,571</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%">&#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></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%">Operating income</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%">170,529</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%">142,602&#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%">221,142&#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%">258,861&#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%">154,066&#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%">Non-operating 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:9pt;font-weight:700;line-height:100%">16,382</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%">20,392&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">13,432&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">7,603&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">8,011&#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%">Income from continuing operations before income tax expense (benefit)</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%">186,911</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%">162,994&#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%">234,574&#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%">266,464&#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%">162,077&#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%">Income tax expense (benefit) on continuing operations</span></td><td colspan="2" style="background-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%">10,725</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%">(40,871)</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">15,307&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">89,752&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">18,128&#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 income from continuing operations</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%">176,186</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%">203,865&#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%">219,267&#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%">176,712&#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%">143,949&#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 loss from discontinued operations (1)</span></td><td colspan="2" style="background-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%">&#8212;</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%">&#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%">(255)</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 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: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:9pt;font-weight:700;line-height:100%">176,186</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 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%">203,865&#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%">219,267&#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%">176,712&#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%">143,694&#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:3pt"><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><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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Basic earnings per weighted-average common and common-equivalent share (2):</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:9pt;font-weight:400;line-height:100%">Net income from continuing operations</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%">1.02</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%">1.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 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%">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 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%">1.02&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 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%">0.84&#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 loss from discontinued operations</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:9pt;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:9pt;font-weight:700;line-height:100%">&#8212;</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 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:9pt;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: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 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:9pt;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: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 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:9pt;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: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 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:9pt;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: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></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;border-top:1pt 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%">1.02</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%">1.19&#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%">1.27&#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%">1.02&#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%">0.84&#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:3pt"><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><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:400;line-height:100%">Diluted earnings per weighted-average common and common-equivalent share (2):</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:9pt;font-weight:400;line-height:100%">Net income from continuing operations</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:9pt;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:9pt;font-weight:700;line-height:100%">1.00</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 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:9pt;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:9pt;font-weight:400;line-height:100%">1.16&#160;</span></td><td style="background-color:#ffffff;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:9pt;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:9pt;font-weight:400;line-height:100%">1.24&#160;</span></td><td style="background-color:#ffffff;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:9pt;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:9pt;font-weight:400;line-height:100%">0.98&#160;</span></td><td style="background-color:#ffffff;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:9pt;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:9pt;font-weight:400;line-height:100%">0.83&#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%">Net loss from discontinued operations</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%">&#8212;</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%">&#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: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%">&#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: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%">&#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: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%">&#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 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:#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: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:9pt;font-weight:700;line-height:100%">1.00</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 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%">1.16&#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%">1.24&#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%">0.98&#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%">0.83&#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:3pt"><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><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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Weighted-average common and common-equivalent shares outstanding (2):</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:9pt;font-weight:400;line-height:100%">Basic</span></td><td colspan="2" style="background-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%">173,489</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%">171,194&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">172,333&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">173,287&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">170,676&#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%">Diluted</span></td><td colspan="2" style="background-color:#ffffff;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:9pt;font-weight:700;line-height:100%">176,592</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: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="2" style="background-color:#ffffff;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:9pt;font-weight:400;line-height:100%">175,269&#160;</span></td><td style="background-color:#ffffff;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="2" style="background-color:#ffffff;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:9pt;font-weight:400;line-height:100%">177,406&#160;</span></td><td style="background-color:#ffffff;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="2" style="background-color:#ffffff;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:9pt;font-weight:400;line-height:100%">179,551&#160;</span></td><td style="background-color:#ffffff;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="2" style="background-color:#ffffff;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:9pt;font-weight:400;line-height:100%">174,144&#160;</span></td><td style="background-color:#ffffff;border-top:3pt double #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: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><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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">Cash dividends per common share (2)</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:9pt;font-weight:700;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:9pt;font-weight:700;line-height:100%">2.2250</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></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:9pt;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:9pt;font-weight:400;line-height:100%">0.2050&#160;</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></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:9pt;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:9pt;font-weight:400;line-height:100%">0.1850&#160;</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></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:9pt;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:9pt;font-weight:400;line-height:100%">0.1675&#160;</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="padding:0 1pt"></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:9pt;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:9pt;font-weight:400;line-height:100%">0.1475&#160;</span></td><td style="padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td></tr><tr style="height:3pt"><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><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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%">(1) Amounts include stock-based compensation expense, as follows:</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:9pt;font-weight:400;line-height:100%">Cost of 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: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%">1,365</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%">1,504&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 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%">2,447&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 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%">1,881&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 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%">1,052&#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%">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:9pt;font-weight:700;line-height:100%">13,387</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%">15,748&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">14,578&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">11,022&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">6,271&#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%">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:9pt;font-weight:700;line-height:100%">27,909</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%">28,337&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">24,065&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">19,039&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">13,235&#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%">Discontinued 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:9pt;font-weight:700;line-height:100%">&#8212;</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%">&#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></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%">Total stock-based compensation expense</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%">42,661</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%">45,589&#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%">41,090&#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%">31,942&#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%">20,558&#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:3pt"><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><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="30" 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%">(2)  Prior period results have been adjusted to reflect the two-for-one stock split effected in the form of a stock dividend which occurred in 2017.</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="27" style="background-color:#ffffff;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 31,</span></td></tr><tr><td colspan="3" style="background-color:#cceeff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height: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:9pt;font-weight:700;line-height:100%">2020</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;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><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;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%">2018</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;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%">2017</span></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="3" style="background-color:#cceeff;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%">2016</span></td></tr><tr><td colspan="3" style="background-color:#ffffff;padding:2px 1pt;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Times New Roman',sans-serif;font-size:9pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="27" 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: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:400;line-height:100%">Balance Sheet Data:</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:9pt;font-weight:400;line-height:100%">Working capital</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:9pt;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:9pt;font-weight:700;line-height:100%">469,394</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 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:9pt;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:9pt;font-weight:400;line-height:100%">486,754&#160;</span></td><td style="background-color:#ffffff;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:9pt;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:9pt;font-weight:400;line-height:100%">688,969&#160;</span></td><td style="background-color:#ffffff;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:9pt;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:9pt;font-weight:400;line-height:100%">517,356&#160;</span></td><td style="background-color:#ffffff;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:9pt;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:9pt;font-weight:400;line-height:100%">461,357&#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%">Total 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:9pt;font-weight:700;line-height:100%">1,800,702</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%">1,885,935&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">1,289,667&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">1,287,753&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">1,038,361&#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%">Shareholders&#8217; equity</span></td><td colspan="2" style="background-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%">1,262,202</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%">1,355,710&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">1,135,263&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">1,095,673&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">963,385&#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="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><div id="i1a430d3f39e74769965c1cc9f7e66842_43"></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="#i1a430d3f39e74769965c1cc9f7e66842_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&#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 order rates and timing of related revenue, future product mix, restructuring and other cost-savings initiatives, research and development activities, capital projects, investments, acquisitions, liquidity, dividends and stock repurchases, strategic 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 impact, duration, and severity of the COVID-19 pandemic; (2) potential disruptions to our business due to restructuring activities; (3) the loss of, or curtailment of purchases by, large customers in the consumer electronics and logistics industries; (4) the reliance on revenue from the automotive industry; (5) the reliance on key suppliers to manufacture and deliver critical components for our products; (6) the failure to effectively manage product transitions or accurately forecast customer demand; (7) the inability to design and manufacture high-quality products; (8) the inability to attract and retain skilled employees and maintain our unique corporate culture; (9) the failure to effectively manage our growth; (10) the inability to achieve growth in revenue and profits from the logistics industry; (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) information security breaches; (17) the inability to protect our proprietary technology and intellectual property; (18) potential impairment charges with respect to our investments or acquired intangible assets; (19) exposure to additional tax liabilities; (20) fluctuations in foreign currency exchange rates and the use of derivative instruments; (21) our involvement in time-consuming and costly litigation; (22) unfavorable global economic conditions; and (23) economic, political, and other risks associated with international sales and operations. 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 can achieve better quality and manufacturing efficiency by using machine vision, and therefore, Cognex products are used by a broad base of customers across a variety of industries, including consumer electronics, automotive, consumer products, food and beverage, and medical-related. Cognex products are also used to automate distribution processes in the logistics industry, including for applications in retail distribution and ecommerce to scan, track, and sort goods through distribution centers. </span></div><div style="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, 2020 totaled $811,020,000, representing an increase of 12% from 2019. This increase was driven largely by higher revenue from certain customers in the consumer electronics industry and ecommerce customers in the logistics industry. We believe that both of these industries benefited in 2020 from higher consumer demand during the COVID-19 pandemic. These increases were partially offset by lower revenue from customers in the automotive industry, which was our largest market in 2019 and continues to be negatively impacted by global economic conditions resulting from the COVID-19 pandemic. </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="#i1a430d3f39e74769965c1cc9f7e66842_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 improved to 75% of revenue in 2020 from 74% of revenue in 2019. Gross margin expansion was due to the favorable impact of the higher revenue on fixed manufacturing costs, as well as favorable product mix. Operating expenses increased by 10% from the prior year due primarily to one-time restructuring charges and intangible asset impairment charges. Excluding these charges, operating expenses were relatively flat with the prior year, as higher incentive compensation costs were offset by lower travel expenses resulting from COVID-19 restrictions and savings from restructuring actions.</span></div><div style="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 21% of revenue in 2020 compared to 20% of revenue in 2019. A higher level of discrete tax benefits in 2019 related to tax structure changes resulted in net income of 22% of revenue in 2020 compared to 28% of revenue in 2019, and net income per diluted share of $1.00 in 2020 compared to $1.16 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 sets forth certain consolidated financial data as a percentage of revenue:</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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">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><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">2018</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%">25</span><span style="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%">26&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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%">75</span><span 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%">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><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%">16</span><span style="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%">14&#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%">33</span><span 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%">38&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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></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%">2</span><span style="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%">&#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%">&#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%">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;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">&#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%">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"></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><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%">27&#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%">2</span><span 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%">2&#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%">23</span><span style="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%">29&#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%">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%">(5)</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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></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%">22</span><span style="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%">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><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%">27&#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="i1a430d3f39e74769965c1cc9f7e66842_46"></div><div style="margin-top:5pt;text-align:justify"><span><br/></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%">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, 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. It appears that manufacturers of electronics products and ecommerce 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 indicate that other industries we serve have 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 each of the last two quarters. 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 </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="#i1a430d3f39e74769965c1cc9f7e66842_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%">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 to date 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 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 has 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="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:115%">As of the date of this report, we expect revenue for the first quarter of 2021 to be higher than revenue reported for fourth quarter of 2020 of $223,615,000. We anticipate the majority of this increase to come from higher revenue in the logistics 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">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%">As of the date of this report, we expect gross margin as a percentage of revenue for the first quarter of 2021 to be in the mid 70 percent range, but likely lower than the 75% reported for the fourth quarter of 2020. The decrease is anticipated to be due to 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%;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-bottom:5pt;margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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: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 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 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 </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="#i1a430d3f39e74769965c1cc9f7e66842_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%">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 this quarter that exceeded our prior estimates. These annual incentive compensation plans will be reset with relevant performance goals for 2021 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 2021 as compared to the fourth 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%">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. We expect these restrictions to continue into 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%">RD&amp;E expenses as a percentage of revenue were 16% for both 2020 and 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. We currently expect to continue to make significant RD&amp;E investments to support our product development plans during the COVID-19 pandemic and other business disruptions generally.</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 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-bottom:5pt;margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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: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 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. We expect these restrictions to continue into 2021. 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 this 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. These annual incentive compensation plans will be reset with relevant performance goals for 2021 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 2021 as compared to the fourth 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%">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="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="#i1a430d3f39e74769965c1cc9f7e66842_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%">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%">In May 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. 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.</span></div><div style="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 restructuring actions, together with other actions to reduce the Company's overall costs, were designed to generate an aggregate annualized cost savings of approximately $25 million versus the Company's original planned cost structure. As of the date of this report, we are on track to achieve this target for 2021, with actual savings from these restructuring and other cost-saving actions in 2020 estimated to be approximately $16 million.</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%">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%">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 recorded in the second quarter of 2020, primarily related to lower projected cash flows from the technologies and customer relationships acquired from Sualab.</span></div><div style="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. The Company currently does not hedge its Chinese Yuan exposures due to limitations in hedging instruments available for this currency.</span></div><div style="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. The Company cannot predict the level of stock option exercises by employees 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%">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. Management will continue to monitor this law and court rulings in Germany.</span></div><div style="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="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="#i1a430d3f39e74769965c1cc9f7e66842_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%">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 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, 2019 Compared to Year Ended December&#160;31, 2018 </span></div><div style="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, 2019 was $725,625,000 compared to $806,338,000 for the prior year, representing a decrease of $80,713,000, or 10%. Changes in foreign currency exchange rates accounted for approximately 2% of the revenue decrease from 2018 to 2019, primarily related to the translation of Euro-denominated and Chinese Yuan-denominated revenue to U.S. Dollars.</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, industrial companies delayed and reduced spending for automation projects, including those with machine vision, amid weaker general manufacturing confidence and heightened uncertainty around global trade. This decrease in capital spending, along with the decision by certain of our larger customers to retrofit existing equipment rather than invest in new production lines or facilities, contributed to the decrease in revenue from the prior year.</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%">The impact to our business was most significant in our two largest markets, consumer electronics and automotive, which together represent approximately half of our total revenue. Consumer electronics revenue was approximately 30% lower than the prior year, with the majority of this decrease related to smartphone manufacturing, while automotive revenue was approximately 10% lower than the prior year.</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%">These decreases were only partially offset by higher revenue in the logistics industry, which increased by approximately 15% from the prior year. This growth rate was slower than 2018 due to a major customer delaying deliveries for new facilities until mid-2020 after building adequate capacity for 2019 by upgrading existing facilities. Excluding revenue from this major customer, logistics revenue increased by approximately 50% from the prior year.</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 5% driven by higher sales in the logistics industry, partially offset by lower sales in the automotive industry. Revenue from customers based in Europe decreased by 27% driven by lower sales in the consumer electronics industry, and to a lesser extent, the automotive industry. Revenue from customers based in Greater China decreased by 7% across a variety of industries. The decline would have been larger in Greater China, and less extreme in Europe, if not for procurement changes made by certain consumer electronics customers, shifting their purchases to China from Europe. Revenue from customers based in other regions in Asia were relatively flat.</span></div><div style="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 was 74% for both 2019 and 2018. The unfavorable absorption of manufacturing overhead costs over the lower level of revenue was offset by favorable product mix. </span></div><div style="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 2019 increased by $2,982,000, or 3%, from the prior year as detailed in the table below (in thousands).</span></div><div style="margin-bottom:5pt;margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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 2018</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%">116,445&#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%">5,782&#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%">(3,852)</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%">1,052&#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 2019</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%">119,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:#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%">RD&amp;E expenses increased due to higher personnel-related costs resulting primarily from headcount additions to support new product initiatives, of which $1,013,000 related to a new team of deep learning engineers from the Company's acquisition of Sualab Co., Ltd. on October 16, 2019. The consideration from this acquisition included deferred payments that are being recorded as compensation expense over four years from the closing date, which accounted for an additional $1,092,000 of the increase in personnel-related costs. These increases were partially offset by lower expenses related to incentive compensation plans resulting from lower levels of achievement on performance plans that were set at the beginning of the 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%">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="#i1a430d3f39e74769965c1cc9f7e66842_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 in 2019 increased by $11,143,000, or 4%, from the prior year as detailed in the table below (in thousands). </span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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 2018</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%">262,699&#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%">23,811&#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%">(8,742)</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%">(5,085)</span></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%">ERP project 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%">(4,967)</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%">6,126&#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 2019</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%">273,842</span><span style="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 personnel-related costs resulting primarily from headcount additions, principally sales personnel. In addition to salaries and fringe benefits, these personnel-related costs included sales commissions and travel expenses related to the additional headcount. These increases were partially offset by lower expenses related to incentive compensation plans resulting from lower levels of achievement on performance plans that were set at the beginning of the year. Changes in foreign currency exchange rates also resulted in a lower level of expenses, as costs denominated in foreign currencies were translated to U.S. Dollars at a lower rate. Expenses were also lower due to project costs incurred in 2018 related to the Company's new Enterprise Resource Planning (ERP) system. This system was placed into service during the third quarter of 2018, and therefore, similar costs were not incurred 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">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 $509,000 in 2019 and $1,064,000 in 2018. 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.</span></div><div style="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 increased by $4,974,000 or 34%, from the prior year. The increase was due to higher yields on the Company's portfolio of debt securities, and to a lesser extent, higher 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 income of $1,212,000 in 2019 and other expense of $219,000 in 2018. Other income (expense) includes fair value adjustments of contingent consideration liabilities arising from business acquisitions. A higher level of fair value adjustments to income was recorded in 2019 related to the Company's 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 a benefit of 25% of pre-tax income in 2019 compared to an expense of 7% in 2018.</span></div><div style="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 European Union has enacted a series of tax reform legislation over the past few years regarding low tax structures. The Company made changes to its international tax structure in the fourth quarter of 2019 as a result of this legislation, and as a result, recorded a net discrete tax benefit of $87,500,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%">On October 16, 2019, the Company acquired Sualab Co., Ltd., a provider of deep learning-based vision software based in Korea. The Company migrated acquired intellectual property to certain subsidiaries in the fourth quarter of 2019, and as a result, recorded a discrete tax expense of $28,528,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 addition, the effective tax rate included a decrease in tax expense of $6,472,000 in 2019 and $8,488,000 in 2018 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-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%">Other discrete tax events included a net decrease in tax expense of $1,932,000 in 2019 and $1,847,000 in 2018, consisting primarily of the expiration of the statutes of limitations for certain reserves for income tax uncertainties and the final true-up of the prior year's tax accrual upon filing the related tax returns.</span></div><div style="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 these discrete events, the Company&#8217;s effective tax rate was an expense of 16% of pre-tax income in 2019. This represents an increase in the effective tax rate excluding discrete events from 14% in 2018 due to more of the Company's profits being earned and taxed in higher tax jurisdictions. </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><div id="i1a430d3f39e74769965c1cc9f7e66842_49"></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="#i1a430d3f39e74769965c1cc9f7e66842_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%">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 has resulted in an accumulated cash and investment balance of $767,438,000 as of December&#160;31, 2020. 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 2020 were primarily met with positive cash flows from operations, maturities and sales of investments, and the proceeds from stock option exercises. Cash requirements consisted of operating activities, the payment of dividends, the repurchase of common stock, and capital expenditures. Working capital requirements included an increase in accounts receivable resulting from the higher business level and the timing of invoicing for a material customer, as well as an increase in gross inventories to support the higher business level and build safety stock to mitigate the Company's exposure to demand changes or supply disruptions. Cash outlays in the first quarter of 2021 are planned to include incentive compensation payments that were earned and accrued 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%">Capital expenditures in 2020 totaled $13,303,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 and various leased facilities. In 2021, the Company is making significant investments in business systems related to its sales process, including systems to help our sales team more efficiently manage customer relationships and sales opportunities. As of the date of this report, the Company estimates cash outlays for this initiative to be up to $10 million, a large portion of which we expect will be capitalized and placed into service in the first quarter 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%">The Company implemented a variety of cost-cutting measures in the second quarter of 2020 to address the impact of the COVID-19 pandemic, including a workforce reduction and office closures. The Company estimates the total restructuring charges from these actions to be approximately $15,924,000, of which $3,938,000 represents non-cash charges and adjustments, $9,597,000 was paid in 2020, and the remainder of $2,389,000 expected to be paid 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 following table summarizes the Company&#8217;s material contractual obligations, both fixed and contingent (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:53.951%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:13.394%"></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.394%"></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.397%"></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%;text-decoration:underline">Year Ended December&#160;31,</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:10pt;font-weight:700;line-height:100%">Inventory Purchase Commitments</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%">Leases</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%">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%">2021</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%">32,315&#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%">9,101&#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%">41,416</span><span style="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;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="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,863&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,863</span><span 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%">2023</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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%">5,072&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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,072</span><span style="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%">2024</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">2,074&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,074</span><span 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%">2025</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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%">1,317&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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,317</span><span style="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%">Thereafter</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">4,960&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,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></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: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%">32,315&#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%">29,387&#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%">61,702</span><span style="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="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%">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:9pt;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. As of December 31, 2020, the Company repurchased 2,816,000 shares at a cost of $121,348,000 under this program, including 1,215,000 shares at a cost of $51,036,000 during 2020, leaving a remaining balance of $78,652,000. 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. Purchases under this March 2020 program will commence upon completion of the October 2018 program. 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="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="#i1a430d3f39e74769965c1cc9f7e66842_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%">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, and $0.055 in the fourth quarter of 2019, as well as in the first, second, and third quarters of 2020. The dividend was increased to $0.060 per share in the fourth quarter of 2020. 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 $390,508,000 in 2020, which included $351,428,000 paid for the special cash dividend, $35,124,000 in 2019, and $31,865,000 in 2018. Future dividends will be declared at the discretion of the Company's Board of Directors and will depend upon 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="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 on the fourth anniversary date of the closing, 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%">In conjunction with the acquisition of Sualab, the Company migrated acquired intellectual property to certain subsidiaries in 2019, which resulted in a foreign tax payment of approximately $27,000,000 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 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 starting in 2021 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. As of December 31, 2020, the Company had $767,438,000 in cash and investments. In addition, the Company has no long-term debt and does not anticipate needing debt financing in the near future. 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 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%">OFF-BALANCE SHEET ARRANGEMENTS</span></div><div style="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, 2020, the Company has no off-balance sheet arrangements as defined in Item 303(a)(4)(ii) of Regulation S-K.</span></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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 POLICIES AND 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. 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 collectibility of consideration is probable.</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="#i1a430d3f39e74769965c1cc9f7e66842_7">Table of Content</a></span></div></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 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 upon 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 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%">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="#i1a430d3f39e74769965c1cc9f7e66842_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: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: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, 2020, the Company&#8217;s investment portfolio of debt securities totaled $498,365,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, 2020, the Company&#8217;s portfolio of debt securities had an unrealized gain of $5,690,000, and no  unrealized 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 fair value of the Company's debt securities is 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. Management is responsible for estimating the fair value of these financial assets, and in doing so, considers valuations provided by a large, third-party pricing service. 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.</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:115%">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 that project the expected future cash flows. Credit losses on debt securities were not material in 2020, 2019, or 2018.</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="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. Net realizable value is the estimated selling price in the ordinary course of business, less readily predictable costs of completion, disposal, and transportation. Management estimates excess and obsolescence exposures based on assumptions about future demand, product transitions, and market 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 take advantage of favorable pricing or address concerns about the availability of future supplies and long lead times. Estimates in 2020 took into account the global economic conditions resulting from the COVID-19 pandemic. As of December&#160;31, 2020, the Company&#8217;s reserve for excess and obsolete inventory totaled $14,578,000, or 19% of the gross inventory balance. A 10% difference in inventory reserves as of December&#160;31, 2020 would have affected net income by approximately $1,210,000.</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><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="#i1a430d3f39e74769965c1cc9f7e66842_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%">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 the second quarter of 2020, primarily related to lower projected cash flows from the technologies and customer relationships acquired from Sualab. No impairment charges related to intangible assets were recorded in 2019 or 2018.</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 these 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 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.</span></div><div style="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 </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%">30</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="#i1a430d3f39e74769965c1cc9f7e66842_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%">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 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 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%">Business combinations are accounted for under the acquisition method of accounting. Determining what constitutes a business to qualify as a business combination requires some judgment. Allocating the purchase price requires the Company to identify and estimate the fair values of various assets acquired and liabilities assumed. 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 value of these contingent consideration liabilities are remeasured each reporting period, with changes in the fair value included in current operations. The remeasured liability amount could be significantly different from the amount at the acquisition date, resulting in material charges or credits in future reporting 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:700;line-height:120%">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%">In May 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 majority of these actions were completed as of December 31, 2020 and resulted in total restructuring charges of $15,924,000 in 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%">The Company made significant estimates and judgments in the determination of the restructuring charges, including the assessment that the workforce reduction met the criteria to be accounted for as one-time termination benefits and the date the criteria were met to record this liability, severance estimates for employees who had not yet signed termination agreements, the date that closed offices were abandoned, and estimates of remaining lease obligations for abandoned offices. As of December 31, 2020, the Company had trued up the majority of these estimates based on actual negotiated payments with employees or landlords, with adjustments recorded in the second half of 2020 based on the Company's revised estimates of these liabilities.</span></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="i1a430d3f39e74769965c1cc9f7e66842_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 <ix:nonNumeric contextRef="if37f3b9e731b4d1e91e114764a70d4e3_D20200101-20201231" format="ixt-sec:durday" name="us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml81OC9mcmFnOmJmMzI3OGVjYzVjMzQwY2Q4ZjU3ODQ5NThhMGQyYTcwL3RleHRyZWdpb246YmYzMjc4ZWNjNWMzNDBjZDhmNTc4NDk1OGEwZDJhNzBfMTUzNA_0f6b414c-70e3-4ee1-b064-94328cc2ceb4">45</ix:nonNumeric> 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%">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="#i1a430d3f39e74769965c1cc9f7e66842_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-bottom:5pt;margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:100.000%"><tr><td style="width:1.0%"></td><td style="width:17.174%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:11.619%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.940%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.940%"></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.619%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:10.595%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.940%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:6.948%"></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, 2020</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, 2019</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%">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><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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,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%">20,249&#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.8917&#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.8917&#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%">155,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%">7,776&#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%">19.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%">19.93&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,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,223&#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%">18.94&#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%">18.94&#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%">6,925,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,377&#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,086&#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,086&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">161,951,500&#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%">139,688&#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,155&#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,155&#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,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><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">575,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,291&#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%">108.70&#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%">108.70&#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%">1,330,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%">4,494&#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%">295.9&#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%">295.9&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">870,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%">2,962&#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%">295.3&#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%">295.3&#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%">1,675&#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%">2,287&#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%">0.7324&#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%">0.7324&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,700&#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%">3,569&#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%">0.7541&#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%">0.7541&#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%">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><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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,450&#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,256&#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%">29.91&#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%">29.91&#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%">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.3198&#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.3198&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">845&#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%">628&#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.3461&#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.3461&#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,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.2719&#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.2719&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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,300&#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,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%">1.2989&#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.2989&#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></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%">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 upon 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 Yuan, and to a lesser extent the Japanese Yen, Korean Won, and Mexican Peso. We estimate that approximately 45% of our sales in 2020 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, 2020, the fair value of the Company&#8217;s portfolio of debt securities amounted to $498,365,000 with amortized cost amounts totaling $<ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml81OC9mcmFnOmJmMzI3OGVjYzVjMzQwY2Q4ZjU3ODQ5NThhMGQyYTcwL3RleHRyZWdpb246YmYzMjc4ZWNjNWMzNDBjZDhmNTc4NDk1OGEwZDJhNzBfNTA4OQ_b44ad6ad-ba6c-4fab-aa24-35e1f121ce63">492,675,000</ix:nonFraction>, maturities that do not exceed five years, and a yield to maturity of 1.18%. 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, 2020, 97% 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, 2020, 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%">32</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="#i1a430d3f39e74769965c1cc9f7e66842_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-bottom:5pt;margin-top:5pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">239,731&#160;</span></td><td style="background-color:#ffffff;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%">237,937&#160;</span></td><td style="background-color:#ffffff;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%">236,142&#160;</span></td><td style="background-color:#ffffff;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%">234,347&#160;</span></td><td style="background-color:#ffffff;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%">232,553&#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%">Treasury bills</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%">133,866&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">132,863&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">131,861&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">130,859&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">129,857&#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%">Asset-backed&#160;securities</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%">93,619&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">92,918&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">92,218&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">91,517&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">90,816&#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></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,295&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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,150&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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,006&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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,862&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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,717&#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%">Sovereign 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%">12,285&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">12,193&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">12,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:8pt;font-weight:400;line-height:100%">12,009&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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%">11,917&#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%">Municipal 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%">7,144&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">7,090&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">7,038&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">6,983&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%">6,930&#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%">505,940</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%">502,151</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%">498,365</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%">494,577</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%">490,790</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="margin-top:5pt;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%">33</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="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="#i1a430d3f39e74769965c1cc9f7e66842_64">Report of Independent Registered Public Accounting Firm</a></span></div></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: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="#i1a430d3f39e74769965c1cc9f7e66842_64">35</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="#i1a430d3f39e74769965c1cc9f7e66842_67">Consolidated Statements of Operations 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="#i1a430d3f39e74769965c1cc9f7e66842_67">2020, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_67">2019,</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_67">2018</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="#i1a430d3f39e74769965c1cc9f7e66842_67">37</a></span></div></td></tr><tr><td colspan="3" style="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="#i1a430d3f39e74769965c1cc9f7e66842_73">Consolidated Statements of Comprehensive Income 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="#i1a430d3f39e74769965c1cc9f7e66842_73">2020</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_73">, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_73">2019, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_73">2018</a></span></div></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: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="#i1a430d3f39e74769965c1cc9f7e66842_73">38</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="#i1a430d3f39e74769965c1cc9f7e66842_79">Consolidated Balance Sheets as of 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="#i1a430d3f39e74769965c1cc9f7e66842_79">2020 and </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_79">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="#i1a430d3f39e74769965c1cc9f7e66842_79">39</a></span></div></td></tr><tr><td colspan="3" style="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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_85">2020, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_85">2019, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_85">2018</a></span></div></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: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="#i1a430d3f39e74769965c1cc9f7e66842_85">40</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="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_88">2020</a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_88">, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_88">2019, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_88">2018</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="#i1a430d3f39e74769965c1cc9f7e66842_88">41</a></span></div></td></tr><tr><td colspan="3" style="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="#i1a430d3f39e74769965c1cc9f7e66842_94">Notes to the Consolidated Financial Statements</a></span></div></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: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="#i1a430d3f39e74769965c1cc9f7e66842_94">42</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="#i1a430d3f39e74769965c1cc9f7e66842_196">Selected Quarterly Financial Data (unaudited)</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="#i1a430d3f39e74769965c1cc9f7e66842_196">74</a></span></div></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%">Financial Statement Schedule:</span></td><td colspan="3" style="padding:0 1pt"></td></tr><tr><td colspan="3" style="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="#i1a430d3f39e74769965c1cc9f7e66842_199">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="#i1a430d3f39e74769965c1cc9f7e66842_199">2020, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_199">2019, </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_199">and </a><a style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%;text-decoration:underline" href="#i1a430d3f39e74769965c1cc9f7e66842_199">2018</a></span></div></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: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="#i1a430d3f39e74769965c1cc9f7e66842_199">75</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%">34</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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:115%">We have audited the accompanying consolidated balance sheets of Cognex Corporation (a Massachusetts corporation) and subsidiaries (the &#8220;Company&#8221;) as of December 31, 2020 and 2019, 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, 2020, 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, 2020 and 2019, and the results of its operations and its cash flows for each of the three years in the period ended December 31, 2020, 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, 2020, 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 11, 2021 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:115%">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:115%">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 consolidated 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 judgment 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 style="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%">35</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="#i1a430d3f39e74769965c1cc9f7e66842_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="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%">Impairment Loss &#8211; Long Lived Assets of Sualab Co., Ltd.</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 9 to the consolidated financial statements, during the second quarter of the fiscal year ended December 31, 2020, the Company recorded an impairment charge of $19.6M related to certain definite and indefinite lived intangible assets. The Company evaluates the recoverability of the carrying value of its intangible assets whenever events or circumstances indicate the carrying value may not be recoverable. The identified assets did not pass the recoverability test, and accordingly, the Company recognized an impairment charge for the amount the carrying values of the assets exceeded their fair values. The fair values were determined based on the present values of future cash flows using significant inputs and assumptions not observable in the market. We identified the Company&#8217;s determination of the fair value of the identified indefinite and definite-lived intangible assets 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 the fair value of the identified indefinite and definite-lived intangible assets evaluated for impairment is a critical audit matter are that the determination of the fair value of the intangible assets relies on the use of management estimates related to forecasted future cash flows and discount rates. This requires management to evaluate historical results and expectations of future operating performance based on relevant information available to them regarding expectations of industry performance, as well as, expectations for company-specific performance. Determining the discount rate requires management to evaluate the appropriate risk premium based on their judgment of industry and company-specific risks. Significant management judgments and estimates utilized to determine the fair value are subject to estimation uncertainty and require significant auditor subjectivity in evaluating the reasonableness of those judgments and estimates.</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 determination of the fair value of the identified indefinite and definite-lived intangible assets evaluated for impairment included the following, among others.</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 tested the design and operating effectiveness of internal controls relating to management&#8217;s determination of the fair value of the identified indefinite and definite-lived intangible assets evaluated for impairment, including controls over the determination of key inputs and assumptions related to forecasting of future cash flows and determination of the discount rate.</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 historical ability to achieve forecasted revenue and operating results.</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 compared management&#8217;s forecasts of future revenue and operating margin to third-party industry projections and historical operating results.</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 utilized a valuation specialist to assist in testing the Company&#8217;s discounted cash flow model and in evaluating the reasonableness of significant assumptions to the model, including the discount rate.  </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:120%">/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;11, 2021 </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="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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 style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNC0xLTEtMS0w_bcfec94d-3c6e-4800-a3b8-57e729908cf2">811,020</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNC0zLTEtMS0w_9de31e80-d0d5-4bac-bd9f-5bc90a5d0ce9">725,625</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNC01LTEtMS0w_344aca8e-ee46-402d-aae3-5160a7ce990e">806,338</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNS0xLTEtMS0w_e5e51d75-f1e5-4ee3-9629-bd1f9ac572d7">206,421</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNS0zLTEtMS0w_73db4f56-0b34-4b35-8fb6-c696ee220ce9">189,754</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CostOfGoodsAndServicesSold" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNS01LTEtMS0w_0cc886b1-9f02-4fa6-b261-39a68317cf32">206,052</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GrossProfit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNi0xLTEtMS0w_c4957af6-e1c5-4ebb-bda1-b830de2da6dc">604,599</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GrossProfit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNi0zLTEtMS0w_84e52726-3a9b-4dda-8345-a81d36ce927b">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GrossProfit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNi01LTEtMS0w_bf3736e9-7f23-42b0-b991-1fe86a9e5f11">600,286</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ResearchAndDevelopmentExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNy0xLTEtMS0w_0a0c2648-4829-42dd-b302-bd7e6da65c68">130,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:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ResearchAndDevelopmentExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNy0zLTEtMS0w_a93c4a7d-e6d5-4699-8451-3fea0ac78374">119,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:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ResearchAndDevelopmentExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNy01LTEtMS0w_c1c0fb87-3ceb-4173-95ae-d18f806716e8">116,445</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:SellingGeneralAndAdministrativeExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOC0xLTEtMS0w_00e63229-fdfa-4a61-be81-70cd17caa8b1">267,593</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:SellingGeneralAndAdministrativeExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOC0zLTEtMS0w_f2f333ae-6018-4ac2-8fb6-f1d510e053a2">273,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="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:SellingGeneralAndAdministrativeExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOC01LTEtMS0w_1fa3e8e9-b1d0-4d1b-9112-dfa868a88c8d">262,699</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOS0xLTEtMS00OTI_a472724e-d54e-4f00-9783-17fbf12d4343">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:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOS0zLTEtMS00OTQ_ab3ee65f-9ca6-4a71-8df9-7ae81a0f066f">&#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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOS01LTEtMS00OTY_3b784fa9-0174-4771-ab10-d8f4e873ea24">&#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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOS0xLTEtMS0w_714563cd-4b19-444a-ae23-234ec93f78c4">19,571</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTAtMy0xLTEtNTAw_504febd2-7697-441a-bdbf-686dc557e5af">&#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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTAtNS0xLTEtNTAy_d57e2f5b-821b-45b9-a204-a1f4dcc7d818">&#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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTAtMS0xLTEtMA_b8635c3a-0b5a-46a4-b78d-02bb4882643f">170,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;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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTAtMy0xLTEtMA_d543e2f9-7e47-4947-9977-2e70ccf75600">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTAtNS0xLTEtMA_6ec66be1-df53-4a1a-8150-6d166011ff91">221,142</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ForeignCurrencyTransactionGainLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTEtMS0xLTEtMA_69cb8a48-8338-44ca-b1dc-4c8c22ac912e">3,697</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:ForeignCurrencyTransactionGainLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTEtMy0xLTEtMA_649c1491-a5fe-41cc-9463-2e16daa6d781">509</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:ForeignCurrencyTransactionGainLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTEtNS0xLTEtMA_6ec4900b-e7f7-4fb0-8d9c-bb073d94409a">1,064</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InvestmentIncomeNonoperating" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTItMS0xLTEtMA_573032ca-389b-42e8-84a1-5c9ca5a4dd10">12,994</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InvestmentIncomeNonoperating" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTItMy0xLTEtMA_dcc0e0db-eed2-4220-8088-690118c63e38">19,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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InvestmentIncomeNonoperating" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTItNS0xLTEtMA_3dd67a63-07cc-48df-b083-43e158212bf1">14,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;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTMtMS0xLTEtMA_6432c0e0-e79c-437e-b914-72b6b6139f75">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTMtMy0xLTEtMA_62e7fb61-13e3-4014-94de-f68da511c290">1,212</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" name="us-gaap:OtherNonoperatingIncomeExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTMtNS0xLTEtMA_b8b52575-baae-45bd-adda-d088e9564e8b">219</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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTQtMS0xLTEtMA_ec0d85f6-bbfd-40ea-9a87-58322b489cfa">186,911</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTQtMy0xLTEtMA_db6916f8-c9ce-4244-9815-2648114c01bd">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTQtNS0xLTEtMA_a9f8d639-4729-4244-8c2a-7e95aa2d1227">234,574</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTUtMS0xLTEtMA_ebf74ce7-1b76-45fa-ba6f-0086fe11dfc2">10,725</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTUtMy0xLTEtMA_73c05abc-6463-4310-b544-5ff5bd44428d">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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTUtNS0xLTEtMA_2b64db3b-b751-43c7-86b8-915e793091c9">15,307</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;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTgtMS0xLTEtMA_11aa6706-caed-4541-9945-c0a14d77517d">176,186</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTgtMy0xLTEtMA_455c6609-de8a-4815-ad19-7e9c88254d2e">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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTgtNS0xLTEtMA_16995e6e-544c-4228-9af4-70ba94c91c62">219,267</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjMtMS0xLTEtMA_aeabd666-d929-4484-a0cc-e1aa24c4fc5f">1.02</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjMtMy0xLTEtMA_6b10d743-1153-413a-a87d-47bb7799412e">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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjMtNS0xLTEtMA_04c0328e-0616-4082-ac20-e5a47450d3ae">1.27</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjYtMS0xLTEtMA_e7ca0f2d-d213-41ac-9a3f-b15a71640691">1.00</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjYtMy0xLTEtMA_2902af38-772a-47ec-9578-14b55291ad0c">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjYtNS0xLTEtMA_d0c4f9ad-65bf-478a-9c45-1a95b5936df4">1.24</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjktMS0xLTEtMA_2ea5b0b6-aa35-415b-a499-c128070b0b72">173,489</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjktMy0xLTEtMA_ae0a3430-54cc-4845-8807-cad965a4edab">171,194</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjktNS0xLTEtMA_f2875783-3960-4d57-b1cf-5f467ec8e2e6">172,333</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzAtMS0xLTEtMA_bf59fef9-560d-45c3-afbe-a11bc39d5e51">176,592</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzAtMy0xLTEtMA_f42d0c09-7897-4d15-a765-e19c63c9c167">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzAtNS0xLTEtMA_f1b1f95b-4fc1-40c3-a158-d845bd1a8375">177,406</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="4" name="us-gaap:CommonStockDividendsPerShareCashPaid" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMS0xLTEtMA_3fcc5ff5-86e9-4ec4-b05d-ed578f6b733e">2.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><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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="4" name="us-gaap:CommonStockDividendsPerShareCashPaid" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMy0xLTEtMA_fcf9ac05-73e0-4b9a-9f42-051740b17006">0.205</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="4" name="us-gaap:CommonStockDividendsPerShareCashPaid" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItNS0xLTEtMA_cf5434e1-c84e-40e6-ae37-abdc8b82c0fb">0.185</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%">37</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMy0xLTEtMS0w_11aa6706-caed-4541-9945-c0a14d77517d">176,186</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMy0zLTEtMS0w_455c6609-de8a-4815-ad19-7e9c88254d2e">203,865</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMy01LTEtMS0w_16995e6e-544c-4228-9af4-70ba94c91c62">219,267</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 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%">Net unrealized gain (loss), net of tax of $981, $515, and ($188) in 2020 2019, and 2018, 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:10pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTEtMS0xLTEtMA_955ae86b-98fe-418c-acdf-2e0fea87d33c"><ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTEtMS0xLTEtMA_f6a98b26-bc8b-44a9-b153-21e0f7aafddc">6,478</ix:nonFraction></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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTEtMy0xLTEtMA_81878912-040a-4d33-bdee-f0ed812095d1">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:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTEtNS0xLTEtMA_f106b624-d6ac-49c3-9514-c6bb31b430d6">1,185</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="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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTItMS0xLTEtMA_4e778e54-9049-4ee9-8e0f-9ff809f1900b"><ix:nonFraction unitRef="usd" contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTItMS0xLTEtMA_d5f59fda-cc33-403c-b318-cf6f40c00546">4,119</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTItMy0xLTEtMA_cd8e33de-8890-43e0-ad72-df0cc7c917ad">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:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTItNS0xLTEtMA_0c50a539-deb4-4434-aef4-c24a7519987c">501</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTMtMS0xLTEtMA_5f48336b-e392-4fa3-a9ee-fb842c71314a">2,359</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTMtMy0xLTEtMA_daebe760-cc61-444b-8ed5-55c2644e8ba7">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTMtNS0xLTEtMA_46316288-fa44-4e86-a6fd-9d906b70c817">1,686</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: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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTYtMS0xLTEtMA_49f98e2d-ffe6-48c7-a42b-f6d8b97e1e03"><ix:nonFraction unitRef="usd" contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTYtMS0xLTEtMA_ff2b6f3b-221e-4aa3-ad4a-18e2447d3c15">1,115</ix:nonFraction></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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTYtMy0xLTEtMA_a6beb986-f52e-4d49-b624-ab6d1810f4d0">541</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTYtNS0xLTEtMA_a3829297-3ffb-43c9-883f-2ad4ece6d097">4,216</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTctMS0xLTEtMA_cc490390-6681-4915-b47d-9209a2925ca7">1,115</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTctMy0xLTEtMA_4f76e184-c05c-4d89-a9f1-5446dd708a2c">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTctNS0xLTEtMA_dc52e555-1514-42f4-9879-a285cd5cd9d1">4,216</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTktMS0xLTEtMA_f6ddd67d-53dc-4fe2-a421-3e45f83c07aa">3,474</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTktMy0xLTEtMA_fbc553e4-eba4-419b-abbb-0a87830d67be">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTktNS0xLTEtMA_9611ae84-f58f-4c9d-beea-a922574b20b1">5,902</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><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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMjAtMS0xLTEtMA_522f4b9a-6a5c-4d14-877f-2b446b25af7c">179,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:#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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMjAtMy0xLTEtMA_5a9f604a-50ce-4acd-ad62-bbb914629fb7">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ComprehensiveIncomeNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMjAtNS0xLTEtMA_4b410889-4468-4379-ae99-8becee8f236b">213,365</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%">38</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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="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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNS0xLTEtMS0w_fe0565cd-a74b-4616-833e-8180cf339c99">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 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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNS0zLTEtMS0w_88a6af4c-67a1-449f-9819-c560da7b73ec">171,431</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%">Current investments, amortized cost of $102,258 and $235,610 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</span></td><td colspan="2" style="background-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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNi0xLTEtMS0w_c0b3845c-116e-4c9e-88e2-8b152d5acf93">103,240</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNi0zLTEtMS0w_2447818e-260b-4339-95c1-e7baebe7ffd0">240,470</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%">Accounts receivable, allowance for credit losses of $831 and $530 in 2020 and 2019, 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccountsReceivableNetCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNy0xLTEtMS0w_2ccc0f90-973a-4210-bbbd-448ac73e9a86">125,696</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccountsReceivableNetCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNy0zLTEtMS0w_81d240ba-20fc-4ced-bded-71a52c557f60">103,447</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnbilledReceivablesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfOC0xLTEtMS0w_212214f0-1097-49ef-a3e0-9622fc2e3eff">5,632</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnbilledReceivablesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfOC0zLTEtMS0w_ad2dc6d2-c3b9-41ef-8f49-fcc61e8f8692">4,782</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InventoryNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfOS0xLTEtMS0w_ee98a193-dfd0-4137-97bb-e440f5c9d8bf">60,830</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InventoryNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfOS0zLTEtMS0w_e65da6c7-89b5-4910-9620-dba7f1c9283e">60,261</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTAtMS0xLTEtMA_aad7a478-7bd9-407f-8155-47d6aa629a3c">37,220</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PrepaidExpenseAndOtherAssetsCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTAtMy0xLTEtMA_5e4521da-7b6c-4385-88c1-ea46efb5a065">26,840</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AssetsCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTEtMS0xLTEtMA_a8999371-2f40-49e4-bc83-657c09d0749b">601,691</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AssetsCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTEtMy0xLTEtMA_2c018576-a65c-480b-a81e-e4237b9f4e59">607,231</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:9pt;font-weight:400;line-height:100%">Non-current investments, amortized cost of $390,417 and $431,633 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</span></td><td colspan="2" style="background-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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LongTermInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTItMS0xLTEtMA_e46aada3-f49b-4293-b6af-33c2cb370f86">395,125</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LongTermInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTItMy0xLTEtMA_73b33a41-0a46-458c-af34-63451b76bddb">433,452</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTMtMS0xLTEtMA_a931812c-caaa-4233-947a-7095d3ad168c">79,173</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTMtMy0xLTEtMA_b492cebd-8f11-4f10-9a0b-0d3237dfd11e">89,443</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTQtMS0xLTEtMA_5dc35d92-ac61-4424-8869-fde48b03ebeb">22,582</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseRightOfUseAsset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTQtMy0xLTEtMA_cfc7ab7d-c844-4aa4-9449-5372931f8325">17,522</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Goodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTUtMS0xLTEtMA_547d8f7c-40d5-4e78-ab77-02c9a96ecf53">244,078</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Goodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTUtMy0xLTEtMA_511bd78b-31fe-4702-a768-1d9cfefd1543">243,445</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IntangibleAssetsNetExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTYtMS0xLTEtMA_49ca8d1c-2fd1-4e6c-a8f2-80bb3cd0c156">15,555</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IntangibleAssetsNetExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTYtMy0xLTEtMA_b61bd854-3d3d-4d31-abb0-474476f82c23">39,490</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredIncomeTaxAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTctMS0xLTEtMA_368c2ff6-a2dc-4fec-89e1-4447eb3289ac">434,704</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredIncomeTaxAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTctMy0xLTEtMA_b6324859-df16-4d27-b475-3c9a31b7ceac">449,519</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherAssetsNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTgtMS0xLTEtMA_97a02758-83f4-43b3-829d-0ccf596564d0">7,794</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherAssetsNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTgtMy0xLTEtMA_b90d1fd9-39bb-4b95-aa52-d0100bca9898">5,833</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Assets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTktMS0xLTEtMA_a36bfdaa-9f39-4297-b76b-afa57d1e3c97">1,800,702</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Assets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTktMy0xLTEtMA_6598669d-7e29-4aed-8b59-5a951552fe63">1,885,935</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccountsPayableCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjMtMS0xLTEtMA_0993d050-cc9b-4295-a7b9-8b24c5e18708">16,270</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccountsPayableCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjMtMy0xLTEtMA_8b10a02e-ca94-49e7-9bf3-518013e2dba6">17,866</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedLiabilitiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjQtMS0xLTEtMA_a8ebd6b3-977f-46c1-ad30-b2c658de0956">77,264</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedLiabilitiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjQtMy0xLTEtMA_03f4f2a7-a683-46fc-b187-d7eb956e6650">52,199</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedIncomeTaxesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjUtMS0xLTEtMA_743bd59c-aabf-4249-9b18-2e5a7656f7e9">9,379</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedIncomeTaxesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjUtMy0xLTEtMA_8361ab0b-d4fe-4487-b761-484f738682bc">30,333</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ContractWithCustomerLiabilityCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjYtMS0xLTEtMA_77e152c2-4c75-4077-b8a9-ca67943aa2f3">21,274</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ContractWithCustomerLiabilityCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjYtMy0xLTEtMA_2ea245f4-ed45-4322-afac-e3438faad979">14,432</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjctMS0xLTEtMA_89b52185-e58b-4a36-a75d-a4d2608c68fb">8,110</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseLiabilityCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjctMy0xLTEtMA_91795af8-c74e-49e5-9328-4e90d3ede96b">5,647</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LiabilitiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjgtMS0xLTEtMA_7053ce9e-e4b9-41ae-9b8d-1736e00b89d9">132,297</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LiabilitiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjgtMy0xLTEtMA_35144688-a446-4ab6-8ed2-62a329aa09bb">120,477</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjktMS0xLTEtMA_929ce51a-08cb-434c-ba96-9bc67f5fb9a4">18,120</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseLiabilityNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjktMy0xLTEtMA_bbe84d44-c3fa-40a5-b3f8-c05ffa714d6f">12,326</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzAtMS0xLTEtMA_d1d06c22-09b6-4ec5-9b6c-ea44e4732a81">314,952</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredIncomeTaxLiabilitiesNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzAtMy0xLTEtMA_bd77ecec-b92e-4d3d-a74c-b08e15d1e8d2">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><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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LiabilityForUncertainTaxPositionsNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzEtMS0xLTEtMA_144fc7b7-926f-4d82-a7f2-ba4e0871851c">14,257</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LiabilityForUncertainTaxPositionsNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzEtMy0xLTEtMA_c9ef55e3-f556-41f4-9f88-a8a040c5e87d">11,563</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedIncomeTaxesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzItMS0xLTEtMA_9e14e1f6-b35f-4ce8-8048-3b7f7040ab46">48,915</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedIncomeTaxesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzItMy0xLTEtMA_75ef53fc-47b5-4f6b-a05f-0cd41f09ae83">51,113</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherLiabilitiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzMtMS0xLTEtMA_dca2f395-542f-4e44-9545-722cf777fdb7">9,959</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherLiabilitiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzMtMy0xLTEtMA_1cbed9b6-1493-4407-bf81-96492f1033a1">2,402</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Liabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzQtMS0xLTEtMA_fb2ab8d6-b00b-4f7a-9fb5-ba2711ec8606">538,500</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Liabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzQtMy0xLTEtMA_9fe287d6-f24e-40ff-8960-cf7507013c0e">530,225</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="i2929afbc60be4803907a61e4c5f55328_I20201231" xsi:nil="true" name="us-gaap:CommitmentsAndContingencies" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzYtMS0xLTEtMA_79468ba4-1db2-4f23-91a9-f5b2bb9bb343"></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="i75e8b9e5dee441478b9993822d16dbea_I20191231" xsi:nil="true" name="us-gaap:CommitmentsAndContingencies" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzYtMy0xLTEtMA_2a036cb1-4eff-40f1-af0d-1dc00f7527e7"></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 2020 and 2019, 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:PreferredStockValueOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzgtMS0xLTEtMA_11069ba7-f687-4300-851f-81a7ab537cd5">&#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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:PreferredStockValueOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzgtMy0xLTEtMA_10936429-e982-4fcf-b9c8-d4c3d129e895">&#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 2020 and 2019, respectively, issued and outstanding: 175,790 and 172,440 shares in 2020 and 2019, 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" name="us-gaap:CommonStockValueOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzktMS0xLTEtMA_c798e400-c13b-47cd-984b-48403b124b84">352</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" name="us-gaap:CommonStockValueOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzktMy0xLTEtMA_7e2fb5df-159a-44a7-96ec-fc932bdca150">345</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AdditionalPaidInCapitalCommonStock" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDAtMS0xLTEtMA_b3971dbb-ccb9-4e41-9c44-a632290ff87e">807,739</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AdditionalPaidInCapitalCommonStock" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDAtMy0xLTEtMA_96bbe295-1e04-43a7-9c11-e3d5359de7ae">639,372</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDEtMS0xLTEtMA_985c7cf1-91ea-4eb2-bf3c-1bfa341367a4">487,912</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDEtMy0xLTEtMA_fa165eaf-0aba-4098-b7a5-e8e5cf705ff6">753,268</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDItMS0xLTEtMA_b245b4eb-5cd2-4719-97c1-2e68e33b9494">33,801</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDItMy0xLTEtMA_5c26d04a-840d-410d-9284-4423aeb895a3">37,275</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDMtMS0xLTEtMA_63abd8a5-9db2-45e8-8a59-04af01632c48">1,262,202</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDMtMy0xLTEtMA_e4166259-c68c-4ee4-8543-4c8f3255ef45">1,355,710</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LiabilitiesAndStockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDQtMS0xLTEtMA_80ba46f9-60d4-439f-aab3-31db43d88bb4">1,800,702</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LiabilitiesAndStockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDQtMy0xLTEtMA_8582e4f4-8117-445e-9c93-53642db9d948">1,885,935</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%">39</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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-bottom:5pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNC0xLTEtMS0w_11aa6706-caed-4541-9945-c0a14d77517d">176,186</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNC0zLTEtMS0w_455c6609-de8a-4815-ad19-7e9c88254d2e">203,865</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNC01LTEtMS0w_16995e6e-544c-4228-9af4-70ba94c91c62">219,267</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockOptionPlanExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNy0xLTEtMS0w_febfcd80-0bd8-4310-a195-81c8da010233">42,661</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockOptionPlanExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNy0zLTEtMS0w_e32153c8-6573-4c6a-9eba-5bf73aadb322">45,589</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockOptionPlanExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNy01LTEtMS0w_ce595452-48b5-43fd-b1b3-8bc5326adbe3">41,090</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Depreciation" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOC0xLTEtMS0w_b4c4413c-8ee6-4235-8d80-29f1892f5ebc">22,139</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Depreciation" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOC0zLTEtMS0w_dd1af000-4be7-4c16-ae0e-2ca216ae7a0d">21,527</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Depreciation" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOC01LTEtMS0w_4a83abbd-d85d-4ed9-afaf-1ebeb2b85251">18,473</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:GainLossOnSaleOfPropertyPlantEquipment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS0xLTEtMS0xMzU3NQ_d667a42c-3d85-41f4-a409-6267e5b27e6c">1,817</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:GainLossOnSaleOfPropertyPlantEquipment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS0zLTEtMS0xMzU3NQ_3b02e28b-4816-4783-acf4-34ebff4ffd13">324</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:GainLossOnSaleOfPropertyPlantEquipment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS01LTEtMS0xMzU3NQ_6c08f90e-8610-4491-96d4-cd0b7e3d517a">&#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 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AmortizationOfIntangibleAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS0xLTEtMS0w_6a827cf4-4c76-4ac9-a9e3-d846ee8e9eb0">4,364</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AmortizationOfIntangibleAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS0zLTEtMS0w_29d22a96-1f73-4496-b276-13dc12ee9c6e">3,373</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AmortizationOfIntangibleAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS01LTEtMS0w_ec7c33c6-ffd4-45ab-86bd-c323cd3b74ff">3,076</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTAtMS0xLTEtMA_01c0ee0d-86a3-43b1-bd3f-1ed0d6e02abb">19,571</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTAtMy0xLTEtMA_32a11ac7-a60e-434a-b82c-66cea443700f">&#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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTAtNS0xLTEtMA_d1ec49af-3bd2-417b-a4ec-5657b7a08877">&#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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:ExcessAndObsoleteInventoryCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtMS0xLTEtNjE4_28397b00-fa6b-46d7-bad5-b46a097ee059">9,908</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:ExcessAndObsoleteInventoryCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtMy0xLTEtNjIw_ada4b616-41bc-4c68-a3aa-7b6d8b2f5cc3">5,296</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:ExcessAndObsoleteInventoryCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtNS0xLTEtNjIy_7e1a7358-72d7-4565-a114-66f2b2e73107">2,985</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseImpairmentLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItMS0xLTEtNjMy_0b3ed26f-439a-433b-b53a-a6f3a230e520">3,427</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:OperatingLeaseImpairmentLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItMy0xLTEtNjM0_fe4f2faf-8c59-415a-8927-5ddb6a221311">&#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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:OperatingLeaseImpairmentLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItNS0xLTEtNjM2_7c4cc996-e204-4fa9-8646-74a211f66cc8">&#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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtMS0xLTEtMA_14f22c03-e3d9-4060-adcd-a3e084fbfd0b">1,274</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtMy0xLTEtMA_3b374e04-9866-4b3e-ade6-de1b0b8d58c1">618</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" name="us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtNS0xLTEtMA_41ab254d-7b09-46c3-b51a-417af890c19b">108</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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GainLossOnSaleOfInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItMS0xLTEtMA_eebc75c0-0823-4517-abce-3d9338cadb97">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GainLossOnSaleOfInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItMy0xLTEtMA_db55569a-994b-46b5-a969-fe598d17abc3">1,452</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" name="us-gaap:GainLossOnSaleOfInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItNS0xLTEtMA_3852e427-c0bc-4e62-876a-e13bd0cc832f">501</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTMtMS0xLTEtMA_4f507b50-c40d-4d43-94d8-bde3380552a1">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTMtMy0xLTEtMA_dc026f61-befe-4e20-907e-9848308a68c5">1,401</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTMtNS0xLTEtMA_82db810b-68bb-4d0d-89b1-f619d117ced3">3</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInDeferredIncomeTaxes" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTQtMS0xLTEtMA_11bd0038-50d2-4b6b-831d-362ca9809154">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInDeferredIncomeTaxes" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTQtMy0xLTEtMA_986a967a-aeb3-48c4-84ae-c018d97caae8">94,866</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" name="us-gaap:IncreaseDecreaseInDeferredIncomeTaxes" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTQtNS0xLTEtMA_cc62f9a0-68c3-48f0-93d6-02745179073f">413</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTYtMS0xLTEtMA_77e541b5-8dc3-41d3-9722-c977b002d781">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTYtMy0xLTEtMA_f5f22bc4-adc3-465a-a1e7-66802644b679">16,807</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInAccountsReceivable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTYtNS0xLTEtMA_9e60786e-d1b7-4783-9998-a2a2c11a30cc">1,867</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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="us-gaap:IncreaseDecreaseInContractWithCustomerAsset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTctMS0xLTEtMA_2722e89f-c446-4fdd-bd9b-db9808d9ad29">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInContractWithCustomerAsset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTctMy0xLTEtMA_5929aaf4-bbd7-49bb-be26-55acebd5315c">3,530</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" name="us-gaap:IncreaseDecreaseInContractWithCustomerAsset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTctNS0xLTEtMA_2dfefb37-3f72-472a-955e-e7ad56fd3a50">906</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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInInventories" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTgtMS0xLTEtMA_7e05a263-aa35-48fa-834b-9734eaa93d52">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInInventories" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTgtMy0xLTEtMA_fd5555b3-54b2-4726-bb36-5c5e7e12caa3">17,841</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInInventories" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTgtNS0xLTEtMA_293ac7d6-850e-4f45-9b5c-cd5df5a47254">19,931</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: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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTktMS0xLTEtMA_86399b07-db32-4513-8d57-2b64b785863f">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTktMy0xLTEtMA_447ef32e-7d70-4ed5-8291-352b18082b23">7,405</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTktNS0xLTEtMA_cf11709f-036c-4fed-b027-c97274a99fa3">9,750</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: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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjAtMS0xLTEtMA_28dc3e43-fa9d-4061-a9d0-a7946059b18f">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjAtMy0xLTEtMA_dc7942db-5321-4756-b846-4721702504c7">1,633</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInAccountsPayable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjAtNS0xLTEtMA_f70530af-56bc-4b80-ab6b-58ce61a8d164">7,247</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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInAccruedLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjEtMS0xLTEtMA_a0f9315f-971a-4d14-be7d-6b9a324dadee">24,542</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInAccruedLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjEtMy0xLTEtMA_9f524af2-4ee0-4a4e-b1e6-2f63da44089a">8,938</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" name="us-gaap:IncreaseDecreaseInAccruedLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjEtNS0xLTEtMA_059ea29b-fa10-4f78-af67-a47597a93e2d">380</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjItMS0xLTEtMA_50b475ac-d265-4aa7-9f28-c1a334c328ae">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjItMy0xLTEtMA_61e7cad1-ca83-4800-a682-50d80b693f3e">25,266</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjItNS0xLTEtMA_d039863b-f067-4106-96ac-9dc5cfce2c1e">21,903</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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInContractWithCustomerLiability" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjMtMS0xLTEtMA_c42183ac-5eb5-41cb-b7e3-6452fd5c91a6">6,571</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInContractWithCustomerLiability" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjMtMy0xLTEtMA_ef3a2f1c-8323-4ad6-9677-b71594328461">3,875</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInContractWithCustomerLiability" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjMtNS0xLTEtMA_36776d9a-28dc-4641-adeb-efdd5331873c">1,434</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjQtMS0xLTEtMA_88f3fd8d-2d86-48ed-be55-0d4380bd536e">4,548</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjQtMy0xLTEtMA_839272f2-4096-4087-82c6-29e82be89986">4,255</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" name="us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjQtNS0xLTEtMA_84f44a43-c0db-4890-b631-a322ce9d041a">838</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 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjUtMS0xLTEtMA_89a91670-82e6-4216-89f8-45600f5855e5">242,400</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjUtMy0xLTEtMA_724c2d5f-2a10-4df2-aeb3-d8666f78ed1d">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetCashProvidedByUsedInOperatingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjUtNS0xLTEtMA_75d1aa8c-c865-4784-8fa9-d5ffcef3c98b">223,454</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsToAcquireInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjctMS0xLTEtMA_4a3ea356-624b-46e0-879e-d49027864b70">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsToAcquireInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjctMy0xLTEtMA_3161f77b-11d3-4cc6-ac4a-43f43e5ed6ab">1,031,642</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsToAcquireInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjctNS0xLTEtMA_8321b00b-d327-410a-a06e-b2bedd9de5e6">782,032</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjgtMS0xLTEtMA_30ca615f-88c3-4d0c-8563-5ab70a2da8b9">1,104,605</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjgtMy0xLTEtMA_d4839612-83ba-49d0-af42-0b94b9bc4f34">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><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjgtNS0xLTEtMA_e24c19e1-6a70-418e-aa78-8acc0e7017d3">812,565</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjktMS0xLTEtMA_445e3627-1214-42f3-af7f-ada38fd836dd">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjktMy0xLTEtMA_0d767982-e0b8-4898-a017-bf50cca57bb5">21,745</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsToAcquirePropertyPlantAndEquipment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjktNS0xLTEtMA_8761101f-dd97-4dae-83d9-fe802873f9a5">37,095</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzAtMS0xLTEtMA_fc449297-f8c7-4234-b160-458ddc44599a">1,004</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzAtMy0xLTEtMA_369a5783-0fb6-42ce-9180-8a51df788aef">166,911</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzAtNS0xLTEtMA_7e65e56a-1ac7-489f-81f9-18f11024b946">4,265</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzMtMS0xLTEtMA_d51ca771-fdfa-4a7e-8c1a-1ef984f19bd2">169,439</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzMtMy0xLTEtMA_e0f5fc63-75c5-48f2-9e0f-ad4a19bf9464">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:NetCashProvidedByUsedInInvestingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzMtNS0xLTEtMA_59ac6bbd-9798-40d6-ad5d-4f931012fc8e">10,827</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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzUtMS0xLTEtMA_37fb8a81-a0c0-4467-827a-e12b26f19ded">125,715</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzUtMy0xLTEtMA_2f129ee5-7d1b-4fcc-8ce3-6b39dda6d5a6">64,581</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzUtNS0xLTEtMA_c221843c-0e79-4973-a365-20debe79c62e">26,783</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzYtMS0xLTEtMA_88d93b20-b6c8-4665-81bf-b8a09b8cd7aa">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzYtMy0xLTEtMA_3e2e0631-9dad-4701-b61c-23546515874e">61,690</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsForRepurchaseOfCommonStock" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzYtNS0xLTEtMA_25a69f03-aa63-4ccf-a484-94ca5daadba5">203,822</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsOfDividendsCommonStock" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzctMS0xLTEtMA_96f0847c-8c5d-424f-8394-b450143cbca2">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsOfDividendsCommonStock" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzctMy0xLTEtMA_7e65db5e-a0d5-48b4-bea4-dcc05d5b41a2">35,124</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsOfDividendsCommonStock" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzctNS0xLTEtMA_e10eab29-7237-4ec7-926f-19a2ecb1ccca">31,865</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzgtMS0xLTEtMA_48872d19-9123-4982-b85a-1f48542f0b7e">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzgtMy0xLTEtMA_568396b2-995e-4fe5-9f8b-ffa7f2075c26">&#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:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzgtNS0xLTEtMA_fdf26343-a31d-434f-93c4-a995a3ecab69">1,000</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 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzktMS0xLTEtMA_c60bbe85-1e0d-4807-8ba1-853d3a0caaec">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzktMy0xLTEtMA_d117e75b-3566-4a5a-b462-46c27c2f2101">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:NetCashProvidedByUsedInFinancingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzktNS0xLTEtMA_f438f093-483a-4a69-9ccd-8dc2212f3d76">209,904</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDAtMS0xLTEtMA_c1853bce-806e-4a12-b946-9cdcefdc8e11">2,671</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDAtMy0xLTEtMA_9a3df74b-4ec1-49a5-b115-d52a45fba25f">523</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDAtNS0xLTEtMA_cbefc6c0-7a2f-4d3e-9f58-0820b53ffe8c">1,093</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDEtMS0xLTEtMA_b1b9976d-a275-4aa5-a640-2b8ac6cce65a">97,642</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDEtMy0xLTEtMA_4c4761cd-7b03-41b8-8d7f-87e5bac6a292">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDEtNS0xLTEtMA_e5c7678e-a678-4849-91e6-2ddf741b25be">1,630</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDItMS0xLTEtMA_8de96eb7-7d9c-4670-810c-729c074ed417">171,431</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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDItMy0xLTEtMA_9607a325-aa36-4473-ad4f-e72156c1937a">108,212</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="ib740d5d51df04ae39bc1007f04b7006f_I20171231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDItNS0xLTEtMA_2c1fb4e4-692d-4dae-9ece-2d81c583ce7b">106,582</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDMtMS0xLTEtMA_87b8347f-3882-4b70-a0de-81a1c22e5078">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:#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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDMtMy0xLTEtMA_8b31ad79-04e8-43f9-8ed7-b3dcd4c3b375">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><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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDMtNS0xLTEtMA_3dd5d47d-2012-4c6f-b5de-0eaed8193526">108,212</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%">40</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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-bottom:5pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2017</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="i4c1657bbb1e14689bca7759ab900536a_I20171231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesIssued" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi0yLTEtMS0w_5cdbaf78-2bf5-43cb-af9e-67554557063d">173,507</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="i4c1657bbb1e14689bca7759ab900536a_I20171231" decimals="-3" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi00LTEtMS0w_e73dfbc5-c92b-45b2-86a3-6b2ce8ca339d">347</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="i196202ba57cc46579609aed9942d10f2_I20171231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi02LTEtMS0w_36bb30b6-f359-4d6b-9e2d-d0d471f131f5">461,338</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="i3ca99dcef7da4e51a06a7b5b68dff825_I20171231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi04LTEtMS0w_452815a1-2492-4932-95b1-77aeae6e331c">668,587</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="if2f71f53722e4bff8659e08cb2a42c5a_I20171231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi0xMC0xLTEtMA_f80d3df0-f1eb-4d6e-bc7c-17b6b38910c4">34,599</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="ib740d5d51df04ae39bc1007f04b7006f_I20171231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi0xMi0xLTEtMA_e6d2880c-df30-41ea-9484-5e5bae5915e9">1,095,673</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%">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="ibf40038bb52a4f1181e2f742f8d40d87_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy0yLTEtMS0w_7e137acc-b71e-4fcc-8be3-7d9be1b8df98">1,493</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="ibf40038bb52a4f1181e2f742f8d40d87_D20180101-20181231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy00LTEtMS0w_cabb0072-09e1-4075-b53c-ea0a18e894b0">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="ia1e13233ac8647048845e2ac09a72110_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy02LTEtMS0w_7a8f4424-377c-47b0-8ed8-5678f90a66d7">26,780</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy0xMi0xLTEtMA_ddf17e3e-e5d4-4a2f-b83b-b13f3d527982">26,783</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="ibf40038bb52a4f1181e2f742f8d40d87_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodShares" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC0yLTEtMS0w_c319c94c-9d08-4046-b823-681d92f5ae90">4,180</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="ibf40038bb52a4f1181e2f742f8d40d87_D20180101-20181231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC00LTEtMS0w_90389b71-c309-48c6-9c56-d09124fdb990">8</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="ieb56650aacb54d5db569f14310bf4ebc_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC04LTEtMS0w_080ff9e1-117c-4112-9676-839dc83b6532">203,814</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC0xMi0xLTEtMA_afc5d14d-5b07-4cf8-81af-9b42d83beaea">203,822</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="ia1e13233ac8647048845e2ac09a72110_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNS02LTEtMS0w_6dc2f805-559c-4217-9e65-ee730488199d">41,090</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNS0xMi0xLTEtMA_b206800c-c072-48f1-a545-8b372440d148">41,090</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</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="ieb56650aacb54d5db569f14310bf4ebc_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DividendsCommonStockCash" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNi04LTEtMS0w_3ea9afc7-0cfd-435d-b528-9f9c80ab70b9">31,865</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DividendsCommonStockCash" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNi0xMi0xLTEtMA_1cb2c196-2ca6-4823-9c49-524e8f72bc71">31,865</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%">Adjustment as a result of the adoption of ASU 2016-06 "Income Taxes - Intra-Entity Transfers Other than Inventory"</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="iedffb70ace1a4bad959695c50169dcfb_I20171231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy04LTEtMS02OTU_eb73cda0-4cb0-4f31-8927-60127c4ff39e">5,961</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="i220fc0bd47034127b63419a5a59121cf_I20171231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy0xMi0xLTEtNzAw_766c3eca-dbfa-4a3c-9a68-37a4eaf1c79d">5,961</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="ieb56650aacb54d5db569f14310bf4ebc_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy04LTEtMS0w_229f1c19-7a07-418f-befd-ff97f4674e2f">219,267</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy0xMi0xLTEtMA_778650db-2e9c-4e14-8cf3-2a189bbad92d">219,267</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 ($188)</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="ia4775eba0847484d8a60d2898aa44e7d_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTAtMTAtMS0xLTA_c72ef8f9-26aa-4ff4-bcef-549d9e009312">1,185</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTAtMTItMS0xLTA_a4c58c65-dfbc-4ca8-8e5d-02a829615962">1,185</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%">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="ia4775eba0847484d8a60d2898aa44e7d_D20180101-20181231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTEtMTAtMS0xLTA_cb7ebdc3-e465-4044-93b4-c164a34f1365">501</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTEtMTItMS0xLTA_c6e941b7-1d7d-45b0-8404-d90b78a3b18e">501</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="ia4775eba0847484d8a60d2898aa44e7d_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTItMTAtMS0xLTA_08c97bef-6bf1-4564-be00-2be3a1b5a038">4,216</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTItMTItMS0xLTA_f2b970af-b1a0-4ddc-9583-c2fdf9bf9289">4,216</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: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:nonFraction unitRef="shares" contextRef="ic56795ffbed44cb0a764c893a61f362c_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesIssued" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtMi0xLTEtMA_f6b63f9c-710d-4bca-be6e-b95ac093b305">170,820</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="ic56795ffbed44cb0a764c893a61f362c_I20181231" decimals="-3" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNC0xLTEtMA_acd85e5b-1f79-40a0-99d9-c2be23943359">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="ia62e59cca4464221bd523e2d6a7fa886_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNi0xLTEtMA_eac98b88-4a0d-4608-8f13-ca18c1caba5e">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="i834d53a969284896ab357f2b0c3ce657_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtOC0xLTEtMA_f8467d93-a030-4341-95a4-4b3e376e1b2b">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="i3b2f6aa05d494335a02b2ec5ac168e04_I20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtMTAtMS0xLTA_9cbc3bc9-8d22-44d6-9c66-1e964f7b28a5">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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtMTItMS0xLTA_be120ccf-250c-4802-b721-0cd060823b79">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%">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="ia5a7f0963d0a41e48eca3667ebc4158c_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtMi0xLTEtMA_fbd83d7f-f0cd-42b8-ae99-fee6369b5000">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="ia5a7f0963d0a41e48eca3667ebc4158c_D20190101-20191231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNC0xLTEtMA_d2213fd1-bdbf-41ca-89f3-4abbae7005e1">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="i68c7c78a53c24716aad2cceea35dacec_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNi0xLTEtMA_86878b94-446c-4751-b747-53766ecc532e">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtMTItMS0xLTA_43aaffc3-f007-42d5-9c04-ed65fa5be035">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="ia5a7f0963d0a41e48eca3667ebc4158c_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodShares" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtMi0xLTEtMA_14baac37-176a-46da-a9bd-1fc18e35b395">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="ia5a7f0963d0a41e48eca3667ebc4158c_D20190101-20191231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtNC0xLTEtMA_a751e0f1-753e-47fb-9d55-6d3a74ad1d63">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="i7008e007f58a4b5899374ec64dccc60a_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtOC0xLTEtMA_5d60a2fd-a71d-4dd1-a5f1-fc8412f5fc24">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtMTItMS0xLTA_de409294-3872-41e3-a310-ab93a7ff13ef">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="i68c7c78a53c24716aad2cceea35dacec_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTYtNi0xLTEtMA_bb353597-ac6e-4360-a250-05c0590c7a5e">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTYtMTItMS0xLTA_5035b639-87e4-4d6e-846d-7cca74684f98">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</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="i7008e007f58a4b5899374ec64dccc60a_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DividendsCommonStockCash" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTctOC0xLTEtMA_b8a33808-ccdd-442f-a364-f30093273e58">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DividendsCommonStockCash" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTctMTItMS0xLTA_6411688a-9b12-4d95-b35e-b22ad0cd9e49">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="i7008e007f58a4b5899374ec64dccc60a_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTktOC0xLTEtMA_2f630d93-31b9-4665-8ce3-c5897bea9348">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTktMTItMS0xLTA_21bbfbe9-4892-43d7-8d3c-cf5dd70de23d">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="i71c39cc633c0412297a724a3b198be69_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjItMTAtMS0xLTA_a883ff52-31c4-4a21-a097-1244aa7d4333">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjItMTItMS0xLTA_24f20c3b-a286-491a-998e-bfcee6ef9dbb">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="i71c39cc633c0412297a724a3b198be69_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjMtMTAtMS0xLTA_2f4611ef-a898-4b77-b7d1-648f8e8dc416">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjMtMTItMS0xLTA_26d0f206-5ed3-48c6-8209-235dad6e3455">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="i71c39cc633c0412297a724a3b198be69_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjQtMTAtMS0xLTA_fa1c2dba-4383-46ef-acd7-5e3ba515a941">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjQtMTItMS0xLTA_361ca3a3-5b8f-4371-bd47-12002f86c230">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="ibdc0572db597422ca189e88018b0643f_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesIssued" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtMi0xLTEtMA_0022d7be-0047-4a75-85db-40447966923d">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="ibdc0572db597422ca189e88018b0643f_I20191231" decimals="-3" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNC0xLTEtMA_3c7db71d-765a-4371-a27f-d97efe6c933b">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="i9d842e36605b43ed998c954d642af881_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNi0xLTEtMA_c5131655-9e82-4715-b160-56721b0fc3b6">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="ide1cceaa5ce0486d98bb6affeac5ae3e_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtOC0xLTEtMA_0fb24a7b-2556-4979-a60f-9291ff96ee81">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="ib07c07bbfb5544c0bb97b2d16c24b634_I20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtMTAtMS0xLTA_c735f875-02c3-435b-8e70-8c43d85ed382">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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtMTItMS0xLTA_53ad2b58-b94f-4703-8cae-b91e6e43add5">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%">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="i614c651180bc4855b70dad93f31f1adb_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtMi0xLTEtMA_d48391c5-c93c-4ca8-84f7-87c69ab6b519">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="i614c651180bc4855b70dad93f31f1adb_D20200101-20201231" decimals="-3" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNC0xLTEtMA_fd1403d8-b01a-49d8-af68-9ab0091a74df">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="i9331cd59f3404613b09d551f5497228b_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNi0xLTEtMA_8149619e-d381-4bac-a976-5e8949ceaadd">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtMTItMS0xLTA_febdebb6-98a0-4d0b-b6f9-533c386131c2">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="i614c651180bc4855b70dad93f31f1adb_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodShares" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctMi0xLTEtMA_33cce827-38a3-449f-949c-d6ff313a061a">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="i614c651180bc4855b70dad93f31f1adb_D20200101-20201231" decimals="-3" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctNC0xLTEtMA_5e569250-0a3e-400c-94ab-ddb15f9ac54c">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="ib93dfd73638e4f62aa3d14c2f68e837e_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctOC0xLTEtMA_71d789d2-d005-43da-9967-b51be795e669">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctMTItMS0xLTA_f05ed550-e81f-44a8-bb50-e5207524eed8">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="i9331cd59f3404613b09d551f5497228b_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjgtNi0xLTEtMA_dca86476-293c-4ad4-99cb-4b6675969150">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjgtMTItMS0xLTA_6fac37d5-2bae-45f2-847c-20c34ffe8c8b">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</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="ib93dfd73638e4f62aa3d14c2f68e837e_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DividendsCommonStockCash" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjktOC0xLTEtMA_0ad125f1-e142-488e-97fc-3980b44ffb5a">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DividendsCommonStockCash" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjktMTItMS0xLTA_4e8ac6ee-0a04-44f8-a3b9-2201a4768c10">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%">176,186&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzAtMTItMS0xLTA_b88062de-1c8d-4f25-afa3-e79485c4d752">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="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzMtMTAtMS0xLTA_955ae86b-98fe-418c-acdf-2e0fea87d33c"><ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzMtMTAtMS0xLTA_f6a98b26-bc8b-44a9-b153-21e0f7aafddc">6,478</ix:nonFraction></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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzMtMTItMS0xLTA_9fd15cc4-5cac-46c3-b75d-9257cd239725">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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzQtMTAtMS0xLTA_4e778e54-9049-4ee9-8e0f-9ff809f1900b"><ix:nonFraction unitRef="usd" contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzQtMTAtMS0xLTA_d5f59fda-cc33-403c-b318-cf6f40c00546">4,119</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzQtMTItMS0xLTA_c9297acf-91cf-4cbf-be86-c728d37785b0">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzUtMTAtMS0xLTA_49f98e2d-ffe6-48c7-a42b-f6d8b97e1e03"><ix:nonFraction unitRef="usd" contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzUtMTAtMS0xLTA_ff2b6f3b-221e-4aa3-ad4a-18e2447d3c15">1,115</ix:nonFraction></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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzUtMTItMS0xLTA_cdfb12b6-5c8e-4caf-babd-85845e1840ea">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:700;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-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="iaac1bff8fed84c9892e20cf9f3b4cd94_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesIssued" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtMi0xLTEtMA_a8456ff2-6c8e-4327-9767-95e0aab8bc6f">175,790</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-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:9pt;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:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iaac1bff8fed84c9892e20cf9f3b4cd94_I20201231" decimals="-3" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNC0xLTEtMA_6390b954-bf90-4800-ab31-63f8cd1e2827">352</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-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:9pt;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:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i7128fd43290d4ce6ae12cf03ea620b76_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNi0xLTEtMA_fcb04f98-617c-43c6-9d4b-24816237d53a">807,739</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-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:9pt;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:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i24a0b5b69e504b0a896f227f2e9fbeb6_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtOC0xLTEtMA_f1fb524c-80ad-487e-bbbb-4a916c92385f">487,912</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-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:9pt;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:9pt;font-weight:700;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i4fc0936b019746c399fb17074b41e6c6_I20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtMTAtMS0xLTA_638e2e30-8544-4632-a909-8cabb9e0ac4b">33,801</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:9pt;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:9pt;font-weight:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockholdersEquity" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtMTItMS0xLTA_1888b470-9401-4585-88f7-505afcc1ace8">1,262,202</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-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%">41</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:SignificantAccountingPoliciesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2MDU_1ce26da3-eb69-4dbb-96db-15d7a9ec12d1" continuedAt="ib27d765d73c5496da8f91384c2316911" escape="true">Summary of Significant Accounting Policies</ix:nonNumeric></span></div><ix:continuation id="ib27d765d73c5496da8f91384c2316911" continuedAt="iabac5956e2cc4fb09f4616d16d12f794"><div style="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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="cgnx:NatureOfOperationsPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3NDI_06d051c8-bb1b-4fd9-be7f-726a8b5c9fc7" 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:UseOfEstimates" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3Nzc_3874cd2d-7ff4-4b81-b42c-9fd14427d5c0" 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 combinations, and restructuring charges.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ConsolidationPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3Mzk_599ffdfc-6050-4b26-91d5-7f91a9ab8cad" 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2Njg_8d057ce6-2f10-4fad-88f4-ac0d1488ec9e" 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 other comprehensive income (loss).</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:FairValueOfFinancialInstrumentsPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MjU_6cec1d6e-6587-402d-807f-a393d8dc118d" 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:CashAndCashEquivalentsPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2ODE_1eb61242-e838-4e2a-9dab-7770a995f96b" continuedAt="ife20b66633ca4b64b0113c1b515d9847" escape="true"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:InvestmentPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2ODE_91771768-ab67-43ff-92da-7136cc15a834" continuedAt="i0168141c5b534448a61e2493659d0ac4" 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 certificates of deposit and debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Certificates of deposit and 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:durwordsen" name="cgnx:AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzY1Nw_1df595ff-6f78-4364-ab9f-9ede47eb0c7e">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 other comprehensive income (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 </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%">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="#i1a430d3f39e74769965c1cc9f7e66842_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="iabac5956e2cc4fb09f4616d16d12f794" continuedAt="ifc896e57562a49dcb63035fd2855bf78"><div style="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="ife20b66633ca4b64b0113c1b515d9847"><ix:continuation id="i0168141c5b534448a61e2493659d0ac4">recoveries related to debt securities are included in &#8220;Other income (expense)&#8221; on the Consolidated Statements of Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts that project the expected future cash flows.</ix:continuation></ix:continuation></span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:TradeAndOtherAccountsReceivablePolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTA5OTUxMTczNzk1Ng_1dbdc447-1036-47ef-9614-e4cd960b73b0" 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, general economic and industry conditions, and reasonable forecasts about the future, 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:InventoryPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MzI_050cd4ee-8911-4022-b229-434a3fb4ca54" 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 prices 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%">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 market 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 would recognize a higher than normal gross margin if the reserved inventory were subsequently sold.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:PropertyPlantAndEquipmentPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3ODQ_25c692ea-8097-4af0-820e-18a5f81e77cd" 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="ieeb8bb7dd2d740d5859437f51890dfc9_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfODcwNQ_af867205-83df-405d-9ff1-c80b4840c2a8">39</ix:nonNumeric> years, building improvements&#8217; useful lives are <ix:nonNumeric contextRef="i48348e745c5148028dcaf82df7d0d8a0_D20200101-20201231" format="ixt-sec:durwordsen" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfODc0OQ_75b43c32-51b0-4005-bfbf-8de76eef7f2d">ten years</ix:nonNumeric>, and the useful lives of computer hardware and software, manufacturing test equipment, and furniture and fixtures range from two to <ix:nonNumeric contextRef="i4117606912f54ef5b9e2782948d44c65_D20200101-20201231" format="ixt-sec:durwordsen" name="us-gaap:PropertyPlantAndEquipmentUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfODg4Mw_f159af16-0b79-4d46-8833-6872c9c5a14b">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:InternalUseSoftwarePolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTA5OTUxMTcyMzIyMQ_93c79a72-036d-40c4-bb50-b558028cb781" continuedAt="id618cc496756405b8da6905a17fd712f" 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 entity'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 upon 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, </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="#i1a430d3f39e74769965c1cc9f7e66842_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="ifc896e57562a49dcb63035fd2855bf78" continuedAt="i8f9178c28b8647f39d1e3cf6f77a17d6"><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="id618cc496756405b8da6905a17fd712f">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:LesseeLeasesPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTA5OTUxMTY4MDA1Nw_80c9bd92-5da8-41f1-9e08-90365bb5c840" 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. The Company determines whether a contract 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: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="#i1a430d3f39e74769965c1cc9f7e66842_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="i8f9178c28b8647f39d1e3cf6f77a17d6" continuedAt="ice534f5100c44c2bb42e59d0106b2f90"><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"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2MTU_3c8b683d-728d-47c2-a98f-b05b0e648519" continuedAt="i2122075e888241c8807c09792f1bfccf" escape="true">Goodwill</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="i2122075e888241c8807c09792f1bfccf">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 macroeconomic conditions, industry and market considerations, overall financial performance (both current and projected), changes in management or 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 similar businesses, to support the conclusions based on the income approach.</ix:continuation> </span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:IntangibleAssetsFiniteLivedPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MDE_c63591b9-856e-406b-a9ed-9727db284bc3" 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 upon facts and circumstances. The useful lives of distribution networks range from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2MTY_1993dea7-2551-4816-80cd-4137c69069dd">eleven</span> to <ix:nonNumeric contextRef="if36850dcbd1740589493383b1e09703b_D20200101-20201231" format="ixt-sec:durwordsen" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2MjI_9b238a56-f3f2-41c7-84ac-396760dc50ff">twelve years</ix:nonNumeric>, of completed technologies from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2NTc_a4acc09f-a1f8-4829-97e1-5e2e1d62e3a6">five</span> to <ix:nonNumeric contextRef="i9bce38372afb46f1aa436c4c366ee94c_D20200101-20201231" format="ixt-sec:durwordsen" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2NjM_d609c663-41ff-48c6-a0e8-06d697c6fba0">eight years</ix:nonNumeric>, of customer relationships from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2OTg_1ba8638a-e4db-4203-9056-3c3066dac80d">five</span> to <ix:nonNumeric contextRef="i182946fdfefd4286be6379d3fb85519d_D20200101-20201231" format="ixt-sec:durwordsen" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3MDQ_401a511c-7db3-490b-b0d3-aeb44ce74683">eight years</ix:nonNumeric>, of non-compete agreements from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3Mzk_2ef3c53a-ab25-4b57-bc54-77289ccd63fa">three</span> to <ix:nonNumeric contextRef="i0bac989307494e9480022581cd700e24_D20200101-20201231" format="ixt-sec:durwordsen" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3NDU_38d6fad4-09f5-4902-9175-6d137fb44fd2">seven years</ix:nonNumeric>, and trademarks <ix:nonNumeric contextRef="i34092537a9cf4f458b524cfe7470dcf1_D20200101-20201231" format="ixt-sec:durwordsen" name="us-gaap:FiniteLivedIntangibleAssetUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3NjQ_993b1c92-ed61-4956-9085-ef06163079e7">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:StandardProductWarrantyPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MDk_2f331ec4-70a6-453a-a977-136f4972603f" 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:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTc4NTM_da3b6d83-8fe8-41be-be75-64b34b1da43f">one</span> to <ix:nonNumeric contextRef="i4cb9bac3005844c5b3ae926944c6a28e_D20200101-20201231" format="ixt-sec:durwordsen" name="cgnx:ProductWarrantyPeriod" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTc4NTk_1668c73d-f7bc-4fc8-9262-a725e8a05166">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:CommitmentsAndContingenciesPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MjM_9803a34e-f27e-4a03-8e06-df7d72f4df59" 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></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="#i1a430d3f39e74769965c1cc9f7e66842_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="ice534f5100c44c2bb42e59d0106b2f90" continuedAt="i601e2d0cee90499abe8badad8f302344"><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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:DerivativesPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTA5OTUxMTczNjQ1OQ_a172a8ef-9ed6-4e57-87b2-57652d654d09" continuedAt="ic98c15d72fcb456a9079cc005383c2c9" 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="ic98c15d72fcb456a9079cc005383c2c9">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:RevenueRecognitionPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2Mzc_46d7017e-d5a6-40ca-9d5a-e2ece1dbd2d1" continuedAt="i41062267977846d8a0c782999a6efd97" 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><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 collectibility 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 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 upon 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 </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%">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="#i1a430d3f39e74769965c1cc9f7e66842_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="i601e2d0cee90499abe8badad8f302344" continuedAt="i0d5db625e1ba4fda92c917e9d5ccfeec"><ix:continuation id="i41062267977846d8a0c782999a6efd97"><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%">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 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="i0f77d4a1ec5f45e88a15ed192e49d2f7_D20200101-20201231" format="ixt-sec:durday" name="cgnx:RevenuePaymentTerms" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMjQ3NzA_987cb08e-7747-4a6e-bed4-40b8f0b4321c">30</ix:nonNumeric> to <ix:nonNumeric contextRef="i4cb9bac3005844c5b3ae926944c6a28e_D20200101-20201231" format="ixt-sec:durday" name="cgnx:RevenuePaymentTerms" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMjQ3NzY_cffeca41-5b95-4911-ad6d-1ef3ff3d48e2">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ResearchDevelopmentAndComputerSoftwarePolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MzU_059a311a-2bc7-4229-b065-cd05cfe5cffe" continuedAt="i3633ff1c84a14bc9af9ed4fe9d4248a2" 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="i3633ff1c84a14bc9af9ed4fe9d4248a2">Research and development costs primarily include personnel-related costs, outside services, and prototyping materials. 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: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="#i1a430d3f39e74769965c1cc9f7e66842_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="i0d5db625e1ba4fda92c917e9d5ccfeec" continuedAt="i8784dd4dd5204981a62a5b500f7d3aa2"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:AdvertisingCostsPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3NTQ_89ad89d4-aee7-4301-8a76-2525ea1a18f8" 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AdvertisingExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMjY3OTY_adeb0f5a-0de9-45c4-af19-483f56a1013e">1,443,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AdvertisingExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMjY4MDY_3aa23201-7787-4eb0-ab9a-921782a1fdc1">1,385,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AdvertisingExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMjY4MjA_8d5bbea2-a2ba-4f5f-8f56-f9d892c19d47">1,662,000</ix:nonFraction> in 2018.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3NjA_83e782cb-982f-45a3-8b89-ecefca292337" 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. The fair value of RSUs is determined based on the market value of the Company's common stock on the grant date. </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 options and RSUs using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting 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></ix:nonNumeric><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:IncomeTaxPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2MDQ_14f5c013-303f-4b2b-b691-7df25033de3e" 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: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="#i1a430d3f39e74769965c1cc9f7e66842_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="i8784dd4dd5204981a62a5b500f7d3aa2" continuedAt="i668ed94c73d14e1e9c703a74161c76b3"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:EarningsPerSharePolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3Mzg_1ac27a2e-19c4-451c-b6eb-3cfdb39483f3" 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ComprehensiveIncomePolicyPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2ODY_cc7df711-7153-45a7-ba2d-4df34ca4f521" 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzI3ODk_9d93c40e-9918-4a0b-9f26-b725df0555c1">36,912,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzI3OTY_f981fa93-0046-4327-98ca-156e209853d5">38,027,000</ix:nonFraction>, as of December 31, 2020 and December 31, 2019, respectively; net unrealized gains on available-for-sale investments of $<ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzI5MTU_a8b6ff4a-d564-4557-b805-7e552e507d88">4,382,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzMwMDU_4c8ec613-b111-447b-80f7-193cce273461">2,023,000</ix:nonFraction> as of December 31, 2020 and December 31, 2019, respectively; and losses on currency swaps, net of gains on long-term intercompany loans of $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzMxMTE_ef1659d8-ddd6-4b10-96e2-0f3422c9fd00">1,271,000</ix:nonFraction> 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 income (loss) to investment income on the Consolidated Statements of Operations were net realized gains of $<ix:nonFraction unitRef="usd" contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzMyOTc_414bb058-5275-4887-9a8b-c75c68c700fc">4,119,000</ix:nonFraction>, $<ix:nonFraction unitRef="usd" contextRef="i71c39cc633c0412297a724a3b198be69_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzMzMDE_3359a01b-c0ca-402c-ab66-fda5ec0d4ddd">1,452,000</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="ia4775eba0847484d8a60d2898aa44e7d_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzMzMDk_59ab81b0-8b1c-4542-9614-0054af83ab31">501,000</ix:nonFraction> for 2020, 2019, and 2018, respectively.</span></div></ix:nonNumeric><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="cgnx:ConcentrationsOfRiskPolicyPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3NjU_cc052d34-0d4e-46ce-a36d-a370002b49ce" 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%">The Company has two large customers that each represented a significant portion of revenue in 2020 and accounts receivable as of December 31, 2020. 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 product is manufactured by a third-party contractor located in Indonesia. This contractor has agreed to provide Cognex with termination notification periods and last-time-buy rights, if and when that may be applicable. We rely upon this contractor to provide quality product and meet delivery schedules. 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:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain components are presently sourced from a single vendor that is selected based on price and performance considerations. In the event of a supply disruption from a single-source vendor, these components may be purchased from alternative vendors, which may result in manufacturing delays based on the lead time of the new vendor and higher costs. Certain key electronic and mechanical components that are purchased from strategic suppliers, such as processors or imagers, are fundamental to the design of Cognex products. A disruption in the supply of these key components, such as a last-time-buy announcement, natural disaster, financial bankruptcy, or other event, may require us to purchase a significant amount of inventory at unfavorable prices resulting in lower gross margins and higher risk of carrying excess inventory. If we are unable to secure adequate supply from alternative sources, we may have to redesign our products, which may lead to a delay in manufacturing and a possible loss of sales.</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%">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="#i1a430d3f39e74769965c1cc9f7e66842_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="i668ed94c73d14e1e9c703a74161c76b3" continuedAt="i35edf963fe674d85b29081eff884a9a7"><div style="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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:BusinessCombinationsPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3NjY_1e82b6d5-ed50-4c42-b7a7-b461b6b27db5" continuedAt="ib30aad5148e841d8b75bd96d915fdda8" 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="ib30aad5148e841d8b75bd96d915fdda8">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:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTA5OTUxMTcxNzkzMw_eb06b9f6-f620-43e7-8e24-e26ad4f82937" continuedAt="i64ab3f28aa2847e09c858f0462e9f444" 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="i35edf963fe674d85b29081eff884a9a7"><ix:continuation id="i64ab3f28aa2847e09c858f0462e9f444">Other associated costs typically associated with restructuring activities 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 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><div id="i1a430d3f39e74769965c1cc9f7e66842_103"></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="#i1a430d3f39e74769965c1cc9f7e66842_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;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDMvZnJhZzowODAxY2M3MDYyZmI0Y2M1YjhiZGU5Mjc1OTJjZTA5MS90ZXh0cmVnaW9uOjA4MDFjYzcwNjJmYjRjYzViOGJkZTkyNzU5MmNlMDkxXzEwOTk1MTE2MzQwMTA_385e3896-1d63-46be-845f-dc6a5cc373bf" continuedAt="ifd4256207a16492c903c2ba886e9092e" escape="true"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDMvZnJhZzowODAxY2M3MDYyZmI0Y2M1YjhiZGU5Mjc1OTJjZTA5MS90ZXh0cmVnaW9uOjA4MDFjYzcwNjJmYjRjYzViOGJkZTkyNzU5MmNlMDkxXzYyMzA_87bb1887-40a7-4c98-b306-fee57fd43137" continuedAt="i4e6662f18cdb4e3694bac7c408e54679" escape="true">New Pronouncements</ix:nonNumeric></ix:nonNumeric></span></div><ix:continuation id="ifd4256207a16492c903c2ba886e9092e"><ix:continuation id="i4e6662f18cdb4e3694bac7c408e54679"><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:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">ASU 2019-12 applies to all entities within the scope of Topic 740, Income Taxes. The amendments in this ASU simplify the accounting for income taxes by removing the following exceptions: (1) exception to the incremental approach for intraperiod tax allocation when there is a loss from continuing operations and income or a gain from other items; (2) exception to the requirement to recognize a deferred tax liability for equity method investments when a foreign subsidiary becomes an equity method investment; (3) exception to the ability not to recognize a deferred tax liability for a foreign subsidiary when a foreign equity method investment becomes a subsidiary; and (4) exception to the general methodology for calculating income taxes in an interim period when a year-to-date loss exceeds the anticipated loss for the year. The amendments in this ASU also simplify the accounting for income taxes by doing the following: (1) requiring that an entity recognize a franchise tax that is partially based on income as an income-based tax and account for any incremental amount incurred as a non-income-based tax; (2) requiring that an entity evaluate when a step up in the tax basis of goodwill should be considered part of the business combination in which the book goodwill was originally recognized and when it should be considered a separate transaction; (3) specifying that an entity is not required to allocate the consolidated amount of current and deferred tax expense to a legal entity that is not subject to tax in its separate financial statements; and (4) requiring that an entity reflect the effect of an enacted change in tax laws or rates in the annual effective tax rate computation in the interim period that included the enacted date. The amendments in this ASU are effective for public companies for annual periods, and interim periods within those annual periods, beginning after December 15, 2020. Early adoption is permitted; however, an entity that elects to early adopt the amendments must adopt all the amendments in the same period. The amendments in this ASU related to separate financial statements of legal entities that are not subject to tax should be applied on a retrospective basis for all periods presented. The amendments related to changes in ownership of foreign equity method investments or foreign subsidiaries should be applied on a modified retrospective basis through a cumulative-effect adjustment to retained earnings as of the beginning of the fiscal year of adoption. The amendments related to franchise taxes that are partially based on income should be applied on either a retrospective basis for all periods presented or a modified retrospective basis through a cumulative-effect adjustment to retained earnings as of the beginning of the fiscal year of adoption. All other amendments should be applied on a prospective basis. Management does not expect ASU 2019-12 to 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)"</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 amendments in this ASU 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. The amendments in this ASU 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 this ASU are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 to 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:6pt;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 amendments in this ASU are effective for fiscal years, and interim periods within those fiscal years, beginning after December 15, 2020. Early application is not permitted. The amendments in this ASU should be applied on a prospective basis as of the beginning of the period of adoption for existing or newly purchased callable debt securities. Management does not expect ASU 2020-08 to have a material impact on the Company's consolidated financial statements and disclosures.</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%">51</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_109"></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="#i1a430d3f39e74769965c1cc9f7e66842_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 3:&#160;<ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:FairValueDisclosuresTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzM1OTk_1ca8f8de-8c6a-46de-b684-0fa03c7218d6" continuedAt="ie265823cc03f4868912a901027f60911" escape="true">Fair Value Measurements</ix:nonNumeric></span></div><ix:continuation id="ie265823cc03f4868912a901027f60911" continuedAt="ib5a61dce65d44432a8738a1b8f8d9b87"><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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzM1ODg_df363fda-c648-4991-a8d9-fcd6b4110e87" 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, 2020 (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="i3105dceca27c41bea714c34ef0d49b64_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:MoneyMarketInstrumentsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzMtMS0xLTEtMA_dfeecfe1-2c63-4015-8f7a-e7fba0480dde">2,464</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="i50d1c612bfe54d33a636415a8399e08a_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:MoneyMarketInstrumentsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzMtMy0xLTEtMA_70e17307-da42-4f03-8bf4-877b925db08b">&#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="ib80d5a29b52141d2acf74afd3a3894ce_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:MoneyMarketInstrumentsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzMtNS0xLTEtMTQxNTQ_7d15d945-4b4b-4d14-844f-511b0422e164">&#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="i3105dceca27c41bea714c34ef0d49b64_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:CorporateBondsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzUtMS0xLTEtMA_6efc3b03-6576-4340-a568-390d1aa98e50">&#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="i50d1c612bfe54d33a636415a8399e08a_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:CorporateBondsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzUtMy0xLTEtMA_00b4575f-cbea-4a05-88b1-1e19b605cd27">236,142</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="ib80d5a29b52141d2acf74afd3a3894ce_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:CorporateBondsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzQtNS0xLTEtMTQxNTQ_2af6cbc4-5b8c-40e6-8904-47a560a7606a">&#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%">Treasury bills</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"><ix:nonFraction unitRef="usd" contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231" xsi:nil="true" name="cgnx:TreasuryBillsFairValueDisclosure" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtMS0xLTEtNjUwMw_92766df4-deff-4040-aab1-c57f9a3ed9ed"></ix:nonFraction></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i50d1c612bfe54d33a636415a8399e08a_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:TreasuryBillsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtMy0xLTEtNjUwMw_0717b76c-7eae-4420-8206-d2cee7594f55">131,861</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"><ix:nonFraction unitRef="usd" contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231" xsi:nil="true" name="cgnx:TreasuryBillsFairValueDisclosure" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtNC0xLTEtNjUwMw_875e1c56-510e-4903-a633-3a4c4806e115"></ix:nonFraction></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"><ix:nonFraction unitRef="usd" contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231" xsi:nil="true" name="cgnx:TreasuryBillsFairValueDisclosure" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzUtNS0xLTEtMTQxNTQ_48cba5c4-0535-4352-aa90-1251d01d4bb3"></ix:nonFraction></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="i3105dceca27c41bea714c34ef0d49b64_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AssetBackedSecuritiesFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtMS0xLTEtMA_a735552d-10d0-4f31-a38c-a9bb3416014e">&#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="i50d1c612bfe54d33a636415a8399e08a_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AssetBackedSecuritiesFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtMy0xLTEtMA_90bb7207-500e-479f-9e2c-dc67e109c9de">92,218</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="ib80d5a29b52141d2acf74afd3a3894ce_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AssetBackedSecuritiesFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtNS0xLTEtMTQxNTQ_7a3ff5e3-4437-4fec-9717-a0119dd226c2">&#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 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="i3105dceca27c41bea714c34ef0d49b64_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AgencyBondsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzgtMS0xLTEtNjUxMg_c689edfc-f02d-4e18-acf6-6294f91e7b20">&#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="i50d1c612bfe54d33a636415a8399e08a_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AgencyBondsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzgtMy0xLTEtNjUxMg_7bbb9450-1ed3-4449-9de1-68d9c4f4ddc4">19,006</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="ib80d5a29b52141d2acf74afd3a3894ce_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AgencyBondsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzgtNS0xLTEtMTQxNTQ_afbf48c9-7887-4691-84bf-d141e1e54b76">&#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%">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:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:SovereignBondsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzgtMS0xLTEtMA_124d711d-5a46-4e87-997c-6824bcd8a207">&#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="i50d1c612bfe54d33a636415a8399e08a_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:SovereignBondsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzgtMy0xLTEtMA_910fb124-84fd-4827-9f6b-ade2ffc1571f">12,100</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="ib80d5a29b52141d2acf74afd3a3894ce_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:SovereignBondsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzktNS0xLTEtMTQxNTQ_3631d7c1-0f0e-4aec-8860-17442d5aedf2">&#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%">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:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:MunicipalBondsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzktMS0xLTEtMA_e68d0dfe-9ea6-47cf-8fa4-6955822d34ef">&#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="i50d1c612bfe54d33a636415a8399e08a_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:MunicipalBondsFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzktMy0xLTEtMA_3d5a0ed5-c231-4912-9c22-42a3585b432d">7,038</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"><ix:nonFraction unitRef="usd" contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231" xsi:nil="true" name="cgnx:MunicipalBondsFairValueDisclosure" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzEwLTUtMS0xLTE0MTU0_0fbdb269-a88e-4387-ae79-19352aefc8df"></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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="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="i3105dceca27c41bea714c34ef0d49b64_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:ForeignCurrencyContractAssetFairValueDisclosure" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzEzLTEtMS0xLTA_7e3b0799-2156-4c88-9c42-883b86237618">&#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="i50d1c612bfe54d33a636415a8399e08a_I20201231" decimals="-3" name="us-gaap:ForeignCurrencyContractAssetFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzEzLTMtMS0xLTA_4f68aff1-9494-4d69-b284-4f8e4681d993">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="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:ForeignCurrencyContractAssetFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzEzLTUtMS0xLTE0MTU0_08c70793-9ffc-4920-967a-3f3bfe940e62">&#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="i3105dceca27c41bea714c34ef0d49b64_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzE2LTEtMS0xLTA_36eb4805-4069-41ba-a649-a948be1134c1">&#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="i50d1c612bfe54d33a636415a8399e08a_I20201231" decimals="-3" name="us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzE2LTMtMS0xLTA_940c95e7-2d9f-41c9-bcdc-74c28a155d16">38</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="ib80d5a29b52141d2acf74afd3a3894ce_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzE2LTUtMS0xLTE0MTU0_1e483207-b76f-4561-aae4-4d66ad77ff85">&#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><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 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%">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="#i1a430d3f39e74769965c1cc9f7e66842_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="ib5a61dce65d44432a8738a1b8f8d9b87" continuedAt="i30b9c52f2e3f4ef09aef1840c185cf6a"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzM1OTU_379069f1-8c6f-443b-a111-ef21e8d5d581" 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-bottom:5pt;margin-top:11pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzAtMS0xLTEtMA_4c19c5ce-e5cc-4217-abc1-5783082c3127">2,554</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 GVi 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="i4fb853a9f1a949509cbf8fc704fad5a9_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:LiabilitiesFairValueAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzMtMS0xLTEtMA_460d3e9b-838f-4565-a6a0-7ecc17b784df">1,646</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%">Fair value adjustment to 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="i99a19abb27ee4bb487e56611ad25d4e8_D20190101-20191231" decimals="-3" name="us-gaap:LiabilitiesFairValueAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzUtMS0xLTEtMA_1faa7776-1d6c-4232-97c4-59f87304d68a">245</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="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 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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzctMS0xLTEtMA_caef9848-0c3f-4628-a2e9-a830f6edbc20">1,153</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="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%">Fair value adjustment to 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="i127ae93373df4175b0d7362a4868665b_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:LiabilitiesFairValueAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzEwLTEtMS0xLTA_28a9ff74-0988-47cc-b12c-3ecdec4fff6d">114</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%">Payment of 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="i127ae93373df4175b0d7362a4868665b_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzExLTEtMS0xLTA_20b9d6b2-1dd4-42b6-852a-6a75442c45f8">1,039</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, 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%"><ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzEyLTEtMS0xLTA_e7d86dc9-509e-49af-a0c6-7e10fe633913">&#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:6pt;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="i47edaa0105b14a2abb0d25130a7122bc_I20191231" decimals="INF" format="ixt-sec:numwordsen" name="us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2MzY1Mjg_3b907d9d-b872-4753-b18b-9cc0251e5276">zero</ix:nonFraction> as of December 31, 2019, resulting from a lower level of revenue in the Americas' automotive industry, and the balance remains at <ix:nonFraction unitRef="usd" contextRef="i57ab937996f3463d94ec12d192aa0658_I20201231" decimals="INF" format="ixt-sec:numwordsen" name="us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2MzY1Mzc_0bbaf58c-ca56-4d07-9f03-9888dcd8bafd">zero</ix:nonFraction> as of December 31, 2020. The undiscounted potential outcomes related to future contingent consideration range from $<ix:nonFraction unitRef="usd" contextRef="ib6e966fb06894826a5f17d7c75db01e1_I20201231" decimals="INF" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2MzY1MTM_71c98b5c-e78b-406f-8752-5ec23dfb20a3">0</ix:nonFraction> to $<ix:nonFraction unitRef="usd" contextRef="i763bb4fb2d5f4ff196fee6ca401674d9_I20201231" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2MzY1MTc_f4f20db6-b2c8-4b2e-8b77-825d7e4babfd">2,500,000</ix:nonFraction> based on certain revenue levels over the next two 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%;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:115%"><ix:continuation id="i30b9c52f2e3f4ef09aef1840c185cf6a">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. Our business has been adversely and materially impacted by deteriorating global economic conditions resulting from the COVID-19 pandemic. These conditions 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseImpairmentLoss" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2NDMzNzA_f53fb88b-8fa9-4840-ac54-12e4f0bf4273">3,427,000</ix:nonFraction> (refer to Notes 7 and 22) that are included in "Restructuring charges" on the Consolidated Statements of Operations, and intangible asset impairment charges of $<ix:nonFraction unitRef="usd" contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2NDMzODQ_76983935-e089-45d4-9d7d-b70aad8da292">19,571,000</ix:nonFraction> (refer to Note 9). These fair value measurements are based on the present values of future cash flows using significant inputs that are not observable in the market, and are therefore classified as Level 3. The Company did not record impairment charges related to non-financial assets in 2019 and 2018.</ix:continuation> </span></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzI1Mjk_859f4b43-33bf-444b-83e1-462659e95235" continuedAt="i7424d3f9b67441f38111c0493e09664c" escape="true">Cash, Cash Equivalents, and Investments</ix:nonNumeric></span></div><ix:continuation id="i7424d3f9b67441f38111c0493e09664c" continuedAt="i4454490a22524f0aadf5981ede257cd9"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzI1MTA_1dddcbf7-335f-483d-a945-626b4c1719b1" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Cash" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzItMS0xLTEtMA_58d473e4-0c37-4d42-b9b1-909c3bfecc82">266,609</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Cash" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzItMy0xLTEtMA_49584037-01bc-41e4-87d3-d968c2a9b974">155,498</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:MoneyMarketFundsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzQtMS0xLTEtMA_979f691f-0111-42d2-be32-e49c2aae54f5">2,464</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:MoneyMarketFundsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzQtMy0xLTEtMA_b7ad4676-9c00-429f-b26f-fcf6af2a7b13">15,933</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzUtMS0xLTEtMA_8264f934-b733-4e68-8c2a-01a68ce971a7">269,073</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CashAndCashEquivalentsAtCarryingValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzUtMy0xLTEtMA_b770319a-2e6a-4dba-9e87-3b3ce4b8f655">171,431</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%">Treasury bills</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="i43cb724ca92b4d529471388e4c6aa1c1_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzYtMS0xLTEtMA_71506af0-b44b-4de4-b871-903a470d7464">35,403</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="id84753405a3f4ea0ada1581e69e5e83b_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzYtMy0xLTEtMA_03679d89-be79-492f-8218-92c7026d0df2">92,914</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;padding:2px 0 2px 1pt;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="ic699385aee064f088395dd1a1145c14f_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzctMS0xLTEtNjUyMQ_8914d0a5-2615-4dc8-9247-cf416095b6a6">32,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:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6f32895aae07493ba2be1294738fc07c_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzctMy0xLTEtNjUyMQ_8e19d7e7-97d5-408e-83c8-40b1f9e0a80b">65,624</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%">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="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzctMS0xLTEtMA_fa5132f1-eb6f-43dc-82f2-4ad896d92b1d">25,160</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="i500374dc2fa943ee973d4e8eb7768bf5_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzctMy0xLTEtMA_aa3e992f-f479-4497-96b1-002a3c387955">66,680</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="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzktMS0xLTEtMA_bd219f47-8b27-4c7f-8074-3666d480c37b">8,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="i7c1b53d9a7ee4f3e840dee641c3d7e70_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzktMy0xLTEtMA_f3b208a2-0a8e-4252-87d7-7f0051624409">6,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;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="i86d4d2ca8e2343a6b857331595592807_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzEwLTEtMS0xLTA_973090b1-c3bc-4e10-8e2f-30073c6b7ce9">1,303</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="i1ccb72574960407e9799ead9ecf20985_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzEwLTMtMS0xLTA_e27f270d-a2cc-4141-b611-55700d0df863">4,630</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%">Certificate of deposit</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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="if5707525027143bbab21055ba6ecb30a_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzExLTEtMS0xLTA_27af45c1-4a06-418b-9d09-f6506675d788">&#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="ifc5414a3304845e5bda45a454f655774_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzExLTMtMS0xLTA_03d029bd-5728-418d-b09e-907fc5a0cd96">4,328</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE1LTEtMS0xLTA_681435c0-a31e-495e-b1d2-979707da2afe">103,240</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE1LTMtMS0xLTA_305270a1-a6d6-442b-87f6-ba5a1f1e321f">240,470</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="ic699385aee064f088395dd1a1145c14f_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE2LTEtMS0xLTY1MzA_4473041e-a528-4fe2-8258-f60b0aeff874">203,428</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="i6f32895aae07493ba2be1294738fc07c_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE2LTMtMS0xLTY1MzA_7753ec52-6c25-4a7f-8fc7-323b394f6a4a">146,474</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%">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="i43cb724ca92b4d529471388e4c6aa1c1_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE2LTEtMS0xLTA_c9919565-aebc-4934-832b-39a73fe38418">96,458</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="id84753405a3f4ea0ada1581e69e5e83b_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE2LTMtMS0xLTA_68d78fee-3b8b-4a62-b01a-250f323c956c">216,334</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="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE4LTEtMS0xLTA_1351a3c7-4af0-4ac0-ac29-0672486d877c">67,058</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="i500374dc2fa943ee973d4e8eb7768bf5_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE4LTMtMS0xLTA_693607bf-c6b4-43c9-ae13-1c7a3f85cd87">46,403</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="i324afc1a28ff430a9a4489d8845df9d3_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIwLTEtMS0xLTA_bf455b7a-f05e-4ef2-ac2d-558b79318420">19,006</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="ie8277ff2013144aa872677ea05263934_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIwLTMtMS0xLTA_180c4c5e-0e2c-43a3-91ef-9b7b98d5f883">5,914</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="i86d4d2ca8e2343a6b857331595592807_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIxLTEtMS0xLTA_6baf8387-7547-443d-a4ba-b33f3c8906f4">5,735</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="i1ccb72574960407e9799ead9ecf20985_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIxLTMtMS0xLTA_9ac2f023-a3c9-4914-b161-3934f76b14a6">2,322</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:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIyLTEtMS0xLTY1Mzc_c907795f-afcf-4359-be48-fc9503fd57ab">3,440</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="i7c1b53d9a7ee4f3e840dee641c3d7e70_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIyLTMtMS0xLTY1Mzc_3e8a208a-9f4a-45bb-9178-7517eb7aeadd">16,005</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LongTermInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIyLTEtMS0xLTA_5b09b5ac-b6e8-4423-bbca-c2e130239153">395,125</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LongTermInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIyLTMtMS0xLTA_bab4d273-5342-4d5b-a5cf-54969d3ec518">433,452</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:CashCashEquivalentsShortTermAndLongTermInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIzLTEtMS0xLTA_9b44a550-3e6c-4632-805b-090e34c48b20">767,438</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:CashCashEquivalentsShortTermAndLongTermInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIzLTMtMS0xLTA_f15c3d05-8784-427b-aee0-98d209461a77">845,353</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></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="#i1a430d3f39e74769965c1cc9f7e66842_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="i4454490a22524f0aadf5981ede257cd9" continuedAt="i4847aee552b1491f8c134c527f2d0c1b"><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&#8217;s cash balance included foreign bank balances totaling $<ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DueFromForeignBanks" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzIwNg_eaa2ce15-8ab5-483c-9b66-7331bf3a056a">225,853,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DueFromForeignBanks" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzIxMw_d42cda85-9fc3-4f7d-a465-54a87e92bb25">123,499,000</ix:nonFraction> as of December&#160;31, 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%">Treasury bills consist of debt securities issued by the U.S. government; 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; sovereign bonds consist of direct debt issued by foreign governments; municipal bonds consist of debt securities issued by state and local government entities; certificates of deposit are time deposits held by financial institutions with a fixed interest rate; and agency bonds consist of domestic or foreign obligations of government agencies and government-sponsored enterprises that have government backing. All securities are denominated in U.S. Dollars, with the exception of the certificate of deposit held as of December 31, 2019 that was denominated in Korean Won.</span></div><div style="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 Sheet and amounted to $<ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InterestReceivable" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzEwOTk1MTE2MzI5MDM_6245ea9f-ac17-41a6-be93-7702425b0836">1,560,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InterestReceivable" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzEwOTk1MTE2MzI4OTE_1db5ca75-46c5-440d-8808-83af1b9fc04c">2,874,000</ix:nonFraction> as of December 31, 2020 and 2019, respectively.</span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzI1MzM_23047561-1b43-4154-ac23-bea678fec506" 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, 2020 (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">Treasury bills</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="i5ea119f35960478b80c8c23a7bfa29f4_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzItMS0xLTEtMA_335b8ae1-6213-4124-9b0a-e6aaad8ee3a3">34,978</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="i5ea119f35960478b80c8c23a7bfa29f4_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzItMy0xLTEtMA_d5ed41e7-783d-4471-894f-065ca96ce317">425</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="i5ea119f35960478b80c8c23a7bfa29f4_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzItNS0xLTEtMA_b32d8a8d-3785-421f-befa-5bfa7e9c7353">&#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="i5ea119f35960478b80c8c23a7bfa29f4_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzItNy0xLTEtMA_dea393fb-0306-4754-9255-0604df411e99">35,403</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%">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="ic6dbb15ae5b740ab9bdd27fbbc2efda0_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtMS0xLTEtNjU1Ng_f6861590-503c-480b-887d-8c9b5997157c">32,394</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="ic6dbb15ae5b740ab9bdd27fbbc2efda0_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtMy0xLTEtNjU1Ng_70aecbac-1b9b-409b-ac3f-2ef5ccfa1c2d">320</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="ic6dbb15ae5b740ab9bdd27fbbc2efda0_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtNS0xLTEtNjU1Ng_9ef94e7a-32aa-48df-8736-56d365dfc2ab">&#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="ic6dbb15ae5b740ab9bdd27fbbc2efda0_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtNy0xLTEtNjU1Ng_6903fe3a-fe2f-40d8-a8c8-371c935db8f5">32,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="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%">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="ic4d8f4817c754d62ae932c2959592db4_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtMS0xLTEtMA_9866b294-06a1-4992-8f37-fc7e7f00748d">24,999</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="ic4d8f4817c754d62ae932c2959592db4_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtMy0xLTEtMA_fa3794b5-b1c0-44f8-8e52-0c9b559e95c4">161</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="ic4d8f4817c754d62ae932c2959592db4_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtNS0xLTEtMA_ba633117-e0bf-45fe-9b9c-848be71abbd9">&#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="ic4d8f4817c754d62ae932c2959592db4_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtNy0xLTEtMA_42e3d2fb-842f-41d8-843e-70e4061aeb04">25,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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="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%">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:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="id5fb5c3c941c482980cbee5c7db0d507_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzYtMS0xLTEtMA_e43e2f22-86ce-4ed2-9087-0cd4e5f01008">8,590</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="id5fb5c3c941c482980cbee5c7db0d507_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzYtMy0xLTEtMA_45d4ff59-a9c6-47fd-b6ab-7523a743841f">70</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="id5fb5c3c941c482980cbee5c7db0d507_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzYtNS0xLTEtMA_cda22668-04cf-4a52-b279-cc4cdd865186">&#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="id5fb5c3c941c482980cbee5c7db0d507_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzYtNy0xLTEtMA_b7b6012d-37bf-4f51-838f-c671acdad4b5">8,660</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%">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:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1408636db4ac405b9c208760e205a9a3_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzctMS0xLTEtMA_9f4c273c-3c17-4b09-9001-edd23b55266b">1,297</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="i1408636db4ac405b9c208760e205a9a3_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzctMy0xLTEtMA_e03372dd-060c-4f53-ac4c-054b8976b78a">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:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1408636db4ac405b9c208760e205a9a3_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzctNS0xLTEtMA_e97d5aa4-19ba-4658-bc23-69801166e192">&#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="i1408636db4ac405b9c208760e205a9a3_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzctNy0xLTEtMA_6c1bdcc7-03aa-4133-8578-9642b0a05721">1,303</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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="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%">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="i202533b994e74b5c833a5628cd152023_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzExLTEtMS0xLTA_04c32645-3b0c-4d87-9b2a-736d4938d708">200,549</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="i202533b994e74b5c833a5628cd152023_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzExLTMtMS0xLTA_51f51141-ecdd-4b6d-8884-dc0f2b17a204">2,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="i202533b994e74b5c833a5628cd152023_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzExLTUtMS0xLTA_8e0cef4a-17aa-477f-b17b-f2661357d6aa">&#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="i202533b994e74b5c833a5628cd152023_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzExLTctMS0xLTA_30f89cfc-8854-4cab-a4be-2d52cfb06615">203,428</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%">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="i55d96b4194b247fcbe5346f132d94964_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTEtMS0xLTY1NjU_1ce765a9-9491-46ee-9081-f3356b5833c1">95,522</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="i55d96b4194b247fcbe5346f132d94964_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTMtMS0xLTY1NjU_b2953db7-e12a-4b4e-b5df-1aa07d3ed4d0">936</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="i55d96b4194b247fcbe5346f132d94964_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTUtMS0xLTY1NjU_a3f46366-e525-4338-930d-ac111080fc9a">&#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="i55d96b4194b247fcbe5346f132d94964_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTctMS0xLTY1NjU_c45f5d26-8413-4b19-b5d1-990982d6e46b">96,458</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%">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="i2efefbc6cef645aa8b0601e7585c8b93_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTEtMS0xLTA_a0454fd8-a3ae-494b-8762-53bfdff653e9">66,329</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="i2efefbc6cef645aa8b0601e7585c8b93_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTMtMS0xLTA_837cb54c-f425-4f0f-ac83-9fc472bdb790">729</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="i2efefbc6cef645aa8b0601e7585c8b93_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTUtMS0xLTA_dff348c3-7317-4f95-93d8-0331aadaf978">&#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="i2efefbc6cef645aa8b0601e7585c8b93_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTctMS0xLTA_18bcea4f-baaa-4b37-a006-2c38b3c5ad30">67,058</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="icff2afc806564b9bb491036d05dd55e5_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE0LTEtMS0xLTA_23055e8b-69e3-4df1-bc00-36885229709c">18,913</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="icff2afc806564b9bb491036d05dd55e5_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE0LTMtMS0xLTA_061dcaf4-731a-4df7-87c1-ef6a5552fdb0">93</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="icff2afc806564b9bb491036d05dd55e5_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE0LTUtMS0xLTA_a9c4b25d-4303-441b-8743-ac91414aff60">&#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="icff2afc806564b9bb491036d05dd55e5_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE0LTctMS0xLTA_200255fa-3ca9-4fd7-836a-0ac7012964cc">19,006</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%">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:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i71022fedb4fb4f8ba4f38fce1d72eca6_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE1LTEtMS0xLTA_5242ae18-5ea6-44f4-83d2-31e8e2906a24">5,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="i71022fedb4fb4f8ba4f38fce1d72eca6_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE1LTMtMS0xLTA_171b486f-065b-407b-9e8b-6ba552019f3b">10</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"><ix:nonFraction unitRef="usd" contextRef="i71022fedb4fb4f8ba4f38fce1d72eca6_I20201231" sign="-" xsi:nil="true" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE1LTUtMS0xLTA_273e3db6-4211-41f3-b793-2e3426b692f9"></ix:nonFraction></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i71022fedb4fb4f8ba4f38fce1d72eca6_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE1LTctMS0xLTA_a4cf5806-1fd9-482f-93bd-bd0f2a29540a">5,735</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%">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:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0eaceaa1dcd04d4e83c5dc04e5c35116_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTEtMS0xLTY1NzQ_0ecc9510-b2a5-4868-978e-fadea2d3755d">3,379</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="i0eaceaa1dcd04d4e83c5dc04e5c35116_I20201231" decimals="-3" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTMtMS0xLTY1NzQ_48d4ced7-3cdf-47c6-96d3-d6cb72870646">61</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="i0eaceaa1dcd04d4e83c5dc04e5c35116_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTUtMS0xLTY1NzQ_c0ba8211-116d-40a8-91c2-07d236722101">&#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="i0eaceaa1dcd04d4e83c5dc04e5c35116_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTctMS0xLTY1NzQ_d4dbf6ba-d377-4530-8fa6-49e36e237096">3,440</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTEtMS0xLTA_b44ad6ad-ba6c-4fab-aa24-35e1f121ce63">492,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-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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTMtMS0xLTA_6b702abd-b6d5-47f9-97af-be18a36b60c4">5,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:#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%">&#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-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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTctMS0xLTA_a052cc33-2d1b-4718-9e03-07985f585180">498,365</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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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 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><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></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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="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></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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="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></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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="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="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:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" xsi:nil="true" name="us-gaap:ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzI1MjU_6adc54ec-49d8-406a-9eba-da9129fa325b" escape="true"></ix:nonNumeric>On January 1, 2020, the Company adopted Accounting Standards Update (ASU) 2016-13, &#8220;Measurement of Credit Losses on Financial Instruments,&#8221; using the modified-retrospective approach, which requires the Company to apply the standard on a prospective basis with a cumulative-effect adjustment to retained earnings as of the beginning of the period in which the guidance is effective. The Company did not record an adjustment to retained earnings, as there were no debt securities with credit losses as of the adoption date.</span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzEwOTk1MTE2MzI0OTk_2033b724-7e0f-4763-a74c-c8f4940871aa" escape="true"><ix:nonNumeric contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzEwOTk1MTE2MzI0OTk_c31a2694-da7e-4565-abb2-b6214eac5f0b" 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-bottom:6pt;margin-top:9pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzAtMS0xLTEtMTc1Mg_16174c7c-573a-4a8c-b8ef-1c4e4a6784ae">&#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="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:#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 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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzAtMS0xLTEtMTcwOQ_16315468-393b-4bb4-8fb4-355319e15664">&#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><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%">Increases 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzEtMS0xLTEtMTcxMQ_530eb9bb-99a6-42f1-b165-70672ffc8ea5">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="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%">Decreases 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzItMS0xLTEtMTcxMw_0047aae2-62f9-43b1-a125-0f250255906a">160</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="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%">Write-offs </span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzMtMS0xLTEtMTcxNQ_542eba5c-7ae5-4be6-8c6d-af564fbe099c">&#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="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 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzUtMS0xLTEtMTcxNw_fb4981bd-6a05-4d23-8e81-ac9bf44aee00">&#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-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:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recorded gross realized gains on the sale of debt securities totaling $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesGrossRealizedGains" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzE5Mzc_82adee70-876e-4f80-b1b6-c720d9a1980d">4,283,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesGrossRealizedGains" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzE5NDc_688c13ef-821a-49d2-91f0-4f8981615aa7">1,581,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesGrossRealizedGains" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzE5NjE_d9f706eb-c181-4675-89e0-f2a27da77464">669,000</ix:nonFraction> in 2018, and gross realized losses on the sale of debt securities totaling $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesGrossRealizedLosses" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzIwMzk_b0ceece1-5878-4390-8332-0124dc0c09cc">164,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesGrossRealizedLosses" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzIwNDk_455e48ff-6a13-4f25-974f-64246f35a395">129,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesGrossRealizedLosses" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzIwNjM_f4e22283-659e-4722-80ae-8baa573f44f8">168,000</ix:nonFraction> in 2018.</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%">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="#i1a430d3f39e74769965c1cc9f7e66842_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="i4847aee552b1491f8c134c527f2d0c1b"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzI1NDk_98ebf62d-ab51-4e8d-a9a0-b4a5ce0dbdb4" 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, 2020 (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="ic699385aee064f088395dd1a1145c14f_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItMS0xLTEtMA_66c9194a-babd-403e-81f1-a5b8bb180e0d">32,714</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="ic699385aee064f088395dd1a1145c14f_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItMy0xLTEtMA_0ef72a3a-bd27-4f7c-8e27-69cb17add849">69,534</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="ic699385aee064f088395dd1a1145c14f_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItNS0xLTEtMA_91f61541-0847-449b-a8a4-f8a912cab26f">119,328</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="ic699385aee064f088395dd1a1145c14f_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItNy0xLTEtMA_b2413408-6209-4059-b75f-d7506562ccde">13,488</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="ic699385aee064f088395dd1a1145c14f_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItOS0xLTEtMA_544a7409-87cc-4e64-a011-c60e679ad755">1,078</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="ic699385aee064f088395dd1a1145c14f_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItMTMtMS0xLTA_eab14ea1-3cdd-4338-961c-c9bb47d4ad79">236,142</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%">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="id71e8694ba5f492184d2c743f99ad454_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMS0xLTEtNjYwNw_0c741cfe-934e-4b92-a115-f3902d2b0ab0">35,403</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="id71e8694ba5f492184d2c743f99ad454_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMy0xLTEtNjYwNw_af292fc7-f8e3-49fa-afa8-0f70cc02fa4d">68,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="id71e8694ba5f492184d2c743f99ad454_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtNS0xLTEtNjYwNw_d6b0a6b6-43fb-42b2-abc5-39942f726406">28,241</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="id71e8694ba5f492184d2c743f99ad454_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtNy0xLTEtNjYwNw_46afb5ce-818d-4c0c-bd21-35f95ed39c0a">&#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="id71e8694ba5f492184d2c743f99ad454_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtOS0xLTEtNjYwNw_ccf75c70-4209-4e03-9514-c53b51897e08">&#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="id71e8694ba5f492184d2c743f99ad454_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMTMtMS0xLTY2MDc_2c6206c9-556a-4a15-a1e4-f4cec1e56d08">131,861</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:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMS0xLTEtMA_be6844c6-65a0-4a9f-85c2-1005a56b1107">25,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="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMy0xLTEtMA_5b8d0f46-cde4-452b-858a-7645e63706c4">46,842</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="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtNS0xLTEtMA_00e85c5c-d8ad-49ad-905b-661ac88c9f0d">18,755</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="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtNy0xLTEtMA_854db6ca-feb5-4814-a27e-b1b748ddbaa6">1,461</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="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtOS0xLTEtMA_1d1fb6f6-d3ae-4c29-a5fb-caff60d4be45">&#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="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMTMtMS0xLTA_10ccb37b-8860-4863-bcd1-f15ebf4ab79e">92,218</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="i324afc1a28ff430a9a4489d8845df9d3_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMS0xLTEtNjYwMA_2037cf1f-41ab-47dd-83a6-cee1b387eb9f">&#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="i324afc1a28ff430a9a4489d8845df9d3_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMy0xLTEtNjYwMA_249918c3-91f0-4a53-93d5-bf7aaef79aaf">2,805</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="i324afc1a28ff430a9a4489d8845df9d3_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtNS0xLTEtNjYwMA_84bd0aa1-6657-40ec-aa91-ddc627968751">16,201</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="i324afc1a28ff430a9a4489d8845df9d3_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtNy0xLTEtNjYwMA_862465e3-cfb5-4135-b4e8-e54bf48d9266">&#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="i324afc1a28ff430a9a4489d8845df9d3_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtOS0xLTEtNjYwMA_b28c286d-c634-421e-aea0-19392705a767">&#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="i324afc1a28ff430a9a4489d8845df9d3_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMTMtMS0xLTY2MDA_9c80d8b2-4358-4f6b-b803-ab57d6d6a399">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:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMS0xLTEtMA_5bb51bdd-fe78-4775-a9d5-1212ed2981f4">8,660</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="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMy0xLTEtMA_e0dea837-e5dc-439f-8adb-4b42070ba047">&#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="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtNS0xLTEtMA_70be2a3e-f749-4915-a601-aa6241e74ef6">3,440</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="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtNy0xLTEtMA_00ae48d9-94a4-4a50-bbf2-4a81aed674c3">&#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="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtOS0xLTEtMA_81836ee3-f427-4547-b5e8-b76567aca8d7">&#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="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMTMtMS0xLTA_b7930b19-4264-49e0-8052-d61984a43ac6">12,100</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:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i86d4d2ca8e2343a6b857331595592807_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtMS0xLTEtMA_61dc9a7c-1bb4-4c7e-be65-b65035885d10">1,303</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="i86d4d2ca8e2343a6b857331595592807_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtMy0xLTEtMA_dfbdc59e-faad-4b48-9304-4e07bd6fd551">5,096</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="i86d4d2ca8e2343a6b857331595592807_I20201231" decimals="-3" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtNS0xLTEtMA_4a2bcb04-df42-4465-89bb-1b4e3cad9fd7">639</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="i86d4d2ca8e2343a6b857331595592807_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtNy0xLTEtMA_c1993354-4c81-48f9-8079-452f87ae46f6">&#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="i86d4d2ca8e2343a6b857331595592807_I20201231" decimals="-3" format="ixt:zerodash" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtOS0xLTEtMA_bfa1b3c8-9006-4072-88a5-332ad0b6a114">&#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="i86d4d2ca8e2343a6b857331595592807_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtMTMtMS0xLTA_4f71b9d8-9c6f-418d-93be-86544c69df55">7,038</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtMS0xLTEtMA_74ae774d-3434-4934-9806-2961b4500f82">103,240</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtMy0xLTEtMA_515df05e-08fc-4dc5-8ea7-53397ab87590">192,494</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtNS0xLTEtMA_d8cdc450-143f-4157-bead-0c81d532bbd2">186,604</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtNy0xLTEtMA_cd36c2e4-de84-4ae7-b7c4-26a7a3a884f0">14,949</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtOS0xLTEtMA_3ae1c250-2f74-41b7-93c7-5bbfba63ff7b">1,078</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AvailableForSaleSecuritiesDebtSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtMTMtMS0xLTA_e13fde18-503a-4a21-9cb8-be81b5e8bbf6">498,365</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="i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:InventoryDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90ZXh0cmVnaW9uOmZiODFiYzcyZDY2ZDRiYmM4ZGYwMjllMjMyZTkyNzUzXzg3_4010de2c-acf0-4c80-a709-ef99d6288bca" continuedAt="i192c89725e6340c0885b0fd501e4b407" escape="true">Inventories</ix:nonNumeric></span></div><ix:continuation id="i192c89725e6340c0885b0fd501e4b407" continuedAt="i862b5419389143ee8bc1918ea50ca734"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfInventoryCurrentTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90ZXh0cmVnaW9uOmZiODFiYzcyZDY2ZDRiYmM4ZGYwMjllMjMyZTkyNzUzXzg2_9efba3df-96db-4288-8bec-d2693c1dde7f" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InventoryRawMaterialsNetOfReserves" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzItMS0xLTEtMA_7dcec147-c7bd-4ffc-a53e-3d9f73c12d0a">26,800</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InventoryRawMaterialsNetOfReserves" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzItMy0xLTEtMA_fbd2128f-b222-46cf-994c-17418e01ba2a">27,285</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InventoryWorkInProcessNetOfReserves" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzMtMS0xLTEtMA_99a561ba-1658-4ddf-a2e8-d4ee4af6b83c">4,780</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InventoryWorkInProcessNetOfReserves" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzMtMy0xLTEtMA_f266c2b3-eded-4f2b-acbb-64265b2a9891">5,503</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InventoryFinishedGoodsNetOfReserves" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzQtMS0xLTEtMA_cd9d082d-b832-425d-bed9-b0ad7b7322e6">29,250</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InventoryFinishedGoodsNetOfReserves" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzQtMy0xLTEtMA_8811a91d-6dff-4a79-bc01-59232b8983a8">27,473</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InventoryNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzUtMS0xLTEtMA_54de472a-4f2f-4cf2-8cb3-995dba30e547">60,830</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:InventoryNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzUtMy0xLTEtMA_04889974-ebec-4525-a464-15ece8915ee7">60,261</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="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:115%"><ix:continuation id="i862b5419389143ee8bc1918ea50ca734">The Company recorded provisions for excess and obsolete inventories of $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:ExcessAndObsoleteInventoryCharges" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90ZXh0cmVnaW9uOmZiODFiYzcyZDY2ZDRiYmM4ZGYwMjllMjMyZTkyNzUzXzEwOTk1MTE2Mjg3NzA_a7b79f7b-733b-4b68-869a-2e57ade17195">9,908,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:ExcessAndObsoleteInventoryCharges" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90ZXh0cmVnaW9uOmZiODFiYzcyZDY2ZDRiYmM4ZGYwMjllMjMyZTkyNzUzXzEwOTk1MTE2Mjg4NTg_cfbc57e6-d477-461e-8a98-67c0bb7eff2d">5,296,000</ix:nonFraction> in 2020 and 2019, respectively, which reduced the carrying value of the inventories to their net realizable value. Estimates 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="i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzY1Nw_e94033f2-a522-4777-b575-5f53ce83773a" continuedAt="id2c05f4c686c4528a96895f5416c5b98" escape="true">Property, Plant, and Equipment</ix:nonNumeric></span></div><ix:continuation id="id2c05f4c686c4528a96895f5416c5b98"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:PropertyPlantAndEquipmentTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzY1NA_20968865-5ee8-4f2f-8557-8f6efef60325" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">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="ibcc3f33ed9014cb08b2e1293011a9151_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzItMS0xLTEtMA_9a8d9e76-f1f1-4868-9d1d-09f1dd58e489">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="i48b62d90851749ac9c03fc1cb1c1ebbc_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzItMy0xLTEtMA_f2081143-f5d5-4c2e-81d6-5d85bebd411a">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="i218148f2a7544001b13f07777e27f0fc_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzMtMS0xLTEtMA_7f36dd0a-aecc-4fb2-8e95-14b6a6137bec">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="i3b0c04aa43fb48cda5ae8bfd82141d82_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzMtMy0xLTEtMA_8b716cb1-f98c-4a28-a70b-a839062b8f06">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="i3b0ec7f8d69d49c18cf9da3008df7d44_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzQtMS0xLTEtMA_43e72832-52c2-4c57-b0f7-431dc9450257">45,978</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="ie12dbe3e996e42e9b339bcf6aed23d6f_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzQtMy0xLTEtMA_c364d9b8-8f4e-4969-83c0-65a67ca5f829">49,289</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="i8d4ad474693841178fd01634beadc2cb_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzUtMS0xLTEtMA_f5b88fbc-d599-42a5-8998-c6bf2b8d2774">12,682</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="i2c7f1534acdc41b6b83fef288833ab1f_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzUtMy0xLTEtMA_153247e1-2e82-44c3-a0cc-4db58078e415">10,790</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="i0e5e7ce331ec483fbd7ebf4d80540114_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzYtMS0xLTEtMA_a0c84c1f-7b2c-4e93-9de4-35a218a68e6a">58,162</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="i8732058db3184ba59c6e2cc6cccf3974_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzYtMy0xLTEtMA_5adb0114-5fc1-4f07-a801-7ab0393191c4">67,474</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="i799593d8b62b419ea601b7af8f7a1e5f_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzctMS0xLTEtMA_31ffc685-1de7-4ede-b100-226400bc693d">29,816</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="i87982faadf4f416eb7ec7c3a6c8216c5_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzctMy0xLTEtMA_3d34cd82-607d-45e2-af48-a06f3db2054e">31,278</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="i3e3040ff593242ae84a0a31f6baccf93_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzgtMS0xLTEtMA_8e074378-9c49-4ea2-8bb8-6274816e603b">6,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="i3dfc489296454de1a7b79e56d536e5c7_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzgtMy0xLTEtMA_ef39ca1d-ee74-4940-a95f-367d7e18c508">6,800</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzktMS0xLTEtMA_0ba008a8-ee97-4c36-99cd-0408cd6ca556">181,494</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzktMy0xLTEtMA_5ceadbc2-448d-432d-9f71-e92e01629a4c">194,115</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzEwLTEtMS0xLTA_8a2599c9-84ab-4991-b6ab-dcf2bae49179">102,321</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzEwLTMtMS0xLTA_8d3970c2-3c3b-41b9-8896-86b7333a7096">104,672</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzExLTEtMS0xLTA_db63bc57-1f90-4215-96a7-f41757e944f8">79,173</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzExLTMtMS0xLTA_a0ff0d08-ceca-4153-82db-63461009b9a8">89,443</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="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 disposed of property, plant, and equipment with a cost basis of $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentDisposals" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzE4Mg_fa0971b4-abc1-439f-89ff-0128969fcc1e">26,829,000</ix:nonFraction> and accumulated depreciation of $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzEwOTk1MTE2Mjk2MDA_687a129e-3487-4418-a48e-4906ae3bc603">24,977,000</ix:nonFraction> in 2020, resulting in a loss of $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:GainLossOnDispositionOfAssets1" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzEwOTk1MTE2Mjk2MTI_d65c6dc9-4b72-414c-aaae-d381463883eb">1,852,000</ix:nonFraction>. Disposals in 2020 included leasehold improvements and other assets associated with office closures. The Company disposed of property, plant, and equipment with a cost basis of $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertyPlantAndEquipmentDisposals" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzE2NDkyNjc0NDM5MDU_79ceb4fe-d9b1-4b97-b1c2-c54712aaba50">8,883,000</ix:nonFraction> and accumulated depreciation of $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzMyNA_9604769b-d6ef-4bfd-a760-acb00a4d0116">8,559,000</ix:nonFraction> in 2019, resulting in a loss of $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:GainLossOnDispositionOfAssets1" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzEwOTk1MTE2MjkzNDI_05142beb-5469-410a-9f6e-26e6d80c07c1">324,000</ix:nonFraction>.</span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Buildings included rental property with a cost basis of $<ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertySubjectToOrAvailableForOperatingLeaseGross" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzUzMg_fe4f9f39-56d1-4aa5-9433-e6ea2f53e639">800,000</ix:nonFraction> and accumulated depreciation of $<ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzYwNA_0090aa64-c783-49b6-832c-4f9883effe8d">255,000</ix:nonFraction> as of December&#160;31, 2019. This rental property lease was terminated during the second quarter of 2020.</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%">55</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_127"></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="#i1a430d3f39e74769965c1cc9f7e66842_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 7:&#160;<ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:LesseeOperatingLeasesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzEwOTY_108394e2-8ee5-42ce-87ee-526b45085f0e" continuedAt="i6c122af766a340d282eef638a782ea8b" escape="true"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:OperatingLeasesOfLessorDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzEwOTY_fd824421-fa66-4ccd-908e-d08d4c362b08" continuedAt="ibb2b3263419c4cac91d45bf13c07491a" escape="true">Leases</ix:nonNumeric></ix:nonNumeric></span></div><ix:continuation id="i6c122af766a340d282eef638a782ea8b" continuedAt="i536baf614836459a968d9ccbb013a248"><ix:continuation id="ibb2b3263419c4cac91d45bf13c07491a" continuedAt="iae31124607504d9e863472fae3970746"><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. 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 leases outstanding, and no options to extend that were included in the determination of the lease term for leases outstanding. As of December 31, 2019 there were no options to extend or terminate that were included in the determination of the lease term for leases outstanding. 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 leases outstanding as of December 31, 2020 or December 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%">The total operating lease expense and operating lease cash payments in 2020 were $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzA4NjU_321c39da-3c47-40fa-91d5-8a5725cbfd79">8,180,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeasePayments" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzA4NzE_a90edb8d-e547-403f-8362-0c92cc37959f">8,009,000</ix:nonFraction>, respectively. The total operating lease expense and operating lease cash payments in 2019 were $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzE2NDQ_2cfa288d-c18b-4bd8-a051-54d171bfbc86">6,893,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeasePayments" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzE2NTE_a8c8877d-2ff2-4455-ac51-76b7a2bdbba1">6,530,000</ix:nonFraction>, 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzA5MTM_5ac5cebe-3571-43c8-b301-66913970fa86">123,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzE4Mjg_c06bd7ab-d994-45df-9887-7c97ae57eee8">275,000</ix:nonFraction> in 2020 and 2019, respectively. Annual rental expense was $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LeaseAndRentalExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzE5MTI_71992f89-1567-44f0-91ee-641e28855b1d">8,186,000</ix:nonFraction> in 2018. </span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzI5MTM_09e74efe-5144-47dd-a32b-6fa2dbe7e59e" 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-bottom:5pt;margin-top:14pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">2021</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzEtMi0xLTEtMA_e32cf1a8-c653-4dab-8575-180fd73aad9a">9,101</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%">2022</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzItMi0xLTEtMA_6b49b0e1-175e-444e-b73d-0acc6a14c5cb">6,863</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%">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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzMtMi0xLTEtMA_b199f9be-3cfa-44f6-b4df-d153b2fc4eb0">5,072</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzQtMi0xLTEtMA_901edd51-1df8-42e2-a6cc-0f10aa461349">2,074</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzUtMi0xLTEtMA_e42a27eb-e419-4b5e-ad93-91ba4febb6ea">1,317</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzYtMi0xLTEtMA_35bdc6fb-72bd-4020-a611-b3a6235a463a">4,960</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzctMi0xLTEtMA_40986061-0b2d-4483-9ccb-d65c23a3cf22">29,387</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:9pt;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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseLiability" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzEwMzc_79ee1fd8-d0cc-429d-a4f0-964826f34aba">26,230,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseLiability" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzIwOTA_11dcf005-e9dc-4810-a029-dd3a032b6141">17,973,000</ix:nonFraction> as of December 31, 2020 and December 31, 2019, respectively. The Company did not have any leases that had not yet commenced but that created significant rights and obligations as of December 31, 2020 or December 31, 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 weighted-average discount rate was <ix:nonFraction unitRef="number" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="3" name="us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzEwOTA_31d1cf38-5f8f-42aa-adde-f1e9e2347f0e">4.0</ix:nonFraction>% and <ix:nonFraction unitRef="number" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="3" name="us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzIxNTc_93d8cd18-92d3-477f-b803-afeb06ca0068">4.6</ix:nonFraction>% for the leases outstanding as of December 31, 2020 and December 31, 2019, respectively. The weighted-average remaining lease term was <ix:nonNumeric contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" format="ixt-sec:duryear" name="us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzExNzg_0860c437-b7c5-4e5c-99f0-4c58614fcd8b">5.1</ix:nonNumeric> and <ix:nonNumeric contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" format="ixt-sec:duryear" name="us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzIyNTk_8a09654a-601c-4178-bce1-cbc669fdb7d8">3.7</ix:nonNumeric> years for the leases outstanding as of December 31, 2020 and December 31, 2019, respectively.</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 part of the Company's restructuring plan (refer to Note 22), management closed eleven leased offices in 2020, prior to the end of their lease terms. The carrying value of the lease assets associated with these offices was reduced to <ix:nonFraction unitRef="usd" contextRef="i1e5c63c6777548228466750a07807abe_I20200628" decimals="-3" format="ixt-sec:numwordsen" name="cgnx:OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzM5OTA_8eecccaa-9323-4c80-b952-6706497d0461">zero</ix:nonFraction>, resulting in operating lease asset impairment charges of $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseImpairmentLoss" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzI4OTM_1afa13be-0c0a-4b4a-b6f2-5709f65f5d64">3,427,000</ix:nonFraction> in 2020 that are included in "Restructuring charges" on the Consolidated Statements of Operations. Management is currently negotiating early contract terminations for the remaining lease liability obligations associated with these abandoned offices, which totaled $<ix:nonFraction unitRef="usd" contextRef="ia0c071df8b2c4479a45a92ebc539394b_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseLiability" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2NDEyMTc_372b3d45-96bf-4e28-8a23-e2e5730aa6e9">2,877,000</ix:nonFraction> as of December 31, 2020 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 2019 or 2018.</span></div></ix:continuation></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="i536baf614836459a968d9ccbb013a248"><ix:continuation id="iae31124607504d9e863472fae3970746">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 and 2018. 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingLeaseLeaseIncome" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzI2NTI_f83c1f28-4f95-453c-9a9b-b04ac2761b49">77,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RentalIncomeNonoperating" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzI2NjI_13e2855b-82b8-452e-a887-012da1aa78f9">311,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RentalIncomeNonoperating" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzI2NzY_e79ebefb-0c43-48c8-972c-e13208138562">1,116,000</ix:nonFraction> in 2018.</ix:continuation></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%">56</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_130"></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="#i1a430d3f39e74769965c1cc9f7e66842_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 8:&#160;<ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:GoodwillDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90ZXh0cmVnaW9uOjZmZDczMTdjNTczZDRjZjBiNGQ3ZjcwMWE2Njc3MWU5Xzc3Ng_07c60133-17b7-48f9-8fd9-4982304363a3" continuedAt="i1bd35da4d77e4ffda2065d4c39acc6b5" escape="true">Goodwill</ix:nonNumeric></span></div><ix:continuation id="i1bd35da4d77e4ffda2065d4c39acc6b5"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfGoodwillTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90ZXh0cmVnaW9uOjZmZDczMTdjNTczZDRjZjBiNGQ3ZjcwMWE2Njc3MWU5Xzc3OQ_569abf9b-210f-4e70-a91c-5e1d6b20b1f2" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Goodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzEtMi0xLTEtMA_0c2ccf18-7e52-4ffa-99f5-358880a7059c">113,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></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%">Acquisition of Sualab Co., Ltd.</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="i011aed5572fd480ab06c7ea32ab87210_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GoodwillAcquiredDuringPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzItMi0xLTEtMA_d551be49-a4f6-42a9-8f46-76b9ff3ab2cc">130,142</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 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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" name="us-gaap:GoodwillForeignCurrencyTranslationGainLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzMtMi0xLTEtMA_3eca63dc-d922-4ac3-8234-bf9a20998a16">95</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, 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:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Goodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzUtMi0xLTEtMA_c7bb1549-2e57-45e7-a269-b7049e76b6c4">243,445</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%">Sualab Co., Ltd. purchase price adjustment</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="i09e30511c6b84ebeb0e0ab61e3e3dafa_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:GoodwillOtherIncreaseDecrease" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzYtMi0xLTEtMA_6136e70a-81c8-4773-9153-157f8cf17620">1,004</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%">&#160;&#160;Foreign exchange rate changes</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GoodwillForeignCurrencyTranslationGainLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzctMi0xLTEtMA_e808c368-2545-4224-985b-decca6020168">1,637</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%">Balance as of December 31, 2020</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Goodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzgtMi0xLTEtMA_cc2e34e7-4b8a-46e9-abd6-f752db2a1269">244,078</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:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Refer to Note 21 to the Consolidated Financial Statements for further information regarding acquisitions. </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 adverse impact of the COVID-19 pandemic on our business triggered a review of long-lived assets, including goodwill, for potential impairment during the second quarter of 2020. Based on this assessment, management concluded that events and circumstances did not indicate the fair value of the reporting unit was less than its carrying value. For its 2020 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. Factors that management considered in these qualitative assessments include macroeconomic conditions, industry and market considerations, overall financial performance (both current and projected), changes in management or strategy, changes in the composition or carrying amount of net assets, and market capitalization. The Company did not record impairment charges related to goodwill in 2019 or 2018.</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 the fourth quarter of 2020, the Company recorded a credit to goodwill in the amount of $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsForProceedsFromPreviousAcquisition" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90ZXh0cmVnaW9uOjZmZDczMTdjNTczZDRjZjBiNGQ3ZjcwMWE2Njc3MWU5XzEwOTk1MTE2MzA2NjI_93007071-6833-476a-a3e4-9af21a918a0f">1,004,000</ix:nonFraction>, representing a purchase price adjustment related to the Company's 2019 acquisition of Sualab Co., Ltd.</span></div></ix:continuation><div id="i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:IntangibleAssetsDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzUzNQ_040c3b82-8b6f-437d-9fa1-6223881ead64" continuedAt="i7543aea7ab6e4ee88d674ec3e9db3e62" escape="true">Intangible Assets</ix:nonNumeric></span></div><ix:continuation id="i7543aea7ab6e4ee88d674ec3e9db3e62" continuedAt="i7d1c53f3ad874c44806795434b892a73"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzUzMg_4feec7a5-8f9a-432d-86fa-874e6fdf057e" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="i39a995f9a76945dcb35a1f3f5dab89b0_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEtMS0xLTEtMA_3935a21f-bafe-4cb4-8ad0-814d11538142">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="i39a995f9a76945dcb35a1f3f5dab89b0_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEtMy0xLTEtMA_cf8da4e5-c245-4197-861d-581b57380d3c">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="i39a995f9a76945dcb35a1f3f5dab89b0_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEtNS0xLTEtMA_e8645f43-6f5d-4eeb-a19c-0a7874db371c">&#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="iaa79f869e70d44c48285a931a374a8e3_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzItMS0xLTEtMA_944db9ca-2f18-4f8f-b430-3a4f090c0e85">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="iaa79f869e70d44c48285a931a374a8e3_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzItMy0xLTEtMA_baf2931d-d432-431c-80dc-70aa92dd4d10">12,397</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="iaa79f869e70d44c48285a931a374a8e3_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzItNS0xLTEtMA_c2725a89-63f6-450c-bfb4-f5d6bb471c38">11,820</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="ic0f9eb803c134de98161f8b3dbc1ce95_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzMtMS0xLTEtMA_82505c2c-4068-4e74-a0a9-0e641f0f8822">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="ic0f9eb803c134de98161f8b3dbc1ce95_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzMtMy0xLTEtMA_0798b60c-97ee-4143-bd4e-b48191c1790e">7,160</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="ic0f9eb803c134de98161f8b3dbc1ce95_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzMtNS0xLTEtMA_75b80147-258c-4d21-8abd-a7bea3f116e2">3,418</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="i6ee9ee02e4bf4822b6c259421cc22dd9_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzUtMS0xLTEtMA_0cdcc6cf-30c2-47cf-b2b2-0a9f3792fa3e">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="i6ee9ee02e4bf4822b6c259421cc22dd9_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzUtMy0xLTEtMA_93d30ce6-f77a-4e5c-a0b8-802f6376994d">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:700;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6ee9ee02e4bf4822b6c259421cc22dd9_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzUtNS0xLTEtMA_bc5856f0-b010-4114-b531-8513ea0555d8">274</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="i308f31c5d8ba450ba20913a309267fb4_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzYtMS0xLTEtMA_cb56e137-8351-403f-96fa-2cd5ce98b040">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="i308f31c5d8ba450ba20913a309267fb4_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzYtMy0xLTEtMA_03537773-d707-4389-b6ef-4eafa7a7493e">67</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="i308f31c5d8ba450ba20913a309267fb4_I20201231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzYtNS0xLTEtMA_9bee46b1-805f-4a84-ae0d-c00363fdd219">43</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, 2020</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzctMS0xLTEtMA_68824055-6d90-4eba-825e-d9d08fcc7bac">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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzctMy0xLTEtMA_41aa2ce9-2445-40d1-81aa-2f1ceca96031">58,120</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IntangibleAssetsNetIncludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzctNS0xLTEtMA_0d8bef93-314c-42d7-aa7f-501903ec087f">15,555</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="i1eac7832e000472982f73ab5c4639a3e_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEwLTEtMS0xLTA_e1e13a5d-9035-4e1a-9a18-cb7a31a84444">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="i1eac7832e000472982f73ab5c4639a3e_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEwLTMtMS0xLTA_f8f81164-479b-4316-8ee8-fc968383f2b3">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="i1eac7832e000472982f73ab5c4639a3e_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEwLTUtMS0xLTA_d3cfa2d6-7dd9-4a74-bda5-02e2405c0518">&#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="ib499337978d64c0996f876ba7e3c08b8_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzExLTEtMS0xLTA_1564a2dd-c4b2-44d8-9afa-63bd79e97897">31,987</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="ib499337978d64c0996f876ba7e3c08b8_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzExLTMtMS0xLTA_cec1141a-70fe-4b4a-a40c-338940e71805">9,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib499337978d64c0996f876ba7e3c08b8_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzExLTUtMS0xLTA_addd15bb-c80e-4b4e-85bf-d62010b0d94c">22,827</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="id65d8c0bdbf74398a35cfe8104c30b2d_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEyLTEtMS0xLTA_6fc984dc-3814-4ca0-9411-5d29cbfa7af8">14,407</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="id65d8c0bdbf74398a35cfe8104c30b2d_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEyLTMtMS0xLTA_7d5c6be5-85ff-4021-9c07-7369ad57bd4f">6,402</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="id65d8c0bdbf74398a35cfe8104c30b2d_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEyLTUtMS0xLTA_9e0c44da-b12b-489a-b55f-0506d27c1460">8,005</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%">In-process 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="ib24b605f63cf45cba1a5241a4474e599_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTEtMS0xLTI0MzA_f65b6e5f-3ad9-485a-b178-43ffc083e16a">8,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if5088b63841d443ea2181e2aac05f114_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTMtMS0xLTI0MzA_99a985f3-c271-4e3a-bf6d-d141306e420f">&#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="ib24b605f63cf45cba1a5241a4474e599_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IndefiniteLivedIntangibleAssetsExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTUtMS0xLTI0MzA_33eb5535-8086-4bef-9af6-5ca1a48d7096">8,200</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-compete agreements</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie17bd31409ec49ada21e79d6bc9f4905_I20191231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTEtMS0xLTA_0b2ad0bf-f08d-4011-8f21-49be755e4966">710</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="ie17bd31409ec49ada21e79d6bc9f4905_I20191231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTMtMS0xLTA_f500a31e-5d7a-492a-9e10-11d719c400cd">350</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="ie17bd31409ec49ada21e79d6bc9f4905_I20191231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTUtMS0xLTA_cb2dc24c-0cfd-477c-9527-86f7e70c1cd3">360</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%">Trademarks</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ifa6e76ebd0604c6fb7f2534a1457c766_I20191231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE1LTEtMS0xLTI0MzI_7d97b049-631b-4b77-b639-3f3c9106aa37">110</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="ifa6e76ebd0604c6fb7f2534a1457c766_I20191231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE1LTMtMS0xLTI0MzI_892cb2ae-eaa7-4305-b20c-15f4d4aa9028">12</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="ifa6e76ebd0604c6fb7f2534a1457c766_I20191231" decimals="-3" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE1LTUtMS0xLTI0MzI_e72c6a92-3ae0-49a9-b3a8-f129ff27864e">98</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%">Balance as of December 31, 2019</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: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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE0LTEtMS0xLTA_ad0688c6-cf98-4a94-b0c0-736c65a6d8db">93,474</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 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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE0LTMtMS0xLTA_85e31f35-fd68-447a-90e8-c189dfa47df9">53,984</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 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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE0LTUtMS0xLTA_a4e866ee-ecb5-4f30-affc-d3629748db0e">39,490</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: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%">57</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="#i1a430d3f39e74769965c1cc9f7e66842_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="i7d1c53f3ad874c44806795434b892a73"><div style="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 adverse impact of the COVID-19 pandemic on our business 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 $<ix:nonFraction unitRef="usd" contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQwNjc_8dacc23e-3864-402c-a21c-4cc0e80b5e3c">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="i6e84999093c84481a74e39726977d099_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQwODA_feea71ee-978f-44eb-9ed5-8022d333bdbe">10,070,000</ix:nonFraction>, $<ix:nonFraction unitRef="usd" contextRef="i2ec5ea0b1ca4492e80d0a8603b4039d2_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQwOTM_a81a8a92-8df4-44d7-8f86-459d40d3b75d">5,900,000</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="ib4a1793dd0e94c0b9920e9fa24b518b4_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQxMDU_289f4ce0-6306-4bb7-b076-c3f462939104">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="if86e7b3ca23041ce8ac0f7a210ea1142_I20200526" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQxMTc_73c38d89-0c44-4e40-8152-423a4b97932f">447,000</ix:nonFraction> and accumulated amortization of $<ix:nonFraction unitRef="usd" contextRef="if86e7b3ca23041ce8ac0f7a210ea1142_I20200526" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQxMzc_c43fb947-0e2b-473a-8eea-53a4a1059d50">228,000</ix:nonFraction> on the measurement date were reduced to <ix:nonFraction unitRef="usd" contextRef="i5dc07c358d534713bc54541683dc51e8_I20200628" decimals="-3" format="ixt-sec:numwordsen" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQxNTA_33ed808f-2530-4652-a326-c7363d53e7e4">zero</ix:nonFraction>, resulting in an impairment charge of $<ix:nonFraction unitRef="usd" contextRef="if0dc89428d034c9082662b3998a327f0_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQxMjc_b93a15b4-1f56-4dcf-bb73-9f19d6c593f5">219,000</ix:nonFraction>. Sualab in-process technologies were completed in the fourth quarter of 2020 and were accordingly reported as completed technologies subject to amortization as of December 31, 2020. The Company did not record impairment charges related to intangible assets in 2019 or 2018.</span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzUzNw_de03ae90-05f2-4b2a-9cf2-64688b3bc6ff" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">2021</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzEtMi0xLTEtMA_d4b3f025-3794-41e0-9784-87220c48b38b">3,656</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%">2022</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzItMi0xLTEtMA_f57ad68a-d7b4-4026-ab67-26feaa08313a">3,286</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%">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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzMtMi0xLTEtMA_2c5e3c0f-369c-4b2c-986a-87af09a34481">2,594</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzQtMi0xLTEtMA_6f89742d-cf37-4869-974b-f97d83ee8134">2,080</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzUtMi0xLTEtMA_c07fd98b-0897-4cbe-8031-3be2b16fafae">1,757</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzYtMi0xLTEtMA_f83fc401-7c28-4b99-9b8d-60f667b5d696">2,182</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:FiniteLivedIntangibleAssetsNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzctMi0xLTEtMA_54e574f5-6bb5-48ad-ab06-81b6a2a6a185">15,555</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="i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90ZXh0cmVnaW9uOmNjN2UzYzJkMDkyODRiMGY5YzlmNDZiNjk2ZWVjMjExXzE3Mg_75883a1a-1c3d-4a53-808f-d39430cfdbc0" continuedAt="i2d46beebbb3b4bae9c371a395a648a8e" escape="true">Accrued Expenses</ix:nonNumeric></span></div><ix:continuation id="i2d46beebbb3b4bae9c371a395a648a8e"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90ZXh0cmVnaW9uOmNjN2UzYzJkMDkyODRiMGY5YzlmNDZiNjk2ZWVjMjExXzE2OQ_5ede4f86-fac5-46e4-8c50-1690616dc8e8" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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:700;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%">Company bonuses</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedBonusesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzItMS0xLTEtMA_ab114fba-d7f6-4af3-9582-cf563e47feed">19,343</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:AccruedBonusesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzItMy0xLTEtMA_1ae116fd-9723-4033-a97b-5d2425a7b992">&#8212;</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, commissions, 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedSalariesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzMtMS0xLTEtNzE2OA_fddf421d-065c-4257-8e34-798cdf8649cc">14,025</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedSalariesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzMtMy0xLTEtNzE2OA_250fe065-3a14-4b94-806f-19e3cbbb3c23">11,500</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:RetirementAllowance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzMtMS0xLTEtMA_9b853da8-080a-4a80-8a21-507c30267f8b">6,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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:RetirementAllowance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzMtMy0xLTEtMA_39f919eb-c733-42e2-8d01-6feac4858926">6,146</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProductWarrantyAccrualClassifiedCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzQtMS0xLTEtMA_cd034875-6bd1-4c2b-bdcf-8d9aa226ac5d">5,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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProductWarrantyAccrualClassifiedCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzQtMy0xLTEtMA_2aa2bf15-7589-4c74-b8d2-2b4fd48cb517">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;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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedVacationCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzUtMS0xLTEtMA_003a182a-845f-4672-afd9-6395d5952af3">3,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:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedVacationCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzUtMy0xLTEtMA_03dd262a-1dac-4baa-9842-50ea55169ae2">4,708</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherAccruedLiabilitiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzgtMS0xLTEtMA_ff9e593d-39a4-4509-b2af-30d4258e374a">27,963</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OtherAccruedLiabilitiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzgtMy0xLTEtMA_108d036e-2c3a-4c47-845c-dc76f69e2137">25,132</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedLiabilitiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzktMS0xLTEtMA_f15fc3ae-e1cd-4e1d-8c6c-b0b8e947071b">77,264</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AccruedLiabilitiesCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzktMy0xLTEtMA_c80bfe86-0092-4620-911e-19b31c86bd13">52,199</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90ZXh0cmVnaW9uOmNjN2UzYzJkMDkyODRiMGY5YzlmNDZiNjk2ZWVjMjExXzE4Mg_94262bd0-17bb-435f-b476-92643143d7fd" 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%">The changes in the warranty obligation were as follows (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProductWarrantyAccrual" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzEtMS0xLTEtMA_a852c0e5-406e-4382-a75e-55e1dc718e50">4,743</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProductWarrantyAccrualWarrantiesIssued" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzItMS0xLTEtMA_4b821d41-42ab-4976-83e6-c3f58f6add4f">3,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 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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProductWarrantyAccrualPayments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzMtMS0xLTEtMA_cfe611f2-de20-4c43-a971-c008b92eb8c6">3,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></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="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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProductWarrantyAccrual" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzUtMS0xLTEtMA_bfde8d7c-a9f0-4ff8-a960-c886ef6f48ec">4,713</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProductWarrantyAccrualWarrantiesIssued" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzYtMS0xLTEtMA_c1b62691-4a54-4f07-ba38-cc5e4c7e37d4">3,463</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProductWarrantyAccrualPayments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzctMS0xLTEtMA_1b7a7a34-4a41-449a-bb2e-25a410b600ee">2,770</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, 2020</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ProductWarrantyAccrual" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzktMS0xLTEtMA_eaf87c0c-a4c5-4206-bd81-ce9308dca163">5,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;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 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><div id="i1a430d3f39e74769965c1cc9f7e66842_139"></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="#i1a430d3f39e74769965c1cc9f7e66842_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 11:&#160;<ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:CommitmentsAndContingenciesDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzkvZnJhZzo2NjhmMmMzNWMzYzI0NTg4ODY0Y2VlM2EzMDI2MzIxYy90ZXh0cmVnaW9uOjY2OGYyYzM1YzNjMjQ1ODg4NjRjZWUzYTMwMjYzMjFjXzY4MQ_b4b7f2e4-0fc3-4d68-a5c0-9f6c5bcc3a0b" continuedAt="i28ada9875c4749af8cbf0b35365d1b80" escape="true">Commitments and Contingencies</ix:nonNumeric></span></div><ix:continuation id="i28ada9875c4749af8cbf0b35365d1b80"><div style="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, 2020, the Company had outstanding purchase orders totaling $<ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzkvZnJhZzo2NjhmMmMzNWMzYzI0NTg4ODY0Y2VlM2EzMDI2MzIxYy90ZXh0cmVnaW9uOjY2OGYyYzM1YzNjMjQ1ODg4NjRjZWUzYTMwMjYzMjFjXzEwOA_b7c946ed-5f7a-4174-861c-15009d0b8490">32,315,000</ix:nonFraction> to purchase inventory from various vendors. Certain of these purchase orders may be canceled by the Company, subject to cancellation penalties. These purchase commitments relate to expected sales in 2021.</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="i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="cgnx:IndemnificationProvisionsTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDUvZnJhZzo0ODhlYmQzNGNkY2I0MmUxYjQyN2JhZmM5M2Q2YjFiMi90ZXh0cmVnaW9uOjQ4OGViZDM0Y2RjYjQyZTFiNDI3YmFmYzkzZDZiMWIyXzI0MDQ_87360362-cccd-4336-bbf3-04e5f8603a3b" continuedAt="i9b12fb3d3f694327aa4e836d35c5e4f1" escape="true">Indemnification Provisions</ix:nonNumeric></span></div><ix:continuation id="i9b12fb3d3f694327aa4e836d35c5e4f1" continuedAt="ied255c7d2efe429a87f611216139fd88"><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="ied255c7d2efe429a87f611216139fd88">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="i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5NzY_799d092e-e5c7-4e41-863a-ce90841c37ab" continuedAt="ib7d0763cf305425796547917177bda3d" 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="ib7d0763cf305425796547917177bda3d" continuedAt="id77ac01402484e198714f867e564ad69">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="if37f3b9e731b4d1e91e114764a70d4e3_D20200101-20201231" format="ixt-sec:durday" name="us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzQ4MQ_0f6b414c-70e3-4ee1-b064-94328cc2ceb4">45</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%">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="#i1a430d3f39e74769965c1cc9f7e66842_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="id77ac01402484e198714f867e564ad69"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5OTE_cfa5fa1e-960b-4fd2-ad3c-6c2301c6da3a" 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-bottom:5pt;margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2020</span></td><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, 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: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:#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%"><ix:nonFraction unitRef="eur" contextRef="id125001a88314a6cb3e00cd9cfaebd63_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzEyLTEtMS0xLTA_fc5d72c5-dff6-4488-852c-ad329c72521d">50,000</ix:nonFraction>&#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%"><ix:nonFraction unitRef="usd" contextRef="id125001a88314a6cb3e00cd9cfaebd63_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzEyLTItMS0xLTA_e4a66600-7d0e-4a35-923d-7cea8bea477f">61,342</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="eur" contextRef="i4503ad3ffbcb438ab03343baa505dad7_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzEyLTQtMS0xLTA_17d5a63a-a5ff-4d63-94bd-cc816b4bed35">18,000</ix:nonFraction>&#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%"><ix:nonFraction unitRef="usd" contextRef="i4503ad3ffbcb438ab03343baa505dad7_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzEyLTUtMS0xLTA_33dc877b-71dd-434d-a3e2-42648478dbb5">20,249</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="i3dda9084cd3d41309db2a7e221067614_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTEtMS0xLTA_41edf20c-b9d6-4b3a-881b-a10232d41d10">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="i3dda9084cd3d41309db2a7e221067614_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTItMS0xLTA_5ee2b47c-7779-46ad-8acc-056463a9aeac">7,776</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="i27e1097059694622a8c3700d3d84510d_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTQtMS0xLTA_30a9e640-460c-4d5d-86c9-362bef6196e3">80,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="i27e1097059694622a8c3700d3d84510d_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTUtMS0xLTA_771f62bb-0a99-4140-8b11-dc5b817db7c3">4,223</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="i256cacfc43da44b1a64b0b147f385a07_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTEtMS0xLTY2NDE_b9601fd6-bd6b-48cf-930e-8245c347c887">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="i256cacfc43da44b1a64b0b147f385a07_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTItMS0xLTY2NDE_3b63c0cc-45e4-4418-81a7-c1b0ea627e79">6,377</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="i1c105ea70aa24e3c81daeb00339a62e9_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTQtMS0xLTY2NDE_65e458da-6f7f-4008-a16a-59f6420d1ab3">161,951,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="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1c105ea70aa24e3c81daeb00339a62e9_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTUtMS0xLTY2NDE_c8f351a8-d272-4d76-b49a-e47b9ffec816">139,688</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%">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%"><ix:nonFraction unitRef="jpy" contextRef="ie18106478531477d9cf2a90de218a21c_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTEtMS0xLTY2MzQ_29e4af7a-2ff1-462c-a835-3fcacb7a4279">600,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="ie18106478531477d9cf2a90de218a21c_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTItMS0xLTY2MzQ_0ff5c142-fe24-4bc6-81f1-3283a25e6273">5,808</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="jpy" contextRef="i4728f332e46840d7aea525c9eaa35aaf_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTQtMS0xLTY2MzQ_b7c70cd1-2cbe-4610-8d75-930daad368b4">575,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="i4728f332e46840d7aea525c9eaa35aaf_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTUtMS0xLTY2MzQ_767039d0-0124-401e-8158-6fc6d17d4128">5,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: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="i9f6d19bc81a2447cb20b33ed5d4e72e8_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTEtMS0xLTY2Mjc_518ddf59-6b9a-40c4-99c2-21db18c81149">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="i9f6d19bc81a2447cb20b33ed5d4e72e8_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTItMS0xLTY2Mjc_b7147ab9-32e2-44ae-bc0b-12118b7969ce">4,494</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="i82422d1a11ca4a77b1f16cb2de6e0881_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTQtMS0xLTY2Mjc_7a2c20b0-3ed9-4671-8457-073d1c18814c">870,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="i82422d1a11ca4a77b1f16cb2de6e0881_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTUtMS0xLTY2Mjc_a01e8489-14f6-4fde-bdde-28bf2f0f8661">2,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;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="i27e2ae5199ff4981a2777a3ba46d555a_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTEtMS0xLTA_ea5ebb24-e4f9-49a0-b204-db022a46daa8">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="i27e2ae5199ff4981a2777a3ba46d555a_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTItMS0xLTA_234a4625-dbd7-445d-be9b-53b12000a409">2,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="gbp" contextRef="id2b1b3d989764ca4a14ee11ef0312f70_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTQtMS0xLTA_e8cbf35a-9bd0-4765-a1c9-a3a042b32d52">2,700</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="id2b1b3d989764ca4a14ee11ef0312f70_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTUtMS0xLTA_ae9b1500-1947-43d1-8168-ae3cf905d222">3,569</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%">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%"><ix:nonFraction unitRef="twd" contextRef="i98836da978c546fda0472b613300f607_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE3LTEtMS0xLTA_83c522b9-33ef-43ae-9dbe-49d2c8a7795e">38,035</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="i98836da978c546fda0472b613300f607_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE3LTItMS0xLTA_5d0d71af-11b8-43b8-9612-847693fdd475">1,362</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="twd" contextRef="i63ab6dd878f44d6391ba8aa3d6ade87b_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE3LTQtMS0xLTA_ab126a4b-2dc4-4d40-b97f-2f43b67598e3">37,450</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="i63ab6dd878f44d6391ba8aa3d6ade87b_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE3LTUtMS0xLTA_d993bf02-2e62-4f6a-8f2b-fc0aa76f7162">1,256</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%">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%"><ix:nonFraction unitRef="sgd" contextRef="ic0e8d638d38640898e535a75e7cbcba0_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTEtMS0xLTY2MjA_fd0231e7-2a48-4363-906d-57d603c8b0f2">1,465</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="ic0e8d638d38640898e535a75e7cbcba0_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTItMS0xLTY2MjA_bfdf3f0e-3893-47c7-9a7e-c519568bf5a8">1,110</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="sgd" contextRef="ic91b735b9c514594bf98f5c8c01a0479_I20191231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTQtMS0xLTY2MjA_cc521d40-836c-4277-a076-300da2b1131f">845</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="ic91b735b9c514594bf98f5c8c01a0479_I20191231" decimals="-3" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTUtMS0xLTY2MjA_a9d34975-b09f-4e39-824e-ca9d8fccd295">628</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%">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%"><ix:nonFraction unitRef="cad" contextRef="ie26e559fd2fc4181af7adeae0db48039_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTEtMS0xLTA_93fa8716-6083-45a8-9f1d-f0560c5a3ee6">1,285</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="ie26e559fd2fc4181af7adeae0db48039_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTItMS0xLTA_978bd05e-ab86-4a4c-8c24-dc2ad6ab2f87">1,010</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="cad" contextRef="ib69a426c887140268968b1645cfc6863_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTQtMS0xLTA_787bcbc5-f78b-42c3-9a5f-17334e1f3b33">1,300</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="ib69a426c887140268968b1645cfc6863_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeAssetNotionalAmount" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTUtMS0xLTA_8cd363d7-4f4e-424c-9464-b06e165ed035">1,000</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5ODY_365172d3-f1e5-42b2-9bb2-b0c676101a14" 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%">Information regarding the fair value of the outstanding forward contracts was as follows (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"><tr><td style="width:1.0%"></td><td style="width:15.298%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.809%"></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.930%"></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.930%"></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.809%"></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.930%"></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.934%"></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:8pt;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:9pt;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:9pt;font-weight:700;line-height:100%">Liability Derivatives</span></td></tr><tr style="height:12pt"><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:9pt;font-weight:700;line-height:100%">Balance<br/>Sheet<br/>     Location&#160; &#160;&#160;&#160;</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:9pt;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:9pt;font-weight:700;line-height:100%">Balance<br/>Sheet<br/>    Location&#160; &#160;&#160;&#160;</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:9pt;font-weight:700;line-height:100%">Fair Value</span></td></tr><tr style="height:20pt"><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:9pt;font-weight:700;line-height:100%">December 31, 2020</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:9pt;font-weight:400;line-height:100%">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;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%">December 31, 2020</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:9pt;font-weight:400;line-height:100%">December 31, 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><td colspan="3" style="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="id2536238c18941b1b330f426e3f204c1_I20201231" decimals="-3" name="us-gaap:DerivativeAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo0YjQyNjQxMGQ0NWQ0MjdjOTIxZTBiYTk5NmE5ODBkOC90YWJsZXJhbmdlOjRiNDI2NDEwZDQ1ZDQyN2M5MjFlMGJhOTk2YTk4MGQ4XzYtMy0xLTEtMA_8b2c3f04-ba7f-4e1e-aa60-5a4fdbb3cc39">265</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="i3e64074e131b49e786d6d237d108eea8_I20191231" decimals="-3" name="us-gaap:DerivativeAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo0YjQyNjQxMGQ0NWQ0MjdjOTIxZTBiYTk5NmE5ODBkOC90YWJsZXJhbmdlOjRiNDI2NDEwZDQ1ZDQyN2M5MjFlMGJhOTk2YTk4MGQ4XzYtNS0xLTEtMA_511c1af2-0091-491b-a787-edadb779dcdd">857</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="ia35a06653c644fd3919ff12db60fe22d_I20201231" decimals="-3" name="us-gaap:DerivativeLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo0YjQyNjQxMGQ0NWQ0MjdjOTIxZTBiYTk5NmE5ODBkOC90YWJsZXJhbmdlOjRiNDI2NDEwZDQ1ZDQyN2M5MjFlMGJhOTk2YTk4MGQ4XzYtOS0xLTEtMA_e9dea50c-c517-4c06-9ea1-33300fea2626">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:#cceeff;padding:2px 1pt 2px 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="id668c42d5d03462d90e84f0641b25f23_I20191231" decimals="-3" name="us-gaap:DerivativeLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo0YjQyNjQxMGQ0NWQ0MjdjOTIxZTBiYTk5NmE5ODBkOC90YWJsZXJhbmdlOjRiNDI2NDEwZDQ1ZDQyN2M5MjFlMGJhOTk2YTk4MGQ4XzYtMTEtMS0xLTA_c7951735-201d-44db-a24c-f6d63a47696f">23</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:OffsettingAssetsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5OTU_37e872eb-39ac-42d9-8cb6-6ae621f3b8f6" 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%">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-bottom:5pt;margin-top:14pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="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, 2020</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, 2019</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: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;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, 2020</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, 2019</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" name="us-gaap:DerivativeFairValueOfDerivativeAsset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzItMi0xLTEtMA_c5a7d3ee-b7d5-4a55-9a7c-04e6ed5cb0f4">265</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" name="us-gaap:DerivativeFairValueOfDerivativeAsset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzItNC0xLTEtMA_c52135ae-1e42-4661-b926-c11964ac4a58">857</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" name="us-gaap:DerivativeFairValueOfDerivativeLiability" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzItOC0xLTEtMA_35955fc9-f325-4985-b749-39d1f8687899">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:#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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" name="us-gaap:DerivativeFairValueOfDerivativeLiability" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzItMTAtMS0xLTA_b09fb32c-ac5d-4dfc-86ab-4bd01561e11c">23</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzMtMi0xLTEtMA_7427abad-e78e-44db-b42b-f778a20ff741">&#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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzMtNC0xLTEtMA_a5fc30ac-89c7-416f-9a1a-3430a94060bc">&#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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzMtOC0xLTEtMA_59d8bda0-8b5d-4433-af69-037b1c767bed">&#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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzMtMTAtMS0xLTA_7ff88e86-ef29-4625-ae75-647e7e6f6f00">&#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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" name="us-gaap:DerivativeAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzQtMi0xLTEtMA_b8c1b0b8-0302-4ade-8a7e-57e681385db4">265</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" name="us-gaap:DerivativeAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzQtNC0xLTEtMA_38b6924a-a580-47f8-9103-f6180731b587">857</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" name="us-gaap:DerivativeLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzQtOC0xLTEtMA_1d39f760-76b2-4231-aa60-47a31db9f52a">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:#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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" name="us-gaap:DerivativeLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzQtMTAtMS0xLTA_f11e6ead-5c1a-4db0-8031-fa1e0d8c266a">23</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5OTY_8c035962-0857-43a5-aecf-24debcfd85a7" 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%">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-bottom:5pt;margin-top:10pt;text-align:justify"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5Njg_2dafc9a8-feb9-490b-9629-be1fa9128e71" escape="true"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:8pt;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:8pt;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:8pt;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:8pt;font-weight:700;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><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%">2018</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="iab20f4d47e244a76ace9b260b5743e28_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:DerivativeGainLossOnDerivativeNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTpmOTExZWQxMzRjYzY0OTc4OThkOTIwOGYyNWRlMmVlNS90YWJsZXJhbmdlOmY5MTFlZDEzNGNjNjQ5Nzg5OGQ5MjA4ZjI1ZGUyZWU1XzExLTMtMS0xLTA_9ba2b867-966c-4032-be35-8fb8e5e7877d">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="ib5afb25330124ebcae58b0e8d3dc05a2_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DerivativeGainLossOnDerivativeNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTpmOTExZWQxMzRjYzY0OTc4OThkOTIwOGYyNWRlMmVlNS90YWJsZXJhbmdlOmY5MTFlZDEzNGNjNjQ5Nzg5OGQ5MjA4ZjI1ZGUyZWU1XzExLTUtMS0xLTA_64273c4b-c4e4-4104-9ee7-b9bf330961c2">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><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="i322fd20d156f460fb46528a0407d0f6d_D20180101-20181231" decimals="-3" sign="-" name="us-gaap:DerivativeGainLossOnDerivativeNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTpmOTExZWQxMzRjYzY0OTc4OThkOTIwOGYyNWRlMmVlNS90YWJsZXJhbmdlOmY5MTFlZDEzNGNjNjQ5Nzg5OGQ5MjA4ZjI1ZGUyZWU1XzExLTctMS0xLTA_450c7c36-e470-4a82-a63b-4cefc4820a62">285</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></tr></table></ix:nonNumeric></div></ix:nonNumeric></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%">60</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:RevenueFromContractWithCustomerTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzE2MDM_9af76e20-1582-4ded-8d45-c1602bd31540" continuedAt="ibca624245f0444588c6f1bd61c1f3d19" escape="true">Revenue Recognition</ix:nonNumeric></span></div><ix:continuation id="ibca624245f0444588c6f1bd61c1f3d19" continuedAt="i82b8633599414530a0eb7020927957f0"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:DisaggregationOfRevenueTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzE2MDU_2756ae83-e93d-4ed1-9485-4747c403bfbd" 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-bottom:5pt;margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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="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%">2018</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="i45bf844ee822481abb812259f0c55cf5_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzItMi0xLTEtMA_add5826c-efc3-4a03-a6b5-c2d84df95791">310,027</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="i28319ee35cab4f669cc68e5c779ce9a2_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzItNC0xLTEtMA_227f1cec-a2d7-4bb7-91a3-94c4254526d5">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="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="i005b7b838db94fae896c3e37497e3a38_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzItNi0xLTEtMA_2b58fd69-43ba-4fd4-b7fe-7c90ec275c84">265,175</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="ibfe6673ddcfd4beda048b11f578ced24_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzMtMi0xLTEtMA_0c1b228c-f350-4c8b-8308-0e3150ea55e8">208,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:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i2455679b0dc24386ae718a31db1121f5_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzMtNC0xLTEtMA_fc97cd76-18e1-4759-9a7e-30a602efb9ad">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 colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i0f9a6d89f1af40dab151c1916512c5a3_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzMtNi0xLTEtMA_21c3ed5c-ed80-4c81-b152-34317bf7e132">311,914</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="ib9cc7499227e47a1bce0663b99b3a27a_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzQtMi0xLTEtMA_524fb9a0-cdd5-49ca-afdb-72f21118f092">168,287</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="i3c0cc26b301d41ec94472b653c04964d_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzQtNC0xLTEtMA_69a2a229-b4e8-49c0-96ed-eb38f56e4bbd">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="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="iee1584fb047e4cd0aadbe377ee63edb0_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzQtNi0xLTEtMA_259be843-9b3e-474a-9a8d-62945e6ca698">123,708</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="i0b7584e39a7e4678a6ed685684989018_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzUtMi0xLTEtMA_b13f13a0-5532-4019-9679-4318d3be0fa1">123,919</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="id39fbd1324fc4c9e9dea6a121e2ad1b7_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzUtNC0xLTEtMA_fc1b22fc-06d6-4391-8652-20e0e3e7481e">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="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i1693f4a03a22420681a119048a5f80d4_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzUtNi0xLTEtMA_012b7844-8066-4239-a131-a086a1930310">105,541</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzYtMi0xLTEtMA_c5216e2f-351a-425f-b593-1e01fd187cf1">811,020</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzYtNC0xLTEtMA_bdd830f0-47cb-43d4-832a-588608f0fb78">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="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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzYtNi0xLTEtMA_433b342b-f8db-4efd-af75-fd03b5fcc694">806,338</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:6pt;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-bottom:5pt;margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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="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%">2018</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="i7ef1b2f387074286a1f393195b0d6023_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzItMi0xLTEtMA_2670ecea-018c-4db1-8b50-c200b34d60ea">674,830</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="i7871153220d1465d8b9175beda208c9a_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzItNC0xLTEtMA_a9ebbf05-fa33-48b7-bea1-aadc57f4a6af">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><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="i7cc61298d56c4c5a8ea7c807f888fb48_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzItNi0xLTEtMA_ded59dfc-b00d-40f3-90b7-56bbd6eeb33b">654,509</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="i2d31200b11d44782a5477bfdc49ea925_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzMtMi0xLTEtMA_64cc6a51-c4e2-4cc2-ab95-0ccfa0b836c4">136,190</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="i8302b4fda4d440c28ff639b7e1be6c18_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzMtNC0xLTEtMA_116e54b1-8583-4c8d-886b-46e8d7434e46">96,405</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="ia9f2c2eca7cf407d99a3940e46c8337b_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzMtNi0xLTEtMA_adb128c8-5d95-411c-b560-ddd081edbcc3">151,829</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzQtMi0xLTEtMA_58ce133c-1573-494d-abc3-7903f2ed1bfe">811,020</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzQtNC0xLTEtMA_0597c98c-89d9-4b53-982f-420e0c342f2c">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="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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzQtNi0xLTEtMA_f4873ab3-7763-4fed-9717-9883804edde0">806,338</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="margin-top:3pt;text-align:justify"><span><br/></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 Sheet and amounted to $<ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:CapitalizedContractCostGross" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzQ1MQ_479f2469-fe05-40a1-ae0d-05d34e329c47">6,846,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:CapitalizedContractCostGross" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzQ1OQ_412053cc-01d4-4b41-a01c-0bd4ec56723f">3,963,000</ix:nonFraction> as of December 31, 2020 and 2019, 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%">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:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On January 1, 2020, the Company adopted Accounting Standards Update (ASU) 2016-13, &#8220;Measurement of Credit Losses on Financial Instruments,&#8221; using the modified-retrospective approach, which requires the Company to apply the standard on a prospective basis with a cumulative-effect adjustment to retained earnings as of the beginning of the period in which the guidance is effective. The Company did not record an adjustment to retained earnings as this ASU did not have a material impact on the Company's consolidated allowance for credit losses. </span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzEzMTk0MTM5NTQwOTkx_7b01aab2-a547-404f-8fd9-fbda023d712c" 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-bottom:5pt;margin-top:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzAtMS0xLTEtMjk4Mw_8ba26920-0bcf-4504-937b-ac399d425431">596</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" name="us-gaap:ProvisionForDoubtfulAccounts" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzEtMS0xLTEtMjk4Ng_3599324c-ccb3-445d-be71-8380a8ba14b6">215</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</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzItMS0xLTEtMjk5Mw_23307df4-18bc-4e7f-939e-337ef3ab1b91">286</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" name="cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzMtMS0xLTEtMjk5Nw_180cee57-9b93-4582-b577-87d953c37b3a">5</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, 2019</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzQtMS0xLTEtMjk4MQ_4bd61aca-c072-4665-895b-ab6dc1fc3b41">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="us-gaap:ProvisionForDoubtfulAccounts" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzUtMS0xLTEtMjk5MQ_0c0f6a9e-bb71-477b-b8cd-aa100606a550">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 </span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzYtMS0xLTEtMjk5NQ_7b82061d-907d-4a4c-969e-8d44514fc750">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzctMS0xLTEtMjk5OQ_31090aae-d3e5-4b3c-aaaa-7cd4437d131c">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 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" name="us-gaap:AllowanceForDoubtfulAccountsReceivable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzgtMS0xLTEtMjk3OQ_688f48b9-959d-4a70-b0ea-f7e0681f7425">831</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 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%">61</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="#i1a430d3f39e74769965c1cc9f7e66842_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="i82b8633599414530a0eb7020927957f0"><div style="margin-top:3pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company's 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><br/></span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzE2MDE_f5a70500-ddd0-4b15-b6fa-3b54d8119456" 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-bottom:5pt;margin-top:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ContractWithCustomerLiabilityCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzEtMS0xLTEtMA_7aaeecc6-516d-4413-8cea-3a0e0e1ab6e2">9,845</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 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:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzItMS0xLTEtMA_c2367ec7-00ca-4263-b5e0-b6855ec398f6">53,422</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</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzMtMS0xLTEtMA_b8547aa6-5e63-4885-a42a-9ca7dbe8400c">48,730</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" name="cgnx:ContractLiabilityForeignExchangeRateChanges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzQtMS0xLTEtMA_d24dd9b5-130c-4ac0-bf4e-03449484b7c7">105</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, 2019</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ContractWithCustomerLiabilityCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzUtMS0xLTEtMA_211f574f-4ee0-455b-91be-b4ca68c42a02">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%">Increases to 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:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzYtMS0xLTEtMA_f8599878-a12e-4936-967b-6638bf7fc322">120,008</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</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzctMS0xLTEtMA_8f7161fc-98cc-41ff-932f-7e200e322487">114,014</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="cgnx:ContractLiabilityForeignExchangeRateChanges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzgtMS0xLTEtMA_96600641-8127-4c9b-986a-feea4a2050f7">848</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 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ContractWithCustomerLiabilityCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzktMS0xLTEtMA_e4c8246e-2559-4661-b87a-0f23515069f4">21,274</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="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%">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%">62</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:StockholdersEquityNoteDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzQ1Nzk_360ce7cd-30c3-4602-9355-b9b8fa660373" continuedAt="i8df8a3502f2e48cd866cf0a646e288e1" escape="true">Shareholders&#8217; Equity</ix:nonNumeric></span></div><ix:continuation id="i8df8a3502f2e48cd866cf0a646e288e1"><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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:PreferredStockSharesAuthorized" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzY4_9cfcbced-b594-4d0e-86ab-51e220cc889b">400,000</ix:nonFraction> shares of authorized but unissued $<ix:nonFraction unitRef="usdPerShare" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="INF" name="us-gaap:PreferredStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwNQ_51ad8314-5009-4e16-bc4a-4ce67ba7fe77">.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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="INF" name="us-gaap:CommonStockParOrStatedValuePerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2Mzg3MzU_b430434b-9282-4689-8a45-4ec9d85ba408">.002</ix:nonFraction> par value common stock from <ix:nonFraction unitRef="shares" contextRef="i68be99e07a8140f985fd37cc10ad792c_I20160427" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesAuthorized" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMyMw_46418b6b-a4c6-4262-931a-6034399339c4">200,000,000</ix:nonFraction> to <ix:nonFraction unitRef="shares" contextRef="id6b1384256a24d76b0b52d56219d0b4e_I20180425" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesAuthorized" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMyOQ_d887e6d1-be20-4c65-a8a1-240a56281988">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="ia5190f5ec7d04c8eb5bff1a85d304050_I20160428" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:CommonStockSharesAuthorized" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzU0Ng_5b917dcb-3e75-4f15-ac41-de654f886b98">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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="INF" format="ixt-sec:numwordsen" name="cgnx:VoteEntitledForEachCommonShareOutstanding" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzE1Njg_d196f8b0-aa2f-4ab2-a789-2c5e5ed890be">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:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Shareholder Rights Agreement</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 December 5, 2018, the Company&#8217;s Board of Directors allowed the Company&#8217;s Shareholder Rights Agreement and associated rights to expire in accordance with their terms without renewal. In connection with the adoption of the Shareholder Rights Agreement, the Company had filed Articles of Amendment to its Restated Articles of Organization establishing Series E Junior Participating Cumulative Preferred Stock with the Secretary of State of The Commonwealth of Massachusetts, setting forth the rights, powers, and preferences of the Series E Junior Participating Cumulative Preferred Stock issuable upon exercise of the rights (the &#8220;Preferred Shares&#8221;). Effective on April 26, 2019, the Company filed Articles of Amendment to the Company&#8217;s Restated Articles of Organization with the Secretary of State of The Commonwealth of Massachusetts eliminating the Preferred Shares and returning them to authorized but undesignated shares of the Company&#8217;s preferred stock.</span></div><div style="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 April 2017, the Company's Board of Directors authorized the repurchase of $<ix:nonFraction unitRef="usd" contextRef="i189ffbc258f445c5a5406966389b4ac6_I20170412" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:StockRepurchaseProgramAuthorizedAmount1" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzI4Mzc_d10cbb18-37d8-4670-9c9d-e2a6106bc91b">100,000,000</ix:nonFraction> of the Company's common stock. The Company repurchased <ix:nonFraction unitRef="shares" contextRef="i680260920a244ceea6d6b45594dda05e_D20180101-20180401" decimals="0" format="ixt:numdotdecimal" name="cgnx:Totalsharesrepurchased" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzI4OTY_19e6263a-6839-4804-a407-90938c1ac3a3">1,744,000</ix:nonFraction> shares at a cost of $<ix:nonFraction unitRef="usd" contextRef="i4fabd548970d4d4a8f0d64285da4ee5c_D20180101-20180401" decimals="0" format="ixt:numdotdecimal" name="cgnx:Repurchasedsharestotalcost" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzI5MTk_25f9483f-78d7-4ba3-97e8-a2631a306245">100,000,000</ix:nonFraction> under this April 2017 program, including <ix:nonFraction unitRef="shares" contextRef="i680260920a244ceea6d6b45594dda05e_D20180101-20180401" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodShares" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzI5NjM_a487d6ab-0519-4acd-bfdc-d7551aa715b0">803,000</ix:nonFraction> shares at a cost of $<ix:nonFraction unitRef="usd" contextRef="i680260920a244ceea6d6b45594dda05e_D20180101-20180401" decimals="0" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzI5ODY_ecf83e63-5c8d-494b-a449-8c47181c6d01">45,200,000</ix:nonFraction> in 2018. In February 2018, the Company's Board of Directors authorized the repurchase of $<ix:nonFraction unitRef="usd" contextRef="i82791ebbdb2d4f73853570e7517f3d7d_I20180201" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:StockRepurchaseProgramAuthorizedAmount1" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMwNzk_83911b91-0f37-49fc-afa8-bbfdccabd536">150,000,000</ix:nonFraction> of the Company's common stock. The Company repurchased <ix:nonFraction unitRef="shares" contextRef="i84808d8bcf3b40a8bf77cc46b34bcf52_D20180201-20180228" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodShares" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMxMzg_6fb89954-f4ac-470d-bd50-fac171907e8f">3,174,000</ix:nonFraction> shares at a cost of $<ix:nonFraction unitRef="usd" contextRef="i84808d8bcf3b40a8bf77cc46b34bcf52_D20180201-20180228" decimals="0" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMxNjE_198dff34-1a92-4297-aa65-1e9170e05f0b">150,000,000</ix:nonFraction> in 2018 under this February 2018 program. In October 2018, the Company's Board of Directors authorized the repurchase of $<ix:nonFraction unitRef="usd" contextRef="ifae0eb830ac74cccafe0924a206f022e_I20181029" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:StockRepurchaseProgramAuthorizedAmount1" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMyODY_20b24745-1a66-43bc-af9c-862e00c29eef">200,000,000</ix:nonFraction> of the Company's common stock. The Company repurchased <ix:nonFraction unitRef="shares" contextRef="i473e7a64a83447199f7bf33c5a6abd76_D20181001-20181231" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodShares" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMzNDU_cff45326-f8e7-4ea4-a0a9-436133669967">203,000</ix:nonFraction> shares at a cost of $<ix:nonFraction unitRef="usd" contextRef="i473e7a64a83447199f7bf33c5a6abd76_D20181001-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMzNjg_0680b8a0-180d-4323-97e8-3059693df6d0">8,622,000</ix:nonFraction> in 2018 under this October 2018 program. Total stock repurchases amounted to $<ix:nonFraction unitRef="usd" contextRef="i4e62174a29dc4fc7b8238d08ab0deeec_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzM0NDk_4db26f95-4bf8-4ace-8ca3-cb4675a7fabc"><ix:nonFraction unitRef="usd" contextRef="i8f883d77d8a34a5d99abb929376f85dd_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzM0NDk_768ad019-f69d-4c9b-bf6f-98b776c13543">203,822,000</ix:nonFraction></ix:nonFraction> in 2018. The Company repurchased <ix:nonFraction unitRef="shares" contextRef="i1661c3b621a94e96a52ae601c8ee5e7b_D20190101-20191231" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodShares" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzM0ODY_e78cbf78-c5c0-44dd-9a14-0921dc04ea4d">1,398,000</ix:nonFraction> shares at a cost of $<ix:nonFraction unitRef="usd" contextRef="i1661c3b621a94e96a52ae601c8ee5e7b_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzM1MDk_ab4f8f2e-bf69-4104-a905-23023a4918e0">61,690,000</ix:nonFraction> in 2019 and <ix:nonFraction unitRef="shares" contextRef="iab80bdfd853640dc95144e692cb58029_D20200101-20200329" decimals="INF" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodShares" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2MzQzNTE_bc126ae5-747a-4a55-9299-987469be9b4c">1,215,000</ix:nonFraction> shares at a cost of $<ix:nonFraction unitRef="usd" contextRef="iab80bdfd853640dc95144e692cb58029_D20200101-20200329" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchasedDuringPeriodValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2MzQzNjQ_730f9c45-348c-4fcb-86a2-3198f5310c09">51,036,000</ix:nonFraction> in 2020 under this October 2018 program, leaving a remaining balance of $<ix:nonFraction unitRef="usd" contextRef="iba2e5e421b5b4a57b2a259c12b514f1e_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:StockRepurchaseProgramAuthorizedAmount1" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzM2OTI_541112ab-3cf7-4ffa-bb6a-3aa812a3d71c">78,652,000</ix:nonFraction>. On March 12, 2020, the Company's Board of Directors authorized the repurchase of an additional $<ix:nonFraction unitRef="usd" contextRef="ic6c4df4e7a9a402fbdd4bbc4286660dd_I20200312" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockRepurchaseProgramAuthorizedAmount1" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2MzYwNzM_9dda6027-6b6f-412e-a75c-86ab2468789b">200,000,000</ix:nonFraction> of the Company's common stock. Purchases under this March 2020 program will commence upon completion of the October 2018 program. 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, and $0.055 in the fourth quarter of 2019, as well as in the first, second, and third quarters of 2020. The dividend was increased to $0.060 per share in the fourth quarter of 2020. Also, in the fourth quarter of 2020, an additional special cash dividend of $<ix:nonFraction unitRef="usdPerShare" contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231" decimals="4" name="us-gaap:CommonStockDividendsPerShareCashPaid" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2Mzk2ODk_f67cabe9-6d35-4503-8deb-361f8d94f9ac">2.00</ix:nonFraction> per share was declared and paid. Total dividends amounted to $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:PaymentsOfDividends" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzQyODU_f7701e12-0831-42d1-affb-c0f56338cb56">390,508,000</ix:nonFraction> in 2020, which included $<ix:nonFraction unitRef="usd" contextRef="if71679ad1ab44c19930e3c255a129572_D20201228-20201228" decimals="0" format="ixt:numdotdecimal" name="us-gaap:PaymentsOfDividends" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2Mzk2OTc_421512f3-64a9-4220-91a3-3f13a2fdb94d">351,428,000</ix:nonFraction> paid for the special cash dividend, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:PaymentsOfDividends" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzQyOTI_ff2466c5-b028-40a4-a40e-93f1dfe8ff9f">35,124,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:PaymentsOfDividends" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzE2NDkyNjc0NTQ4NjI_d1410f3b-877a-4eff-9252-b062baff1759">31,865,000</ix:nonFraction> in 2018. Future dividends will be declared at the discretion of the Company's Board of Directors and will depend upon 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 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><div id="i1a430d3f39e74769965c1cc9f7e66842_160"></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="#i1a430d3f39e74769965c1cc9f7e66842_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 16:&#160;<ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzM0NDE_4c810f99-4063-450c-96df-5fe2b2d79280" continuedAt="i04793d748a924982a386a13299477c56" escape="true">Stock-Based Compensation</ix:nonNumeric></span></div><ix:continuation id="i04793d748a924982a386a13299477c56" continuedAt="i213f0cd800eb45df91d3019337d42282"><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, 2020, the Company had <ix:nonFraction unitRef="shares" contextRef="i651cdc8b58564e339fa15af8d913fa7b_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIyMQ_b7e6ad25-b5e1-4b29-8973-d1966b7ecbf5">16,260,393</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:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzQwMA_385ebae8-1c19-44f1-862e-1dcc62372ed6">four</span> or <ix:nonNumeric contextRef="ibc99913a4dd04ed587dd18819f2860b9_D20200101-20201231" format="ixt-sec:durwordsen" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzQwNg_ae4f4c74-654f-4b21-ab63-dfbc9ffa4178">five years</ix:nonNumeric> based on continuous employment and expire <ix:nonNumeric contextRef="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231" format="ixt-sec:durwordsen" name="cgnx:ExpirationPeriodOfStockOptionPlan" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzQ1Mw_c1732eec-e3f0-4e0f-9657-f88d40e4bf85">ten years</ix:nonNumeric> from the grant date. RSUs generally vest upon <ix:nonNumeric contextRef="i38980c90881940f69c5ee24c245a2ff9_D20200101-20201231" format="ixt-sec:durwordsen" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzUwMw_ec74a34f-e88a-42e5-a617-a07f2b015f3f">three years</ix:nonNumeric> 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><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzM0MzM_081e3d23-6fa1-4cf7-b511-c2bc20dcf183" 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:10pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2019</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzEtMS0xLTEtMA_b07f0c3e-036e-4907-b30b-937c1db0f983">12,899</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzEtMy0xLTEtMA_384dc0ba-0607-4780-9aab-edc9b2c33953">37.95</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzItMS0xLTEtMA_1c05ea6a-79e6-4c96-aae9-ab48e18e7856">1,245</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzItMy0xLTEtMA_d08205b6-7a14-487a-bff6-920701ae4ab3">54.68</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzMtMS0xLTEtMA_71bd5ccc-4f1f-4ab2-b3f4-468930422583">4,565</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzMtMy0xLTEtMA_9221f39c-330e-4f66-aba2-58659bcd95af">27.54</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzQtMS0xLTEtMA_f50dc390-f2cc-40c9-8151-b38e9f78cde5">609</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzQtMy0xLTEtMA_01b07203-9f47-4197-bcf4-9bf8157ddfe8">50.28</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, 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:700;line-height:100%"><ix:nonFraction unitRef="shares" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzUtMS0xLTEtMA_dc93de64-ed40-4ddb-9fb0-a8dca823df16">8,970</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzUtMy0xLTEtMA_783b9e66-06eb-4555-9448-536f5cbeedf7">44.73</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzUtNS0xLTEtMA_6c0f99fc-10d7-48fa-84e8-eef3a673f632">7.11</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzUtNy0xLTEtMA_66faa6f7-d376-4baa-86aa-75f890cc00df">318,873</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, 2020</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzYtMS0xLTEtMA_4aa3c5df-82f2-46eb-ab28-521c1b342160">3,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;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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzYtMy0xLTEtMA_cccb2ccd-70ec-4736-b72a-d3f3582bfcc2">33.79</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzYtNS0xLTEtMA_a0ed42cb-bbac-48a4-aa48-ff1fa7f5fb5b">5.60</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzYtNy0xLTEtMA_d77c9950-b79d-41b2-aa5d-af5708ee7989">145,735</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, 2020 (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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzctMS0xLTEtMA_5d7507d9-a8fc-4d6f-8293-015cff2b10c3">8,235</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzctMy0xLTEtMA_d28df3a4-d6b1-42fa-b501-85cb98773ffe">44.08</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzctNS0xLTEtMA_d7849b1d-bc89-4a79-bee1-d2c7607b6a3f">7.01</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzctNy0xLTEtMA_1d7b53d1-d711-45d4-a54f-d78aea412cd6">298,118</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:9pt;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzM0MTA_e4fc3ca8-c6eb-4e75-bc1b-1c9800998365" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231" decimals="3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzItMS0xLTEtMA_01b20bb3-6318-45eb-a865-d8823f2c52e7">1.4</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="ida6e37838d504208943572dbc92ab92b_D20190101-20191231" decimals="3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzItMy0xLTEtMA_3c5e5f61-f58b-45c0-b534-804d2951cefc">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><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="i809038d6962540f18bd0b417106a9f55_D20180101-20181231" decimals="3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzItNS0xLTEtMA_09f01f6d-67ee-44d6-a5d4-e41634202bcc">2.9</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="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzMtMS0xLTEtMA_748b34a2-2f44-47d8-a11c-696939fe92fc">0.41</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="ida6e37838d504208943572dbc92ab92b_D20190101-20191231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzMtMy0xLTEtMA_6a976066-b26d-4aa8-b55b-a9dadd8d3101">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><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;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="i809038d6962540f18bd0b417106a9f55_D20180101-20181231" decimals="4" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzMtNS0xLTEtMA_0020e482-350f-4557-a264-398ad4bc8aa5">0.35</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="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzQtMS0xLTEtMA_665e2393-1dde-43ee-a34b-efd570be45c5">37</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="ida6e37838d504208943572dbc92ab92b_D20190101-20191231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzQtMy0xLTEtMA_9019e544-105f-496e-afbf-ecb9e05bbeac">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="i809038d6962540f18bd0b417106a9f55_D20180101-20181231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzQtNS0xLTEtMA_e9545bda-4c7b-4969-acf8-c6b730cd42a1">39</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="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzUtMS0xLTEtMA_8323d7b4-d7bb-49a6-bdf7-014800a128b1">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="ida6e37838d504208943572dbc92ab92b_D20190101-20191231" format="ixt-sec:duryear" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzUtMy0xLTEtMA_ebb15e79-76a6-4d2a-b658-44329f49860f">5.3</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="i809038d6962540f18bd0b417106a9f55_D20180101-20181231" format="ixt-sec:duryear" name="us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzUtNS0xLTEtMA_dce42fc1-c78b-4e62-9b10-1ceab122935f">5.4</ix:nonNumeric></span></td></tr></table></div></ix:nonNumeric><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%">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></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><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="#i1a430d3f39e74769965c1cc9f7e66842_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="i213f0cd800eb45df91d3019337d42282"><div style="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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzE4ODY_6e720165-393b-4113-a9bf-4a5876877527">19.62</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usdPerShare" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzE4OTY_5aad2f92-73d7-47b9-8bae-8459b404a0da">18.62</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usdPerShare" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzE5MTA_014198cf-5570-4061-bf92-4fb2c5fc7774">20.84</ix:nonFraction> in 2018.</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzE5Nzc_9a9fcb91-070f-4452-9996-08a698d4d93f">166,796,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzE5ODc_80626e6f-bebf-4410-b381-f81625ce0159">90,762,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIwMDE_52d43b93-addb-4db1-8af0-cc0e3760fe00">52,629,000</ix:nonFraction> in 2018. The total fair value of stock options vested was $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIwNjA_4f892131-c991-4af5-8fe3-0528f0d5e1fd">45,998,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIwNzA_eb7ff02b-54a3-4fc0-ad50-98cb2b70f9d1">38,974,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIwODQ_dd3a2ba8-5202-4ad5-8cef-905e2b5c8fb9">31,106,000</ix:nonFraction> in 2018.</span></div><div style="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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzM0MjY_d70989d5-2c65-48d9-a530-b7cf73b91cab" 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-bottom:5pt;margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2019</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="id2ec20935d9d4d07b547537940241758_I20191231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzEtMS0xLTEtMA_535165cc-f104-4ea1-8abf-dbce1e6e0cc8">150</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="id2ec20935d9d4d07b547537940241758_I20191231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzEtMy0xLTEtMA_bbc78860-c8ed-4d34-9e66-4ade2bef9366">48.63</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="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzItMS0xLTEtMA_470aa53c-110c-4fb4-94b7-65d0d65b07eb">446</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="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzItMy0xLTEtMA_a0f8c075-2938-4937-ba23-c1929781224e">52.09</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="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzMtMS0xLTEtMA_ba96f695-984f-4d7e-90d6-f73f55f8e83d">&#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="usdPerShare" contextRef="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231" decimals="2" format="ixt:zerodash" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzMtMy0xLTEtMA_3a8afc85-f44c-47c3-b6f3-7dc6c8d3d0c3">&#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%">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="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzQtMS0xLTEtMA_835a3eea-c181-4f92-96a2-9c5453ccc5c2">42</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="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzQtMy0xLTEtMA_93cbfa98-c199-4249-a253-b6c79cfec8ee">50.61</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, 2020</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="ib541eff2ba94440dbea39fc8fbf7e5de_I20201231" decimals="-3" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzUtMS0xLTEtMA_852962b0-0f8c-4513-ac85-cfb2ae61d25f">554</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="ib541eff2ba94440dbea39fc8fbf7e5de_I20201231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzUtMy0xLTEtMA_b28b6783-f035-4f7e-8828-3d51ec8f9862">51.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:#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:5pt;text-align:justify"><span><br/></span></div><div style="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 RSUs granted in 2019 was $<ix:nonFraction unitRef="usdPerShare" contextRef="i779443a03a8044f2ad85a8a7ef9d1010_D20190101-20191231" decimals="2" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzI2NTE_b9f94c93-10b8-492b-8f4b-746eb79dc86d">48.61</ix:nonFraction>. There were <ix:nonFraction unitRef="usdPerShare" contextRef="i0100324df77340559da96b293701bf79_D20180101-20181231" decimals="2" format="ixt-sec:numwordsen" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzI3Mjc_7ec2e1b1-c33c-4881-8e03-05f7e139c5ea">no</ix:nonFraction> RSUs granted in 2018. There were <ix:nonFraction unitRef="shares" contextRef="i4a55c180e4c04a52b6246037f9445c54_D20200101-20201231" decimals="-3" format="ixt-sec:numwordsen" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzI2Mzk_23bde921-2898-4c81-b875-cec9efd01c77"><ix:nonFraction unitRef="shares" contextRef="i779443a03a8044f2ad85a8a7ef9d1010_D20190101-20191231" decimals="-3" format="ixt-sec:numwordsen" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzI2Mzk_452dcae3-cdcf-4824-a577-a15d0e152d88"><ix:nonFraction unitRef="shares" contextRef="i0100324df77340559da96b293701bf79_D20180101-20181231" decimals="-3" format="ixt-sec:numwordsen" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzI2Mzk_f44ae901-f2bc-4bc3-94df-62ded62d72fe">no</ix:nonFraction></ix:nonFraction></ix:nonFraction> RSUs that vested in 2020, 2019, and 2018.</span></div><div style="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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="INF" format="ixt-sec:numwordsen" name="cgnx:NumberOfGroupsWithinEmployeePopulation" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIyNzE_48cacdf3-5792-4a3f-b2cd-a182946fce81">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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="2" name="cgnx:EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI0Mjg_fd9597b8-dc99-4dcd-934b-cb06aa2577e9">7</ix:nonFraction>% to all unvested options for senior management and a rate of <ix:nonFraction unitRef="number" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="2" name="cgnx:EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI0OTE_8c4b6aba-93be-424f-98a8-053363c2d34c">12</ix:nonFraction>% for all other employees. Each year during the first quarter, the Company revises its forfeiture rate. This resulted in an increase to compensation expense of $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI2NTM_b9466fa0-7b46-4bc0-aa38-5bf7504bfd56">1,787,000</ix:nonFraction> in 2020, a decrease to compensation expense of $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI3MDQ_ee827ada-450d-417c-8164-4b7ab858ccde">499,000</ix:nonFraction> in 2019, and an increase to compensation expense of $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI3NTY_44061e07-7a94-4601-8f2c-79cddf679ec6">1,283,000</ix:nonFraction> in 2018.</span></div><div style="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, 2020, total unrecognized compensation expense related to non-vested stock-based awards, including stock options and RSUs, was $<ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI5MDk_9f20361d-673d-4eec-ba01-96157132f2e6">51,825,000</ix:nonFraction>, which is expected to be recognized over a weighted-average period of <ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:duryear" name="us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI5ODI_660c362f-3093-4ab9-9cd2-0af497cf4017">1.7</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMwODU_5a115cf7-8165-4722-a346-9a1280f3c366">42,661,000</ix:nonFraction>, which includes credits of $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ShareBasedCompensation" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzQ0ODg_2521bff0-3a99-4d23-b6cb-8148bf4c951f">1,401,000</ix:nonFraction> relating to grants cancelled as a result of the Company's workforce reduction, and $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMwOTI_063dde73-3766-4cc2-a86b-a8ddbcf32d9c">6,569,000</ix:nonFraction>, respectively, in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMxMTc_8d960d60-14d3-476f-a472-917952754aab">45,589,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMxMjQ_dfd5d5b8-6790-43b3-a655-acfda9a9ec17">7,756,000</ix:nonFraction>, respectively, in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMxNTM_448e1177-dff6-4dc9-ba35-0d92700ae69d">41,090,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMxNjA_16b38e72-b5ec-4d5c-96e9-d7da54520bee">7,317,000</ix:nonFraction>, respectively, in 2018. No compensation expense was capitalized in 2020, 2019, or 2018.</span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzM0MTU_0a276cbe-3681-4d81-a916-312603d8d14f" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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="if426f384a9bb46cbacd084e8d71c197a_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzItMS0xLTEtMA_8d294452-82b1-4ae6-b47b-c8ee71b24ff1">1,365</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="i3f22b7eff3054cdc99db890d8f600218_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzItMy0xLTEtMA_7e2c4afe-9c85-448b-baa5-7afc9cea19ca">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><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="i4bb46d4ab7b349518f7b7d7470bab716_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzItNS0xLTEtMA_29553544-8145-4bca-b792-803ab5f4f277">2,447</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="i1db9dd2158be4fd2a250c3e922e31be2_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzMtMS0xLTEtMA_6489cace-7714-43eb-a7b9-705d8e2283b2">13,387</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="ifa6acb19879149b1ae589acfec1446b0_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzMtMy0xLTEtMA_3241a443-6a63-4d0f-a6fb-177b35e488de">15,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="usd" contextRef="ieed8f593cfe7487bb17f454efb335bdd_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzMtNS0xLTEtMA_a0553835-b410-4a5e-a0f2-a00c9d8c10a9">14,578</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="i462c024635b94c3bb4a833b35d0998ca_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzQtMS0xLTEtMA_daf7d33e-49a1-4a1b-b6eb-c3c2806bd098">27,909</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="icd5ea7b2dba043e39df4b54b2bfa446f_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzQtMy0xLTEtMA_db5eb107-58a1-420b-943d-2fbe3f488287">28,337</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="i2903f39accda4c9fbc44e47302e41e23_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzQtNS0xLTEtMA_e682af11-fe24-4deb-ac1a-572ff59d5a27">24,065</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzYtMS0xLTEtMA_398ebddc-2e98-4883-8af0-f5c44be15c15">42,661</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzYtMy0xLTEtMA_5ac16c7f-0290-4a85-a77e-4519a24fed76">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AllocatedShareBasedCompensationExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzYtNS0xLTEtMA_22ba929a-f046-4e90-b166-f7c8d5e58f15">41,090</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="i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzc0MQ_6e273630-b15a-4201-a1b2-d0a2081136bc" continuedAt="idefefe30fb354da5bf428fe95845e78b" 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="idefefe30fb354da5bf428fe95845e78b">Under the Company's Employee Savings Plan, a defined contribution plan, all U.S. employees who have attained age <ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" format="ixt-sec:duryear" name="cgnx:MinimumAgeToBeEligibleToDefinedContributionPlan" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzE1MA_6bd6f4f8-99de-4652-ba74-3a8e7952816b">21</ix:nonNumeric> may contribute up to <ix:nonFraction unitRef="number" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="INF" name="us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzE3NA_1f5db705-e0a9-46bb-a0bd-bf9ec94ad59d">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="INF" name="us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzM2NQ_4c79a1a0-f741-4631-bc20-1a6b9a4436d4">50</ix:nonFraction>% of the first <ix:nonFraction unitRef="number" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="INF" name="us-gaap:DefinedContributionPlanEmployerMatchingContributionPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzM4MQ_44fbc1c7-4cc4-481c-a35b-901282aa1fb8">6</ix:nonFraction>% of pay an employee contributes. Company contributions vest <ix:nonFraction unitRef="number" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="INF" name="cgnx:CompanyContributionsVestAtEndOfOneYear" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzQ0NA_9e3c7791-a3e5-4345-b3b0-4c1917526acb">25</ix:nonFraction>%, <ix:nonFraction unitRef="number" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="INF" name="cgnx:CompanyContributionsVestAtEndOfTwoYear" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzQ0OA_1bb8c50d-00ee-4447-a941-f8c581610d49">50</ix:nonFraction>%, <ix:nonFraction unitRef="number" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="INF" name="cgnx:CompanyContributionsVestAtEndOfThreeYears" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzQ1Mg_d240e1d2-8c5e-49d8-a54b-57f48f45e63f">75</ix:nonFraction>%, and <ix:nonFraction unitRef="number" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="INF" name="cgnx:CompanyContributionsVestAtEndOfFourYears" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzQ2MA_a30160db-895f-4bda-ae53-020f5aedd135">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:DefinedContributionPlanCostRecognized" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzU4OQ_92ead2e7-1b78-46c5-8e8f-8c528163676d">2,636,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:DefinedContributionPlanCostRecognized" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzU5OQ_44ce9067-8b08-41b3-ada3-7f8749eefa86">2,729,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:DefinedContributionPlanCostRecognized" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzYxMw_b7c6be7f-d16c-4930-a261-9381506a0757">2,540,000</ix:nonFraction> in 2018. Cognex stock is not an investment alternative and Company contributions are not made in the form of Cognex stock.</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="i1a430d3f39e74769965c1cc9f7e66842_172"></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="#i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:IncomeTaxDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzI2MDI_cf056330-ad31-440b-b63c-83f21746609b" continuedAt="i303cbec49374422b87a6c9b8c286cfe9" escape="true">Income Taxes</ix:nonNumeric></span></div><ix:continuation id="i303cbec49374422b87a6c9b8c286cfe9" continuedAt="ieb488c60ee474f68bd159b9b81d96d28"><div style="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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzYx_5bc158b3-763a-42a5-bd56-8644f2e0e791">39,425,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5Xzcx_0f63f285-076a-43bc-8779-8f798cc5969b">31,396,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5Xzg1_d559cf51-495b-4df0-926a-66c2487daff7">39,042,000</ix:nonFraction> in 2018. Foreign income before taxes was $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEyOA_6eb29710-7b8f-4f8d-aceb-4c80d3302611">147,486,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEzOA_c89bc6e7-1e13-432e-8796-5a9a3a1c8481">131,598,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzE1Mg_3e9e02d5-17a5-4f68-b942-8a61f8e83ae2">195,532,000</ix:nonFraction> in 2018. </span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzkzNjA_4b533ab1-71c0-4a5d-94b9-688f13d8d24e" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzMtMS0xLTEtMA_b3c21153-3908-4511-a326-5069cbdb5e8e">160</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzMtMy0xLTEtMA_e27700dc-3b2f-49bd-8987-8270379d4442">15,854</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CurrentFederalTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzMtNS0xLTEtMA_de931440-fe44-4767-92c9-10e61d26bf05">10,624</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzQtMS0xLTEtMA_be0e01a7-52d3-4820-a5d4-a0079e75f4b4">921</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzQtMy0xLTEtMA_71299a0c-9d60-4d2b-af76-8aa9c33422c0">2,108</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" name="us-gaap:CurrentStateAndLocalTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzQtNS0xLTEtMA_083d3f88-198a-41b5-a9c9-1e663161e21f">879</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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzUtMS0xLTEtMA_8bc25212-8f68-4e33-81ca-f300b7e87601">13,197</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzUtMy0xLTEtMA_086e92c5-8d9f-4dcc-98ed-149d56769931">30,670</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CurrentForeignTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzUtNS0xLTEtMA_5db5bfa3-5b50-4c05-a7ea-76d4d3059e5d">6,307</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CurrentIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzYtMS0xLTEtMA_9731c87d-7f30-4c31-b7c5-354d89d85d6c">14,278</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CurrentIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzYtMy0xLTEtMA_71cec671-5735-4ca7-8b58-cf8aeb389c13">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:CurrentIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzYtNS0xLTEtMA_97a6cc9d-f83b-4478-8d48-9aaf75cd0be6">16,052</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzgtMS0xLTEtMA_2387ded9-15ca-44d4-b771-ec349d6577d5">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzgtMy0xLTEtMA_3426ddd8-0275-49d5-844b-2dd8174e6175">352,808</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:DeferredFederalIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzgtNS0xLTEtMA_c014020d-d73d-4ff6-b3ff-ab11f09b5edd">1,271</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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzktMS0xLTEtMA_f483c8b1-ecac-41ee-8d4e-5a06d025333f">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzktMy0xLTEtMA_b93cf2c2-6f14-425c-b2fc-d91f5333c4d6">183</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" name="us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzktNS0xLTEtMA_13b3252e-5681-41af-b181-80177b05790e">554</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEwLTEtMS0xLTA_45a371c4-5ff7-4ae5-8ebb-8451bcaa1491">15,269</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEwLTMtMS0xLTA_fe029ab7-415a-4abf-ba76-df8968261202">442,494</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" name="us-gaap:DeferredForeignIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEwLTUtMS0xLTA_217fd87c-6d9e-42a0-a994-4c174c934502">28</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzExLTEtMS0xLTA_e99fdbc7-c6fd-4066-8c34-9ac57fe7af5a">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzExLTMtMS0xLTA_fe19c41e-8f08-4281-96f3-34894149e29d">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" sign="-" name="us-gaap:DeferredIncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzExLTUtMS0xLTA_f1dacb99-b682-4a4b-9f6f-c4e3f4741267">745</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEyLTEtMS0xLTA_63cd7217-1de2-40a4-9c3f-1b8963e283f9">10,725</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEyLTMtMS0xLTA_883e5666-ae90-40df-bf6c-79ec78809e83">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEyLTUtMS0xLTA_c0212818-4dbf-4ad9-a308-e56edc1a3a85">15,307</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></tr></table></div></ix:nonNumeric><div><span><br/></span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzkzNjM_8524e8f5-e9ac-4980-b69d-58e41c94c31e" escape="true"><div><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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="INF" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzItMS0xLTEtMA_9a648956-7aa5-4921-ba33-551e4a221758">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="INF" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzItMy0xLTEtMA_888cd496-82d6-4f78-99a7-ec9b6becfd54">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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="INF" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzItNS0xLTEtMA_f9e7ba43-5ed9-4e43-8d01-21623396a6cb">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzMtMS0xLTEtMA_23e09453-6321-48e4-ab7f-b6a3d3a48331">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzMtMy0xLTEtMA_3684d9a1-0c85-4028-93ac-ea5acbf05cbc">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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzMtNS0xLTEtMA_5e9da22e-a21e-40ef-88ac-342cadf37289">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: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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzQtMS0xLTEtMA_20666dbc-4965-489a-828c-ea96b350159a">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzQtMy0xLTEtMA_77e62b77-4b9b-4a30-8df4-0fa1568448b7">9</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzQtNS0xLTEtMA_35019f11-ef87-45b8-b35c-81e1f177daee">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzUtMS0xLTEtMA_891ad50b-f8a3-490a-9fac-905cf8febe58">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzUtMy0xLTEtMA_b6d37c5c-b732-437c-bb75-66bfcfad96bd">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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" format="ixt:zerodash" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzUtNS0xLTEtMA_c18110d5-4a5f-4ace-b544-a473e292583a">&#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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzYtMS0xLTEtMA_51184f4c-0966-49cd-9bad-1ba328677b07">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzYtMy0xLTEtMA_9ff6d6fa-47c1-4b72-8993-06bdbdd46d25">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:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="number" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzYtNS0xLTEtMA_07dd008c-4b69-49ed-ae57-ed245f06f97f">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 expense (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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzctMS0xLTEtMTU2Ng_0102e359-a42e-453d-9816-afef8e4b7c47">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" format="ixt:zerodash" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzctMy0xLTEtMTU2OA_da78b5c7-100d-4db5-b790-0758a7ad5e37">&#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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" format="ixt:zerodash" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzctNS0xLTEtMTU3MA_4f7298bb-f787-49d9-8c9f-261c9268ce98">&#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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzgtMS0xLTEtMTI2NjU_90663332-ce44-4307-8f46-10c080d00732">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:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" format="ixt:zerodash" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzgtMy0xLTEtMTI2NjU_57b9ef35-76fb-4c1a-903e-b0387ba839a3">&#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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" format="ixt:zerodash" name="us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzgtNS0xLTEtMTI2NjU_0518d2b3-4bdc-4a4e-8731-c6f2d27b8e3b">&#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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" format="ixt:zerodash" name="cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzktMS0xLTEtMA_f6e1c3ef-3fb9-45ce-86f4-3cff174d0b3c">&#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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" name="cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzktMy0xLTEtMA_28189a21-d82c-4219-9c8c-3d1b27f451c5">18</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" format="ixt:zerodash" name="cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzktNS0xLTEtMA_0a740528-f5dd-4467-a401-98e53535acb1">&#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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" format="ixt:zerodash" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEwLTEtMS0xLTA_09ab56e4-8089-4fb2-b17f-99b86ec82820">&#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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEwLTMtMS0xLTA_e4f2e11f-b0f3-4589-b1a7-eb89c74bf398">268</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" format="ixt:zerodash" name="us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEwLTUtMS0xLTA_51b9e03f-353b-4290-8522-08559ead3149">&#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%">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" format="ixt:zerodash" name="cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzExLTEtMS0xLTA_e66bbbb0-246c-4e3c-880d-774de67269cc">&#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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" name="cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzExLTMtMS0xLTA_0728f098-73c2-4f67-ad54-f82f3159d80e">214</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" format="ixt:zerodash" name="cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzExLTUtMS0xLTA_0a423f83-a42b-4747-952a-8d6306f8a5b8">&#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%">Discrete tax expense (benefit) related to Tax Act</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" format="ixt:zerodash" name="cgnx:EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTEtMS0xLTEyNjcy_36133ec1-bf50-4199-870c-e6bb07db04ee">&#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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" format="ixt:zerodash" name="cgnx:EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTMtMS0xLTEyNjcy_960d2f4e-3e6b-4e91-96ef-0391a7ee0da7">&#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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" sign="-" name="cgnx:EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTUtMS0xLTEyNjcy_63e41627-ff9f-49ec-881c-b1bf33a0233d">3</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 discrete tax events</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" format="ixt:zerodash" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEyLTEtMS0xLTA_e8b4a62c-ab4a-4ea5-affa-883a2dcde485">&#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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEyLTMtMS0xLTA_3a0519fa-3b12-4fee-bdf5-b4f91fba02bf">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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" format="ixt:zerodash" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEyLTUtMS0xLTA_27f954a6-5cde-4eb7-ab34-95c919e529d8">&#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%">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="number" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEzLTEtMS0xLTA_4e59fd7d-445f-442c-ab86-5fec6bfd4601">2</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEzLTMtMS0xLTA_2d6211f1-3cc2-4fc9-b17d-ab33fe5409ba">3</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEzLTUtMS0xLTA_81d62e4a-f742-40c8-ac6a-a81b6866688a">1</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;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTEtMS0xLTA_c65ffba5-ca6e-4fa1-9394-97df27b68a13">6</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"><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-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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTMtMS0xLTA_5200d333-4fa5-4758-b845-7063bd9b7f3a">25</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"><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-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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateContinuingOperations" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTUtMS0xLTA_6d4525c1-fc14-4c8d-bbc4-ac11be12fa8a">7</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"><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: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">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%">66</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="#i1a430d3f39e74769965c1cc9f7e66842_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="ieb488c60ee474f68bd159b9b81d96d28" continuedAt="if504c6ef43394dbfb07f705024c27e0b"><ix:nonNumeric contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" name="us-gaap:ScheduleOfChangeInAccountingEstimateTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzEzMzA_f9a19851-a57b-4b9b-8c32-51719484fb45" 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:13pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzMtMS0xLTEtMTM4NzQ_e96ef75e-91d0-4d05-9597-0299e18cd8cb">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="ifbdf0ae819594cb49f4c1e2f90ad10af_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzMtMy0xLTEtMTM4NzQ_3a727895-40ec-4c15-8ae3-c6e71935c256">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="idc4d65f03e5f4807a2e320e83cb6f52c_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzMtNS0xLTEtMTM4NzQ_18db5bd4-99b7-433e-af55-2b908a8853bc">&#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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzQtMS0xLTEtMTM4NzQ_276e3249-87db-46f8-ae12-ca2ddac2e44f">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="ifbdf0ae819594cb49f4c1e2f90ad10af_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzQtMy0xLTEtMTM4NzQ_3074a67b-05e0-4ca9-b21f-eb0c6a872078">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="idc4d65f03e5f4807a2e320e83cb6f52c_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxExpenseBenefit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzQtNS0xLTEtMTM4NzQ_2c724365-8083-4107-9bd0-67998fc592ff">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzUtMS0xLTEtMTM4NzQ_fdaf3a31-f3a1-4a7d-9ad2-ca9b87b45830">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="ifbdf0ae819594cb49f4c1e2f90ad10af_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzUtMy0xLTEtMTM4NzQ_b676762e-187a-4976-b4d4-80af31e8b1d1">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="idc4d65f03e5f4807a2e320e83cb6f52c_D20190101-20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzUtNS0xLTEtMTM4NzQ_1432c209-53ed-45c0-bcf1-32a8002db6de">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzgtMS0xLTEtMTM4NzY_4be1c994-b768-4c13-8f3e-570156abf1a2">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="ifbdf0ae819594cb49f4c1e2f90ad10af_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzgtMy0xLTEtMTM4NzY_b4c707cb-940a-4002-8067-3a3e94c4310e">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="idc4d65f03e5f4807a2e320e83cb6f52c_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzgtNS0xLTEtMTM4NzY_53ffa23d-89ff-4bd4-9c57-db35e53409ca">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzktMS0xLTEtMTM4NzY_66c88be9-b955-4e10-9d48-8cf2ef1cf0ce">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="ifbdf0ae819594cb49f4c1e2f90ad10af_D20190101-20191231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzktMy0xLTEtMTM4NzY_7dd9cf0f-fd08-4911-8fe1-68e267ccc8a7">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="idc4d65f03e5f4807a2e320e83cb6f52c_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzktNS0xLTEtMTM4NzY_55984a30-2fbf-4fb3-9169-d447bc7fbc3d">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:13pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzMtMS0xLTEtMTM4Nzg_f3fef900-d06f-4033-9adf-e00f32bf0ef9">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="ie91c97a2dae54d89aca19258376342cd_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzMtMy0xLTEtMTM4Nzg_26194317-71c4-499b-9b2b-14cdc344da50">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="i9585a4990b0841d78d4b36d1b378c43b_I20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzMtNS0xLTEtMTM4Nzg_e99cba7a-47ff-4b7f-a741-dc6b43b2489a">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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredIncomeTaxLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzQtMS0xLTEtMTM4Nzg_c7d34ce4-3487-4e0d-873c-13dd38ea9e78">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="ie91c97a2dae54d89aca19258376342cd_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:DeferredIncomeTaxLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzQtMy0xLTEtMTM4Nzg_65775b05-92a0-4d9a-947e-9c6434acc60f">&#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="i9585a4990b0841d78d4b36d1b378c43b_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredIncomeTaxLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzQtNS0xLTEtMTM4Nzg_a4899883-eec9-49d2-88c9-d909dd7c4134">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:13pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpmYWQ4YTIyODBlZjU0OGZiYWUyN2VhMmQ1NjI1MzcwOC90YWJsZXJhbmdlOmZhZDhhMjI4MGVmNTQ4ZmJhZTI3ZWEyZDU2MjUzNzA4XzMtMS0xLTEtMTM4ODA_270e430c-88a3-47f2-9e77-a0152421f595">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="ie91c97a2dae54d89aca19258376342cd_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpmYWQ4YTIyODBlZjU0OGZiYWUyN2VhMmQ1NjI1MzcwOC90YWJsZXJhbmdlOmZhZDhhMjI4MGVmNTQ4ZmJhZTI3ZWEyZDU2MjUzNzA4XzMtMy0xLTEtMTM4ODA_02610b83-4dd4-4dce-95ae-fb3576e5bc88">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="i9585a4990b0841d78d4b36d1b378c43b_I20191231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:RetainedEarningsAccumulatedDeficit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpmYWQ4YTIyODBlZjU0OGZiYWUyN2VhMmQ1NjI1MzcwOC90YWJsZXJhbmdlOmZhZDhhMjI4MGVmNTQ4ZmJhZTI3ZWEyZDU2MjUzNzA4XzMtNS0xLTEtMTM4ODA_5b41d5f9-8f7a-46a6-8bf2-e32207213a74">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-bottom:8pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There were no material differences to the Company's reported results in prior 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%;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%">The effective tax rate included a decrease in tax expense of $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzA5ODM_4cc95cf7-6a62-4ec0-998e-5621155e2ddd">12,788,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzA5OTY_346a800a-a7a5-4e88-8672-4f7266c98cd8">6,472,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzEwMTM_358cf073-74a3-4e0f-9443-f63bea05bb67">8,488,000</ix:nonFraction> in 2018 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%">In 2020, the Company recorded discrete tax items related to the final true-up of the prior year's tax accrual upon filing the related tax return. This included a tax benefit of $<ix:nonFraction unitRef="usd" contextRef="ic48912cbc17b4251b7d020048b72df79_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxReconciliationTaxSettlementsForeign" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzE1Mjk_a40c7dc5-e6fe-411f-b719-05f5ea9d31f9">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="ia73f3fc2b64c4e2582288e0adf3c57b1_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxReconciliationTaxSettlementsForeign" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzE3OTE_6e8b1e60-1f40-43dc-92ef-58231e3f4c35">3,267,000</ix:nonFraction> and smaller tax expense adjustments related to foreign tax filings of $<ix:nonFraction unitRef="usd" contextRef="i5a515bc5bae6415eab49241663c963be_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxReconciliationTaxSettlementsForeign" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzE4NjU_a5c9cc12-955a-4c4a-8348-55bcfeb5edb3">843,000</ix:nonFraction>.</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%">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. Management will continue to monitor this law and court rulings in Germany. </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%">67</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="#i1a430d3f39e74769965c1cc9f7e66842_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="if504c6ef43394dbfb07f705024c27e0b" continuedAt="i468c69e6a2224d359e9b51a9c2db2eeb"><div style="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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-5" format="ixt:numdotdecimal" name="cgnx:DeferredTaxAssetsForeignTaxStructureChange" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzI0ODY_8f7832ef-d874-49cc-bc38-3c24112d5b3a">437,500,000</ix:nonFraction> in Ireland based on the fair value of the intellectual property, that will be realized over 15 years as future tax deductions. From a United States perspective, the sale is 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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzI4NzI_9f707186-d160-48f0-86fe-5502b760e4b5">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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzMwMzY_543a91f1-71a6-47d1-95ba-ced473e95327">87,500,000</ix:nonFraction>. Management expects its current effective tax rate excluding discrete items to increase slightly 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="i011aed5572fd480ab06c7ea32ab87210_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzM0NDY_fcd84cf4-0ea0-484e-a6f2-c9eba0645f0b">28,528,000</ix:nonFraction>, which included a reserve of $<ix:nonFraction unitRef="usd" contextRef="i6190f02336a543c295b3b8bcc1483263_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefits" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzM0Nzk_79bc1f80-9f97-4453-bc2f-47ac2e39e517">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%">In December 2017, the Tax Cuts and Jobs Act of 2017 (Tax Act) was signed into law. In 2018, the Company recorded an increase in tax expense of $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3NDU_c5b107f1-0950-4db9-8597-531225b8e425">3,240,000</ix:nonFraction> from the write-down of its deferred tax assets primarily relating to guidance under the Tax Act regarding stock-based compensation. In 2018, the Company recorded a decrease in tax expense of $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3MDI_ed217f23-d021-48f7-988e-4575d1a1deec">11,028,000</ix:nonFraction> to revise its estimate of a one-time transition tax on unrepatriated foreign earnings resulting from the Tax Act, which resulted in a revised estimate for the one-time transition tax of $<ix:nonFraction unitRef="usd" contextRef="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3NTc_6e736e26-7967-417f-bf1a-401fd2da16ae">90,351,000</ix:nonFraction>. </span></div><div style="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 $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxReconciliationTaxSettlementsOther" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NjYwNzU_d1f64744-9ed1-4ab2-94b8-81be410ed23d">307,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxReconciliationTaxSettlementsOther" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE2Nzc_40a0352e-2f61-48a0-936c-8e933466864e">1,932,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxReconciliationTaxSettlementsOther" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE2OTA_1da5a04b-620d-4b63-b278-22de6a6e73c3">1,847,000</ix:nonFraction> in 2018.</span></div><div><span><br/></span></div><div style="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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:SummaryOfIncomeTaxContingenciesTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzkzNjQ_d62e4476-54a9-4af5-8650-032944e4adad" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefits" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzAtMS0xLTEtMA_9f4b16b8-4876-45f8-a89c-7a6fefe55f1f">7,294</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzEtMS0xLTEtMA_349df0d9-f0c5-4ff2-bcfc-3d7ad139b78e">199</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzItMS0xLTEtMA_7151f155-0fad-4d9b-82c3-17221e460b5f">5,259</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzQtMS0xLTEtMA_4ca6f233-1cf1-4d60-87fe-d21e16c9aaf6">1,161</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, 2019</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefits" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzUtMS0xLTEtMA_a086f346-fd82-4157-922b-118891f5d46d">11,591</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 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" name="us-gaap:UnrecognizedTaxBenefitsPeriodIncreaseDecrease" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzYtMS0xLTEtMA_ad3f6715-2d71-4ecd-bb8b-fd6f6760ebbc">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzctMS0xLTEtMA_4d9b739d-c886-46db-b823-b6193f7b70f1">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzktMS0xLTEtMA_c557ebf8-7a1b-49a9-b03c-10f97af17e33">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 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefits" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzEwLTEtMS0xLTA_3eb86661-38e8-492b-a24d-c72538191ae2">13,952</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: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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="0" format="ixt:numdotdecimal" name="cgnx:UnrecognizedTaxBenefitsGross" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY0MTM_c619d0ac-a91e-4b2d-adfb-742c33ac779f">15,285,000</ix:nonFraction> as of December 31, 2020, which included $<ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:LiabilityForUncertainTaxPositionsNoncurrent" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY0NTY_6059f7a5-ab7a-4796-a8df-86b1ee4cf7bc">14,257,000</ix:nonFraction> classified as a non-current liability and $<ix:nonFraction unitRef="usd" contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="0" format="ixt:numdotdecimal" name="cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY1MDE_f9c8195c-0303-488b-9633-ee6916635002">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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="0" format="ixt:numdotdecimal" name="cgnx:UnrecognizedTaxBenefitsGross" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY2NDk_c50267b8-7b3b-4060-bfb5-d216bfba116c">12,591,000</ix:nonFraction> as of December 31, 2019, which included $<ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:LiabilityForUncertainTaxPositionsNoncurrent" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY2OTI_4a050e6e-8ec8-437a-bdbd-752d8ce59690">11,563,000</ix:nonFraction> classified as a non-current liability and $<ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="0" format="ixt:numdotdecimal" name="cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY3Mzc_a03fef72-dd47-4b86-b95d-af8e9d5c9fea">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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY4NzU_d650a87e-d140-49f9-9576-68124731375c">1,332,000</ix:nonFraction> and $<ix:nonFraction unitRef="usd" contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY4ODI_52cdbfbf-1b6a-4ebf-a40c-de33212601bb">1,000,000</ix:nonFraction> as of December&#160;31, 2020 and December&#160;31, 2019, 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="cgnx:MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzczNTI_6cb5cbf5-0b12-4689-887e-1d33836d4334">1,900,000</ix:nonFraction> to $<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="cgnx:MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzczNTg_2c1ee316-f62c-4ea9-b068-788bf735c1fc">2,000,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, and China, and within the United States, Massachusetts. The statutory tax rate is <ix:nonFraction unitRef="number" contextRef="ide172e3d496d43dd8c49b008179d1944_D20200101-20201231" decimals="3" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3MTU_e7cdd5f2-c9ba-404d-a159-df2836ef4993">12.5</ix:nonFraction>% in Ireland and <ix:nonFraction unitRef="number" contextRef="i646f28e36e1549a997f83f579e5fcc4e_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3MjI_4ddf1e13-328d-412c-ac62-abb1863226b1">25</ix:nonFraction>% in China, compared to the U.S. federal statutory corporate tax rate of <ix:nonFraction unitRef="number" contextRef="iac4b14509e984788854e67cef6971927_D20200101-20201231" decimals="2" name="us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3Mjc_1301cccd-78d8-435e-86f8-a25eb6a40206">21</ix:nonFraction>%. These differences resulted in a favorable impact to the effective tax rate of <ix:nonFraction unitRef="number" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3Mzk_3a010ac0-8760-4e5f-b0b3-be2497409d57">6</ix:nonFraction> percentage points for 2020 and <ix:nonFraction unitRef="number" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3MzI_3410bc0e-8599-4367-9e1c-3efa5da7dfe2"><ix:nonFraction unitRef="number" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="2" sign="-" name="us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3MzI_e3c7b89f-ae01-4e74-8f91-5e7b2b19fbeb">9</ix:nonFraction></ix:nonFraction> percentage points for both 2019 and 2018. 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></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%">68</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="#i1a430d3f39e74769965c1cc9f7e66842_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="i468c69e6a2224d359e9b51a9c2db2eeb"><div style="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 2019 remain open to examination by the Internal Revenue Service ("IRS") and various state taxing authorities. The tax years 2016 through 2019 remain open to examination by various taxing authorities in other jurisdictions in which the Company operates. The Company has recently been notified that it is under audit by the IRS for the tax year 2017. Management believes the Company is adequately reserved for this audit. 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NjczNjk_e0540182-fc7f-4d0f-9eee-484e4c85b08a">340,000</ix:nonFraction>, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NjczNzQ_ba22f781-ddca-4e30-9893-b31b15818053">116,000</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NjczODM_6ce9e7f1-a457-4253-983b-b59615a0eb41">91,000</ix:nonFraction> in 2020, 2019, and 2018, 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxesPaidNet" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2Njc0NjE_a6888d8f-6afe-4c6a-ac0e-33ae321fbc64">33,695,000</ix:nonFraction> in 2020, $<ix:nonFraction unitRef="usd" contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxesPaidNet" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2Njc0NzM_8165ee01-aebb-4885-b664-d104f5ea8e5f">13,443,000</ix:nonFraction> in 2019, and $<ix:nonFraction unitRef="usd" contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:IncomeTaxesPaidNet" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2Njc0ODk_d403e10c-7c38-421d-877c-8f3dd763960f">41,430,000</ix:nonFraction> in 2018.</span></div><div style="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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzkzNTc_7cace371-6463-48a1-9eec-0adaf9279afd" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">Non-current 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzMtMS0xLTEtMA_8a3bb59b-afb2-4b4b-b4fa-aed64c76ee8f">424,156</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzMtMy0xLTEtMA_d0431a49-088c-43a7-9235-a67a88584ba4">437,500</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzQtMS0xLTEtMA_89e80d86-46cc-4c28-b086-6c07085d6d75">13,294</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzQtMy0xLTEtMA_0bbbab7f-3774-4440-bfc9-54091148978e">15,042</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzUtMS0xLTEtMA_1a088c51-295c-49ed-a9c9-a195bf078679">10,171</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzUtMy0xLTEtMA_62d2b928-35c1-4b97-8704-26dce32d787e">8,491</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsInventory" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzYtMS0xLTEtMTA1NjE_f3aea179-c0fc-43ce-814d-df35a48438cf">5,976</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsInventory" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzYtMy0xLTEtMTA1NjE_4f2dae64-09ec-456a-885e-c300b7194c82">2,934</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzctMS0xLTEtMTA1NjE_fa3a0396-f5ab-4dc3-a37b-a17e2dc9d84d">4,932</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzctMy0xLTEtMTA1NjE_858d7dfc-1eb0-4e76-b2aa-400a076f985b">1,609</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:NoncurrentDeferredTaxAssetsDeprecation" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzgtMS0xLTEtMTA1Njg_472bf66d-d67b-42e1-a3f2-3b34563235ec">4,211</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:NoncurrentDeferredTaxAssetsDeprecation" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzgtMy0xLTEtMTA1Njg_29579481-cffd-42ad-9289-8ae0cbf0283b">3,522</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzYtMS0xLTEtMA_d6c2b30b-9728-49e4-8b92-5e961be7b21c">602</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzYtMy0xLTEtMA_ba288d27-ac66-4dcd-bdf6-12e3dc188627">4,286</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxAssetsOtherNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEwLTEtMS0xLTA_c0708724-29db-4eac-9ddb-5ee5630ec362">4,342</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxAssetsOtherNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEwLTMtMS0xLTA_d9d1b6c9-9eef-4cd0-87f4-a9c027522db7">3,550</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 non-current 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzExLTEtMS0xLTA_f1595f80-0c0d-442e-8091-10d2d1028b3f">467,684</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzExLTMtMS0xLTA_3ab1f4fd-4f97-4ba3-8902-e57d6e488726">476,934</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEyLTEtMS0xLTA_68d2e9ba-d806-4e8c-9f51-570fafcf5f4d">8,568</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEyLTMtMS0xLTA_488af5a3-7fec-408c-b227-4f7a80b36312">7,312</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsLiabilitiesNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEzLTEtMS0xLTA_e0b4cc65-bfba-471f-83e3-f8de5e84f350">459,116</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsLiabilitiesNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEzLTMtMS0xLTA_4d62b0f4-20d0-4432-ae44-b902ffa65595">469,622</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: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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-current 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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzE2LTEtMS0xLTA_df3aec38-f425-4cd5-b922-1ff7ccf1f687">339,325</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzE2LTMtMS0xLTA_f6ef5269-9685-491c-8f60-f8958213f7f5">350,000</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%">Other GILTI tax basis differences</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" name="cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzE3LTEtMS0xLTA_4fd196df-df68-4528-89d4-2da4f77033c4">39</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzE3LTMtMS0xLTA_f3c6001c-67bd-41e4-80b9-3779533352e6">2,446</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></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:#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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxLiabilitiesWithJurisdictionalNettingGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzIwLTEtMS0xLTA_a418372e-4b40-48f2-bbc8-9c80ba6e5cf2">339,364</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: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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="cgnx:DeferredTaxLiabilitiesWithJurisdictionalNettingGross" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzIwLTMtMS0xLTA_5b1acf34-73fe-4af4-80be-033fae7f9eb5">352,446</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></div></ix:nonNumeric><div style="margin-top:5pt;text-align:justify"><span><br/></span></div><div style="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, 2020, the Company had a valuation allowance for state research and development tax credits of $<ix:nonFraction unitRef="usd" contextRef="ie355c14ef9d34a27b2d42fbc0aa3a07d_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsValuationAllowance" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzgwNDc_108227d6-e4bf-4431-a1f7-354ebaaa684c">8,568,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, 2020, the Company had state research and development tax credit carryforwards of $<ix:nonFraction unitRef="usd" contextRef="id6f2d6204d6d4481aa38f21288abe631_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5Xzg0MDA_7db31a26-17e2-4ad1-a3a1-229eafe3379e">11,361,000</ix:nonFraction>, net of federal tax, which will begin to expire for the 2020 tax return.</span></div><div style="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 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%">69</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:EarningsPerShareTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzY2OQ_4ecef9e9-8931-404f-ad1b-877aff3317a1" continuedAt="i08da661ae508410099086814688a03dc" escape="true">Weighted Average Shares</ix:nonNumeric></span></div><ix:continuation id="i08da661ae508410099086814688a03dc"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzY3Ng_bccc745e-09d8-4bad-8e54-3b5ea09b6e2c" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzItMS0xLTEtMA_30b10eff-f06b-4080-9627-64e75017881e">173,489</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzItMy0xLTEtMA_b1c197d0-425a-4147-8154-b9cc9bdd1f35">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfSharesOutstandingBasic" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzItNS0xLTEtMA_929c5f5b-7193-4a64-a563-2b98f3711dce">172,333</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzMtMS0xLTEtMA_1fd83223-ef09-4cfe-bbf1-dc420038bab3">3,103</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzMtMy0xLTEtMA_cd3fed38-6471-43aa-bda8-62c3d97cd01c">4,075</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzMtNS0xLTEtMA_a8183ec5-9cb0-45eb-b76c-4d8f7bc1071a">5,073</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzQtMS0xLTEtMA_3f43e5f8-1638-4f84-9b52-2abb4a361b33">176,592</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzQtMy0xLTEtMA_f4231ca4-44e8-4242-9843-37672aab9f13">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><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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzQtNS0xLTEtMA_4bb594c8-483d-4bd7-acd3-942e30b29564">177,406</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:9pt;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="i7d5054231975477bbc455390b1195587_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzEzNA_93ad0a08-0ab7-432b-9980-f6ea1a5218c5">4,371,194</ix:nonFraction>, <ix:nonFraction unitRef="shares" contextRef="ib6eaadfb2aab4fa68a92113aa083ed66_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzEzOA_732aed8e-bc12-4c29-8f5b-47b119454e72">5,735,608</ix:nonFraction>, and <ix:nonFraction unitRef="shares" contextRef="i77bd997d9cd240a0a39403e13f7fa372_D20180101-20181231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzE0Ng_bfdc1ac1-1418-4043-8051-9365c992e341">2,650,164</ix:nonFraction> shares of common stock, on a weighted-average basis, were outstanding in 2020, 2019, and 2018, 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="i4d22de0a070640c0969df0023f0d5bd4_D20200101-20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzEwOTk1MTE2Mjg0ODk_8433fdba-6efa-4167-979b-d93a6b3301cc">3,826</ix:nonFraction> and <ix:nonFraction unitRef="shares" contextRef="i91547104c6e54802adc08015c4e816c4_D20190101-20191231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzM5MQ_11503609-6d62-41ec-817d-68be8cb19783">13,092</ix:nonFraction> shares of common stock, on a weighted-average basis, were outstanding in 2020 and 2019, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive. There were no anti-dilutive restricted stock units outstanding, on a weighted-average basis, in 2018.</span></div></ix:continuation><div id="i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:SegmentReportingDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzEwMDg_91959e3f-70a9-41d7-a36c-477a9b257755" continuedAt="iadf50e19731b4621bc588cfaec6b7cfb" escape="true">Segment and Geographic Information</ix:nonNumeric></span></div><ix:continuation id="iadf50e19731b4621bc588cfaec6b7cfb" continuedAt="ib0d9587fd9bf449c976c9d3b2027810e"><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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="INF" format="ixt-sec:numwordsen" name="us-gaap:NumberOfReportableSegments" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5Xzc0_437c4463-a073-4d98-bfa5-d7dea2d3b85c">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzEwMDQ_07057317-47f3-40dd-93ab-34f3703855db" 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2020</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="i0c04c5967faf43108a2b44e1eb1467ba_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzItMS0xLTEtMA_b1d5f96b-1d57-4552-84f8-876475847378">280,205</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="ibfe6673ddcfd4beda048b11f578ced24_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzItMy0xLTEtMA_3d165038-e1db-4d88-ba7f-07dc0396a158">208,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:#cceeff;padding:2px 1pt 2px 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="ib9cc7499227e47a1bce0663b99b3a27a_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzItNS0xLTEtMA_9f96aa88-987c-4195-84dc-6b07d0edd951">168,287</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="i3c10e6816b864f37a86cb0f6bb0735a9_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzItNy0xLTEtMA_55774339-a68f-4ce6-8e71-26ed12967eea">153,741</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzItOS0xLTEtMA_d27751c1-6ace-4f11-ab29-93e3f012f77f">811,020</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="iacfa50daa2fe4c539ad33435ea3b8a08_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzMtMS0xLTEtMA_f34296ce-f8de-4315-bc18-cd7e3634882d">60,911</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="i5df31456d9734b238cf6d82c794debfd_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzMtMy0xLTEtMA_3db56d76-9a8c-4ca1-a64c-a4aba86981dd">20,014</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="i00ca102b165c4c3db45dab357f1bec1a_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzMtNS0xLTEtMA_7e0b1605-b44b-4f2e-abef-00ee17eb2fa0">1,278</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="i648bad067bdc4d4489358d8b681752f7_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzMtNy0xLTEtMA_4e9f026a-4497-4a88-995d-1358f7d01d59">4,764</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="i2929afbc60be4803907a61e4c5f55328_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzMtOS0xLTEtMA_5111858d-e265-4fe7-8502-feb7d99ce418">86,967</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, 2019</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="i746a867e03db40d2ba017800c468fef6_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzUtMS0xLTEtMA_ce8cfd5a-da34-4f55-9f07-8b5bbc7a250b">247,689</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="i2455679b0dc24386ae718a31db1121f5_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzUtMy0xLTEtMA_008499d3-cba0-4f1b-8f41-c4c48c8877c0">227,738</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="i3c0cc26b301d41ec94472b653c04964d_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzUtNS0xLTEtMA_954303f4-df32-40b9-af6f-8ffec5466388">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="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="i5fdf4bf4bded45cbbbb2b5fe9674984d_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzUtNy0xLTEtMA_6aafeb06-68f2-4203-ae17-e3a9c652e63a">135,137</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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzUtOS0xLTEtMA_b3eff411-ace3-47e8-8b3b-cd3e4dc95afb">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 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="ib2628019e5884269a64b6816274d0949_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzYtMS0xLTEtMA_b1d2c686-f219-4361-abc2-4f019c2bbf58">68,496</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="i3a5907b6d38040178c89577a865ccdd9_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzYtMy0xLTEtMA_0600b670-5dfa-43c5-ab4e-3607f83d0110">21,691</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="id26bbc6a4fce4ee4b4844c551ffbcd52_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzYtNS0xLTEtMA_9ab8be4d-4373-4bae-bf03-9727cc3628ab">1,487</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="i1f2df605085e4c16b8cb6bae2c82dc17_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzYtNy0xLTEtMA_f07c63ff-dff9-4769-8075-cc3d07af1c62">3,602</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="i75e8b9e5dee441478b9993822d16dbea_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzYtOS0xLTEtMA_abd1d8cc-528a-4724-ac50-b41794d26ab2">95,276</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, 2018</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="i52bc079d60364e258cd8c95018302d13_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzgtMS0xLTEtMA_68df5c73-824e-4577-b874-14a0218f99f5">231,760</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="i0f9a6d89f1af40dab151c1916512c5a3_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzgtMy0xLTEtMA_9f0f7688-1686-400c-91c1-4c4176808dfc">311,914</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="iee1584fb047e4cd0aadbe377ee63edb0_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzgtNS0xLTEtMA_5a8a23a3-6de8-4d8c-898c-7de75ef9f5f2">123,708</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="i3e5a7c3891874475803e5cc3eff8e278_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzgtNy0xLTEtMA_071503c6-acf3-4d16-bba5-fb3de98b7d7b">138,956</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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzgtOS0xLTEtMA_35bcd067-c60d-4f8e-89e3-a8e2979fcc64">806,338</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="ifafb1a8d25934dc08c31868b6bcbe384_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzktMS0xLTEtMA_c483c876-252a-4312-89f1-11ca0d9cae18">67,156</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="iab0087b78f23431ca5626d7b81c5b2e7_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzktMy0xLTEtMA_e59d6b95-20f4-48a6-8cb3-93f02a8f3cdf">23,948</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="ibc01324d910d4a5f891ff127e62379a9_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzktNS0xLTEtMA_23c986f8-d8c9-4c81-b738-9f678d75a560">1,482</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="iba687ef314c646918abb65b1eeb24670_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzktNy0xLTEtMA_76af2cf5-d304-4be0-929e-2f8582d70a20">2,735</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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzktOS0xLTEtMA_19ad9522-e5a4-4bc0-911b-b01d59d4b5cb">95,321</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></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%"><ix:continuation id="ib0d9587fd9bf449c976c9d3b2027810e">Revenue is presented geographically based on the customer&#8217;s country of domicile. Revenue from a single customer accounted for <ix:nonFraction unitRef="number" contextRef="i34d8f3c69efc42209391814f2a19744e_D20200101-20201231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzcxMQ_6862abc9-5206-4ab4-947a-5534a4b17dbe">13</ix:nonFraction>% and <ix:nonFraction unitRef="number" contextRef="i5fa2c3db08364cf9bd07608173af36a1_D20180101-20181231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzcxOA_0149da40-3c39-472d-83d7-a66f574f5470">15</ix:nonFraction>% of total revenue in 2020 and 2018, 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="ibffce964090a497c887ee131bacc1fd5_D20200101-20201231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzgyNw_ea4afae8-d16d-480b-bb9d-c3e06eccd13a">20</ix:nonFraction>%, <ix:nonFraction unitRef="number" contextRef="i65add4e3d5b64520a77634d4325ac6ae_D20190101-20191231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzgzMQ_2c4841d2-55a9-46dd-bfb4-20634bf34618">24</ix:nonFraction>%, and <ix:nonFraction unitRef="number" contextRef="i026f4bd009c043c0862c4af3db857458_D20180101-20181231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzgzOQ_f1537c8a-e53d-406c-bd8f-070fa653d209">30</ix:nonFraction>% of total accounts receivable as of December 31, 2020, 2019, and 2018, respectively. In 2020, a second customer accounted for <ix:nonFraction unitRef="number" contextRef="i3181f39a9ece4d42a19fcf211f42e203_D20200101-20201231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzEwOTk1MTE2MzA4ODE_fc9b7f40-9fb6-4ee7-a237-67a89bb648f4">14</ix:nonFraction>% of total revenue. Accounts receivable from this second customer accounted for <ix:nonFraction unitRef="number" contextRef="ief4089b8c7b34be5b00f1b2f4403ceed_D20200101-20201231" decimals="2" name="us-gaap:ConcentrationRiskPercentage1" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzEwOTk1MTE2MzA4OTA_1577473e-5f3c-4df8-a412-fd47d3632cbd">19</ix:nonFraction>% of total accounts receivable as of December 31, 2020.</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%">70</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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: Business <ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:BusinessCombinationDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzU4MzM_33d9e694-a50f-46a2-ba58-5956f4af28ff" continuedAt="i7e63391f42624acdb01da97e4395c718" escape="true">Acquisitions</ix:nonNumeric></span></div><ix:continuation id="i7e63391f42624acdb01da97e4395c718" continuedAt="ie43cc7cbf931481aafe0c6d027f53262"><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="i9f1cef1658d7425f8fb46c98ade30cb0_D20191016-20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationConsiderationTransferred1" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzExMTI_d039c4ea-1933-406a-8f3e-07cf2f46fb21">193,638,000</ix:nonFraction> included cash payments of $<ix:nonFraction unitRef="usd" contextRef="i9f1cef1658d7425f8fb46c98ade30cb0_D20191016-20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsToAcquireBusinessesGross" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzExNDE_52c15362-75be-46fb-aef5-54f950808531">170,602,000</ix:nonFraction> 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 $<ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationContingentConsiderationLiability" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEyMjA_b6271496-6e6e-4829-8dfc-3ff2f8dddb72">24,040,000</ix:nonFraction> that may become payable on the fourth anniversary date of the closing, contingent upon continued employment of key talent, and will be recorded as compensation expense over this four-year 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:400;line-height:120%">Sualab's intellectual property, engineering expertise, and market coverage are expected to increase the Company's existing deep learning capabilities. Combined with intellectual property acquired from ViDi Systems S.A. in 2017, the Company is now a leading provider of deep learning-based industrial vision software. </span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzU4MzA_5e6c619c-477d-40bc-a826-abbfadf9acd0" 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 purchase price that was not related to employment was allocated as follows (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:11pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:85.263%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:12.537%"></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%">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: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="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzAtMS0xLTEtMA_5c37b47b-b282-4834-b518-666211831b60">3,691</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%">Current 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:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzEtMS0xLTEtMA_c08a545d-6a8e-4f73-88fa-34df40ff8d8e">9,487</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%">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:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzItMS0xLTEtMA_88629019-06a5-4d0a-ad3b-c6ed96d0ad1c">1,200</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%">Inventories</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzMtMS0xLTEtMA_04e0acf7-7d99-4e94-aae8-93694d08b693">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:10pt;font-weight:400;line-height:100%">Prepaid expenses and other current 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="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzQtMS0xLTEtMA_08f6df14-6bde-48b6-a371-99a379119c65">252</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%">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:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzUtMS0xLTEtMA_15853727-df58-48d1-9700-9c9a4bad3356">726</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%">Operating lease 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="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzYtMS0xLTEtMA_22967021-ce77-4d02-9857-56f93fe4ce1a">2,792</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%">Deferred income tax asset</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzctMS0xLTEtMA_ff20b439-f083-4301-9a81-c4df237152fb">3,087</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%">Other 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="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzgtMS0xLTEtMA_a06c9ad7-d0f1-4e8f-987f-f6d11c1745e1">513</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%">Accounts payable</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzktMS0xLTEtMA_8242c0b7-125b-473c-ba98-8f674016a1db">28</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%">Accrued 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%">(<ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzEwLTEtMS0xLTA_edb08041-b231-40e0-99b0-21ee9c28ced7">2,633</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%">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:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" name="cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzExLTEtMS0xLTA_0ef8ec56-04d5-4bfb-b2a4-4028fa76b33b">764</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%">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:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" name="cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzEyLTEtMS0xLTA_895a3f89-9c0d-4df9-9927-ffafd149c343">448</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%">Non-current operating lease liabilities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzEzLTEtMS0xLTA_8afa1ed3-1f50-4fac-b1f9-ab3e69be5a96">2,344</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%">Deferred income tax 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:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE0LTEtMS0xLTA_3a6d4a95-ea6c-46e1-811b-350d0302deda">7,926</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%">Other liabilities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE1LTEtMS0xLTA_cfe0df65-bc3a-4389-a514-b0c147ffe01d">10</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%">Completed technologies</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i53c699b5269249168914134a4dba2402_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE2LTEtMS0xLTA_a97dfdc0-fe13-47c1-b6bd-4f23d5082a6b">18,300</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%">In-process 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="if17d8ab6bbd442cebb0469b4030f8993_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE3LTEtMS0xLTA_a20b1385-7837-4360-8a55-d290ccd80c8a">8,200</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%">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="iab276190f0f64ca79a123e6fbc3e0f84_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE4LTEtMS0xLTA_347cad1b-570f-438d-8593-d05302df6fc2">5,800</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%">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="i3feb9908ffcc411ca51ca9428c2087d7_I20191016" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE5LTEtMS0xLTA_e7f41cd9-ae31-403f-8d63-23f3a1aeb90b">340</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%">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="i90630e79dfaa43649fce5b15a9b58931_I20191016" decimals="-3" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzIwLTEtMS0xLTA_d4c0745e-6800-4300-9f07-f333190700b3">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;text-align:left;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Goodwill</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:Goodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzIxLTEtMS0xLTA_61bce48e-1624-46f6-885d-54269179c601">129,138</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 25.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%">Purchase price</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="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzIyLTEtMS0xLTA_7ab5d801-7d07-4408-a7d4-694dfa8bb36d">169,598</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><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 completed technologies, in-process technologies, customer relationships, trademarks, and non-compete agreements are included in "Intangible assets" on the Consolidated Balance </span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Sheet. The completed technologies are being amortized to cost of revenue over <ix:nonNumeric contextRef="i49224b955c854388a485ddf240f6b6c2_D20191016-20191016" format="ixt-sec:durwordsen" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzIwOTc_ce1cbfeb-9cfa-4969-a396-418631f8b195">eight years</ix:nonNumeric>, the customer relationships are being amortized to SG&amp;A expenses over <ix:nonNumeric contextRef="i9323aa33b7ba4726a2ca36589f0a5e3e_D20191016-20191016" format="ixt-sec:durwordsen" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzIxNzA_9866a35a-2643-40f9-9adf-35fc6293e91e">seven years</ix:nonNumeric>, the trademarks are being amortized to SG&amp;A expenses over <ix:nonNumeric contextRef="i9f4951f283f745dd9d4fdca84cb3d759_D20191016-20191016" format="ixt-sec:durwordsen" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzIyMzE_0fda6423-3aa4-4e90-ac68-2f89245a4e5b">two years</ix:nonNumeric>, and the non-compete agreements are being amortized to RD&amp;E expenses over six to <ix:nonNumeric contextRef="i2821a398bffd46768fe52ad96d602eeb_D20191016-20191016" format="ixt-sec:durwordsen" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzIzMTU_7a69f1a5-ee6c-4f78-b8de-b95d770a751b">seven years</ix:nonNumeric>. </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The in-process technologies were completed in the fourth quarter of 2020 and are being amortized to cost of revenue over <ix:nonNumeric contextRef="i1ef9b43f5b59456bb824e0eda27daf6e_D20191016-20191016" format="ixt-sec:durwordsen" name="us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEwOTk1MTE2NDUwNjQ_dcb8dd31-e8a9-41d7-948c-0d9e632f910c">six years</ix:nonNumeric>. </span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The portion of the acquired goodw</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">ill deductible for tax purposes is $<ix:nonFraction unitRef="usd" contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzI1MTc_9020ad88-6dfd-4bb0-b408-d716dd3c0a05">104,609,000</ix:nonFraction>.</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:120%">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="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEwOTk1MTE2NDM4MTE_8dacc23e-3864-402c-a21c-4cc0e80b5e3c">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, </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%">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="#i1a430d3f39e74769965c1cc9f7e66842_7">Table of Contents</a></span></div></div><ix:continuation id="ie43cc7cbf931481aafe0c6d027f53262"><div style="text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">and customer relationships acquired from Sualab were impaired in the amounts of $<ix:nonFraction unitRef="usd" contextRef="i6e84999093c84481a74e39726977d099_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEwOTk1MTE2NDM4MjU_feea71ee-978f-44eb-9ed5-8022d333bdbe">10,070,000</ix:nonFraction>, $<ix:nonFraction unitRef="usd" contextRef="i2ec5ea0b1ca4492e80d0a8603b4039d2_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEwOTk1MTE2NDM4MzA_a81a8a92-8df4-44d7-8f86-459d40d3b75d">5,900,000</ix:nonFraction>, and $<ix:nonFraction unitRef="usd" contextRef="ib4a1793dd0e94c0b9920e9fa24b518b4_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEwOTk1MTE2NDM4Mzk_289f4ce0-6306-4bb7-b076-c3f462939104">3,382,000</ix:nonFraction>, respectively. </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%">This transaction was accounted for as a business combination. Pro-forma information is not presented because it is not significant. Revenue and earnings since the date of the acquisition included in the Company's Consolidated Statements of Operations are also not presented because they are not material. Transaction costs were immaterial and were expensed as incurred.</span></div></ix:continuation><div style="text-align:justify"><span><br/></span></div><div id="i1a430d3f39e74769965c1cc9f7e66842_2029"></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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:RestructuringAndRelatedActivitiesDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzODY0_a1cc34d2-1bcc-4cdc-9f31-3a6e27e127a5" continuedAt="i8af25a3cf3154f4fa08bb15047b132ad" escape="true">Restructuring Charges</ix:nonNumeric></span></div><div style="text-align:justify"><span><br/></span></div><ix:continuation id="i8af25a3cf3154f4fa08bb15047b132ad" continuedAt="i840c6e2e6b394af4836a47df33c096fc"><div style="text-align:justify"><span style="background-color:#ffffff;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 </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonFraction unitRef="number" contextRef="ib391e5eb31594e308bef2a25810dbf65_I20200526" decimals="2" name="us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent" scale="-2" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzMjA4_adf0ee01-6fd1-4a06-a898-c3c90da22299">8</ix:nonFraction>%</span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> and office closures. The Company recorded restructuring charges from these actions totaling </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">$<ix:nonFraction unitRef="usd" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringCharges" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzMjUw_404d57a0-2195-40cc-927e-6e2d2dab5481">15,924,000</ix:nonFraction></span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> in 2020 which are included in &#8220;Restructuring charges&#8221; on the Consolidated Statements of Operation</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">s. 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.</span></div><div style="text-align:justify"><span><br/></span></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfRestructuringAndRelatedCostsTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzODY1_415c2a9c-196c-49a1-ada3-6afa097cd599" escape="true"><div><span style="background-color:#ffffff;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="margin-bottom:6pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="i3dd19d64ad784899a5163158c879090b_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6ODJlMTA1MTMwYTIzNGQzNmI0ZGU1NGIzZTVkMWYzMWQvdGFibGVyYW5nZTo4MmUxMDUxMzBhMjM0ZDM2YjRkZTU0YjNlNWQxZjMxZF8xLTMtMS0xLTM1Mjg_c6dc64a7-25c7-4b52-9c09-4aadee5d4294">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="ibf69a777edc9439f8408d65906e118f2_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6ODJlMTA1MTMwYTIzNGQzNmI0ZGU1NGIzZTVkMWYzMWQvdGFibGVyYW5nZTo4MmUxMDUxMzBhMjM0ZDM2YjRkZTU0YjNlNWQxZjMxZF8yLTMtMS0xLTM1MzY_0ae6f543-07c7-4098-af97-01857e7237a3">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="i1014d0429e234545a0da021351ef7a26_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6ODJlMTA1MTMwYTIzNGQzNmI0ZGU1NGIzZTVkMWYzMWQvdGFibGVyYW5nZTo4MmUxMDUxMzBhMjM0ZDM2YjRkZTU0YjNlNWQxZjMxZF8zLTMtMS0xLTM1Mzg_ad8f9003-1bc8-4813-a3de-74e8fc3bc14e">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6ODJlMTA1MTMwYTIzNGQzNmI0ZGU1NGIzZTVkMWYzMWQvdGFibGVyYW5nZTo4MmUxMDUxMzBhMjM0ZDM2YjRkZTU0YjNlNWQxZjMxZF80LTMtMS0xLTM1NDA_fa015f0e-4de9-4220-b3f7-2cf181f28b26">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="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="background-color:#ffffff;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 </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:nonFraction unitRef="employees" contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" decimals="0" name="us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminated" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzNDMw_654205e2-12d3-4f7e-87c5-fd1b3d4c71f7">181</ix:nonFraction></span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> 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 b</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">enefits, 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="background-color:#ffffff;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 recognize</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">d in the second quarter of 2020 when th</span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">e Company ceased using the property for economic benefit. </span></div><div style="margin-top:9pt;text-align:justify"><span style="background-color:#ffffff;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:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfRestructuringReserveByTypeOfCostTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzODY2_7ed09b4c-0481-490c-b2a6-3e2e4f8dbf5c" escape="true"><div style="margin-bottom:16pt;margin-top:9pt;text-align:justify"><span style="background-color:#ffffff;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="margin-bottom:6pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="ib2ec5da1c598442e83cb678d4c0703a7_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8xLTEtMS0xLTM1OTQ_f43d0a27-b95c-414e-b13c-0eead7044920">&#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="i58b0269806a34ecf901f561c702ca253_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8xLTMtMS0xLTM1OTQ_b14bb6ef-05fc-41e2-9459-afad18fdf821">&#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="i74ff1e1493a0418daa710e42429847e6_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8xLTUtMS0xLTM1OTQ_ccc8cac9-6f35-42f2-9a8e-bf5a33d21e8f">&#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="i15e487b1cb144371b2d581e8b6c32c6c_I20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8xLTctMS0xLTM1OTQ_7670a945-9058-4bb0-8d83-3a80a8a28984">&#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="i697b402587d640b29a6131eec6eee921_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8yLTEtMS0xLTM2MzA_06976ccb-7576-4f8f-ad93-5663b23cfd53">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="ie03bd6caf6c04201a1251cc3ccce7ef5_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8yLTMtMS0xLTM2MzI_6248f1f5-487e-497a-9ffc-d161f4f8fb47">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="i4cf92bf23f0c48f9933406a00f53bbf9_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8yLTUtMS0xLTM2MzQ_8afbb435-6377-4e52-903c-bf9a04852884">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="i910901a831a74c5a94efe291993cb6db_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8yLTctMS0xLTM2MzY_b60fedb6-c5e1-4348-8c54-0f9f02693f5c">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="i697b402587d640b29a6131eec6eee921_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsForRestructuring" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8zLTEtMS0xLTM2Mzg_b2b29739-483e-4cb7-afc4-8aa865ae1ec1">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="ie03bd6caf6c04201a1251cc3ccce7ef5_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsForRestructuring" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8zLTMtMS0xLTM2Mzg_0ee683ec-b87b-438d-9f7a-964818830193">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="i4cf92bf23f0c48f9933406a00f53bbf9_D20200101-20201231" decimals="-3" name="us-gaap:PaymentsForRestructuring" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8zLTUtMS0xLTM2Mzg_7254b41b-7751-45fa-b8c8-cd7647558dff">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="i910901a831a74c5a94efe291993cb6db_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:PaymentsForRestructuring" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8zLTctMS0xLTM2Mzg_2a85dfc2-9207-4821-a380-12d10b626c10">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="i697b402587d640b29a6131eec6eee921_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:RestructuringReserveSettledWithoutCash2" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV80LTEtMS0xLTM2NDA_cf9db8b3-b5d9-4cf9-ad51-4d1dc7f2339c">&#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="ie03bd6caf6c04201a1251cc3ccce7ef5_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringReserveSettledWithoutCash2" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV80LTMtMS0xLTM2NDA_e4e814a0-5081-460b-a154-2901a81d8a0d">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="i4cf92bf23f0c48f9933406a00f53bbf9_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:RestructuringReserveSettledWithoutCash2" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV80LTUtMS0xLTM2NDA_90ca5599-5123-49d9-b339-71a38fd038db">&#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="i910901a831a74c5a94efe291993cb6db_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringReserveSettledWithoutCash2" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV80LTctMS0xLTM2NDA_20eab51e-1eb1-4367-9f29-f858ea705179">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="i697b402587d640b29a6131eec6eee921_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:RestructuringReserveAccrualAdjustment1" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV81LTEtMS0xLTM2NDI_2c0cbd39-dc93-4aa8-8583-a8ad91665c7a">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="ie03bd6caf6c04201a1251cc3ccce7ef5_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:RestructuringReserveAccrualAdjustment1" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV81LTMtMS0xLTM2NDI_00d1c489-929e-4016-b489-d533738debec">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="i4cf92bf23f0c48f9933406a00f53bbf9_D20200101-20201231" decimals="-3" sign="-" name="us-gaap:RestructuringReserveAccrualAdjustment1" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV81LTUtMS0xLTM2NDI_b9f9d5a1-55dc-4fa5-8e1e-60a03c56453e">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="i910901a831a74c5a94efe291993cb6db_D20200101-20201231" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:RestructuringReserveAccrualAdjustment1" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV81LTctMS0xLTM2NDI_cb75c176-1e42-4f94-9cc3-792fe84d3bf6">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="i697b402587d640b29a6131eec6eee921_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveTranslationAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV82LTEtMS0xLTM2NDQ_5fda7a3b-5c01-4387-b855-09ffd79d5552">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="ie03bd6caf6c04201a1251cc3ccce7ef5_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveTranslationAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV82LTMtMS0xLTM2NDQ_e89aa81c-5ff9-49ac-b145-ee793b21bf5b">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="i4cf92bf23f0c48f9933406a00f53bbf9_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveTranslationAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV82LTUtMS0xLTM2NDQ_624faf44-028a-4a58-bfbe-584949d1e5bf">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="i910901a831a74c5a94efe291993cb6db_D20200101-20201231" decimals="-3" name="us-gaap:RestructuringReserveTranslationAdjustment" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV82LTctMS0xLTM2NDQ_f2bde3aa-8767-4259-b24b-66d355580d7a">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:700;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 #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="i0f3836fb4ff448cb8224c36be297098e_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV83LTEtMS0xLTM1OTg_05d2102c-6ec2-49ee-a106-c475a324fa2a">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-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="icc6eade4fc96482cbe1fda703ab9bec1_I20201231" decimals="-3" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV83LTMtMS0xLTM1OTg_74878885-a204-4f41-bc35-a96d331f0eaf">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-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="i1c3a59091e4241499f1eb919fa67a6c9_I20201231" decimals="-3" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV83LTUtMS0xLTM1OTg_9c8d2037-90c5-446f-bcb6-ac9b8bb5e003">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-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="iacfefc04f8504b0784f70c45f9371633_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringReserve" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV83LTctMS0xLTM1OTg_0ac71832-f56c-46dc-8dfe-54c144f3afba">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-bottom:3pt double #000000;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="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="display:none"></td><td colspan="3" style="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></table></div></ix:nonNumeric></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%">72</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="#i1a430d3f39e74769965c1cc9f7e66842_7">Table of Contents</a></span></div></div><div><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%"><ix:continuation id="i840c6e2e6b394af4836a47df33c096fc">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="i1a430d3f39e74769965c1cc9f7e66842_193"></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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:SubsequentEventsTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTMvZnJhZzphMTM0NGMyNTM2MGU0MmNhYWExNGQzNGJiZmZkMDg4ZC90ZXh0cmVnaW9uOmExMzQ0YzI1MzYwZTQyY2FhYTE0ZDM0YmJmZmQwODhkXzIyMw_a025a4a0-a2e0-4486-ae07-711b7941db86" continuedAt="i642f536f98b94ef9832f7cd900516a8d" escape="true">Subsequent Events</ix:nonNumeric></span></div><div style="margin-top:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"><ix:continuation id="i642f536f98b94ef9832f7cd900516a8d">On February 11, 2021, the Company's Board of Directors declared a cash dividend of $<ix:nonFraction unitRef="usdPerShare" contextRef="ibe2a9b71d2a34641867e257f72e7ac89_I20210211" decimals="INF" name="us-gaap:DividendsPayableAmountPerShare" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTMvZnJhZzphMTM0NGMyNTM2MGU0MmNhYWExNGQzNGJiZmZkMDg4ZC90ZXh0cmVnaW9uOmExMzQ0YzI1MzYwZTQyY2FhYTE0ZDM0YmJmZmQwODhkXzExNg_a9cb27b6-f4c0-4c03-afa3-3d6207e478ab">0.060</ix:nonFraction> per share. The dividend is payable <ix:nonNumeric contextRef="iea3807e5f96a4f27a97d05dbb4f0c9dd_D20210211-20210211" format="ixt:datemonthdayyearen" name="us-gaap:DividendsPayableDateDeclaredDayMonthAndYear" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTMvZnJhZzphMTM0NGMyNTM2MGU0MmNhYWExNGQzNGJiZmZkMDg4ZC90ZXh0cmVnaW9uOmExMzQ0YzI1MzYwZTQyY2FhYTE0ZDM0YmJmZmQwODhkXzE1NQ_50a6a0db-27ba-4206-bcee-491ad8305b6d">March 12, 2021</ix:nonNumeric> to all shareholders of record as of the close of business on <ix:nonNumeric contextRef="iea3807e5f96a4f27a97d05dbb4f0c9dd_D20210211-20210211" format="ixt:datemonthdayyearen" name="us-gaap:DividendsPayableDateOfRecordDayMonthAndYear" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTMvZnJhZzphMTM0NGMyNTM2MGU0MmNhYWExNGQzNGJiZmZkMDg4ZC90ZXh0cmVnaW9uOmExMzQ0YzI1MzYwZTQyY2FhYTE0ZDM0YmJmZmQwODhkXzIxOQ_a27853f8-2a18-46ef-8d4c-8d73ed4ea68f">February 26, 2021</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%">73</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_196"></div><hr style="page-break-after:always"/><div style="min-height:42.75pt;width:100%"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:120%">COGNEX CORPORATION - SELECTED QUARTERLY FINANCIAL DATA (UNAUDITED)</span></div><div><span><br/></span></div></div><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90ZXh0cmVnaW9uOjQ4M2Q2NTI0M2QxMjQyNGI5NDBmYWNiYWExOTAzMThjXzEx_ac893f35-8056-4d63-87f5-0e818c1be95c" escape="true"><ix:nonNumeric contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="us-gaap:QuarterlyFinancialInformationTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90ZXh0cmVnaW9uOjQ4M2Q2NTI0M2QxMjQyNGI5NDBmYWNiYWExOTAzMThjXzE1_1a544215-cd5b-4d2c-a547-0eabfb040920" escape="true"><div style="margin-bottom:5pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"><tr><td style="width:1.0%"></td><td style="width:54.471%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.457%"></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:9.457%"></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:9.457%"></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:9.459%"></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="21" 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%">Quarter Ended</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="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:7pt;font-weight:700;line-height:100%">March 29,                             2020</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:7pt;font-weight:700;line-height:100%">June 28,                                 2020</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:7pt;font-weight:700;line-height:100%">September 27,                           2020</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:7pt;font-weight:700;line-height:100%">December&#160;31,<br/>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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="21" 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><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%">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: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="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzMtMS0xLTEtMA_52d08588-13d0-4db5-9e08-f9f4f3c4d273">167,235</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="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzMtMy0xLTEtMA_71c17f0f-8fe0-4ba3-b96b-cd1fdf1f99d3">169,097</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="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzMtNS0xLTEtMA_d6513c3a-862c-467b-8557-08fd78fda3b8">251,073</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="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzMtNy0xLTEtMA_5b96f577-cf95-4019-b8ab-2ae9b1358e6c">223,615</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%">Gross margin</span></td><td colspan="2" style="background-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="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GrossProfit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzQtMS0xLTEtMA_708eac11-c6d2-4bf8-9303-c2048b2f7764">126,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="3" style="background-color:#ffffff;padding:0 1pt"></td><td colspan="2" style="background-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="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GrossProfit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzQtMy0xLTEtMA_90804947-afee-4d91-b3b1-77cb03807b92">118,777</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="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GrossProfit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzQtNS0xLTEtMA_91af16ab-a605-4293-acd0-5188436261ad">191,332</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="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GrossProfit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzQtNy0xLTEtMA_145ee23f-2f72-4610-aca5-2060f730beea">168,455</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%">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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329" decimals="-3" format="ixt:zerodash" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtMS0xLTEtMzg2NA_e4b3ad67-ac14-4020-aa14-7cd9f352ffe5">&#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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtMy0xLTEtMzg3Ng_f77fa36d-3c69-4ea3-96ae-d52230276bbc">14,798</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="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927" decimals="-3" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtNS0xLTEtMzg4Mw_0be012ae-a1aa-4052-bd00-1cb01550d181">251</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="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231" decimals="-3" name="us-gaap:RestructuringCharges" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtNy0xLTEtMzg4Nw_8e0160c0-d948-47b6-bd39-73fd035b8cac">875</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 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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329" decimals="-3" format="ixt:zerodash" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzYtMS0xLTEtMzg5MQ_94b306a4-8754-483c-8f1e-fae645fce25c">&#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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzYtMy0xLTEtMzg5NQ_e88a3a20-f69c-47b2-9908-fcd6710e1956">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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927" decimals="-3" format="ixt:zerodash" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzYtNS0xLTEtMzg5OQ_a546f78b-f61c-4182-8656-d324705b823e">&#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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzYtNy0xLTEtMzkwMw_c6f97bb9-697b-44f7-a6ef-1de681639e00">&#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:9pt;font-weight:400;line-height:100%">Operating income (loss)</span></td><td colspan="2" style="background-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="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtMS0xLTEtMA_1cee2fd7-8cd0-4638-bf82-d41b6f51bd09">20,951</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="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:OperatingIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtMy0xLTEtMA_d853918c-7283-45c8-92ef-814268464196">6,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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtNS0xLTEtMA_cf2de24a-dbfe-4f3c-988c-9de2f4a37f41">96,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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtNy0xLTEtMA_c6f6102e-15c3-4ea7-bba0-4d526c593cd8">59,085</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: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><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:9pt;font-weight:400;line-height:100%">Net income (loss)</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: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="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzctMS0xLTEtMA_f70d74ff-6f36-4a96-a826-4a8d6185c3b8">20,477</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="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628" decimals="-3" sign="-" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzctMy0xLTEtMA_773e2b43-97d4-42e9-a33d-144eb3a5460e">1,142</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="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzctNS0xLTEtMA_da350237-5efd-4094-8c9c-ee038d287003">87,506</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="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzctNy0xLTEtMA_5952e7c6-a2d1-4c3a-9a78-98843cfb394f">69,345</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><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:400;line-height:100%">Basic net income (loss) per 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: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="usdPerShare" contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzktMS0xLTEtMA_ef31e8d2-8bd9-4fdb-a099-e0a11a1f2277">0.12</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="usdPerShare" contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628" decimals="2" sign="-" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzktMy0xLTEtMA_0de5ae19-be32-45dd-a056-92a7b6bbe349">0.01</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: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="usdPerShare" contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzktNS0xLTEtMA_b5bbfbc6-fbeb-455a-9ad0-a96a777d69d1">0.50</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="usdPerShare" contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzktNy0xLTEtMA_a69ca07c-04b4-4a33-b359-9f5cc4bf717d">0.40</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%">Diluted net income (loss) per share</span></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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzEwLTEtMS0xLTA_5347b32e-f47a-425c-a8e2-f670454aa6fa">0.12</ix:nonFraction>&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">(<ix:nonFraction unitRef="usdPerShare" contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628" decimals="2" sign="-" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzEwLTMtMS0xLTA_9020d175-f904-4793-a26d-9cbb2bdf8031">0.01</ix:nonFraction>)</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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzEwLTUtMS0xLTA_93c333cd-f0e8-4821-9adf-c4836bd0495a">0.49</ix:nonFraction>&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzEwLTctMS0xLTA_c6a24f80-d098-457e-8500-9feb2af40cb0">0.39</ix:nonFraction>&#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-bottom:5pt;margin-top:14pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.415%"><tr><td style="width:1.0%"></td><td style="width:53.752%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.635%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.535%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.635%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.535%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.635%"></td><td style="width:0.1%"></td><td style="width:0.1%"></td><td style="width:0.535%"></td><td style="width:0.1%"></td><td style="width:1.0%"></td><td style="width:9.638%"></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="21" 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%">Quarter Ended</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:7pt;font-weight:700;line-height:100%">March 31, 2019</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:7pt;font-weight:700;line-height:100%">June 30,                           2019</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:7pt;font-weight:700;line-height:100%">September 29,                           2019</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:7pt;font-weight:700;line-height:100%">December&#160;31,<br/>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="21" 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><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%">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: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="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzMtMS0xLTEtMA_d913aacc-635a-4162-9aa4-a95b4477b322">173,484</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="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzMtMy0xLTEtMA_30b2ca97-cdde-403b-97ab-6f7fff42100f">199,047</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="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzMtNS0xLTEtMA_731e9717-27bd-49c4-b05b-967416b0660a">183,325</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="i461ae862bded4902a73b0e4183842825_D20190930-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzMtNy0xLTEtMA_f10da8ec-83f6-4563-92d1-5d4544663a2c">169,769</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%">Gross margin</span></td><td colspan="2" style="background-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="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GrossProfit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzQtMS0xLTEtMA_c5847deb-dbe8-4618-9d6f-900c2ebbe037">127,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 colspan="2" style="background-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="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GrossProfit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzQtMy0xLTEtMA_68c236cd-dbb4-4da9-9aa7-dd9f76812150">148,080</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="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GrossProfit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzQtNS0xLTEtMA_4d4aee44-7970-402f-9f1e-24dbca6e8a31">135,693</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="i461ae862bded4902a73b0e4183842825_D20190930-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:GrossProfit" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzQtNy0xLTEtMA_4be8d379-4361-4fa3-86b7-55b2e8004ad1">124,898</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%">Operating 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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usd" contextRef="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzUtMS0xLTEtMA_fd03ec58-fd21-4cff-a8f7-bc406df0be80">30,147</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="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzUtMy0xLTEtMA_4d6557a1-e5e6-40be-8d8e-d144ac42bb23">51,756</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="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzUtNS0xLTEtMA_24eff625-1597-46b9-b5ac-d795fcd9150c">43,092</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="i461ae862bded4902a73b0e4183842825_D20190930-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:OperatingIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzUtNy0xLTEtMA_c48844f9-38c7-4408-81fc-1d178b6c83b1">17,607</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: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><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:9pt;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: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="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzctMS0xLTEtMA_7c8b059a-396a-49f6-93b2-7838641a7708">33,104</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="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzctMy0xLTEtMA_928cd51b-0455-41ec-b0d0-7794b5dd55c1">48,749</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="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzctNS0xLTEtMA_d0719d12-0825-4c54-a7d7-4fd4b413c42d">41,685</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="i461ae862bded4902a73b0e4183842825_D20190930-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:NetIncomeLoss" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzctNy0xLTEtMA_87640939-3550-46e0-bf8c-f1e37908b9d2">80,327</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><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:400;line-height:100%">Basic net income per 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: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="usdPerShare" contextRef="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzktMS0xLTEtMA_b158307c-abda-4408-8444-662315850ec0">0.19</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="usdPerShare" contextRef="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzktMy0xLTEtMA_c46d7678-cab6-4fb9-a10c-6b1056711bc8">0.28</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="usdPerShare" contextRef="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzktNS0xLTEtMA_f9f89b0c-d87e-4c19-8d01-aa22701f79b2">0.24</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="usdPerShare" contextRef="i461ae862bded4902a73b0e4183842825_D20190930-20191231" decimals="2" name="us-gaap:EarningsPerShareBasic" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzktNy0xLTEtMA_4aaf96ea-972b-4ea1-8a08-cd5c948829a0">0.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:9pt;font-weight:400;line-height:100%">Diluted net income per share</span></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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzEwLTEtMS0xLTA_f7f3c0c3-ab86-4dff-918f-21eb14c55f60">0.19</ix:nonFraction>&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzEwLTMtMS0xLTA_efb95d81-2ea2-4b90-805f-8b196714c6a0">0.28</ix:nonFraction>&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzEwLTUtMS0xLTA_09a2ffe5-93ac-4928-9050-8f3fbc8ccec8">0.24</ix:nonFraction>&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%"><ix:nonFraction unitRef="usdPerShare" contextRef="i461ae862bded4902a73b0e4183842825_D20190930-20191231" decimals="2" name="us-gaap:EarningsPerShareDiluted" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzEwLTctMS0xLTA_4bc63d8d-06da-4163-8584-561ce8a39976">0.46</ix:nonFraction>&#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></ix:nonNumeric></ix:nonNumeric><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%">74</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_199"></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="#i1a430d3f39e74769965c1cc9f7e66842_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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231" name="srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90ZXh0cmVnaW9uOjVlZTZlOWM4YTI5MjRlZjhhZWNkYzRhMGZmYjNlYjNkXzEzOA_18e8bf68-d773-4bda-b58c-8ef7c24ae45c" continuedAt="i42f3f3a79a3646e385db1e4c4cb1a0a0" escape="true">SCHEDULE II &#8211; VALUATION AND QUALIFYING ACCOUNTS</ix:nonNumeric></span></div><ix:continuation id="i42f3f3a79a3646e385db1e4c4cb1a0a0"><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">2020</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="i8e972664ec3c438389db17b50d0ad10f_I20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzQtMi0xLTEtMA_cc85a8e8-3052-42c8-87ef-e34791cd1449">530</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="i37775b2adc474d559a494eed1d8f6ac5_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzQtNC0xLTEtMA_95b79c9e-01dc-40f1-b439-071f8deecb1a">600</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="i37775b2adc474d559a494eed1d8f6ac5_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzQtOC0xLTEtMA_2b445c49-f7c5-4876-99bf-10f60e42f21f">300</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="i37775b2adc474d559a494eed1d8f6ac5_D20200101-20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzQtMTAtMS0xLTA_5318d2b8-4cee-4ab5-931f-15bbd6f5fbbf">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: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="ie492a4ee7d994b01bc240511c5f5ca36_I20201231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzQtMTItMS0xLTA_4b5af1d6-acff-494b-a336-984cc5dcf0ea">831</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%">2019</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="ie90ec26745b74b1890b61791666978fb_I20181231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzUtMi0xLTEtMA_1320b148-b138-4ef8-9ce7-7d4019133a53">596</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="ibb41123b05be4a27ad6c96526002ec57_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzUtNC0xLTEtMA_b6d3aea1-6b51-4449-9541-1b6da5c58749">215</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="ibb41123b05be4a27ad6c96526002ec57_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzUtOC0xLTEtMA_1edf2b5a-3308-4e76-ad51-6e2708d0a091">286</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="ibb41123b05be4a27ad6c96526002ec57_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzUtMTAtMS0xLTA_047e1837-5d65-4e9d-823d-d85638f7ef6d">5</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="i8e972664ec3c438389db17b50d0ad10f_I20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzUtMTItMS0xLTA_4d8ff918-872f-42bd-a66d-de8a753639bb">530</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%">2018</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="ie9684df3af564d50a07cfe28f4f69336_I20171231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzYtMi0xLTEtMA_136809c1-57da-4259-951d-c85c0912ed39">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 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="ic78dc423d96c4e29987c28f52c27bc95_D20180101-20181231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzYtNC0xLTEtMA_f84ed345-72c6-49e9-a693-d1cea5f32adc">282</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="ic78dc423d96c4e29987c28f52c27bc95_D20180101-20181231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzYtOC0xLTEtMA_03fe26ee-7ff5-469d-993c-0fcdeb19e563">61</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="ic78dc423d96c4e29987c28f52c27bc95_D20180101-20181231" decimals="-3" sign="-" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzYtMTAtMS0xLTA_be8248dd-1d4c-4904-b6c0-1ad57db1259b">12</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%">(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="ie90ec26745b74b1890b61791666978fb_I20181231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzYtMTItMS0xLTA_fa8822b7-07bf-4e99-8b25-a3569c8b99dc">596</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%">2020</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="i54b2ed2f00304fdfa3f801687140ae81_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzgtMi0xLTEtMA_ea1ed3e5-5546-4506-b406-c8801d972565">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="i199f3e5533e043ac9c6f62f8fc1ed886_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzgtNC0xLTEtMA_f368394d-5062-480e-8d06-d38c9997c9af">&#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="i199f3e5533e043ac9c6f62f8fc1ed886_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzgtOC0xLTEtMA_0e36b18f-1761-40b3-a4c1-90c5ab48baa5">&#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="i199f3e5533e043ac9c6f62f8fc1ed886_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzgtMTAtMS0xLTA_42bd001d-a10b-44e4-ad68-afa03c5935fd">&#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="ie4b7cc11c49c4137b5953a249b30e99c_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzgtMTItMS0xLTA_edfcee5c-7604-4f19-aedc-11f2e8466cf2">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 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:#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="i840c3d1abc6941068b772313fe40c779_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzktMi0xLTEtMA_71d557ec-f801-4088-b841-5e9eb8c0be79">1,050</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="ibee2fce1153a48d38797395e471767dc_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzktNC0xLTEtMA_77f9d2d4-1292-4779-9105-19aed0c3d26f">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%">&#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="ibee2fce1153a48d38797395e471767dc_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzktOC0xLTEtMA_5729ddc4-8556-4d24-9435-05b62f506990">&#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="ibee2fce1153a48d38797395e471767dc_D20190101-20191231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzktMTAtMS0xLTA_6253d8a5-8827-4daf-b515-d3fb5f0c9e5d">16</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="i54b2ed2f00304fdfa3f801687140ae81_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzktMTItMS0xLTA_b28fed01-e75c-4ebc-aa26-1fd7ca0629b3">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%">2018</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="iba36066cec554376853522d4c65c284f_I20171231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEwLTItMS0xLTA_2b22bfb4-cb08-495d-8993-12b0cbca3c7e">1,181</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="i496f14a2f40e4f87b27a64cd626ba072_D20180101-20181231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEwLTQtMS0xLTA_66e2d052-497b-4d77-8be6-33cdea476052">182</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="i496f14a2f40e4f87b27a64cd626ba072_D20180101-20181231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEwLTgtMS0xLTA_ed4c56a4-b986-4f90-b600-1d5ad862bc58">282</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="i496f14a2f40e4f87b27a64cd626ba072_D20180101-20181231" decimals="-3" sign="-" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEwLTEwLTEtMS0w_ce0b4ad8-b69e-479e-9ff5-1e8f256f576c">31</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%">(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="i840c3d1abc6941068b772313fe40c779_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEwLTEyLTEtMS0w_bc233372-e86f-43e3-87c7-38b63e770930">1,050</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%">2020</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="iff0b1f4df45343c4b855bba0c1cb0a1e_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEyLTItMS0xLTA_92f723c4-a90f-4f6f-adbc-fd1e3f29da7a">7,312</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="i62f1344296954ca19a69714d6e44cdba_D20200101-20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEyLTQtMS0xLTA_24d0126e-f4a2-4d12-9d8b-063a5a8bf72e">1,256</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="i62f1344296954ca19a69714d6e44cdba_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEyLTgtMS0xLTA_2bf7def7-64be-41f8-b8df-2ced3aa217bb">&#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="i62f1344296954ca19a69714d6e44cdba_D20200101-20201231" decimals="-3" format="ixt:zerodash" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEyLTEwLTEtMS0w_b47e4139-13d8-4133-a3f7-6bb51ec308f7">&#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="ib63ab0f617af4d9fb37d199aca629b2c_I20201231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEyLTEyLTEtMS0w_a7162a1b-e58c-4ba0-9d4d-e18a11c7c06f">8,568</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%">2019</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="if2e1eff52c264d429b1146b698c8ad14_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEzLTItMS0xLTA_270807fe-f973-492b-ba74-cf10e1fb9801">6,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 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="i6a93ce3bf60c414c9a02243f3e5fe615_D20190101-20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEzLTQtMS0xLTA_ff374b2a-23c7-4aff-8f51-9919125d1dac">1,200</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="i6a93ce3bf60c414c9a02243f3e5fe615_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEzLTgtMS0xLTA_609406e3-8fee-459b-8484-32ece6d1ec79">&#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="i6a93ce3bf60c414c9a02243f3e5fe615_D20190101-20191231" decimals="-3" format="ixt:zerodash" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEzLTEwLTEtMS0w_4332d41c-c480-4d88-820c-b6c7b2bde183">&#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="iff0b1f4df45343c4b855bba0c1cb0a1e_I20191231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEzLTEyLTEtMS0w_2d6d55d2-f729-4f54-9e15-883d8d80762c">7,312</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%">2018</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="i759f2e339dc54f62882a481da1682c75_I20171231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzE0LTItMS0xLTA_da2e37ae-b56a-4d17-a39f-87bb63d8842c">5,309</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="i48c9b3bfd9b84764b06ddf508e993169_D20180101-20181231" decimals="-3" name="us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzE0LTQtMS0xLTA_8126b470-a66a-4bfc-82f6-d023f79a936a">803</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="i48c9b3bfd9b84764b06ddf508e993169_D20180101-20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:ValuationAllowancesAndReservesDeductions" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzE0LTgtMS0xLTA_6bcc194f-556b-4dd8-8fa7-ada6480e063b">&#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="i48c9b3bfd9b84764b06ddf508e993169_D20180101-20181231" decimals="-3" format="ixt:zerodash" name="us-gaap:ValuationAllowancesAndReservesAdjustments" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzE0LTEwLTEtMS0w_af013dbf-5843-40e9-8a8d-e9f1a89061ee">&#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="if2e1eff52c264d429b1146b698c8ad14_I20181231" decimals="-3" format="ixt:numdotdecimal" name="us-gaap:ValuationAllowancesAndReservesBalance" scale="3" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzE0LTEyLTEtMS0w_4b1b3103-1f0e-471c-94be-15cac31bdfc7">6,112</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:9pt;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%">75</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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="#i1a430d3f39e74769965c1cc9f7e66842_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 2020 or 2019.</span></div><div id="i1a430d3f39e74769965c1cc9f7e66842_205"></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, 2020.</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, 2020 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, 2020 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%">76</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="#i1a430d3f39e74769965c1cc9f7e66842_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:115%">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, 2020, 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, 2020, 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, 2020, and our report dated February 11, 2021 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:115%">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:115%">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/ GRANT THORNTON LLP</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%">Boston, Massachusetts</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;11, 2021 </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%">77</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_208"></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="#i1a430d3f39e74769965c1cc9f7e66842_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="i1a430d3f39e74769965c1cc9f7e66842_211"></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="i1a430d3f39e74769965c1cc9f7e66842_214"></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 5, 2021 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="i1a430d3f39e74769965c1cc9f7e66842_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;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 5, 2021 and is incorporated herein by reference.</span></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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;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 5, 2021 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, 2020 regarding shares of common stock that may be issued under the Company&#8217;s existing equity compensation plans:</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">9,457,572&#160;</span></td><td 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%">42.3695&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"></td><td colspan="3" style="background-color:#cceeff;padding:0 1pt"></td><td colspan="2" style="background-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%"><ix:nonFraction unitRef="shares" contextRef="i651cdc8b58564e339fa15af8d913fa7b_I20201231" decimals="0" format="ixt:numdotdecimal" name="us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant" scale="0" id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMjAvZnJhZzpjYmFiMTI1ZjhmZmU0ZDI1YTY5YTI0ZDljNDRhNjkwYy90YWJsZTo0ODA3ZjM4YzI3Nzc0MGUzODc4N2ZkNzBmMmVmNzE0NS90YWJsZXJhbmdlOjQ4MDdmMzhjMjc3NzQwZTM4Nzg3ZmQ3MGYyZWY3MTQ1XzItNS0xLTEtMA_b7e6ad25-b5e1-4b29-8973-d1966b7ecbf5">16,260,393</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: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%">66,034&#160;</span></td><td 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%">8.1684&#160;</span></td><td style="background-color:#ffffff;padding: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:8pt;font-weight:400;line-height:100%">-</span></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%">9,523,606</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%">42.1323</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%">16,260,393</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:9pt;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 1998 Stock Incentive Plan, 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 common stock on the grant date and must have a term that is no longer than ten years from the grant date. 30,468,140 stock options have been granted under the 2001 General Stock Option Plan.</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%">78</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_223"></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="#i1a430d3f39e74769965c1cc9f7e66842_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;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 5, 2021 and is incorporated herein by reference.</span></div><div id="i1a430d3f39e74769965c1cc9f7e66842_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;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 5, 2021 and is incorporated herein by reference.</span></div><div id="i1a430d3f39e74769965c1cc9f7e66842_229"></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="i1a430d3f39e74769965c1cc9f7e66842_232"></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="i1a430d3f39e74769965c1cc9f7e66842_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;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%">79</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_238"></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="#i1a430d3f39e74769965c1cc9f7e66842_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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/cgnx-20191231x10xk.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/0000914427-98-000166.txt">Cognex Corporation 1998 Non-Employee Director Stock Option Plan (incorporated by reference to Exhibit 4.1 to Cognex's Registration Statement on Form S-8 [Registration No. 333-60807])</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/000119312513048665/d434050dex10c.htm">Amendment to Cognex Corporation 1998 Non-Employee Director Stock Option Plan, effective as of July 26, 2007 (incorporated by reference to Exhibit 10C 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:#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/0000914427-98-000166.txt">Cognex Corporation 1998 Stock Incentive Plan (incorporated by reference to Exhibit 4.2 to the Registration Statement on Form S-8 [Registration No. 333-60807])</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/000091442701500074/cogs8a.txt">First Amendment to the Cognex Corporation 1998 Stock Incentive Plan (incorporated by reference to Exhibit 4.3 to Cognex's Registration Statement on Form S-8 [Registration No. 333-60807])</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/000119312512049244/d273174dex10f.htm">Second Amendment to the Cognex Corporation 1998 Stock Incentive Plan (incorporated by reference to Exhibit 10F of Cognex&#8217;s Annual Report on Form 10-K for the year ended December 31, 2011 [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/000119312513048665/d434050dex10g.htm">Amendment to Cognex Corporation 1998 Stock Incentive Plan, effective as of July 26, 2007 (incorporated by reference to Exhibit 10G 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:#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/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%">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-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%">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/000119312513048665/d434050dex10k.htm">Form of Letter Agreement between Cognex Corporation and each of Robert J. Shillman, 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%">10J *</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/000119312513048665/d434050dex10l.htm">Form of Stock Option Agreement (Non-Qualified) under 1998 Stock Incentive Plan (incorporated by reference to Exhibit 10L 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:#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="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:#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="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></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%">80</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="#i1a430d3f39e74769965c1cc9f7e66842_7">Table of Contents</a></span></div></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">10M *</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/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:#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%">10N *</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/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:#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%">10O *</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/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:#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%">10P *</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/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:#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%">10Q *<br/></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/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:#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%">10R*</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/000085120519000010/lauramacdonald2007plangr.htm">Stock Option Agreement dated May 1, 2019 between Cognex Corporation and Laura MacDonald (incorporated by reference to</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/000085120519000010/lauramacdonald2007plangr.htm"> Exhibit 10.2 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/000085120519000010/lauramacdonald2007plangr.htm"> Cognex's Quarterly Report on Form 10-Q for the quarter ended June 30, 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%">10S*</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/cgnx-20191231x10xk.htm">Form of Restricted Stock Unit Agreement under the 2007 Stock Option and Incentive Plan (</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="https://www.sec.gov/Archives/edgar/data/851205/000085120520000002/cgnx-20191231x10xk.htm">incorporated by ref</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="https://www.sec.gov/Archives/edgar/data/851205/000085120520000002/cgnx-20191231x10xk.htm">ere</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="https://www.sec.gov/Archives/edgar/data/851205/000085120520000002/cgnx-20191231x10xk.htm">nce to Exhibit 10U of Cognex's Annual Report on Form 10-K for the year ended December 31, 2019 [File No. 1-34218]</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="https://www.sec.gov/Archives/edgar/data/851205/000085120520000002/cgnx-20191231x10xk.htm">)</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%">21</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-20201231xexhibit21.htm">Subsidiaries of the registrant (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%">23.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-20201231xexhibit231.htm">Consent of Grant Thornton LLP (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.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-20201231xexhibit311.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:#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.2</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-20201231xexhibit312.htm">Certification pursuant to Section 302 of the Sarbanes-Oxley Act of 2002 (</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="cgnx-20201231xexhibit312.htm">CFO</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="cgnx-20201231xexhibit312.htm">) (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%">32.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-20201231xexhibit321.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:#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.2</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-20201231xexhibit322.htm">Certification pursuant to Section 906 of the Sarbanes-Oxley Act of 2002 (</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="cgnx-20201231xexhibit322.htm">CFO</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="cgnx-20201231xexhibit322.htm">) (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%">101.SCH</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 Schema 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.CAL</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 Calculation 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.LAB</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 Label 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.PRE</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 Presentation 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.DEF</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 Schema Document (filed herewith)<br/></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%">104</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%">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:#cceeff;padding:0 1pt"></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%">* 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%">81</span></div></div></div><div id="i1a430d3f39e74769965c1cc9f7e66842_241"></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="#i1a430d3f39e74769965c1cc9f7e66842_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.</span></div><div style="margin-bottom:5pt;margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="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 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-bottom:5pt;margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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: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. Shillman</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%">Chairman of the Board of Directors and Chief Culture 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 11, 2021</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. Shillman</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;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 11, 2021</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 11, 2021</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 11, 2021</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: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;Eugene Banucci</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 11, 2021</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%">Eugene Banucci</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="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 11, 2021</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;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 11, 2021</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"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">/s/&#160;&#160;&#160;&#160;Jerry Schneider</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 11, 2021</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%">Jerry Schneider</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="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 11, 2021</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><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 11, 2021</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></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%">82</span></div></div></div></body></html>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-21
<SEQUENCE>2
<FILENAME>cgnx-20201231xexhibit21.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 2021 Workiva -->
<title>Document</title></head><body><div id="id90eb0c7914048ceb4ea0d022bd4d5b9_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, 2020, 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-bottom:5pt;margin-top:5pt;padding-left:4.5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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>3
<FILENAME>cgnx-20201231xexhibit231.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 2021 Workiva -->
<title>Document</title></head><body><div id="i0b75a90386da45ff907b4ac1e551e950_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:115%">We have issued our reports dated February 11, 2021, 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, 2020. We hereby consent to the incorporation by reference of said reports in the Registration Statements of Cognex Corporation on Forms S-8 (File Nos. 333-60807&#59; 333-96961&#59; 333-100709&#59; 333-126787&#59; 333-150315&#59; 333-206081 and 333-224716).  </font></div><div style="text-align:justify"><font><br></font></div><div style="margin-bottom:12pt;text-align:justify"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">&#47;s&#47; GRANT THORNTON LLP</font></div><div style="text-align:justify"><font style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Boston, 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;11, 2021 </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>4
<FILENAME>cgnx-20201231xexhibit311.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 2021 Workiva -->
<title>Document</title></head><body><div id="i18ad8cdec59749db9ed24a3c08b8fbd6_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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 style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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 11, 2021</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>5
<FILENAME>cgnx-20201231xexhibit312.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 2021 Workiva -->
<title>Document</title></head><body><div id="i0852bd14931441949457acbff6fe9a4d_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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 style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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 11, 2021</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>6
<FILENAME>cgnx-20201231xexhibit321.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 2021 Workiva -->
<title>Document</title></head><body><div id="ice205d103e0c49a7a7d8f7bdf52d57ed_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, 2020 (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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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 11, 2021</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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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>7
<FILENAME>cgnx-20201231xexhibit322.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 2021 Workiva -->
<title>Document</title></head><body><div id="i8331aa5efff847989c664f74c7d8f57c_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, 2020 (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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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 11, 2021</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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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>8
<FILENAME>cgnx-20201231.xsd
<DESCRIPTION>XBRL TAXONOMY EXTENSION SCHEMA DOCUMENT
<TEXT>
<XBRL>
<?xml version="1.0" encoding="UTF-8"?>

<!--XBRL Document Created with Wdesk from Workiva-->
<!--Copyright 2021 Workiva-->
<!--r:efc8e161-eaa0-41a1-b62b-bbec49e61a75,g:1ad2e941-41d2-4cfb-86c0-34f5fd33bff4-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:link="http://www.xbrl.org/2003/linkbase" xmlns:cgnx="http://cognex.com/20201231" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:num="http://www.xbrl.org/dtr/type/numeric" xmlns:nonnum="http://www.xbrl.org/dtr/type/non-numeric" xmlns:us-types="http://fasb.org/us-types/2020-01-31" xmlns:xbrldt="http://xbrl.org/2005/xbrldt" attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://cognex.com/20201231">
  <xs:import namespace="http://fasb.org/srt/2020-01-31" schemaLocation="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd"/>
  <xs:import namespace="http://fasb.org/us-gaap/2020-01-31" schemaLocation="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd"/>
  <xs:import namespace="http://fasb.org/us-types/2020-01-31" schemaLocation="http://xbrl.fasb.org/us-gaap/2020/elts/us-types-2020-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/non-numeric" schemaLocation="http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd"/>
  <xs:import namespace="http://www.xbrl.org/dtr/type/numeric" schemaLocation="http://www.xbrl.org/dtr/type/numeric-2009-12-16.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/2020-01-31" schemaLocation="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd"/>
  <xs:import namespace="http://xbrl.sec.gov/currency/2020-01-31" schemaLocation="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd"/>
  <xs:import namespace="http://xbrl.sec.gov/dei/2020-01-31" schemaLocation="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.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-20201231_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-20201231_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-20201231_def.xml" xlink:role="http://www.xbrl.org/2003/role/definitionLinkbaseRef" 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-20201231_pre.xml" xlink:role="http://www.xbrl.org/2003/role/presentationLinkbaseRef" 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="CONSOLIDATEDSTATEMENTSOFOPERATIONS" roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS">
        <link:definition>100010002 - 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="CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical" roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical">
        <link:definition>100020003 - Statement - CONSOLIDATED STATEMENTS OF OPERATIONS (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="CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME" roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME">
        <link:definition>100030004 - 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>100040005 - 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>100050006 - 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>100060007 - 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>100070008 - 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>100080009 - 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>100090010 - 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="CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails" roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails">
        <link:definition>240214013 - 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>240224014 - 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>210231005 - 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>230243003 - 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>240254015 - 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>210261006 - 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>230273004 - 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>240284016 - 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>240294017 - 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>210301007 - 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>230313005 - 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>240324018 - 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>240334019 - 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>210341008 - 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>230353006 - 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>240364020 - 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>240374021 - 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>210381009 - 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>230393007 - 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>240404022 - 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>240414023 - 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>240424024 - 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>210431010 - 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>230443008 - 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>240454025 - 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>240464026 - 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>210471011 - 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>240484027 - 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>210491012 - 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>210501013 - 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>230513009 - 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>240524028 - 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>240534029 - 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>240544030 - 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>240554031 - 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>240564032 - 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>210571014 - 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>230583010 - 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>240594033 - 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>240604034 - 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>240614035 - 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>240624036 - 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>210631015 - 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>240644037 - 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>210651016 - 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>230663011 - 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>240674038 - 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>240684039 - 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>240694040 - 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>240704041 - 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>240714042 - 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>210721017 - 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>240734043 - 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>210741018 - 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>230753012 - 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>240764044 - 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>240774045 - 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>240784046 - 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>240794047 - 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>240804048 - 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>240814049 - 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>210821019 - 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>230833013 - 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>240844050 - 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>240854051 - 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>210861020 - 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>230873014 - 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>240884052 - 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>240894053 - 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="Acquisitions" roleURI="http://cognex.com/role/Acquisitions">
        <link:definition>210901021 - Disclosure - 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="AcquisitionsAcquisitionsTables" roleURI="http://cognex.com/role/AcquisitionsAcquisitionsTables">
        <link:definition>230913015 - Disclosure - Acquisitions Acquisitions - (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="AcquisitionsSualabCoLtdNarrativeDetails" roleURI="http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails">
        <link:definition>240924054 - Disclosure - 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="AcquisitionsSualabCoLtdPurchasePriceAllocationDetails" roleURI="http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails">
        <link:definition>240934055 - Disclosure - Acquisitions - Sualab Co., Ltd. Purchase Price Allocation (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>210941022 - 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>230953016 - 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>240964056 - 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>240974057 - 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>240984058 - 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>210991023 - 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>241004059 - 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="SelectedQuarterlyFinancialDataUnaudited" roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnaudited">
        <link:definition>211011024 - Disclosure - Selected Quarterly Financial Data (Unaudited)</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="SelectedQuarterlyFinancialDataUnauditedTables" roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedTables">
        <link:definition>231023017 - Disclosure - Selected Quarterly Financial Data (Unaudited) (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="SelectedQuarterlyFinancialDataUnauditedDetails" roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails">
        <link:definition>241034060 - Disclosure - Selected Quarterly Financial Data (Unaudited) (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>211041025 - 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>241054061 - 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_ExcessAndObsoleteInventoryCharges" abstract="false" name="ExcessAndObsoleteInventoryCharges" nillable="true" xbrli:periodType="duration" 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="num: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_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" abstract="false" name="ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized" 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="num:percentItemType"/>
  <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_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" abstract="false" name="DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_LongTermInvestmentsMember" abstract="true" name="LongTermInvestmentsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <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_RepurchaseProgramFebruary2018Member" abstract="true" name="RepurchaseProgramFebruary2018Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" abstract="false" name="EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="num:percentItemType"/>
  <xs:element id="cgnx_AgencyBondsMember" abstract="true" name="AgencyBondsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_EnShapeGmbHAbstract" abstract="true" name="EnShapeGmbHAbstract" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <xs:element id="cgnx_StandardProductandServicesMember" abstract="true" name="StandardProductandServicesMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_CompanyContributionsVestAtEndOfThreeYears" abstract="false" name="CompanyContributionsVestAtEndOfThreeYears" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="num:percentItemType"/>
  <xs:element id="cgnx_InprocessTechnologyMember" abstract="true" name="InprocessTechnologyMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_DiscreteTaxItemsDomain" abstract="true" name="DiscreteTaxItemsDomain" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_TaxyearsforAPAagreement" abstract="false" name="TaxyearsforAPAagreement" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="us-types:durationStringItemType"/>
  <xs:element id="cgnx_Opentaxyearvarioustaxingauthorities" abstract="false" name="Opentaxyearvarioustaxingauthorities" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <xs:element id="cgnx_Repurchasedsharestotalcost" abstract="false" name="Repurchasedsharestotalcost" nillable="true" xbrli:periodType="duration" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember" abstract="true" name="ForeignTaxBenefitGainsTaxedOutsideUSMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_HardwareAndSoftwareMember" abstract="true" name="HardwareAndSoftwareMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_SellingGeneralAndAdministrativeMember" abstract="true" name="SellingGeneralAndAdministrativeMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_Stateresearchandexperimentationtaxcarryforwards" abstract="false" name="Stateresearchandexperimentationtaxcarryforwards" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <xs:element id="cgnx_CustomerContractsAndRelationshipsMember" abstract="true" name="CustomerContractsAndRelationshipsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_StateResearchAndExperimentationMember" abstract="true" name="StateResearchAndExperimentationMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <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_DeferredTaxAssetsOtherNoncurrent" abstract="false" name="DeferredTaxAssetsOtherNoncurrent" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross" abstract="false" name="DeferredTaxLiabilitiesWithJurisdictionalNettingGross" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" 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_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember" abstract="true" name="DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <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_Totalsharesrepurchased" abstract="false" name="Totalsharesrepurchased" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:sharesItemType"/>
  <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_RepurchaseProgramOctober2018Member" abstract="true" name="RepurchaseProgramOctober2018Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" abstract="false" name="ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType"/>
  <xs:element id="cgnx_MaximumInvestmentOfCompanyInPartnership" abstract="false" name="MaximumInvestmentOfCompanyInPartnership" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="num:percentItemType"/>
  <xs:element id="cgnx_ProductCostOfRevenueMember" abstract="true" name="ProductCostOfRevenueMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_ProductWarrantyPeriod" abstract="false" name="ProductWarrantyPeriod" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <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_Customer2Member" abstract="true" name="Customer2Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum: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_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" abstract="false" name="AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_OpentaxyearUnitedStatesInternalRevenueService" abstract="false" name="OpentaxyearUnitedStatesInternalRevenueService" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits" abstract="false" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember" abstract="true" name="CompletedTechnologiesAndOtherIntangibleAssetsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_RevenuePaymentTerms" abstract="false" name="RevenuePaymentTerms" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <xs:element id="cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent" abstract="false" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent" 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_OtherAsiaMember" abstract="true" name="OtherAsiaMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <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_AgencyBondsFairValueDisclosure" abstract="false" name="AgencyBondsFairValueDisclosure" nillable="true" xbrli:periodType="instant" 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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset" abstract="false" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_SualabCo.Ltd.Member" abstract="true" name="SualabCo.Ltd.Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_CompletedTechnologyMember" abstract="true" name="CompletedTechnologyMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum: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_IndemnificationProvisionsTextBlock" abstract="false" name="IndemnificationProvisionsTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType"/>
  <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_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" abstract="false" name="EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" abstract="false" name="EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="num:percentItemType"/>
  <xs:element id="cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" abstract="false" name="EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="num:percentItemType"/>
  <xs:element id="cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember" abstract="true" name="ChangeinGlobalIntangibleLowTaxedIncomeMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum: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_ChiaroTechnologiesLLCMember" abstract="true" name="ChiaroTechnologiesLLCMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent" abstract="false" name="EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="num:percentItemType"/>
  <xs:element id="cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock" abstract="false" name="ConcentrationsOfRiskPolicyPolicyTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType"/>
  <xs:element id="cgnx_CustomerContractsLiabilityCurrentRollForward" abstract="true" name="CustomerContractsLiabilityCurrentRollForward" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <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_OpenTaxYearStateAuthorities" abstract="false" name="OpenTaxYearStateAuthorities" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <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_NatureOfOperationsPolicyTextBlock" abstract="false" name="NatureOfOperationsPolicyTextBlock" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:textBlockItemType"/>
  <xs:element id="cgnx_VoteEntitledForEachCommonShareOutstanding" abstract="false" name="VoteEntitledForEachCommonShareOutstanding" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="xbrli:integerItemType"/>
  <xs:element id="cgnx_GViVenturesInc.Member" abstract="true" name="GViVenturesInc.Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" abstract="false" name="EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="num:percentItemType"/>
  <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_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" abstract="false" name="DeferredTaxAssetsIntangibleAssetChangeinTaxStructure" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_GreaterChinaMember" abstract="true" name="GreaterChinaMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_ApplicationofCustomerSpecificSolutionsMember" abstract="true" name="ApplicationofCustomerSpecificSolutionsMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum: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_ExpirationPeriodOfStockOptionPlan" abstract="false" name="ExpirationPeriodOfStockOptionPlan" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:durationItemType"/>
  <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_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome" abstract="false" name="DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent" abstract="false" name="BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent" nillable="true" xbrli:periodType="instant" xbrli:balance="credit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember" abstract="true" name="AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember" abstract="true" name="ForeignTaxExpenseTransferPriceAdjustmentMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum: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_Customer1Member" abstract="true" name="Customer1Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement" abstract="false" name="TaxYearsCoveredThroughAdvancedPricingAgreement" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <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_CorporateBondsFairValueDisclosure" abstract="false" name="CorporateBondsFairValueDisclosure" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_OtherGeographicAreaMember" abstract="true" name="OtherGeographicAreaMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_AccruedExpensesMember" abstract="true" name="AccruedExpensesMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum: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_NoncurrentDeferredTaxAssetsDeprecation" abstract="false" name="NoncurrentDeferredTaxAssetsDeprecation" nillable="true" xbrli:periodType="instant" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <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_DiscreteTaxItemsAxis" abstract="true" name="DiscreteTaxItemsAxis" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrldt:dimensionItem" type="xbrli:stringItemType"/>
  <xs:element id="cgnx_ComputerHardwareAndSoftwareMember" abstract="true" name="ComputerHardwareAndSoftwareMember" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <xs:element id="cgnx_RepurchaseProgramMarch2020Member" abstract="true" name="RepurchaseProgramMarch2020Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum: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_CurrencytranslationadjustmentAbstract" abstract="true" name="CurrencytranslationadjustmentAbstract" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="xbrli:stringItemType"/>
  <xs:element id="cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" abstract="false" name="AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum" 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_CompanyContributionsVestAtEndOfTwoYear" abstract="false" name="CompanyContributionsVestAtEndOfTwoYear" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="num:percentItemType"/>
  <xs:element id="cgnx_RepurchaseProgramApril2017Member" abstract="true" name="RepurchaseProgramApril2017Member" nillable="true" xbrli:periodType="duration" substitutionGroup="xbrli:item" type="nonnum:domainItemType"/>
  <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_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" abstract="false" name="OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent" nillable="true" xbrli:periodType="duration" xbrli:balance="debit" substitutionGroup="xbrli:item" type="xbrli:monetaryItemType"/>
  <xs:element id="cgnx_NumberOfGroupsWithinEmployeePopulation" abstract="false" name="NumberOfGroupsWithinEmployeePopulation" nillable="true" xbrli:periodType="instant" substitutionGroup="xbrli:item" type="xbrli:integerItemType"/>
</xs:schema>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.CAL
<SEQUENCE>9
<FILENAME>cgnx-20201231_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 2021 Workiva-->
<!--r:efc8e161-eaa0-41a1-b62b-bbec49e61a75,g:1ad2e941-41d2-4cfb-86c0-34f5fd33bff4-->
<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-20201231.xsd#CoverPage"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CoverPage" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFOPERATIONS"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_eca7f866-8d0d-4e02-bcd1-054c827870a6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_81001e76-e758-4335-856f-f396d2b9b073" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_eca7f866-8d0d-4e02-bcd1-054c827870a6" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_81001e76-e758-4335-856f-f396d2b9b073" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_e8305c87-5567-46c9-a323-ed3f14df7140" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_NetIncomeLoss_eca7f866-8d0d-4e02-bcd1-054c827870a6" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_e8305c87-5567-46c9-a323-ed3f14df7140" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss_0f61713e-ebcd-4b20-b91e-4ee208e1e5be" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingIncomeLoss"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit_ef91d2b4-0df7-4b8d-94b8-af6f42e3c37c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0f61713e-ebcd-4b20-b91e-4ee208e1e5be" xlink:to="loc_us-gaap_GrossProfit_ef91d2b4-0df7-4b8d-94b8-af6f42e3c37c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpense_dd7db14e-a32b-4ead-910e-17207745bf67" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0f61713e-ebcd-4b20-b91e-4ee208e1e5be" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpense_dd7db14e-a32b-4ead-910e-17207745bf67" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SellingGeneralAndAdministrativeExpense_99f6b216-7760-468e-89e2-3b5bd852bcba" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0f61713e-ebcd-4b20-b91e-4ee208e1e5be" xlink:to="loc_us-gaap_SellingGeneralAndAdministrativeExpense_99f6b216-7760-468e-89e2-3b5bd852bcba" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_e6fe3fd5-11c8-4535-a97a-a90e7c1faa14" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0f61713e-ebcd-4b20-b91e-4ee208e1e5be" xlink:to="loc_us-gaap_RestructuringCharges_e6fe3fd5-11c8-4535-a97a-a90e7c1faa14" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_0bfc808f-6714-43f4-9bd5-e77556d5b4bd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0f61713e-ebcd-4b20-b91e-4ee208e1e5be" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_0bfc808f-6714-43f4-9bd5-e77556d5b4bd" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_a773ec56-a0c1-42a4-b289-957971384a64" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss_09d9c116-5d5d-47de-ab6e-72ea2951b4f0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_a773ec56-a0c1-42a4-b289-957971384a64" xlink:to="loc_us-gaap_OperatingIncomeLoss_09d9c116-5d5d-47de-ab6e-72ea2951b4f0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax_514f8ba9-55a6-4233-8fde-ab132bf609aa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_a773ec56-a0c1-42a4-b289-957971384a64" xlink:to="loc_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax_514f8ba9-55a6-4233-8fde-ab132bf609aa" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentIncomeNonoperating_f2e1322a-8555-40a6-a224-6e0b1a5b8c16" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_a773ec56-a0c1-42a4-b289-957971384a64" xlink:to="loc_us-gaap_InvestmentIncomeNonoperating_f2e1322a-8555-40a6-a224-6e0b1a5b8c16" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherNonoperatingIncomeExpense_79d5cfed-3f47-4644-933e-4222a53d055d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_a773ec56-a0c1-42a4-b289-957971384a64" xlink:to="loc_us-gaap_OtherNonoperatingIncomeExpense_79d5cfed-3f47-4644-933e-4222a53d055d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit_e5dd943f-1fb6-4291-a6a5-8c73a8666cd0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GrossProfit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_770a5505-4bab-4a1d-a1db-88a7b26aeb91" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e5dd943f-1fb6-4291-a6a5-8c73a8666cd0" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_770a5505-4bab-4a1d-a1db-88a7b26aeb91" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostOfGoodsAndServicesSold_1f95899a-4aea-417f-9da4-e4c4657ac851" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e5dd943f-1fb6-4291-a6a5-8c73a8666cd0" xlink:to="loc_us-gaap_CostOfGoodsAndServicesSold_1f95899a-4aea-417f-9da4-e4c4657ac851" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME" xlink:type="simple" xlink:href="cgnx-20201231.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_c41d2003-f548-49dc-b6fa-40c15d59d4f8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_6f440d81-7ef3-42a9-bbba-64a50c03f962" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c41d2003-f548-49dc-b6fa-40c15d59d4f8" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_6f440d81-7ef3-42a9-bbba-64a50c03f962" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomeNetOfTax_38d9064a-7458-4888-9b88-799a8a3c9d99" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomeNetOfTax"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_8d9f7e2e-1049-4484-ba5c-dce4a33cd860" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_38d9064a-7458-4888-9b88-799a8a3c9d99" xlink:to="loc_us-gaap_NetIncomeLoss_8d9f7e2e-1049-4484-ba5c-dce4a33cd860" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_f0c5daad-534e-4aa2-942f-f6e4a17e0cb4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_38d9064a-7458-4888-9b88-799a8a3c9d99" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_f0c5daad-534e-4aa2-942f-f6e4a17e0cb4" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_fd1a137f-1a15-4e45-9ca8-7597bfe30ff5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_58ec78cd-51f8-4310-ade5-c322b29f5b82" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_fd1a137f-1a15-4e45-9ca8-7597bfe30ff5" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_58ec78cd-51f8-4310-ade5-c322b29f5b82" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_37952e50-cd07-4df5-b4fa-571a305bc0cb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_fd1a137f-1a15-4e45-9ca8-7597bfe30ff5" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_37952e50-cd07-4df5-b4fa-571a305bc0cb" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_b6d1e5dd-511b-4d85-a7e6-ba2171a0bfb0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_f4e37c42-0c9d-415a-848c-e83533d0cb54" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b6d1e5dd-511b-4d85-a7e6-ba2171a0bfb0" xlink:to="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_f4e37c42-0c9d-415a-848c-e83533d0cb54" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_b5aebe8a-d0fb-4c7b-9304-0c4a4bfd41b0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b6d1e5dd-511b-4d85-a7e6-ba2171a0bfb0" xlink:to="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_b5aebe8a-d0fb-4c7b-9304-0c4a4bfd41b0" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDBALANCESHEETS" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDBALANCESHEETS"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CONSOLIDATEDBALANCESHEETS" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrent_e98402f9-5f79-4a88-9dbe-2ecbc1098bf7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetsCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_03a9ba83-e3d4-4188-9162-f11e5be1dbfe" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e98402f9-5f79-4a88-9dbe-2ecbc1098bf7" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_03a9ba83-e3d4-4188-9162-f11e5be1dbfe" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_f6a580fa-6aa8-4324-8864-d488e8f25864" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e98402f9-5f79-4a88-9dbe-2ecbc1098bf7" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_f6a580fa-6aa8-4324-8864-d488e8f25864" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrent_cf4d0d7f-e6d8-4c96-9ead-c2fb87d2cbd9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e98402f9-5f79-4a88-9dbe-2ecbc1098bf7" xlink:to="loc_us-gaap_AccountsReceivableNetCurrent_cf4d0d7f-e6d8-4c96-9ead-c2fb87d2cbd9" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet_ee675a70-d08e-435b-9f81-b526088ccb05" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e98402f9-5f79-4a88-9dbe-2ecbc1098bf7" xlink:to="loc_us-gaap_InventoryNet_ee675a70-d08e-435b-9f81-b526088ccb05" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_b9449687-3571-4477-b9d5-ad5c9b8af25a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e98402f9-5f79-4a88-9dbe-2ecbc1098bf7" xlink:to="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_b9449687-3571-4477-b9d5-ad5c9b8af25a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnbilledReceivablesCurrent_d6addc88-08d8-4db0-bb21-c75971791e2b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e98402f9-5f79-4a88-9dbe-2ecbc1098bf7" xlink:to="loc_us-gaap_UnbilledReceivablesCurrent_d6addc88-08d8-4db0-bb21-c75971791e2b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Assets_1d0d82b7-a78d-4632-8a82-d37aec7afa31" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Assets"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrent_f5603ff4-b727-40a7-b3ba-6099867f961d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1d0d82b7-a78d-4632-8a82-d37aec7afa31" xlink:to="loc_us-gaap_AssetsCurrent_f5603ff4-b727-40a7-b3ba-6099867f961d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_cd2d06e5-ec63-4d2c-b6c7-1626d0cfeeea" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1d0d82b7-a78d-4632-8a82-d37aec7afa31" xlink:to="loc_us-gaap_LongTermInvestments_cd2d06e5-ec63-4d2c-b6c7-1626d0cfeeea" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_4da49b3b-a6a3-4cbc-b71b-e1de7e436f3a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1d0d82b7-a78d-4632-8a82-d37aec7afa31" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_4da49b3b-a6a3-4cbc-b71b-e1de7e436f3a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxAssetsNet_8b2515ae-5711-4e53-a9db-e2f79ce62582" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1d0d82b7-a78d-4632-8a82-d37aec7afa31" xlink:to="loc_us-gaap_DeferredIncomeTaxAssetsNet_8b2515ae-5711-4e53-a9db-e2f79ce62582" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_52ead620-2cdc-44d5-98fa-da5693ead641" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1d0d82b7-a78d-4632-8a82-d37aec7afa31" xlink:to="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_52ead620-2cdc-44d5-98fa-da5693ead641" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_67038ab9-9fc8-4612-98c9-cd1e4dbf490e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1d0d82b7-a78d-4632-8a82-d37aec7afa31" xlink:to="loc_us-gaap_Goodwill_67038ab9-9fc8-4612-98c9-cd1e4dbf490e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsNoncurrent_42505aa0-8ccf-4b6f-80d1-da664cc0cb2e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1d0d82b7-a78d-4632-8a82-d37aec7afa31" xlink:to="loc_us-gaap_OtherAssetsNoncurrent_42505aa0-8ccf-4b6f-80d1-da664cc0cb2e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseRightOfUseAsset_bb7e19a8-bb35-4adc-a851-d003d40ca73b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1d0d82b7-a78d-4632-8a82-d37aec7afa31" xlink:to="loc_us-gaap_OperatingLeaseRightOfUseAsset_bb7e19a8-bb35-4adc-a851-d003d40ca73b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquity_365dd18d-742a-4148-a141-78e2d291ce9b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesAndStockholdersEquity"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Liabilities_848dffa0-c328-448f-93ad-323d69e5c7e6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_365dd18d-742a-4148-a141-78e2d291ce9b" xlink:to="loc_us-gaap_Liabilities_848dffa0-c328-448f-93ad-323d69e5c7e6" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingencies_4bdf098b-11e9-49fe-8705-fb307ec03942" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_365dd18d-742a-4148-a141-78e2d291ce9b" xlink:to="loc_us-gaap_CommitmentsAndContingencies_4bdf098b-11e9-49fe-8705-fb307ec03942" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_b5aec589-45ff-4b26-bb18-1d66cd5c07e2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_365dd18d-742a-4148-a141-78e2d291ce9b" xlink:to="loc_us-gaap_StockholdersEquity_b5aec589-45ff-4b26-bb18-1d66cd5c07e2" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Liabilities_34bb2ecb-4c1f-4a4d-813c-129b3f8b5312" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Liabilities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrent_fb2ecef8-f2d5-4f92-a083-e4533b99663b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_34bb2ecb-4c1f-4a4d-813c-129b3f8b5312" xlink:to="loc_us-gaap_LiabilitiesCurrent_fb2ecef8-f2d5-4f92-a083-e4533b99663b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilitiesNet_509121c6-8221-4664-8015-9ef4923f513f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_34bb2ecb-4c1f-4a4d-813c-129b3f8b5312" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilitiesNet_509121c6-8221-4664-8015-9ef4923f513f" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_aed9731d-9004-4718-ae7d-1b45a3d51776" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_34bb2ecb-4c1f-4a4d-813c-129b3f8b5312" xlink:to="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_aed9731d-9004-4718-ae7d-1b45a3d51776" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedIncomeTaxesNoncurrent_bef82ce8-b09a-4fc0-8423-ec3de4539eab" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_34bb2ecb-4c1f-4a4d-813c-129b3f8b5312" xlink:to="loc_us-gaap_AccruedIncomeTaxesNoncurrent_bef82ce8-b09a-4fc0-8423-ec3de4539eab" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilitiesNoncurrent_3bc703fc-2369-4c26-bf74-e2babc9ac358" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_34bb2ecb-4c1f-4a4d-813c-129b3f8b5312" xlink:to="loc_us-gaap_OtherLiabilitiesNoncurrent_3bc703fc-2369-4c26-bf74-e2babc9ac358" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_62933b49-5cec-40cd-8fcd-a1f5a71dc846" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_34bb2ecb-4c1f-4a4d-813c-129b3f8b5312" xlink:to="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_62933b49-5cec-40cd-8fcd-a1f5a71dc846" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_9704cf56-4767-49bc-9b4a-41504cccfeb8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquity"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockValueOutstanding_28d304cd-86ce-4c50-9c12-61ff5f08e483" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9704cf56-4767-49bc-9b4a-41504cccfeb8" xlink:to="loc_us-gaap_CommonStockValueOutstanding_28d304cd-86ce-4c50-9c12-61ff5f08e483" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalCommonStock_c73e82ae-fa4c-42b0-9dd4-50b397ecec3b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9704cf56-4767-49bc-9b4a-41504cccfeb8" xlink:to="loc_us-gaap_AdditionalPaidInCapitalCommonStock_c73e82ae-fa4c-42b0-9dd4-50b397ecec3b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit_13d22607-fe55-474d-af01-2401f4e96585" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9704cf56-4767-49bc-9b4a-41504cccfeb8" xlink:to="loc_us-gaap_RetainedEarningsAccumulatedDeficit_13d22607-fe55-474d-af01-2401f4e96585" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_749c4265-4e0b-49a1-a02f-b3a8d24e469b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9704cf56-4767-49bc-9b4a-41504cccfeb8" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_749c4265-4e0b-49a1-a02f-b3a8d24e469b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockValueOutstanding_77b6da19-e4f3-481e-9ff0-2abf02b48994" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9704cf56-4767-49bc-9b4a-41504cccfeb8" xlink:to="loc_us-gaap_PreferredStockValueOutstanding_77b6da19-e4f3-481e-9ff0-2abf02b48994" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrent_8796fc48-cff8-42ad-98b3-03d6f02098a8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsPayableCurrent_78624a9d-2c3c-487d-9323-bb27b1c39ed7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8796fc48-cff8-42ad-98b3-03d6f02098a8" xlink:to="loc_us-gaap_AccountsPayableCurrent_78624a9d-2c3c-487d-9323-bb27b1c39ed7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_ef22df73-deec-4e25-b4bc-7f613fdb60cf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8796fc48-cff8-42ad-98b3-03d6f02098a8" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent_ef22df73-deec-4e25-b4bc-7f613fdb60cf" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedIncomeTaxesCurrent_83779330-84f2-43a7-8714-db19ef0b96be" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8796fc48-cff8-42ad-98b3-03d6f02098a8" xlink:to="loc_us-gaap_AccruedIncomeTaxesCurrent_83779330-84f2-43a7-8714-db19ef0b96be" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent_f1167bde-70d0-46ab-9d3e-a53e608e1e2d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8796fc48-cff8-42ad-98b3-03d6f02098a8" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityCurrent_f1167bde-70d0-46ab-9d3e-a53e608e1e2d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent_8e75c5ba-f9e5-45c4-9449-62f61f1b2770" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8796fc48-cff8-42ad-98b3-03d6f02098a8" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrent_8e75c5ba-f9e5-45c4-9449-62f61f1b2770" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDBALANCESHEETSParenthetical"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS" xlink:type="simple" xlink:href="cgnx-20201231.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_c5a9730d-6e14-47cc-89da-f587eb0f6e74" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_02dce915-c1d9-492c-93f2-2cd1a07499eb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c5a9730d-6e14-47cc-89da-f587eb0f6e74" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_02dce915-c1d9-492c-93f2-2cd1a07499eb" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_4b5ba842-ba72-424a-a73f-675d466a0f63" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c5a9730d-6e14-47cc-89da-f587eb0f6e74" xlink:to="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_4b5ba842-ba72-424a-a73f-675d466a0f63" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_d1ef10eb-ac0d-4e41-9769-cb99253420b7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c5a9730d-6e14-47cc-89da-f587eb0f6e74" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_d1ef10eb-ac0d-4e41-9769-cb99253420b7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_3ea2b639-132e-424c-82b4-be62af5b0c03" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c5a9730d-6e14-47cc-89da-f587eb0f6e74" xlink:to="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_3ea2b639-132e-424c-82b4-be62af5b0c03" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_f9b279c4-25bf-4f55-a8f6-ce6adc0e9acc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions_70a345a4-30c2-495e-818b-1e48ea948d82" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f9b279c4-25bf-4f55-a8f6-ce6adc0e9acc" xlink:to="loc_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions_70a345a4-30c2-495e-818b-1e48ea948d82" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForRepurchaseOfCommonStock_51423b5c-3204-49b8-9f91-91baf39c5f36" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f9b279c4-25bf-4f55-a8f6-ce6adc0e9acc" xlink:to="loc_us-gaap_PaymentsForRepurchaseOfCommonStock_51423b5c-3204-49b8-9f91-91baf39c5f36" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsOfDividendsCommonStock_31df2224-adef-4621-bb69-5e1e9afa26c8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f9b279c4-25bf-4f55-a8f6-ce6adc0e9acc" xlink:to="loc_us-gaap_PaymentsOfDividendsCommonStock_31df2224-adef-4621-bb69-5e1e9afa26c8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_d9dd49d0-61bc-42a2-9e0c-510805df78d8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f9b279c4-25bf-4f55-a8f6-ce6adc0e9acc" xlink:to="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_d9dd49d0-61bc-42a2-9e0c-510805df78d8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_895feca4-13d3-4751-960f-4aa611dca496" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInInvestingActivities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireInvestments_3980ab1a-f5f0-4d9b-862e-561dc06ca2b7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_895feca4-13d3-4751-960f-4aa611dca496" xlink:to="loc_us-gaap_PaymentsToAcquireInvestments_3980ab1a-f5f0-4d9b-862e-561dc06ca2b7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments_6481aac6-a4e0-443f-a9dd-40a2d2ca5edc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_895feca4-13d3-4751-960f-4aa611dca496" xlink:to="loc_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments_6481aac6-a4e0-443f-a9dd-40a2d2ca5edc" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_5bfe94a1-03f9-4821-a920-850ca70d2ff4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_895feca4-13d3-4751-960f-4aa611dca496" xlink:to="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_5bfe94a1-03f9-4821-a920-850ca70d2ff4" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired_357a9f54-1b63-4520-9489-686863c5f386" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_895feca4-13d3-4751-960f-4aa611dca496" xlink:to="loc_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired_357a9f54-1b63-4520-9489-686863c5f386" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_62bf24c5-7d09-4496-acf9-afa400912b2c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_62bf24c5-7d09-4496-acf9-afa400912b2c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnSaleOfPropertyPlantEquipment_e426fad5-5306-448d-90cc-ff193c18a308" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_GainLossOnSaleOfPropertyPlantEquipment_e426fad5-5306-448d-90cc-ff193c18a308" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_2c187917-2a14-4e52-89ae-cd03112f5afc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_NetIncomeLoss_2c187917-2a14-4e52-89ae-cd03112f5afc" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockOptionPlanExpense_a2f72351-ac01-4c2c-bef5-9b8b9d113089" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_StockOptionPlanExpense_a2f72351-ac01-4c2c-bef5-9b8b9d113089" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Depreciation_1784b98c-53da-41fe-b2b3-a96c1463eae8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_Depreciation_1784b98c-53da-41fe-b2b3-a96c1463eae8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AmortizationOfIntangibleAssets_647673ea-d180-4726-b61c-fa03392ffd3a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_AmortizationOfIntangibleAssets_647673ea-d180-4726-b61c-fa03392ffd3a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_1939f502-2969-42c9-a74d-e503867a4330" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_1939f502-2969-42c9-a74d-e503867a4330" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_d6be15f7-27c3-4b62-8625-21fc72dd5118" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_d6be15f7-27c3-4b62-8625-21fc72dd5118" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ExcessAndObsoleteInventoryCharges_a4c982e8-e010-410b-934c-ac4e1ea18096" xlink:href="cgnx-20201231.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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_cgnx_ExcessAndObsoleteInventoryCharges_a4c982e8-e010-410b-934c-ac4e1ea18096" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_b2a51540-cde2-4753-9b55-361f095c895a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_b2a51540-cde2-4753-9b55-361f095c895a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnSaleOfInvestments_71925025-6184-455e-9e16-5a2f38d37b16" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_GainLossOnSaleOfInvestments_71925025-6184-455e-9e16-5a2f38d37b16" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1_4e71108a-094f-4ba6-84fb-4b4869204944" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1_4e71108a-094f-4ba6-84fb-4b4869204944" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes_f749a618-256c-4a08-9d66-d0905f5c0393" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes_f749a618-256c-4a08-9d66-d0905f5c0393" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_871b8348-50de-4f88-adc3-74869bcc3c32" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_871b8348-50de-4f88-adc3-74869bcc3c32" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerAsset_6f378d90-48c5-4ffc-8d98-26a2c3211421" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_IncreaseDecreaseInContractWithCustomerAsset_6f378d90-48c5-4ffc-8d98-26a2c3211421" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInInventories_759aef0f-9bdd-4e7c-8037-09ef6ea2e5a1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_IncreaseDecreaseInInventories_759aef0f-9bdd-4e7c-8037-09ef6ea2e5a1" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsPayable_3d6c34ad-0f82-4a2a-9eaa-c8a7dffe84b0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsPayable_3d6c34ad-0f82-4a2a-9eaa-c8a7dffe84b0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_9afe13e4-fecb-45d2-8a2b-361737d426e7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_9afe13e4-fecb-45d2-8a2b-361737d426e7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable_4428c65b-d2d9-4c91-8256-b6ec935a0796" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable_4428c65b-d2d9-4c91-8256-b6ec935a0796" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_7a81e165-bab5-4c05-a8ba-0a1226816d31" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_7a81e165-bab5-4c05-a8ba-0a1226816d31" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet_ccd760e4-0a0f-44c4-ada6-6e020475adcf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db6d1ba6-6983-46ad-adca-c7294b395280" xlink:to="loc_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet_ccd760e4-0a0f-44c4-ada6-6e020475adcf" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPolicies" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPolicies"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPolicies" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesPolicies"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesWarrantyDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/NewPronouncements" xlink:type="simple" xlink:href="cgnx-20201231.xsd#NewPronouncements"/>
  <link:calculationLink xlink:role="http://cognex.com/role/NewPronouncements" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/NewPronouncementsPolicies" xlink:type="simple" xlink:href="cgnx-20201231.xsd#NewPronouncementsPolicies"/>
  <link:calculationLink xlink:role="http://cognex.com/role/NewPronouncementsPolicies" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurements" xlink:type="simple" xlink:href="cgnx-20201231.xsd#FairValueMeasurements"/>
  <link:calculationLink xlink:role="http://cognex.com/role/FairValueMeasurements" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#FairValueMeasurementsTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/FairValueMeasurementsTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#FairValueMeasurementsAdditionalInformationDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestments" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestments"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestments" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestmentsTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_cc0e0f27-fb69-422d-a716-14cd4f203471" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LongTermInvestments"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_5e403cd0-6f8a-45cc-b4bf-a22d2d2e14c4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cc0e0f27-fb69-422d-a716-14cd4f203471" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_5e403cd0-6f8a-45cc-b4bf-a22d2d2e14c4" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_eaaf78b4-0cbd-46c9-bd93-7089155f352c" xlink:href="cgnx-20201231.xsd#cgnx_CashCashEquivalentsShortTermAndLongTermInvestments"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_3cf8288d-13f2-4b3f-ae0e-7e48105abf3b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_eaaf78b4-0cbd-46c9-bd93-7089155f352c" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_3cf8288d-13f2-4b3f-ae0e-7e48105abf3b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_93455feb-7791-4910-8de3-1f488aa67017" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_eaaf78b4-0cbd-46c9-bd93-7089155f352c" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_93455feb-7791-4910-8de3-1f488aa67017" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_c1293fe9-5ad6-4361-a914-f8bb76027c6a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_eaaf78b4-0cbd-46c9-bd93-7089155f352c" xlink:to="loc_us-gaap_LongTermInvestments_c1293fe9-5ad6-4361-a914-f8bb76027c6a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_5fe4686a-e000-4bae-9976-f0771f2272bf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_c5e168b1-9d9e-4616-a798-f8ad1fef4152" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5fe4686a-e000-4bae-9976-f0771f2272bf" xlink:to="loc_us-gaap_Cash_c5e168b1-9d9e-4616-a798-f8ad1fef4152" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsAtCarryingValue_7af47e63-032d-42c1-bf12-7d1099c1df2f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5fe4686a-e000-4bae-9976-f0771f2272bf" xlink:to="loc_us-gaap_MoneyMarketFundsAtCarryingValue_7af47e63-032d-42c1-bf12-7d1099c1df2f" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestmentsAdditionalInformationDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail" xlink:type="simple" xlink:href="cgnx-20201231.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_2c8478a5-2dc1-4d3b-bc30-a3456c84d51b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_e7ccb9d6-fb61-4e20-accc-7089f5a01408" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax"/>
    <link:calculationArc order="1" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_2c8478a5-2dc1-4d3b-bc30-a3456c84d51b" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_e7ccb9d6-fb61-4e20-accc-7089f5a01408" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_30d575ec-1554-4dbc-9813-73edfd0bd514" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_2c8478a5-2dc1-4d3b-bc30-a3456c84d51b" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_30d575ec-1554-4dbc-9813-73edfd0bd514" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_e77ccb7e-e089-4643-a11a-ce65125a9d50" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2c8478a5-2dc1-4d3b-bc30-a3456c84d51b" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_e77ccb7e-e089-4643-a11a-ce65125a9d50" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20201231.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_176b7c72-49e6-4f6b-9c62-af2ea26e5c11" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_f06f5c4a-76b6-4454-9d18-5dabea9f3aa6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_176b7c72-49e6-4f6b-9c62-af2ea26e5c11" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_f06f5c4a-76b6-4454-9d18-5dabea9f3aa6" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_43dd7a3a-4faf-492d-9572-12129b83a64e" xlink:href="cgnx-20201231.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_176b7c72-49e6-4f6b-9c62-af2ea26e5c11" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_43dd7a3a-4faf-492d-9572-12129b83a64e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_889ccc64-dda8-49f4-98a2-2604b3b6937e" xlink:href="cgnx-20201231.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_176b7c72-49e6-4f6b-9c62-af2ea26e5c11" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_889ccc64-dda8-49f4-98a2-2604b3b6937e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_f8a27beb-8c99-4d46-b4a4-2f5445192b95" xlink:href="cgnx-20201231.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_176b7c72-49e6-4f6b-9c62-af2ea26e5c11" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_f8a27beb-8c99-4d46-b4a4-2f5445192b95" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_6489af4d-0903-4314-b026-0fa1903e0020" xlink:href="cgnx-20201231.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_176b7c72-49e6-4f6b-9c62-af2ea26e5c11" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_6489af4d-0903-4314-b026-0fa1903e0020" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/Inventories" xlink:type="simple" xlink:href="cgnx-20201231.xsd#Inventories"/>
  <link:calculationLink xlink:role="http://cognex.com/role/Inventories" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/InventoriesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#InventoriesTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/InventoriesTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/InventoriesInventoriesDetail" xlink:type="simple" xlink:href="cgnx-20201231.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_d3a9b48c-58e8-4a15-96c9-30ac2bb659f1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryRawMaterialsNetOfReserves_a3e227bd-f23c-4635-a8a9-6eea9925ac80" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d3a9b48c-58e8-4a15-96c9-30ac2bb659f1" xlink:to="loc_us-gaap_InventoryRawMaterialsNetOfReserves_a3e227bd-f23c-4635-a8a9-6eea9925ac80" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryWorkInProcessNetOfReserves_988136f6-c08a-43c2-a83c-978cb71b6f65" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d3a9b48c-58e8-4a15-96c9-30ac2bb659f1" xlink:to="loc_us-gaap_InventoryWorkInProcessNetOfReserves_988136f6-c08a-43c2-a83c-978cb71b6f65" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_8d6bf303-1904-4b1b-ae11-1bfa6a4eb5d2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d3a9b48c-58e8-4a15-96c9-30ac2bb659f1" xlink:to="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_8d6bf303-1904-4b1b-ae11-1bfa6a4eb5d2" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipment" xlink:type="simple" xlink:href="cgnx-20201231.xsd#PropertyPlantandEquipment"/>
  <link:calculationLink xlink:role="http://cognex.com/role/PropertyPlantandEquipment" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipmentTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#PropertyPlantandEquipmentTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/PropertyPlantandEquipmentTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail" xlink:type="simple" xlink:href="cgnx-20201231.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_eeac2318-4b46-42f5-a459-069e4d6522c3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentGross_65c06473-f2ba-4326-96a3-c30e75c01add" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_eeac2318-4b46-42f5-a459-069e4d6522c3" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentGross_65c06473-f2ba-4326-96a3-c30e75c01add" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_7aa13b3e-1d21-45da-9e92-3af179c64251" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_eeac2318-4b46-42f5-a459-069e4d6522c3" xlink:to="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_7aa13b3e-1d21-45da-9e92-3af179c64251" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#PropertyPlantandEquipmentAdditionalInformationDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/LeasesLeases" xlink:type="simple" xlink:href="cgnx-20201231.xsd#LeasesLeases"/>
  <link:calculationLink xlink:role="http://cognex.com/role/LeasesLeases" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/LeasesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#LeasesTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/LeasesTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/LeasesDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#LeasesDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/LeasesDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/LeasesScheduleofPaymentsDetails" xlink:type="simple" xlink:href="cgnx-20201231.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_07bc5322-9ff5-496c-bdd3-cbbed4cdffd4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_11e13907-d9b4-449b-82cd-5760e7f67d96" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_07bc5322-9ff5-496c-bdd3-cbbed4cdffd4" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_11e13907-d9b4-449b-82cd-5760e7f67d96" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_b4e26b3e-0f76-45fe-8d5d-8bd19f79bf0c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_07bc5322-9ff5-496c-bdd3-cbbed4cdffd4" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_b4e26b3e-0f76-45fe-8d5d-8bd19f79bf0c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_7e64de0d-d0b6-4b99-9c45-bcb8876ed894" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_07bc5322-9ff5-496c-bdd3-cbbed4cdffd4" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_7e64de0d-d0b6-4b99-9c45-bcb8876ed894" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_d390dfb6-d6cd-4081-a2af-cfda897e9952" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_07bc5322-9ff5-496c-bdd3-cbbed4cdffd4" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_d390dfb6-d6cd-4081-a2af-cfda897e9952" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive_82b5acf5-19df-48f5-8ece-a5ec2a5b6339" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_07bc5322-9ff5-496c-bdd3-cbbed4cdffd4" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive_82b5acf5-19df-48f5-8ece-a5ec2a5b6339" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive_476fea44-fd2e-434f-899b-e7cdf27a5c63" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_07bc5322-9ff5-496c-bdd3-cbbed4cdffd4" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive_476fea44-fd2e-434f-899b-e7cdf27a5c63" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/Goodwill" xlink:type="simple" xlink:href="cgnx-20201231.xsd#Goodwill"/>
  <link:calculationLink xlink:role="http://cognex.com/role/Goodwill" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/GoodwillTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#GoodwillTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/GoodwillTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#GoodwillChangesintheCarryingValueofGoodwillDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/GoodwillAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#GoodwillAdditionalInformationDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/GoodwillAdditionalInformationDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssets" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IntangibleAssets"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IntangibleAssets" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IntangibleAssetsTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IntangibleAssetsTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail" xlink:type="simple" xlink:href="cgnx-20201231.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_cf7a2895-8f28-43ce-9353-28f8a4a19172" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsGross_06cad630-9f8d-4b71-859d-71aa76b389c3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cf7a2895-8f28-43ce-9353-28f8a4a19172" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsGross_06cad630-9f8d-4b71-859d-71aa76b389c3" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_84b3e8a3-bda0-4e10-9289-6a045e652565" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cf7a2895-8f28-43ce-9353-28f8a4a19172" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_84b3e8a3-bda0-4e10-9289-6a045e652565" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail" xlink:type="simple" xlink:href="cgnx-20201231.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_2df73a98-aba8-4c67-ba8f-230019dee42a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths_56f3b450-6a53-4612-b82b-84e44499c8f9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2df73a98-aba8-4c67-ba8f-230019dee42a" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths_56f3b450-6a53-4612-b82b-84e44499c8f9" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo_5517a06a-15fa-4466-81bf-b48eae952f74" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2df73a98-aba8-4c67-ba8f-230019dee42a" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo_5517a06a-15fa-4466-81bf-b48eae952f74" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree_e3644ee8-fc71-49e6-b362-11baba168bfa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2df73a98-aba8-4c67-ba8f-230019dee42a" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree_e3644ee8-fc71-49e6-b362-11baba168bfa" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour_e52e768f-173a-4c3e-a498-937cd418ef16" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2df73a98-aba8-4c67-ba8f-230019dee42a" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour_e52e768f-173a-4c3e-a498-937cd418ef16" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive_9374f894-a940-4060-b8b1-4bd3c4772c16" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2df73a98-aba8-4c67-ba8f-230019dee42a" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive_9374f894-a940-4060-b8b1-4bd3c4772c16" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive_7a258d60-263c-46f3-9366-50fc0e7758a2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2df73a98-aba8-4c67-ba8f-230019dee42a" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive_7a258d60-263c-46f3-9366-50fc0e7758a2" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsNarrativeDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IntangibleAssetsNarrativeDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IntangibleAssetsNarrativeDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpenses" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AccruedExpenses"/>
  <link:calculationLink xlink:role="http://cognex.com/role/AccruedExpenses" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpensesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AccruedExpensesTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/AccruedExpensesTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail" xlink:type="simple" xlink:href="cgnx-20201231.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_9130cdbb-36fa-41cc-89f3-72791edb10b0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccruedLiabilitiesCurrent"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedSalariesCurrent_a4369efd-be3e-468e-ae46-f51b8891c798" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9130cdbb-36fa-41cc-89f3-72791edb10b0" xlink:to="loc_us-gaap_AccruedSalariesCurrent_a4369efd-be3e-468e-ae46-f51b8891c798" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RetirementAllowance_69c42f9f-9f28-460f-a328-42456c16d984" xlink:href="cgnx-20201231.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_9130cdbb-36fa-41cc-89f3-72791edb10b0" xlink:to="loc_cgnx_RetirementAllowance_69c42f9f-9f28-460f-a328-42456c16d984" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_eb1e30ac-49bd-472e-a9cc-1c9afc3a93fd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9130cdbb-36fa-41cc-89f3-72791edb10b0" xlink:to="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_eb1e30ac-49bd-472e-a9cc-1c9afc3a93fd" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedVacationCurrent_35f18c9e-d46b-4876-89d9-e3ba51021df5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9130cdbb-36fa-41cc-89f3-72791edb10b0" xlink:to="loc_us-gaap_AccruedVacationCurrent_35f18c9e-d46b-4876-89d9-e3ba51021df5" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedBonusesCurrent_97207baf-e837-491e-b20d-1a2cf255073a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9130cdbb-36fa-41cc-89f3-72791edb10b0" xlink:to="loc_us-gaap_AccruedBonusesCurrent_97207baf-e837-491e-b20d-1a2cf255073a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAccruedLiabilitiesCurrent_ce468634-ca62-4370-8f1f-ed4a975c6fbe" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9130cdbb-36fa-41cc-89f3-72791edb10b0" xlink:to="loc_us-gaap_OtherAccruedLiabilitiesCurrent_ce468634-ca62-4370-8f1f-ed4a975c6fbe" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AccruedExpensesChangesinWarrantyObligationsDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CommitmentsandContingencies" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CommitmentsandContingencies"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CommitmentsandContingencies" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CommitmentsandContingenciesAdditionalInformationDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/IndemnificationProvisions" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IndemnificationProvisions"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IndemnificationProvisions" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstruments" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstruments"/>
  <link:calculationLink xlink:role="http://cognex.com/role/DerivativeInstruments" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsAdditionalDetailsDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsOutstandingForwardContractsDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsBalanceSheetLocationDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssets_dfd6ab34-c591-4a82-bf53-9355472e283b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeAssets"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeFairValueOfDerivativeAsset_a3053378-d152-47ce-abe7-019bb465f267" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dfd6ab34-c591-4a82-bf53-9355472e283b" xlink:to="loc_us-gaap_DerivativeFairValueOfDerivativeAsset_a3053378-d152-47ce-abe7-019bb465f267" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset_d2c9360b-1b2d-4bb8-9742-dca319c0d888" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dfd6ab34-c591-4a82-bf53-9355472e283b" xlink:to="loc_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset_d2c9360b-1b2d-4bb8-9742-dca319c0d888" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilities_d4a2c6c4-1805-46e0-848c-8a92bce4e33d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeLiabilities"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeFairValueOfDerivativeLiability_9f07d0a5-215b-48fa-a6bf-1d4c92ab97a6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d4a2c6c4-1805-46e0-848c-8a92bce4e33d" xlink:to="loc_us-gaap_DerivativeFairValueOfDerivativeLiability_9f07d0a5-215b-48fa-a6bf-1d4c92ab97a6" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset_4b475147-93b3-42a8-afc5-95623304b5cb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d4a2c6c4-1805-46e0-848c-8a92bce4e33d" xlink:to="loc_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset_4b475147-93b3-42a8-afc5-95623304b5cb" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognition" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognition"/>
  <link:calculationLink xlink:role="http://cognex.com/role/RevenueRecognition" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognitionTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/RevenueRecognitionTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionNarrativesDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognitionNarrativesDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/RevenueRecognitionNarrativesDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognitionDisaggregationbyGeographyandTypeDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognitionAllowanceforCreditLossDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/ShareholdersEquity" xlink:type="simple" xlink:href="cgnx-20201231.xsd#ShareholdersEquity"/>
  <link:calculationLink xlink:role="http://cognex.com/role/ShareholdersEquity" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#ShareholdersEquityAdditionalInformationDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensation" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensation"/>
  <link:calculationLink xlink:role="http://cognex.com/role/StockBasedCompensation" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/StockBasedCompensationTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationExpenseAdditionalInformationDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/EmployeeSavingsPlan" xlink:type="simple" xlink:href="cgnx-20201231.xsd#EmployeeSavingsPlan"/>
  <link:calculationLink xlink:role="http://cognex.com/role/EmployeeSavingsPlan" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#EmployeeSavingsPlanAdditionalInformationDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfFourYears_0df012f4-8d5c-477a-af94-69bec1aacfc1" xlink:href="cgnx-20201231.xsd#cgnx_CompanyContributionsVestAtEndOfFourYears"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfOneYear_a9ff3e57-4f65-4de9-bbd8-ea6b68bfa143" xlink:href="cgnx-20201231.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_0df012f4-8d5c-477a-af94-69bec1aacfc1" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfOneYear_a9ff3e57-4f65-4de9-bbd8-ea6b68bfa143" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfTwoYear_5905355c-47bc-43c0-9620-aeed61a8f1e5" xlink:href="cgnx-20201231.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_0df012f4-8d5c-477a-af94-69bec1aacfc1" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfTwoYear_5905355c-47bc-43c0-9620-aeed61a8f1e5" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfThreeYears_b6034582-3774-42d7-b19c-f8b7eeda4bf6" xlink:href="cgnx-20201231.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_0df012f4-8d5c-477a-af94-69bec1aacfc1" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfThreeYears_b6034582-3774-42d7-b19c-f8b7eeda4bf6" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxes" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxes"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IncomeTaxes" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IncomeTaxesTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesAdditionalInformationDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IncomeTaxesAdditionalInformationDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_13050d31-c673-4df4-b46c-e5c9a4720b75" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxExpenseBenefit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_b94a6d8d-61c8-4959-a06b-31b8730c5d2a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_13050d31-c673-4df4-b46c-e5c9a4720b75" xlink:to="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_b94a6d8d-61c8-4959-a06b-31b8730c5d2a" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_5437ef0e-b6ca-4c97-8118-60922464151b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_13050d31-c673-4df4-b46c-e5c9a4720b75" xlink:to="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_5437ef0e-b6ca-4c97-8118-60922464151b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_d15cf84a-2490-4eaf-9d84-00135db90bdc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_13050d31-c673-4df4-b46c-e5c9a4720b75" xlink:to="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_d15cf84a-2490-4eaf-9d84-00135db90bdc" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_4fc37e94-11b2-4123-80d9-56146a47adec" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_0b380e06-36b8-4afe-8996-8c79c7ac8ada" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4fc37e94-11b2-4123-80d9-56146a47adec" xlink:to="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_0b380e06-36b8-4afe-8996-8c79c7ac8ada" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_5ed6df64-a5f4-4c0d-a94c-75710bc6c6c1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4fc37e94-11b2-4123-80d9-56146a47adec" xlink:to="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_5ed6df64-a5f4-4c0d-a94c-75710bc6c6c1" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_73588b4f-d8a7-4ccd-b048-d83b0c8b657a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CurrentIncomeTaxExpenseBenefit"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentFederalTaxExpenseBenefit_9e96759e-d79d-4d14-9a49-e86fd83d5e55" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73588b4f-d8a7-4ccd-b048-d83b0c8b657a" xlink:to="loc_us-gaap_CurrentFederalTaxExpenseBenefit_9e96759e-d79d-4d14-9a49-e86fd83d5e55" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_0a09da27-0872-48a0-bbed-b2f14e47598d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73588b4f-d8a7-4ccd-b048-d83b0c8b657a" xlink:to="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_0a09da27-0872-48a0-bbed-b2f14e47598d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentForeignTaxExpenseBenefit_42e07200-cda4-4966-bf4c-82949d95479a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73588b4f-d8a7-4ccd-b048-d83b0c8b657a" xlink:to="loc_us-gaap_CurrentForeignTaxExpenseBenefit_42e07200-cda4-4966-bf4c-82949d95479a" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails" xlink:type="simple" xlink:href="cgnx-20201231.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_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_171cee17-692a-4de2-96f6-db39a4540e07" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_171cee17-692a-4de2-96f6-db39a4540e07" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_561f6bd6-8e90-4b49-9dab-6c458fc5c31b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_561f6bd6-8e90-4b49-9dab-6c458fc5c31b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_0644345c-091a-4077-a174-d343a539f095" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_0644345c-091a-4077-a174-d343a539f095" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits_315d3857-d381-4e9d-b245-a437dabab490" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits_315d3857-d381-4e9d-b245-a437dabab490" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_4b4eda56-5120-4141-85ca-f54bbb13c99d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_4b4eda56-5120-4141-85ca-f54bbb13c99d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent_6ed7c575-bbc2-4c84-8f8a-162392da4ebf" xlink:href="cgnx-20201231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent_6ed7c575-bbc2-4c84-8f8a-162392da4ebf" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_865df28f-d4ab-44d5-b317-69d403421cc1" xlink:href="cgnx-20201231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_865df28f-d4ab-44d5-b317-69d403421cc1" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate_1204b369-b43b-4baf-8c8b-140eaf200ae0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate_1204b369-b43b-4baf-8c8b-140eaf200ae0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_a2a7a7fa-2a94-4a9e-849b-1ad81c559974" xlink:href="cgnx-20201231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_a2a7a7fa-2a94-4a9e-849b-1ad81c559974" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent_25a4e705-192b-4297-8e84-8f5120ca6422" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent"/>
    <link:calculationArc order="10" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent_25a4e705-192b-4297-8e84-8f5120ca6422" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments_a9d51d19-322d-4358-a3ae-07513f1402cc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments"/>
    <link:calculationArc order="11" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments_a9d51d19-322d-4358-a3ae-07513f1402cc" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements_a7239ac2-e107-4d1c-b05c-8894d1235dc8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements"/>
    <link:calculationArc order="12" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements_a7239ac2-e107-4d1c-b05c-8894d1235dc8" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign_76478d35-aa6f-44c0-9eef-e019313e3875" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign"/>
    <link:calculationArc order="13" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_fd6a1185-7131-4b86-85d3-ae5b5a0046d4" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign_76478d35-aa6f-44c0-9eef-e019313e3875" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesScheduleofChangeinAccountingPolicyDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesConstituentsofDeferredTaxAssetsDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross_a781c234-1c3c-44a5-bb44-1fe78d8b35ff" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_0f9b62f0-c63a-4e1f-9ae4-4196e3acf9a1" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross_a781c234-1c3c-44a5-bb44-1fe78d8b35ff" xlink:to="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_0f9b62f0-c63a-4e1f-9ae4-4196e3acf9a1" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome_9c37707e-c995-4640-864e-41e221ffd068" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross_a781c234-1c3c-44a5-bb44-1fe78d8b35ff" xlink:to="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome_9c37707e-c995-4640-864e-41e221ffd068" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_5a97bb96-9e2f-409e-a5d9-053a808f9099" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsLiabilitiesNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_c1f9842d-fa27-434b-9b24-697b1a0b86bc" xlink:href="cgnx-20201231.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_5a97bb96-9e2f-409e-a5d9-053a808f9099" xlink:to="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_c1f9842d-fa27-434b-9b24-697b1a0b86bc" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_5a7c882c-f83d-4c95-a7b0-3c92556dcebc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5a97bb96-9e2f-409e-a5d9-053a808f9099" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_5a7c882c-f83d-4c95-a7b0-3c92556dcebc" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_a1664e7f-3b0e-4ef1-b241-694b7a68c441" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_706e2964-404f-451f-b3d6-2ff4ee29aff2" xlink:href="cgnx-20201231.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_a1664e7f-3b0e-4ef1-b241-694b7a68c441" xlink:to="loc_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_706e2964-404f-451f-b3d6-2ff4ee29aff2" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_5f3028e3-d76b-46da-80c8-fef292310b37" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1664e7f-3b0e-4ef1-b241-694b7a68c441" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_5f3028e3-d76b-46da-80c8-fef292310b37" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic_ff781b36-84cc-4144-aab0-a60cc275e5a6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1664e7f-3b0e-4ef1-b241-694b7a68c441" xlink:to="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic_ff781b36-84cc-4144-aab0-a60cc275e5a6" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign_870639d5-9198-40d2-90a5-d94b2a683f2e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1664e7f-3b0e-4ef1-b241-694b7a68c441" xlink:to="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign_870639d5-9198-40d2-90a5-d94b2a683f2e" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NoncurrentDeferredTaxAssetsDeprecation_6b7cda7b-1ad9-4ff7-9de5-0ea89355cc5c" xlink:href="cgnx-20201231.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_a1664e7f-3b0e-4ef1-b241-694b7a68c441" xlink:to="loc_cgnx_NoncurrentDeferredTaxAssetsDeprecation_6b7cda7b-1ad9-4ff7-9de5-0ea89355cc5c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsInventory_d87f4cca-d8d9-4b1f-a2d1-88537c3a481b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1664e7f-3b0e-4ef1-b241-694b7a68c441" xlink:to="loc_us-gaap_DeferredTaxAssetsInventory_d87f4cca-d8d9-4b1f-a2d1-88537c3a481b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther_dbeff639-a1c8-4983-81c7-5520acc84460" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1664e7f-3b0e-4ef1-b241-694b7a68c441" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther_dbeff639-a1c8-4983-81c7-5520acc84460" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsOtherNoncurrent_d00a8f13-98d4-4bb5-af5f-12d6c5b39c2f" xlink:href="cgnx-20201231.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_a1664e7f-3b0e-4ef1-b241-694b7a68c441" xlink:to="loc_cgnx_DeferredTaxAssetsOtherNoncurrent_d00a8f13-98d4-4bb5-af5f-12d6c5b39c2f" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageShares" xlink:type="simple" xlink:href="cgnx-20201231.xsd#WeightedAverageShares"/>
  <link:calculationLink xlink:role="http://cognex.com/role/WeightedAverageShares" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageSharesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#WeightedAverageSharesTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/WeightedAverageSharesTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail" xlink:type="simple" xlink:href="cgnx-20201231.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_adab15e6-ffd4-4e21-8ab1-e3d068b5bfc7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_e8b2c03a-3023-4412-968a-ba5d73dccea0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_adab15e6-ffd4-4e21-8ab1-e3d068b5bfc7" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_e8b2c03a-3023-4412-968a-ba5d73dccea0" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment_4f3265e0-6096-46c6-bd45-ab7847b62d32" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_adab15e6-ffd4-4e21-8ab1-e3d068b5bfc7" xlink:to="loc_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment_4f3265e0-6096-46c6-bd45-ab7847b62d32" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#WeightedAverageSharesAdditionalInformationDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformation" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SegmentandGeographicInformation"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SegmentandGeographicInformation" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformationTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SegmentandGeographicInformationTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SegmentandGeographicInformationTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SegmentandGeographicInformationAdditionalInformationDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/Acquisitions" xlink:type="simple" xlink:href="cgnx-20201231.xsd#Acquisitions"/>
  <link:calculationLink xlink:role="http://cognex.com/role/Acquisitions" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/AcquisitionsAcquisitionsTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AcquisitionsAcquisitionsTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/AcquisitionsAcquisitionsTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AcquisitionsSualabCoLtdNarrativeDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents_66674180-557d-458b-91aa-233b2031d5de" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents"/>
    <link:calculationArc order="1" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents_66674180-557d-458b-91aa-233b2031d5de" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities_bd6222ff-2fb2-46ae-8ca1-4823a82689a2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities"/>
    <link:calculationArc order="2" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities_bd6222ff-2fb2-46ae-8ca1-4823a82689a2" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables_d6048634-9f9e-42f8-8e78-775c4e82bc46" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables"/>
    <link:calculationArc order="3" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables_d6048634-9f9e-42f8-8e78-775c4e82bc46" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory_d5107eef-ff10-4d07-a5d0-71b213f9a94c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory"/>
    <link:calculationArc order="4" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory_d5107eef-ff10-4d07-a5d0-71b213f9a94c" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets_ca2c15b3-14dd-421d-8e5b-9ccf8bd2a87d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets"/>
    <link:calculationArc order="5" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets_ca2c15b3-14dd-421d-8e5b-9ccf8bd2a87d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment_e80bb1ac-6cb6-4499-bb69-a7493c768ff7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment"/>
    <link:calculationArc order="6" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment_e80bb1ac-6cb6-4499-bb69-a7493c768ff7" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset_8f563c6c-1587-471d-990b-14c621dfe355" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset"/>
    <link:calculationArc order="7" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset_8f563c6c-1587-471d-990b-14c621dfe355" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets_4c96d24b-208f-45b9-a98f-d307dc1bad61" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets"/>
    <link:calculationArc order="8" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets_4c96d24b-208f-45b9-a98f-d307dc1bad61" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets_ac42fc08-df8e-474a-bd13-2ab5eea4c3d6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets"/>
    <link:calculationArc order="9" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets_ac42fc08-df8e-474a-bd13-2ab5eea4c3d6" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable_9dee38aa-7311-4f6e-a204-388a2b390df3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable"/>
    <link:calculationArc order="10" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable_9dee38aa-7311-4f6e-a204-388a2b390df3" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities_5e93bedb-ed71-4739-af26-72d163ac2e13" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities"/>
    <link:calculationArc order="11" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities_5e93bedb-ed71-4739-af26-72d163ac2e13" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits_620b2bb1-e61a-4fd2-bd84-e6af86fa1b2d" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits"/>
    <link:calculationArc order="12" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits_620b2bb1-e61a-4fd2-bd84-e6af86fa1b2d" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent_f78d2ae1-c610-4676-9a99-9fd6dd0e8a23" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent"/>
    <link:calculationArc order="13" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent_f78d2ae1-c610-4676-9a99-9fd6dd0e8a23" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent_8ed908e2-bacb-4523-bcc4-42915f5e8c65" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent"/>
    <link:calculationArc order="14" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent_8ed908e2-bacb-4523-bcc4-42915f5e8c65" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue_630bf2ba-65b5-4c70-8058-5de4406913c9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue"/>
    <link:calculationArc order="15" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue_630bf2ba-65b5-4c70-8058-5de4406913c9" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther_27f662cc-df28-402b-9e71-4c09d530dd29" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther"/>
    <link:calculationArc order="16" weight="-1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther_27f662cc-df28-402b-9e71-4c09d530dd29" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_f557ce86-9989-4e8e-85ae-9d376e88181b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill"/>
    <link:calculationArc order="17" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_f557ce86-9989-4e8e-85ae-9d376e88181b" xlink:type="arc"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_50a14380-5f31-4573-a57f-5af9c7eb34f0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Goodwill"/>
    <link:calculationArc order="18" weight="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/summation-item" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_08eda649-8996-47b0-b53f-f369b9025d94" xlink:to="loc_us-gaap_Goodwill_50a14380-5f31-4573-a57f-5af9c7eb34f0" xlink:type="arc"/>
  </link:calculationLink>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringCharges" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RestructuringCharges"/>
  <link:calculationLink xlink:role="http://cognex.com/role/RestructuringCharges" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RestructuringChargesTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/RestructuringChargesTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RestructuringChargesAdditionalInformationDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/RestructuringChargesAdditionalInformationDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SubsequentEvents" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SubsequentEvents"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SubsequentEvents" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SubsequentEventsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SubsequentEventsDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SubsequentEventsDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnaudited" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SelectedQuarterlyFinancialDataUnaudited"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SelectedQuarterlyFinancialDataUnaudited" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SelectedQuarterlyFinancialDataUnauditedTables"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedTables" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SelectedQuarterlyFinancialDataUnauditedDetails"/>
  <link:calculationLink xlink:role="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts" xlink:type="simple" xlink:href="cgnx-20201231.xsd#ScheduleIIValuationandQualifyingAccounts"/>
  <link:calculationLink xlink:role="http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts" xlink:type="extended"/>
  <link:roleRef roleURI="http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#ScheduleIIValuationandQualifyingAccountsDetail"/>
  <link:calculationLink xlink:role="http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail" xlink:type="extended"/>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.DEF
<SEQUENCE>10
<FILENAME>cgnx-20201231_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 2021 Workiva-->
<!--r:efc8e161-eaa0-41a1-b62b-bbec49e61a75,g:1ad2e941-41d2-4cfb-86c0-34f5fd33bff4-->
<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/CoverPage" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CoverPage"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CoverPage" xlink:type="extended" id="i5d5e9dc7de4b4617940f214f8dda7c51_CoverPage"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFOPERATIONS"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS" xlink:type="extended" id="i5bc2fd6341cf49c0b136df6c114b6151_CONSOLIDATEDSTATEMENTSOFOPERATIONS"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical" xlink:type="extended" id="i7f8938173f2647ab9da44cd73699a5ce_CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME" xlink:type="extended" id="iee38084be6d0435da359aeaf05d48ae4_CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical" xlink:type="extended" id="ic37ff1d970624291aa79b28b4a0f78af_CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDBALANCESHEETS" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDBALANCESHEETS"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CONSOLIDATEDBALANCESHEETS" xlink:type="extended" id="i58dfffd6d34f426da43faf486515637b_CONSOLIDATEDBALANCESHEETS"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDBALANCESHEETSParenthetical"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical" xlink:type="extended" id="i7d8be7bb35434560a62305cac5295523_CONSOLIDATEDBALANCESHEETSParenthetical"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFCASHFLOWS"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS" xlink:type="extended" id="i48f3e95594024ccb8a614324fc4fcc59_CONSOLIDATEDSTATEMENTSOFCASHFLOWS"/>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY" xlink:type="extended" id="ib7e42d1d90924953804438de5064c98f_CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementLineItems_1a23d2ef-4a21-4112-b520-29aa62d264f2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncreaseDecreaseInStockholdersEquityRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_StatementLineItems_1a23d2ef-4a21-4112-b520-29aa62d264f2" xlink:to="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_809a68f8-85f8-4919-a58e-c0a475d0d55b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquity"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_StockholdersEquity_809a68f8-85f8-4919-a58e-c0a475d0d55b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued_441d93cc-06cd-485f-b658-b08f11d1883d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesIssued"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_CommonStockSharesIssued_441d93cc-06cd-485f-b658-b08f11d1883d" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_cf72f243-d3c7-4068-88bd-8e108dc66635" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_cf72f243-d3c7-4068-88bd-8e108dc66635" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_d0195cd6-0675-462b-b983-593591ddf414" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_d0195cd6-0675-462b-b983-593591ddf414" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodValue_946dd3f6-54c0-4985-b776-2b12c714e680" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodValue_946dd3f6-54c0-4985-b776-2b12c714e680" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodShares_c3d1061c-60f7-428e-8725-66750875ab36" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodShares"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodShares_c3d1061c-60f7-428e-8725-66750875ab36" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_61105382-7999-4350-86e0-acc720c88cb9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_61105382-7999-4350-86e0-acc720c88cb9" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsCommonStockCash_199a64be-7097-4506-9b0b-daee970d8875" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DividendsCommonStockCash"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_DividendsCommonStockCash_199a64be-7097-4506-9b0b-daee970d8875" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_19b1e015-5516-4997-ae02-f470c438d286" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_NetIncomeLoss_19b1e015-5516-4997-ae02-f470c438d286" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_073f7206-d927-418e-b2b6-996358c18532" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_073f7206-d927-418e-b2b6-996358c18532" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_fb94fe08-b42c-49c1-8a51-66f5c6ce2191" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_fb94fe08-b42c-49c1-8a51-66f5c6ce2191" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_8e22faf5-d38c-4e11-8a3d-a45c2a49c6d3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_8e22faf5-d38c-4e11-8a3d-a45c2a49c6d3" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_32f97e20-d564-4819-965b-6db3a4005cdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_32f97e20-d564-4819-965b-6db3a4005cdb" xlink:type="arc" order="13"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_a506f844-b79a-46ff-b194-cea8cebbffda" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquity"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued_f90f4f2c-c2da-43cc-901c-c2c487eb3c12" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesIssued"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementTable_62de73db-4a12-42c9-ad55-86ed49c0cbf2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_StatementLineItems_1a23d2ef-4a21-4112-b520-29aa62d264f2" xlink:to="loc_us-gaap_StatementTable_62de73db-4a12-42c9-ad55-86ed49c0cbf2" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_25125a7c-4c95-4ac2-98da-01643631ad14" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_StatementTable_62de73db-4a12-42c9-ad55-86ed49c0cbf2" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_25125a7c-4c95-4ac2-98da-01643631ad14" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_25125a7c-4c95-4ac2-98da-01643631ad14_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_25125a7c-4c95-4ac2-98da-01643631ad14" xlink:to="loc_us-gaap_EquityComponentDomain_25125a7c-4c95-4ac2-98da-01643631ad14_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_25125a7c-4c95-4ac2-98da-01643631ad14" xlink:to="loc_us-gaap_EquityComponentDomain_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember_6643987a-f4fd-4ab5-be42-cee664b9f8b9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:to="loc_us-gaap_CommonStockMember_6643987a-f4fd-4ab5-be42-cee664b9f8b9" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalMember_0c4fc56e-1599-433b-8365-f0fe63aa39fc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdditionalPaidInCapitalMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:to="loc_us-gaap_AdditionalPaidInCapitalMember_0c4fc56e-1599-433b-8365-f0fe63aa39fc" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsMember_3f8d593c-f941-4d38-8a04-f5b0d3bd3dfd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetainedEarningsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:to="loc_us-gaap_RetainedEarningsMember_3f8d593c-f941-4d38-8a04-f5b0d3bd3dfd" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_95d0beaa-a24b-497f-8c7a-1f0a1a0437e2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_95d0beaa-a24b-497f-8c7a-1f0a1a0437e2" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CumulativeEffectPeriodOfAdoptionAxis_6fbbea8e-be52-48ca-ad98-239d7a3975d5" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_StatementTable_62de73db-4a12-42c9-ad55-86ed49c0cbf2" xlink:to="loc_srt_CumulativeEffectPeriodOfAdoptionAxis_6fbbea8e-be52-48ca-ad98-239d7a3975d5" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CumulativeEffectPeriodOfAdoptionDomain_6fbbea8e-be52-48ca-ad98-239d7a3975d5_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_CumulativeEffectPeriodOfAdoptionAxis_6fbbea8e-be52-48ca-ad98-239d7a3975d5" xlink:to="loc_srt_CumulativeEffectPeriodOfAdoptionDomain_6fbbea8e-be52-48ca-ad98-239d7a3975d5_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CumulativeEffectPeriodOfAdoptionDomain_b2184d44-2f89-4083-8e17-cf5d796af1d0" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_CumulativeEffectPeriodOfAdoptionAxis_6fbbea8e-be52-48ca-ad98-239d7a3975d5" xlink:to="loc_srt_CumulativeEffectPeriodOfAdoptionDomain_b2184d44-2f89-4083-8e17-cf5d796af1d0" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember_e507b060-cd5b-49e3-a44f-955dd739bd86" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_CumulativeEffectPeriodOfAdoptionDomain_b2184d44-2f89-4083-8e17-cf5d796af1d0" xlink:to="loc_srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember_e507b060-cd5b-49e3-a44f-955dd739bd86" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical" xlink:type="extended" id="i9084606d63354425abbb95660ed18197_CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPolicies" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPolicies"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPolicies" xlink:type="extended" id="i8ab3bc25ebe84410b05df847102d4dc7_SummaryofSignificantAccountingPolicies"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesPolicies"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies" xlink:type="extended" id="i6a3d2d6e16b644b794eb131c70ae2d41_SummaryofSignificantAccountingPoliciesPolicies"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail" xlink:type="extended" id="ibb5bc017595a4de3a9db323075f4c2c2_SummaryofSignificantAccountingPoliciesAdditionalInformationDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_eacba240-b41f-4adb-b7af-ae015334d173" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_beb1a47f-0e3a-4f18-a0fe-86afaab854b1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentUsefulLife"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_eacba240-b41f-4adb-b7af-ae015334d173" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_beb1a47f-0e3a-4f18-a0fe-86afaab854b1" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_16064ab5-5a84-460f-b90c-34bb2ee69c51" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_eacba240-b41f-4adb-b7af-ae015334d173" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_16064ab5-5a84-460f-b90c-34bb2ee69c51" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_22d3480a-fff0-47ae-8a23-fa66915c2b2a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_16064ab5-5a84-460f-b90c-34bb2ee69c51" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_22d3480a-fff0-47ae-8a23-fa66915c2b2a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_22d3480a-fff0-47ae-8a23-fa66915c2b2a_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_22d3480a-fff0-47ae-8a23-fa66915c2b2a" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_22d3480a-fff0-47ae-8a23-fa66915c2b2a_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_22d3480a-fff0-47ae-8a23-fa66915c2b2a" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingMember_76ebe4f7-798c-4845-85e1-37d95b516056" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:to="loc_us-gaap_BuildingMember_76ebe4f7-798c-4845-85e1-37d95b516056" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingImprovementsMember_04f2432f-d8c2-4d36-a908-9f1dbe237783" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingImprovementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:to="loc_us-gaap_BuildingImprovementsMember_04f2432f-d8c2-4d36-a908-9f1dbe237783" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ComputerHardwareAndSoftwareMember_c6d70098-bd2f-4b41-b43a-d7d8fada5d5e" xlink:href="cgnx-20201231.xsd#cgnx_ComputerHardwareAndSoftwareMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:to="loc_cgnx_ComputerHardwareAndSoftwareMember_c6d70098-bd2f-4b41-b43a-d7d8fada5d5e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_37e1949f-2d8d-4e04-9423-2481b72673c0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquipmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:to="loc_us-gaap_EquipmentMember_37e1949f-2d8d-4e04-9423-2481b72673c0" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_4d0eb6f9-48dc-4d2d-b297-2d3399099340" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_4d0eb6f9-48dc-4d2d-b297-2d3399099340" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_4a05b866-c79c-4db5-97e8-b872da067cf7" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_16064ab5-5a84-460f-b90c-34bb2ee69c51" xlink:to="loc_srt_RangeAxis_4a05b866-c79c-4db5-97e8-b872da067cf7" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_4a05b866-c79c-4db5-97e8-b872da067cf7_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_4a05b866-c79c-4db5-97e8-b872da067cf7" xlink:to="loc_srt_RangeMember_4a05b866-c79c-4db5-97e8-b872da067cf7_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_97cb201e-154b-4469-b216-655960388b43" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_4a05b866-c79c-4db5-97e8-b872da067cf7" xlink:to="loc_srt_RangeMember_97cb201e-154b-4469-b216-655960388b43" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_b942e990-2504-4cd2-b4f1-e20af718aeca" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_97cb201e-154b-4469-b216-655960388b43" xlink:to="loc_srt_MinimumMember_b942e990-2504-4cd2-b4f1-e20af718aeca" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_f4482918-7ada-4534-b66b-f2f97fb18b57" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_97cb201e-154b-4469-b216-655960388b43" xlink:to="loc_srt_MaximumMember_f4482918-7ada-4534-b66b-f2f97fb18b57" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails" xlink:type="extended" id="i624a794844554e56ba13a867096c3eb4_SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_026ec1fa-5f52-4967-bd6e-e3f25eb6c444" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetUsefulLife_14a1c759-c73e-4a29-b176-104f05179f08" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetUsefulLife"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_026ec1fa-5f52-4967-bd6e-e3f25eb6c444" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetUsefulLife_14a1c759-c73e-4a29-b176-104f05179f08" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_bc94b4fa-a38b-4611-bf8b-13c0ede81b96" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_026ec1fa-5f52-4967-bd6e-e3f25eb6c444" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_bc94b4fa-a38b-4611-bf8b-13c0ede81b96" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c460c14c-75ce-4192-bf24-800c855da42a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_bc94b4fa-a38b-4611-bf8b-13c0ede81b96" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c460c14c-75ce-4192-bf24-800c855da42a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c460c14c-75ce-4192-bf24-800c855da42a_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c460c14c-75ce-4192-bf24-800c855da42a" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c460c14c-75ce-4192-bf24-800c855da42a_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c460c14c-75ce-4192-bf24-800c855da42a" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DistributionRightsMember_a60328e8-b3e0-4405-87d4-7c227b1679c1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DistributionRightsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:to="loc_us-gaap_DistributionRightsMember_a60328e8-b3e0-4405-87d4-7c227b1679c1" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember_b1582d94-592e-402b-b7c7-a20b10d0f30d" xlink:href="cgnx-20201231.xsd#cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:to="loc_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember_b1582d94-592e-402b-b7c7-a20b10d0f30d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_b2ac9755-4775-4eaf-831b-0f67c6d31a5e" xlink:href="cgnx-20201231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_b2ac9755-4775-4eaf-831b-0f67c6d31a5e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_fed05b14-e512-4226-8cfc-03a6ba92bab8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NoncompeteAgreementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_fed05b14-e512-4226-8cfc-03a6ba92bab8" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_2f3770e9-260a-48a2-8605-cd380037bdc8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TrademarksMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:to="loc_us-gaap_TrademarksMember_2f3770e9-260a-48a2-8605-cd380037bdc8" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_eb93f06a-3550-460e-b90e-de5cde5abe98" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_bc94b4fa-a38b-4611-bf8b-13c0ede81b96" xlink:to="loc_srt_RangeAxis_eb93f06a-3550-460e-b90e-de5cde5abe98" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_eb93f06a-3550-460e-b90e-de5cde5abe98_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_eb93f06a-3550-460e-b90e-de5cde5abe98" xlink:to="loc_srt_RangeMember_eb93f06a-3550-460e-b90e-de5cde5abe98_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_61a78ced-2fa4-4a76-8fd4-c5c88e82ef3a" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_eb93f06a-3550-460e-b90e-de5cde5abe98" xlink:to="loc_srt_RangeMember_61a78ced-2fa4-4a76-8fd4-c5c88e82ef3a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_c89b1ee6-7898-4260-9566-3cb1d27545d9" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_61a78ced-2fa4-4a76-8fd4-c5c88e82ef3a" xlink:to="loc_srt_MinimumMember_c89b1ee6-7898-4260-9566-3cb1d27545d9" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_8624bc61-d7bb-4a04-8950-d4357906d5ce" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_61a78ced-2fa4-4a76-8fd4-c5c88e82ef3a" xlink:to="loc_srt_MaximumMember_8624bc61-d7bb-4a04-8950-d4357906d5ce" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesWarrantyDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails" xlink:type="extended" id="i82c490581f4c4a53a6baead1243424e4_SummaryofSignificantAccountingPoliciesWarrantyDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductLiabilityContingencyLineItems_66c47400-4710-4795-9294-883555a26ee8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProductLiabilityContingencyLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ProductWarrantyPeriod_5de5704e-04ed-4aa5-8c65-bd3aef1c8aef" xlink:href="cgnx-20201231.xsd#cgnx_ProductWarrantyPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ProductLiabilityContingencyLineItems_66c47400-4710-4795-9294-883555a26ee8" xlink:to="loc_cgnx_ProductWarrantyPeriod_5de5704e-04ed-4aa5-8c65-bd3aef1c8aef" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductLiabilityContingencyTable_ffa42520-b895-4056-af0d-c860052743e3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ProductLiabilityContingencyTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ProductLiabilityContingencyLineItems_66c47400-4710-4795-9294-883555a26ee8" xlink:to="loc_us-gaap_ProductLiabilityContingencyTable_ffa42520-b895-4056-af0d-c860052743e3" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_8c1ab6b6-6580-4b9c-9e77-91e96022ea87" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ProductLiabilityContingencyTable_ffa42520-b895-4056-af0d-c860052743e3" xlink:to="loc_srt_RangeAxis_8c1ab6b6-6580-4b9c-9e77-91e96022ea87" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_8c1ab6b6-6580-4b9c-9e77-91e96022ea87_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_8c1ab6b6-6580-4b9c-9e77-91e96022ea87" xlink:to="loc_srt_RangeMember_8c1ab6b6-6580-4b9c-9e77-91e96022ea87_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_448d42f9-781f-4e97-85cf-28680d51a4ae" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_8c1ab6b6-6580-4b9c-9e77-91e96022ea87" xlink:to="loc_srt_RangeMember_448d42f9-781f-4e97-85cf-28680d51a4ae" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_4bf5b083-73a0-4e99-b8f0-4b7a5babd788" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_448d42f9-781f-4e97-85cf-28680d51a4ae" xlink:to="loc_srt_MinimumMember_4bf5b083-73a0-4e99-b8f0-4b7a5babd788" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_d15568aa-1645-4adf-800a-8ffc9110d9d5" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_448d42f9-781f-4e97-85cf-28680d51a4ae" xlink:to="loc_srt_MaximumMember_d15568aa-1645-4adf-800a-8ffc9110d9d5" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails" xlink:type="extended" id="ifd97d4cc5b104da2b8d87c643f9a6ccc_SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueLineItems_0c142092-e2a9-45c7-855c-5fe224cba1ed" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisaggregationOfRevenueLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RevenuePaymentTerms_75142c39-84ab-4a16-95ba-420d76f615c7" xlink:href="cgnx-20201231.xsd#cgnx_RevenuePaymentTerms"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems_0c142092-e2a9-45c7-855c-5fe224cba1ed" xlink:to="loc_cgnx_RevenuePaymentTerms_75142c39-84ab-4a16-95ba-420d76f615c7" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTable_b7b3f2f9-a7d0-4333-8ba7-5425d55475a2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisaggregationOfRevenueTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems_0c142092-e2a9-45c7-855c-5fe224cba1ed" xlink:to="loc_us-gaap_DisaggregationOfRevenueTable_b7b3f2f9-a7d0-4333-8ba7-5425d55475a2" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_88827853-3e71-4c61-aaa2-1b5b35e5b15f" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable_b7b3f2f9-a7d0-4333-8ba7-5425d55475a2" xlink:to="loc_srt_RangeAxis_88827853-3e71-4c61-aaa2-1b5b35e5b15f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_88827853-3e71-4c61-aaa2-1b5b35e5b15f_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_88827853-3e71-4c61-aaa2-1b5b35e5b15f" xlink:to="loc_srt_RangeMember_88827853-3e71-4c61-aaa2-1b5b35e5b15f_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_1d720bc9-b080-4743-a875-3be8a2a13ccb" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_88827853-3e71-4c61-aaa2-1b5b35e5b15f" xlink:to="loc_srt_RangeMember_1d720bc9-b080-4743-a875-3be8a2a13ccb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_f267c397-1c5c-4657-a6e1-32d2a680a141" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_1d720bc9-b080-4743-a875-3be8a2a13ccb" xlink:to="loc_srt_MinimumMember_f267c397-1c5c-4657-a6e1-32d2a680a141" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_4a8c5504-08f3-429c-8440-0bde9bc4ac0a" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_1d720bc9-b080-4743-a875-3be8a2a13ccb" xlink:to="loc_srt_MaximumMember_4a8c5504-08f3-429c-8440-0bde9bc4ac0a" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails" xlink:type="extended" id="i00c372d9b90b420aafa3d4f652ae09ce_SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails" xlink:type="extended" id="i56ec50e7a594483e89ff89f3f44cbad8_SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax_a5552adc-d0d4-4754-9a68-cfffbe86ab8b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax_a5552adc-d0d4-4754-9a68-cfffbe86ab8b" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_9271b316-f767-4aa9-93ac-1406938fcb23" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_9271b316-f767-4aa9-93ac-1406938fcb23" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax_31fe003d-a93d-4359-830b-5acb661ebf64" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:to="loc_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax_31fe003d-a93d-4359-830b-5acb661ebf64" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_8da9ae08-93b8-4dfd-87f6-84ed870bf815" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_8da9ae08-93b8-4dfd-87f6-84ed870bf815" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_ebb4fcfa-9eab-4449-b0f3-64222955d1f7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeLossTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_ebb4fcfa-9eab-4449-b0f3-64222955d1f7" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_db049493-775a-4c91-9a27-eba7e63cdab9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementEquityComponentsAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_ebb4fcfa-9eab-4449-b0f3-64222955d1f7" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_db049493-775a-4c91-9a27-eba7e63cdab9" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_db049493-775a-4c91-9a27-eba7e63cdab9_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_db049493-775a-4c91-9a27-eba7e63cdab9" xlink:to="loc_us-gaap_EquityComponentDomain_db049493-775a-4c91-9a27-eba7e63cdab9_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_d443ffd7-3a1d-4501-abd0-ef730de3fdc1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityComponentDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_StatementEquityComponentsAxis_db049493-775a-4c91-9a27-eba7e63cdab9" xlink:to="loc_us-gaap_EquityComponentDomain_d443ffd7-3a1d-4501-abd0-ef730de3fdc1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_5447c285-c41e-46e0-8298-c74d10c1ab94" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedOtherComprehensiveIncomeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EquityComponentDomain_d443ffd7-3a1d-4501-abd0-ef730de3fdc1" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_5447c285-c41e-46e0-8298-c74d10c1ab94" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/NewPronouncements" xlink:type="simple" xlink:href="cgnx-20201231.xsd#NewPronouncements"/>
  <link:definitionLink xlink:role="http://cognex.com/role/NewPronouncements" xlink:type="extended" id="ifffc71ddcd8f4d1c8389257e7169a347_NewPronouncements"/>
  <link:roleRef roleURI="http://cognex.com/role/NewPronouncementsPolicies" xlink:type="simple" xlink:href="cgnx-20201231.xsd#NewPronouncementsPolicies"/>
  <link:definitionLink xlink:role="http://cognex.com/role/NewPronouncementsPolicies" xlink:type="extended" id="i2515d1194af94ea8b0a3b6f833ba0346_NewPronouncementsPolicies"/>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurements" xlink:type="simple" xlink:href="cgnx-20201231.xsd#FairValueMeasurements"/>
  <link:definitionLink xlink:role="http://cognex.com/role/FairValueMeasurements" xlink:type="extended" id="i87bd0b35e8924da2ace0c547cdd1334a_FairValueMeasurements"/>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#FairValueMeasurementsTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/FairValueMeasurementsTables" xlink:type="extended" id="i187f7d1be37f493dbaef3a2e6916f29b_FairValueMeasurementsTables"/>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail" xlink:type="extended" id="id5cb55745b9e47e090877e219ff6a879_FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_cc25e278-8663-4d86-be10-55a5296006c4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetsFairValueDisclosureAbstract"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_cc25e278-8663-4d86-be10-55a5296006c4" xlink:to="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MoneyMarketInstrumentsFairValueDisclosure_e8bd2694-3d9e-4824-83da-92cf991c64f4" xlink:href="cgnx-20201231.xsd#cgnx_MoneyMarketInstrumentsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_MoneyMarketInstrumentsFairValueDisclosure_e8bd2694-3d9e-4824-83da-92cf991c64f4" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CorporateBondsFairValueDisclosure_70c65878-0536-444d-9bc3-f4214219c111" xlink:href="cgnx-20201231.xsd#cgnx_CorporateBondsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_CorporateBondsFairValueDisclosure_70c65878-0536-444d-9bc3-f4214219c111" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_TreasuryBillsFairValueDisclosure_ce45de1a-3984-44b6-b0ca-4c29fb16c7a7" xlink:href="cgnx-20201231.xsd#cgnx_TreasuryBillsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_TreasuryBillsFairValueDisclosure_ce45de1a-3984-44b6-b0ca-4c29fb16c7a7" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AssetBackedSecuritiesFairValueDisclosure_201aee8a-5e17-4953-913a-5db58c169967" xlink:href="cgnx-20201231.xsd#cgnx_AssetBackedSecuritiesFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_AssetBackedSecuritiesFairValueDisclosure_201aee8a-5e17-4953-913a-5db58c169967" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsFairValueDisclosure_c50155fd-e8e4-4aeb-8cf5-9f1bab81be40" xlink:href="cgnx-20201231.xsd#cgnx_AgencyBondsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_AgencyBondsFairValueDisclosure_c50155fd-e8e4-4aeb-8cf5-9f1bab81be40" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SovereignBondsFairValueDisclosure_3a127787-8661-4d8d-a886-f6872578ef36" xlink:href="cgnx-20201231.xsd#cgnx_SovereignBondsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_SovereignBondsFairValueDisclosure_3a127787-8661-4d8d-a886-f6872578ef36" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MunicipalBondsFairValueDisclosure_5fd7617e-84f8-4bac-8dda-0d1fa91e6cd3" xlink:href="cgnx-20201231.xsd#cgnx_MunicipalBondsFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_MunicipalBondsFairValueDisclosure_5fd7617e-84f8-4bac-8dda-0d1fa91e6cd3" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure_066d832a-e484-46cf-92a3-3ca570c04214" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignCurrencyContractAssetFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure_066d832a-e484-46cf-92a3-3ca570c04214" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract_ce68100e-031f-48eb-9aa6-ac96bb71c058" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesFairValueDisclosureAbstract"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_cc25e278-8663-4d86-be10-55a5296006c4" xlink:to="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract_ce68100e-031f-48eb-9aa6-ac96bb71c058" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure_03866b31-44ad-46d5-a397-a4bb8a39d60a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract_ce68100e-031f-48eb-9aa6-ac96bb71c058" xlink:to="loc_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure_03866b31-44ad-46d5-a397-a4bb8a39d60a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_9ef92f3b-a84e-4383-93c0-de9eca9e666c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_cc25e278-8663-4d86-be10-55a5296006c4" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_9ef92f3b-a84e-4383-93c0-de9eca9e666c" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_46425695-a9a4-4508-b531-4e91c9f92bdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueByFairValueHierarchyLevelAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_9ef92f3b-a84e-4383-93c0-de9eca9e666c" xlink:to="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_46425695-a9a4-4508-b531-4e91c9f92bdb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_46425695-a9a4-4508-b531-4e91c9f92bdb_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_46425695-a9a4-4508-b531-4e91c9f92bdb" xlink:to="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_46425695-a9a4-4508-b531-4e91c9f92bdb_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_2cc5919e-48d8-4149-bda7-3bd921d1ec6e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementsFairValueHierarchyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_46425695-a9a4-4508-b531-4e91c9f92bdb" xlink:to="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_2cc5919e-48d8-4149-bda7-3bd921d1ec6e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel1Member_5d4f8b4d-66e7-4d5b-b1ff-2d8e06a1438c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueInputsLevel1Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_2cc5919e-48d8-4149-bda7-3bd921d1ec6e" xlink:to="loc_us-gaap_FairValueInputsLevel1Member_5d4f8b4d-66e7-4d5b-b1ff-2d8e06a1438c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel2Member_6f51c407-b69f-4b42-97fc-9e7e9357f81a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueInputsLevel2Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_2cc5919e-48d8-4149-bda7-3bd921d1ec6e" xlink:to="loc_us-gaap_FairValueInputsLevel2Member_6f51c407-b69f-4b42-97fc-9e7e9357f81a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel3Member_9f2eaa91-c581-45d3-a53f-7c3b1e25c59e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueInputsLevel3Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_2cc5919e-48d8-4149-bda7-3bd921d1ec6e" xlink:to="loc_us-gaap_FairValueInputsLevel3Member_9f2eaa91-c581-45d3-a53f-7c3b1e25c59e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis_84e3f58b-5bb5-40c5-810e-3e61a0f9b808" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_9ef92f3b-a84e-4383-93c0-de9eca9e666c" xlink:to="loc_us-gaap_FairValueByMeasurementFrequencyAxis_84e3f58b-5bb5-40c5-810e-3e61a0f9b808" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_84e3f58b-5bb5-40c5-810e-3e61a0f9b808_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_84e3f58b-5bb5-40c5-810e-3e61a0f9b808" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_84e3f58b-5bb5-40c5-810e-3e61a0f9b808_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_3f37c381-7a3c-4e64-9dee-4bfa155fbff1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_84e3f58b-5bb5-40c5-810e-3e61a0f9b808" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_3f37c381-7a3c-4e64-9dee-4bfa155fbff1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember_af60b2be-cc39-44e2-9876-c1353e83bb4c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementFrequencyDomain_3f37c381-7a3c-4e64-9dee-4bfa155fbff1" xlink:to="loc_us-gaap_FairValueMeasurementsRecurringMember_af60b2be-cc39-44e2-9876-c1353e83bb4c" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails" xlink:type="extended" id="i67a162902a504f9eaeaab160a2fcef79_FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_5e2b0d11-62d2-4554-b389-4ced86256ada" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_73001a0b-e47f-4aaf-83cd-a8a618659006" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_5e2b0d11-62d2-4554-b389-4ced86256ada" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_73001a0b-e47f-4aaf-83cd-a8a618659006" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_0c282900-bfad-4a41-8785-64e08a90d25b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_73001a0b-e47f-4aaf-83cd-a8a618659006" xlink:to="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_0c282900-bfad-4a41-8785-64e08a90d25b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesFairValueAdjustment_528a2706-65e8-4880-bad2-289d3cae6873" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilitiesFairValueAdjustment"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_73001a0b-e47f-4aaf-83cd-a8a618659006" xlink:to="loc_us-gaap_LiabilitiesFairValueAdjustment_528a2706-65e8-4880-bad2-289d3cae6873" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_baf10cfd-b6b2-41ab-84bb-9ecaee3be8dd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_73001a0b-e47f-4aaf-83cd-a8a618659006" xlink:to="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_baf10cfd-b6b2-41ab-84bb-9ecaee3be8dd" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_24e8eb70-b450-40ed-8b90-15608f8426cc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_80f40eed-95e1-4be3-b2e8-fb423e0b0391" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_5e2b0d11-62d2-4554-b389-4ced86256ada" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_80f40eed-95e1-4be3-b2e8-fb423e0b0391" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_4a2c881d-6216-4b98-a63f-a66280a0e9fa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_80f40eed-95e1-4be3-b2e8-fb423e0b0391" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_4a2c881d-6216-4b98-a63f-a66280a0e9fa" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_4a2c881d-6216-4b98-a63f-a66280a0e9fa_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_4a2c881d-6216-4b98-a63f-a66280a0e9fa" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_4a2c881d-6216-4b98-a63f-a66280a0e9fa_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_2f8de27d-799a-4198-a276-523100780b29" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_4a2c881d-6216-4b98-a63f-a66280a0e9fa" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_2f8de27d-799a-4198-a276-523100780b29" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GViVenturesInc.Member_99b8253f-4420-443b-883b-7c711507bbdc" xlink:href="cgnx-20201231.xsd#cgnx_GViVenturesInc.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_2f8de27d-799a-4198-a276-523100780b29" xlink:to="loc_cgnx_GViVenturesInc.Member_99b8253f-4420-443b-883b-7c711507bbdc" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ChiaroTechnologiesLLCMember_a8d9dbdb-478b-4685-88fb-0d118eb6ba8c" xlink:href="cgnx-20201231.xsd#cgnx_ChiaroTechnologiesLLCMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_2f8de27d-799a-4198-a276-523100780b29" xlink:to="loc_cgnx_ChiaroTechnologiesLLCMember_a8d9dbdb-478b-4685-88fb-0d118eb6ba8c" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#FairValueMeasurementsAdditionalInformationDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails" xlink:type="extended" id="i15336aa614324f4c84d5619fb24d1fef_FairValueMeasurementsAdditionalInformationDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_65a8950e-f80f-4d3b-9fc0-42d917f393f0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_65a8950e-f80f-4d3b-9fc0-42d917f393f0" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow_714db484-8cf8-4aa2-914c-27b8056bbd1c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow_714db484-8cf8-4aa2-914c-27b8056bbd1c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh_59046728-cb2f-4788-b628-6241d55dbd36" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh_59046728-cb2f-4788-b628-6241d55dbd36" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_28bb6940-9192-438d-97c7-2cf4ba116029" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseImpairmentLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_28bb6940-9192-438d-97c7-2cf4ba116029" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_03d5e453-b87f-4ffd-98c7-1445bf70190b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_03d5e453-b87f-4ffd-98c7-1445bf70190b" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet_4a35f223-36e5-4a66-a78f-a2f7f5439db1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet_4a35f223-36e5-4a66-a78f-a2f7f5439db1" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_f30c9e68-734a-4498-b231-ff58bcc9cbb0" xlink:href="cgnx-20201231.xsd#cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_f30c9e68-734a-4498-b231-ff58bcc9cbb0" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d49a353-0d0d-41bd-9220-ac94615d4316" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d49a353-0d0d-41bd-9220-ac94615d4316" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_0374b926-4a02-4ba0-8f76-d57e68c2cb2d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d49a353-0d0d-41bd-9220-ac94615d4316" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_0374b926-4a02-4ba0-8f76-d57e68c2cb2d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_0374b926-4a02-4ba0-8f76-d57e68c2cb2d_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_0374b926-4a02-4ba0-8f76-d57e68c2cb2d" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_0374b926-4a02-4ba0-8f76-d57e68c2cb2d_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d01329c1-4122-4512-b1eb-21196df9317d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_0374b926-4a02-4ba0-8f76-d57e68c2cb2d" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d01329c1-4122-4512-b1eb-21196df9317d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GViVenturesInc.Member_2d0b48f5-ab5b-4590-8995-f983626e1cc3" xlink:href="cgnx-20201231.xsd#cgnx_GViVenturesInc.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d01329c1-4122-4512-b1eb-21196df9317d" xlink:to="loc_cgnx_GViVenturesInc.Member_2d0b48f5-ab5b-4590-8995-f983626e1cc3" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_0ca0dde3-7f97-4956-b794-559aed9df161" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d49a353-0d0d-41bd-9220-ac94615d4316" xlink:to="loc_srt_RangeAxis_0ca0dde3-7f97-4956-b794-559aed9df161" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_0ca0dde3-7f97-4956-b794-559aed9df161_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_0ca0dde3-7f97-4956-b794-559aed9df161" xlink:to="loc_srt_RangeMember_0ca0dde3-7f97-4956-b794-559aed9df161_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_27c9f86d-7b3c-4ede-9568-8ae32b5bf6c1" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_0ca0dde3-7f97-4956-b794-559aed9df161" xlink:to="loc_srt_RangeMember_27c9f86d-7b3c-4ede-9568-8ae32b5bf6c1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_3644259d-bc4d-4de3-9c1c-2e2c40ccf9b0" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_27c9f86d-7b3c-4ede-9568-8ae32b5bf6c1" xlink:to="loc_srt_MinimumMember_3644259d-bc4d-4de3-9c1c-2e2c40ccf9b0" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_3d0e201c-2db3-4177-a3ea-e78e815dc750" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_27c9f86d-7b3c-4ede-9568-8ae32b5bf6c1" xlink:to="loc_srt_MaximumMember_3d0e201c-2db3-4177-a3ea-e78e815dc750" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b9e235c4-da90-417a-9056-39096a3e0597" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueByMeasurementFrequencyAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d49a353-0d0d-41bd-9220-ac94615d4316" xlink:to="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b9e235c4-da90-417a-9056-39096a3e0597" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_b9e235c4-da90-417a-9056-39096a3e0597_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b9e235c4-da90-417a-9056-39096a3e0597" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_b9e235c4-da90-417a-9056-39096a3e0597_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_bdd281bf-8ce7-48ac-b892-5c87d8525488" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementFrequencyDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b9e235c4-da90-417a-9056-39096a3e0597" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_bdd281bf-8ce7-48ac-b892-5c87d8525488" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember_91d0e026-9aa1-4eb1-b068-861526b0a87b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueMeasurementsRecurringMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FairValueMeasurementFrequencyDomain_bdd281bf-8ce7-48ac-b892-5c87d8525488" xlink:to="loc_us-gaap_FairValueMeasurementsRecurringMember_91d0e026-9aa1-4eb1-b068-861526b0a87b" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestments" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestments"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestments" xlink:type="extended" id="ic1fa7a9aad1646cdb60ee8f480facfd6_CashCashEquivalentsandInvestments"/>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestmentsTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsTables" xlink:type="extended" id="i40ffa8a9d3154296b453937350632770_CashCashEquivalentsandInvestmentsTables"/>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail" xlink:type="extended" id="i811fe46c1a7e4b54ab62714b19a362d9_CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_ad96eead-653e-4059-8844-a61a13bd860b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Cash"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_Cash_ad96eead-653e-4059-8844-a61a13bd860b" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsAtCarryingValue_74ed9c99-eaa5-42e0-8efb-5da39b40338a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MoneyMarketFundsAtCarryingValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_MoneyMarketFundsAtCarryingValue_74ed9c99-eaa5-42e0-8efb-5da39b40338a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_4b6e35b2-8ad6-42d9-ada3-8b07abf5559a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAtCarryingValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_4b6e35b2-8ad6-42d9-ada3-8b07abf5559a" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_858e7b7c-7b76-4c08-b31f-e1bb613e6a5f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_858e7b7c-7b76-4c08-b31f-e1bb613e6a5f" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_8ca22774-b783-4d8a-bac4-490a9a43c740" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_8ca22774-b783-4d8a-bac4-490a9a43c740" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_33fb79df-6acc-4686-a059-726117e861db" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LongTermInvestments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_LongTermInvestments_33fb79df-6acc-4686-a059-726117e861db" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_9ff51b5e-bba3-421c-a231-92e3867e2fea" xlink:href="cgnx-20201231.xsd#cgnx_CashCashEquivalentsShortTermAndLongTermInvestments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_9ff51b5e-bba3-421c-a231-92e3867e2fea" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_45a71580-8974-4d6b-b8f7-8d9935c41721" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_45a71580-8974-4d6b-b8f7-8d9935c41721" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_96c60fa0-f6dc-4ebc-8de3-518ea9526588" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_45a71580-8974-4d6b-b8f7-8d9935c41721" xlink:to="loc_us-gaap_FinancialInstrumentAxis_96c60fa0-f6dc-4ebc-8de3-518ea9526588" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_96c60fa0-f6dc-4ebc-8de3-518ea9526588_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FinancialInstrumentAxis_96c60fa0-f6dc-4ebc-8de3-518ea9526588" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_96c60fa0-f6dc-4ebc-8de3-518ea9526588_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FinancialInstrumentAxis_96c60fa0-f6dc-4ebc-8de3-518ea9526588" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasuryBillSecuritiesMember_6a2e62eb-5e98-4b8d-9409-4e06dfac884d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_USTreasuryBillSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_USTreasuryBillSecuritiesMember_6a2e62eb-5e98-4b8d-9409-4e06dfac884d" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_4d9092e7-f4c6-4f5e-9e18-5470aabc095a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_4d9092e7-f4c6-4f5e-9e18-5470aabc095a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_0ef14d0f-737c-42f9-9ff4-e20923e4e131" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_0ef14d0f-737c-42f9-9ff4-e20923e4e131" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_af2b8607-d21f-4248-8787-a8df766fd038" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_af2b8607-d21f-4248-8787-a8df766fd038" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_aa56ca5a-d171-4dc0-9ec5-c8d732b1b0ce" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_MunicipalBondsMember_aa56ca5a-d171-4dc0-9ec5-c8d732b1b0ce" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CertificatesOfDepositMember_154714a6-645f-4dfb-9dd8-c589d259a976" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CertificatesOfDepositMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_CertificatesOfDepositMember_154714a6-645f-4dfb-9dd8-c589d259a976" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_e22b5e6a-0b9e-4df6-971f-99ff18b761dc" xlink:href="cgnx-20201231.xsd#cgnx_AgencyBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_cgnx_AgencyBondsMember_e22b5e6a-0b9e-4df6-971f-99ff18b761dc" xlink:type="arc" order="6"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestmentsAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail" xlink:type="extended" id="if07fef96374e423dab00c26a03bc7382_CashCashEquivalentsandInvestmentsAdditionalInformationDetail"/>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail" xlink:type="extended" id="i666fede49d3044c996167a55c42da371_CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_5f1a8a6e-a932-43af-be13-0902527885e0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_5f1a8a6e-a932-43af-be13-0902527885e0" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_d362af2b-e1ee-45f6-ad6b-8fd88561edc1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_d362af2b-e1ee-45f6-ad6b-8fd88561edc1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_7f07483c-1ba2-4b9f-85a8-b0756060fd4e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_7f07483c-1ba2-4b9f-85a8-b0756060fd4e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_b3c774ca-d625-4924-8c8d-a9e5abf8b116" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_b3c774ca-d625-4924-8c8d-a9e5abf8b116" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_32bc7577-a97e-4894-9a07-630408cb6855" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_32bc7577-a97e-4894-9a07-630408cb6855" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_ba370cd9-58a3-4775-8c84-6d94e6147bdd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_32bc7577-a97e-4894-9a07-630408cb6855" xlink:to="loc_us-gaap_FinancialInstrumentAxis_ba370cd9-58a3-4775-8c84-6d94e6147bdd" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_ba370cd9-58a3-4775-8c84-6d94e6147bdd_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FinancialInstrumentAxis_ba370cd9-58a3-4775-8c84-6d94e6147bdd" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_ba370cd9-58a3-4775-8c84-6d94e6147bdd_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FinancialInstrumentAxis_ba370cd9-58a3-4775-8c84-6d94e6147bdd" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasurySecuritiesMember_3461ee78-0dce-418b-b688-b8241022da91" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_USTreasurySecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_us-gaap_USTreasurySecuritiesMember_3461ee78-0dce-418b-b688-b8241022da91" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_eb2854ce-008b-46fc-83b2-91b7a163a051" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_eb2854ce-008b-46fc-83b2-91b7a163a051" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_35ab270e-313f-4792-8fd9-9125026ec9fe" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_35ab270e-313f-4792-8fd9-9125026ec9fe" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_e1a02142-6913-48be-9b17-7600d748ca76" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_e1a02142-6913-48be-9b17-7600d748ca76" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_328138e2-aa1a-43ec-93e7-4d8c523f8843" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_us-gaap_MunicipalBondsMember_328138e2-aa1a-43ec-93e7-4d8c523f8843" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_6a484cd3-ee4a-4868-bc62-3800044b8a9f" xlink:href="cgnx-20201231.xsd#cgnx_AgencyBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_cgnx_AgencyBondsMember_6a484cd3-ee4a-4868-bc62-3800044b8a9f" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeAxis_7119b166-dc45-4803-aed6-cb398512e730" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InvestmentTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_32bc7577-a97e-4894-9a07-630408cb6855" xlink:to="loc_us-gaap_InvestmentTypeAxis_7119b166-dc45-4803-aed6-cb398512e730" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeCategorizationMember_7119b166-dc45-4803-aed6-cb398512e730_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InvestmentTypeCategorizationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_InvestmentTypeAxis_7119b166-dc45-4803-aed6-cb398512e730" xlink:to="loc_us-gaap_InvestmentTypeCategorizationMember_7119b166-dc45-4803-aed6-cb398512e730_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeCategorizationMember_d2a674e8-022f-47ec-9ef6-6cbe23c6dc82" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InvestmentTypeCategorizationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_InvestmentTypeAxis_7119b166-dc45-4803-aed6-cb398512e730" xlink:to="loc_us-gaap_InvestmentTypeCategorizationMember_d2a674e8-022f-47ec-9ef6-6cbe23c6dc82" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShortTermInvestmentsMember_605e2341-dea3-4d35-8e1a-67e9c797860d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShortTermInvestmentsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_InvestmentTypeCategorizationMember_d2a674e8-022f-47ec-9ef6-6cbe23c6dc82" xlink:to="loc_us-gaap_ShortTermInvestmentsMember_605e2341-dea3-4d35-8e1a-67e9c797860d" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_LongTermInvestmentsMember_b4bfc9ba-4bf9-42c7-a29c-4193238cb245" xlink:href="cgnx-20201231.xsd#cgnx_LongTermInvestmentsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_InvestmentTypeCategorizationMember_d2a674e8-022f-47ec-9ef6-6cbe23c6dc82" xlink:to="loc_cgnx_LongTermInvestmentsMember_b4bfc9ba-4bf9-42c7-a29c-4193238cb245" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails" xlink:type="extended" id="i9ed3f3a2d386416db230b933f367e33e_CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail" xlink:type="extended" id="ibf709db197d24e2ea6677044cd811e11_CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_655212b2-606f-4909-82cf-3d34572f9723" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_655212b2-606f-4909-82cf-3d34572f9723" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_e91c62a3-7ce6-462f-84a0-fd1575929e38" xlink:href="cgnx-20201231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_e91c62a3-7ce6-462f-84a0-fd1575929e38" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_d8b5215c-1573-49b1-981c-fd3d5ec2441f" xlink:href="cgnx-20201231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_d8b5215c-1573-49b1-981c-fd3d5ec2441f" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_1d9a1757-60ac-4d44-ae79-aca64ea8002d" xlink:href="cgnx-20201231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_1d9a1757-60ac-4d44-ae79-aca64ea8002d" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_f95cc2c2-00ab-4c95-b034-a5a513ffff72" xlink:href="cgnx-20201231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_f95cc2c2-00ab-4c95-b034-a5a513ffff72" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_299d3cb0-67db-4d9b-960d-9d74fd8970af" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesDebtSecurities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_299d3cb0-67db-4d9b-960d-9d74fd8970af" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_67c7b628-74d2-4ba7-8db7-7a17ca77264b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfAvailableForSaleSecuritiesTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_67c7b628-74d2-4ba7-8db7-7a17ca77264b" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_0c266840-96ac-48e4-bafb-bdf817144bdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FinancialInstrumentAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_67c7b628-74d2-4ba7-8db7-7a17ca77264b" xlink:to="loc_us-gaap_FinancialInstrumentAxis_0c266840-96ac-48e4-bafb-bdf817144bdb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_0c266840-96ac-48e4-bafb-bdf817144bdb_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FinancialInstrumentAxis_0c266840-96ac-48e4-bafb-bdf817144bdb" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_0c266840-96ac-48e4-bafb-bdf817144bdb_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FinancialInstrumentAxis_0c266840-96ac-48e4-bafb-bdf817144bdb" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasurySecuritiesMember_5e572889-5ca9-4911-9fa1-cc0bf4d2679b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_USTreasurySecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_us-gaap_USTreasurySecuritiesMember_5e572889-5ca9-4911-9fa1-cc0bf4d2679b" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_fc7f653d-259a-4e72-9a8c-ed35d5f9c915" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CorporateBondSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_fc7f653d-259a-4e72-9a8c-ed35d5f9c915" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_28a21f45-842e-4d49-aad4-9c1004c23f53" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AssetBackedSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_28a21f45-842e-4d49-aad4-9c1004c23f53" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_8fded93a-ce03-4f56-a6af-c87aa6a7d09b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SovereignDebtSecuritiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_8fded93a-ce03-4f56-a6af-c87aa6a7d09b" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_de18cb98-adba-4c7e-8c6a-05c10afd10db" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MunicipalBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_us-gaap_MunicipalBondsMember_de18cb98-adba-4c7e-8c6a-05c10afd10db" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_f32128fd-2a7d-471f-85af-3b7996f10664" xlink:href="cgnx-20201231.xsd#cgnx_AgencyBondsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_cgnx_AgencyBondsMember_f32128fd-2a7d-471f-85af-3b7996f10664" xlink:type="arc" order="5"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/Inventories" xlink:type="simple" xlink:href="cgnx-20201231.xsd#Inventories"/>
  <link:definitionLink xlink:role="http://cognex.com/role/Inventories" xlink:type="extended" id="ie110d1bb53454fe6b8fc23237ed8cb6f_Inventories"/>
  <link:roleRef roleURI="http://cognex.com/role/InventoriesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#InventoriesTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/InventoriesTables" xlink:type="extended" id="ifcbd933eb94c42cba55f7c913570441f_InventoriesTables"/>
  <link:roleRef roleURI="http://cognex.com/role/InventoriesInventoriesDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#InventoriesInventoriesDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/InventoriesInventoriesDetail" xlink:type="extended" id="ief3278cdf23d4d10b4990a6abb955cc0_InventoriesInventoriesDetail"/>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipment" xlink:type="simple" xlink:href="cgnx-20201231.xsd#PropertyPlantandEquipment"/>
  <link:definitionLink xlink:role="http://cognex.com/role/PropertyPlantandEquipment" xlink:type="extended" id="i9b9fb8cd563049fbbb8c09e78c5ef6ad_PropertyPlantandEquipment"/>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipmentTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#PropertyPlantandEquipmentTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/PropertyPlantandEquipmentTables" xlink:type="extended" id="ib00b8a5ca3b744bbb6edea195094fb4a_PropertyPlantandEquipmentTables"/>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail" xlink:type="extended" id="ia31379da88f043a88f9aed9102c9c2e1_PropertyPlantandEquipmentPropertyPlantandEquipmentDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_72127edf-a8dc-4fbf-a0bc-5b3792a99ba0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentGross_1b470fe7-ed3a-4b31-a213-19b1179cd552" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_72127edf-a8dc-4fbf-a0bc-5b3792a99ba0" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentGross_1b470fe7-ed3a-4b31-a213-19b1179cd552" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_e040a709-a13b-4906-89b2-4821503d8888" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_72127edf-a8dc-4fbf-a0bc-5b3792a99ba0" xlink:to="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_e040a709-a13b-4906-89b2-4821503d8888" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_dc46a5af-5a43-41f9-b677-f3c514af625b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_72127edf-a8dc-4fbf-a0bc-5b3792a99ba0" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_dc46a5af-5a43-41f9-b677-f3c514af625b" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_30c434bf-eae6-44d7-b0d4-887a36262d40" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfPropertyPlantAndEquipmentTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentLineItems_72127edf-a8dc-4fbf-a0bc-5b3792a99ba0" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_30c434bf-eae6-44d7-b0d4-887a36262d40" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_b39dc4c7-6045-492f-a8d7-8eb0960c662f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentByTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_30c434bf-eae6-44d7-b0d4-887a36262d40" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_b39dc4c7-6045-492f-a8d7-8eb0960c662f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_b39dc4c7-6045-492f-a8d7-8eb0960c662f_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_b39dc4c7-6045-492f-a8d7-8eb0960c662f" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_b39dc4c7-6045-492f-a8d7-8eb0960c662f_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_b39dc4c7-6045-492f-a8d7-8eb0960c662f" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LandMember_4887d4d3-95f0-4538-94d3-17a641e5d5ff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LandMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_LandMember_4887d4d3-95f0-4538-94d3-17a641e5d5ff" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingMember_4c1427a6-2959-424d-9c6a-92467ec8b608" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_BuildingMember_4c1427a6-2959-424d-9c6a-92467ec8b608" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingImprovementsMember_8a377938-1ec4-43fe-9165-f11600cb55bf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BuildingImprovementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_BuildingImprovementsMember_8a377938-1ec4-43fe-9165-f11600cb55bf" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeaseholdImprovementsMember_e5cfb080-6920-4a31-b275-43b46a08e325" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseholdImprovementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_LeaseholdImprovementsMember_e5cfb080-6920-4a31-b275-43b46a08e325" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_HardwareAndSoftwareMember_474efb5b-1538-4305-aef4-b67c1674e808" xlink:href="cgnx-20201231.xsd#cgnx_HardwareAndSoftwareMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_cgnx_HardwareAndSoftwareMember_474efb5b-1538-4305-aef4-b67c1674e808" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_44c8ffbd-2c67-4946-b860-7a9944e83b68" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquipmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_EquipmentMember_44c8ffbd-2c67-4946-b860-7a9944e83b68" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_cbac58ef-63a4-4cb4-a23d-995a059e1d58" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FurnitureAndFixturesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_cbac58ef-63a4-4cb4-a23d-995a059e1d58" xlink:type="arc" order="6"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#PropertyPlantandEquipmentAdditionalInformationDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails" xlink:type="extended" id="i53d43fc87f544ebcb73d83223b00f276_PropertyPlantandEquipmentAdditionalInformationDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/LeasesLeases" xlink:type="simple" xlink:href="cgnx-20201231.xsd#LeasesLeases"/>
  <link:definitionLink xlink:role="http://cognex.com/role/LeasesLeases" xlink:type="extended" id="i648f2381391c45b19240446578b2aebe_LeasesLeases"/>
  <link:roleRef roleURI="http://cognex.com/role/LeasesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#LeasesTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/LeasesTables" xlink:type="extended" id="i4a6e1994a466498189d2670c80d32b3e_LeasesTables"/>
  <link:roleRef roleURI="http://cognex.com/role/LeasesDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#LeasesDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/LeasesDetails" xlink:type="extended" id="if3b2f1b27aa24803b8b3424798badeb7_LeasesDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseRightOfUseAsset_0977f41d-f6fe-4784-983b-4af6ab0dd68d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseRightOfUseAsset_0977f41d-f6fe-4784-983b-4af6ab0dd68d" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent_67b6a17b-1c9b-47d7-9b00-321782805450" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrent_67b6a17b-1c9b-47d7-9b00-321782805450" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_d6d7a874-38c8-4259-aa89-b0eddd5a5b1c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_d6d7a874-38c8-4259-aa89-b0eddd5a5b1c" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseExpense_174f6fb4-395f-40c7-b255-66dd3c7a4004" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseExpense_174f6fb4-395f-40c7-b255-66dd3c7a4004" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeasePayments_fe542d33-fd42-45de-bcec-6c01190bf6b7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeasePayments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeasePayments_fe542d33-fd42-45de-bcec-6c01190bf6b7" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_7ceddb11-8959-467c-8462-671fda132fef" xlink:href="cgnx-20201231.xsd#cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_7ceddb11-8959-467c-8462-671fda132fef" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeaseAndRentalExpense_2b0beb95-41c0-444b-a2a4-9ad9950f5349" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseAndRentalExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_LeaseAndRentalExpense_2b0beb95-41c0-444b-a2a4-9ad9950f5349" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiability_f0406882-38bd-4447-a08b-cd93629f4d05" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiability"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseLiability_f0406882-38bd-4447-a08b-cd93629f4d05" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_e18228d6-b509-4b01-bb85-f6dff5e0cbc8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_e18228d6-b509-4b01-bb85-f6dff5e0cbc8" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_b3e3d791-7890-4e03-95df-7d30318fd042" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_b3e3d791-7890-4e03-95df-7d30318fd042" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_c96976d4-3fd0-4eb0-9992-097c49a126db" xlink:href="cgnx-20201231.xsd#cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_c96976d4-3fd0-4eb0-9992-097c49a126db" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_f9c0b69c-1390-494e-bccc-84da5eac736e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseImpairmentLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_f9c0b69c-1390-494e-bccc-84da5eac736e" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLeaseIncome_49214371-a2f5-4478-9dc2-12ec04682603" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLeaseIncome"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseLeaseIncome_49214371-a2f5-4478-9dc2-12ec04682603" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RentalIncomeNonoperating_973863da-691a-4233-8676-ed6bf77173fb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RentalIncomeNonoperating"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_RentalIncomeNonoperating_973863da-691a-4233-8676-ed6bf77173fb" xlink:type="arc" order="13"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable_81095d80-1ee1-499a-b441-443c150fab48" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable_81095d80-1ee1-499a-b441-443c150fab48" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_066d13ec-90de-4676-b552-c7c8eebea894" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringCostAndReserveAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable_81095d80-1ee1-499a-b441-443c150fab48" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_066d13ec-90de-4676-b552-c7c8eebea894" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_066d13ec-90de-4676-b552-c7c8eebea894_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_066d13ec-90de-4676-b552-c7c8eebea894" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_066d13ec-90de-4676-b552-c7c8eebea894_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_8fe6df2c-0bca-45d8-be1a-00510882fca8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_066d13ec-90de-4676-b552-c7c8eebea894" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_8fe6df2c-0bca-45d8-be1a-00510882fca8" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_c3ef304f-e318-4b16-aa8b-9c2b9474e5aa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ContractTerminationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_8fe6df2c-0bca-45d8-be1a-00510882fca8" xlink:to="loc_us-gaap_ContractTerminationMember_c3ef304f-e318-4b16-aa8b-9c2b9474e5aa" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/LeasesScheduleofPaymentsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#LeasesScheduleofPaymentsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/LeasesScheduleofPaymentsDetails" xlink:type="extended" id="iebd8777811a24abbb1f7ef1be7a02a8d_LeasesScheduleofPaymentsDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/Goodwill" xlink:type="simple" xlink:href="cgnx-20201231.xsd#Goodwill"/>
  <link:definitionLink xlink:role="http://cognex.com/role/Goodwill" xlink:type="extended" id="icf27e28c4fa74e6f8ee1fdab6f801baf_Goodwill"/>
  <link:roleRef roleURI="http://cognex.com/role/GoodwillTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#GoodwillTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/GoodwillTables" xlink:type="extended" id="i8029691dd3aa4fc7a8f10a5ee533a23c_GoodwillTables"/>
  <link:roleRef roleURI="http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#GoodwillChangesintheCarryingValueofGoodwillDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail" xlink:type="extended" id="i04442ac0609442998e606df305c5374e_GoodwillChangesintheCarryingValueofGoodwillDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillLineItems_553af93f-8397-4031-9cff-83fd29fedf8c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillRollForward_38608f55-48ec-4348-8728-f96953f10ebf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_GoodwillLineItems_553af93f-8397-4031-9cff-83fd29fedf8c" xlink:to="loc_us-gaap_GoodwillRollForward_38608f55-48ec-4348-8728-f96953f10ebf" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_c1c9c58f-a1f2-42ea-a49b-7436e36c8fdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Goodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_GoodwillRollForward_38608f55-48ec-4348-8728-f96953f10ebf" xlink:to="loc_us-gaap_Goodwill_c1c9c58f-a1f2-42ea-a49b-7436e36c8fdb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAcquiredDuringPeriod_5df42df4-bbda-4a21-a758-9f90709f9098" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_GoodwillRollForward_38608f55-48ec-4348-8728-f96953f10ebf" xlink:to="loc_us-gaap_GoodwillAcquiredDuringPeriod_5df42df4-bbda-4a21-a758-9f90709f9098" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillForeignCurrencyTranslationGainLoss_3c3f8137-c333-4ea0-8a1c-b87c88b19a81" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillForeignCurrencyTranslationGainLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_GoodwillRollForward_38608f55-48ec-4348-8728-f96953f10ebf" xlink:to="loc_us-gaap_GoodwillForeignCurrencyTranslationGainLoss_3c3f8137-c333-4ea0-8a1c-b87c88b19a81" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_ec0f267e-72af-4842-87cc-87b04ede9c1f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Goodwill"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillOtherIncreaseDecrease_0942e99a-c3d2-4ba3-af9a-dca753cc7fd0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillOtherIncreaseDecrease"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_GoodwillRollForward_38608f55-48ec-4348-8728-f96953f10ebf" xlink:to="loc_us-gaap_GoodwillOtherIncreaseDecrease_0942e99a-c3d2-4ba3-af9a-dca753cc7fd0" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfGoodwillTable_2fc3fcf3-ef6b-4e15-a6de-f20adb0ec171" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfGoodwillTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_GoodwillLineItems_553af93f-8397-4031-9cff-83fd29fedf8c" xlink:to="loc_us-gaap_ScheduleOfGoodwillTable_2fc3fcf3-ef6b-4e15-a6de-f20adb0ec171" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_883a4d5b-d788-4209-9ef0-bd50fade5ae9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfGoodwillTable_2fc3fcf3-ef6b-4e15-a6de-f20adb0ec171" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_883a4d5b-d788-4209-9ef0-bd50fade5ae9" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_883a4d5b-d788-4209-9ef0-bd50fade5ae9_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_883a4d5b-d788-4209-9ef0-bd50fade5ae9" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_883a4d5b-d788-4209-9ef0-bd50fade5ae9_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_28c9f2bb-fc83-4666-896c-de71a2036773" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_883a4d5b-d788-4209-9ef0-bd50fade5ae9" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_28c9f2bb-fc83-4666-896c-de71a2036773" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_dfa0ab1c-e2a6-48ca-a51f-b02fa013439f" xlink:href="cgnx-20201231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_28c9f2bb-fc83-4666-896c-de71a2036773" xlink:to="loc_cgnx_SualabCo.Ltd.Member_dfa0ab1c-e2a6-48ca-a51f-b02fa013439f" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/GoodwillAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#GoodwillAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/GoodwillAdditionalInformationDetail" xlink:type="extended" id="ib087b3aa3480448ca679f4576e6900ee_GoodwillAdditionalInformationDetail"/>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssets" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IntangibleAssets"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IntangibleAssets" xlink:type="extended" id="i74252c471c1b404da650640fc86ca14c_IntangibleAssets"/>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IntangibleAssetsTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IntangibleAssetsTables" xlink:type="extended" id="ice56094bcb334b179b89bc0b94881754_IntangibleAssetsTables"/>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IntangibleAssetsAmortizedIntangibleAssetsDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail" xlink:type="extended" id="i6f8f6cc09e4a47e8b347e9af3ec498ab_IntangibleAssetsAmortizedIntangibleAssetsDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsGross_93bebf61-7eff-48df-a530-39ee3605dc8c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsGross_93bebf61-7eff-48df-a530-39ee3605dc8c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_aeb79a1d-3c6d-4e2a-b47a-57678257290f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_aeb79a1d-3c6d-4e2a-b47a-57678257290f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetIncludingGoodwill_73f932f2-e36f-4d75-b0bc-db0aaa246e21" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IntangibleAssetsNetIncludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:to="loc_us-gaap_IntangibleAssetsNetIncludingGoodwill_73f932f2-e36f-4d75-b0bc-db0aaa246e21" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsNet_2d186bee-1254-493c-936f-f2cb317454ec" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsNet_2d186bee-1254-493c-936f-f2cb317454ec" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill_b4dc84ec-3d26-462d-be17-7272b960c493" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill_b4dc84ec-3d26-462d-be17-7272b960c493" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_d4277e8b-3f4a-4adc-801e-2c56a9aa4050" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_d4277e8b-3f4a-4adc-801e-2c56a9aa4050" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_ab3fc150-9383-4e1c-9ec4-d40457b7ad4f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_d4277e8b-3f4a-4adc-801e-2c56a9aa4050" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_ab3fc150-9383-4e1c-9ec4-d40457b7ad4f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_ab3fc150-9383-4e1c-9ec4-d40457b7ad4f_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_ab3fc150-9383-4e1c-9ec4-d40457b7ad4f" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_ab3fc150-9383-4e1c-9ec4-d40457b7ad4f_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_ab3fc150-9383-4e1c-9ec4-d40457b7ad4f" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DistributionRightsMember_518979b2-e303-4d17-a6b4-7f4bc2841e21" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DistributionRightsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_DistributionRightsMember_518979b2-e303-4d17-a6b4-7f4bc2841e21" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_78bc2cc8-2c92-48f7-911b-3d920d1ea611" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DevelopedTechnologyRightsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_78bc2cc8-2c92-48f7-911b-3d920d1ea611" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_4c2230af-190b-4b4b-941a-6c8af6b096fb" xlink:href="cgnx-20201231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_4c2230af-190b-4b4b-941a-6c8af6b096fb" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_cba1e248-d291-4aed-8c3a-48b95769d996" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_cba1e248-d291-4aed-8c3a-48b95769d996" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_8bc7a57d-036a-45f6-8bc7-333f1d6880f1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NoncompeteAgreementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_8bc7a57d-036a-45f6-8bc7-333f1d6880f1" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_d5a00eff-5799-4126-ada0-b12ec1b0a8bf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TrademarksMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_TrademarksMember_d5a00eff-5799-4126-ada0-b12ec1b0a8bf" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherIntangibleAssetsMember_25b379f5-48ae-4fe5-aecc-54ec293d8dc3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherIntangibleAssetsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_OtherIntangibleAssetsMember_25b379f5-48ae-4fe5-aecc-54ec293d8dc3" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_67869a22-e527-4228-a351-1e4dd3271a8e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_d4277e8b-3f4a-4adc-801e-2c56a9aa4050" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_67869a22-e527-4228-a351-1e4dd3271a8e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_67869a22-e527-4228-a351-1e4dd3271a8e_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_67869a22-e527-4228-a351-1e4dd3271a8e" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_67869a22-e527-4228-a351-1e4dd3271a8e_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_93ec4c88-4094-4554-809c-db4e11079210" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_67869a22-e527-4228-a351-1e4dd3271a8e" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_93ec4c88-4094-4554-809c-db4e11079210" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_ce81ebfb-824b-4d70-aa56-ac0394e24a26" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_93ec4c88-4094-4554-809c-db4e11079210" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_ce81ebfb-824b-4d70-aa56-ac0394e24a26" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail" xlink:type="extended" id="i7f3b2c675ebf4a8cbc398568e05a61c3_IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"/>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsNarrativeDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IntangibleAssetsNarrativeDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IntangibleAssetsNarrativeDetails" xlink:type="extended" id="i19fe7195e3a24139b8b1f919abb91486_IntangibleAssetsNarrativeDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_c1cf9b0a-7f5a-441d-a2a2-7201c750783c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_c1cf9b0a-7f5a-441d-a2a2-7201c750783c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_ba6034f5-ba91-4fc8-ae09-c6337c48ef7e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_ba6034f5-ba91-4fc8-ae09-c6337c48ef7e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_7da258e0-c334-4d3b-96a2-74c7904ac6c6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_7da258e0-c334-4d3b-96a2-74c7904ac6c6" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_5f74da78-6a70-4b00-942a-0561523281a5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_5f74da78-6a70-4b00-942a-0561523281a5" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_698bc5f7-5f46-46e7-80ce-3e375e341cae" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_698bc5f7-5f46-46e7-80ce-3e375e341cae" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_c638200d-64c3-48bf-9d6a-eb5217255d1c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_698bc5f7-5f46-46e7-80ce-3e375e341cae" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_c638200d-64c3-48bf-9d6a-eb5217255d1c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_c638200d-64c3-48bf-9d6a-eb5217255d1c_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_c638200d-64c3-48bf-9d6a-eb5217255d1c" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_c638200d-64c3-48bf-9d6a-eb5217255d1c_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_ece2a04d-8c01-4650-acda-9b41009a69c5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_c638200d-64c3-48bf-9d6a-eb5217255d1c" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_ece2a04d-8c01-4650-acda-9b41009a69c5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_29041631-6164-4e49-aa12-d316d3fd10c8" xlink:href="cgnx-20201231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_ece2a04d-8c01-4650-acda-9b41009a69c5" xlink:to="loc_cgnx_SualabCo.Ltd.Member_29041631-6164-4e49-aa12-d316d3fd10c8" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EnShapeGmbHAbstract_aa71737c-c7f4-4df6-a23c-6498ea1c3145" xlink:href="cgnx-20201231.xsd#cgnx_EnShapeGmbHAbstract"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_ece2a04d-8c01-4650-acda-9b41009a69c5" xlink:to="loc_cgnx_EnShapeGmbHAbstract_aa71737c-c7f4-4df6-a23c-6498ea1c3145" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_442ed233-f15e-4dcc-94c2-8a77ac58a6bd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_698bc5f7-5f46-46e7-80ce-3e375e341cae" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_442ed233-f15e-4dcc-94c2-8a77ac58a6bd" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_442ed233-f15e-4dcc-94c2-8a77ac58a6bd_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_442ed233-f15e-4dcc-94c2-8a77ac58a6bd" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_442ed233-f15e-4dcc-94c2-8a77ac58a6bd_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_9950c1df-ea4b-4cd8-9934-7b67ecbe4fdc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_442ed233-f15e-4dcc-94c2-8a77ac58a6bd" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_9950c1df-ea4b-4cd8-9934-7b67ecbe4fdc" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_8754a736-4d5c-4c81-8910-686eca680907" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DevelopedTechnologyRightsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_9950c1df-ea4b-4cd8-9934-7b67ecbe4fdc" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_8754a736-4d5c-4c81-8910-686eca680907" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_7b994afd-99b7-4a53-a42c-269639447749" xlink:href="cgnx-20201231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_9950c1df-ea4b-4cd8-9934-7b67ecbe4fdc" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_7b994afd-99b7-4a53-a42c-269639447749" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_d966c704-15fd-4537-a373-0f5ab131abaa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_698bc5f7-5f46-46e7-80ce-3e375e341cae" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_d966c704-15fd-4537-a373-0f5ab131abaa" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_d966c704-15fd-4537-a373-0f5ab131abaa_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_d966c704-15fd-4537-a373-0f5ab131abaa" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_d966c704-15fd-4537-a373-0f5ab131abaa_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_8b819759-7be3-4842-a676-16becbc02355" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_d966c704-15fd-4537-a373-0f5ab131abaa" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_8b819759-7be3-4842-a676-16becbc02355" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_9bf050e4-f64c-4aa1-a91f-793352310ef8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_8b819759-7be3-4842-a676-16becbc02355" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_9bf050e4-f64c-4aa1-a91f-793352310ef8" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpenses" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AccruedExpenses"/>
  <link:definitionLink xlink:role="http://cognex.com/role/AccruedExpenses" xlink:type="extended" id="ifc28e15d621443198d691c851ea5b465_AccruedExpenses"/>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpensesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AccruedExpensesTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/AccruedExpensesTables" xlink:type="extended" id="ieee5ad2a8fbf433bbc8af54147c22889_AccruedExpensesTables"/>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AccruedExpensesConstituentsofAccruedExpensesDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail" xlink:type="extended" id="ie09172b2645b43f7b19d60d467fe0a25_AccruedExpensesConstituentsofAccruedExpensesDetail"/>
  <link:roleRef roleURI="http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AccruedExpensesChangesinWarrantyObligationsDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail" xlink:type="extended" id="i09ab1ef06f674d9eb8734ef6fddbb217_AccruedExpensesChangesinWarrantyObligationsDetail"/>
  <link:roleRef roleURI="http://cognex.com/role/CommitmentsandContingencies" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CommitmentsandContingencies"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CommitmentsandContingencies" xlink:type="extended" id="i2b0949f50c274c9cb734b14839b293ce_CommitmentsandContingencies"/>
  <link:roleRef roleURI="http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CommitmentsandContingenciesAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail" xlink:type="extended" id="i4d8e46cf014640ea807f15a0fe14fea7_CommitmentsandContingenciesAdditionalInformationDetail"/>
  <link:roleRef roleURI="http://cognex.com/role/IndemnificationProvisions" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IndemnificationProvisions"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IndemnificationProvisions" xlink:type="extended" id="ibf3e3e7533bf4e12b63e904df8a3a6d9_IndemnificationProvisions"/>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstruments" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstruments"/>
  <link:definitionLink xlink:role="http://cognex.com/role/DerivativeInstruments" xlink:type="extended" id="if654a9c9c0654350bc832efaf6e3243f_DerivativeInstruments"/>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/DerivativeInstrumentsTables" xlink:type="extended" id="if54cc561cde74837bd76c0199744cc6a_DerivativeInstrumentsTables"/>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsAdditionalDetailsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails" xlink:type="extended" id="i4fd70483e0844e7d88c908e990b779e1_DerivativeInstrumentsAdditionalDetailsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLineItems_c4a660f4-8dec-4288-9a9d-aa66e1e4e17f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1_bac5791b-657d-441d-b6af-c7c9d3eccf50" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DerivativeLineItems_c4a660f4-8dec-4288-9a9d-aa66e1e4e17f" xlink:to="loc_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1_bac5791b-657d-441d-b6af-c7c9d3eccf50" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeTable_944d9cff-fad5-4fae-a367-aec64b7727cc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DerivativeLineItems_c4a660f4-8dec-4288-9a9d-aa66e1e4e17f" xlink:to="loc_us-gaap_DerivativeTable_944d9cff-fad5-4fae-a367-aec64b7727cc" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_d63ead9c-f46d-4ff4-8cc3-87de57d965c3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DerivativeTable_944d9cff-fad5-4fae-a367-aec64b7727cc" xlink:to="loc_us-gaap_HedgingDesignationAxis_d63ead9c-f46d-4ff4-8cc3-87de57d965c3" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_d63ead9c-f46d-4ff4-8cc3-87de57d965c3_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_HedgingDesignationAxis_d63ead9c-f46d-4ff4-8cc3-87de57d965c3" xlink:to="loc_us-gaap_HedgingDesignationDomain_d63ead9c-f46d-4ff4-8cc3-87de57d965c3_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_69f9e525-51f1-4c32-9dc3-7f87828ecd5c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_HedgingDesignationAxis_d63ead9c-f46d-4ff4-8cc3-87de57d965c3" xlink:to="loc_us-gaap_HedgingDesignationDomain_69f9e525-51f1-4c32-9dc3-7f87828ecd5c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_07b0ae1c-dead-492a-9c1d-47269cb3b193" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_HedgingDesignationDomain_69f9e525-51f1-4c32-9dc3-7f87828ecd5c" xlink:to="loc_us-gaap_NondesignatedMember_07b0ae1c-dead-492a-9c1d-47269cb3b193" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsOutstandingForwardContractsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails" xlink:type="extended" id="i0842dacda8f34e428c779a4642649028_DerivativeInstrumentsOutstandingForwardContractsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLineItems_db9e56b9-1774-417d-8ac4-4a204d4521ff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssetNotionalAmount_4d3e3df0-6bc2-4a18-a7ec-b8141fc9cbc4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeAssetNotionalAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DerivativeLineItems_db9e56b9-1774-417d-8ac4-4a204d4521ff" xlink:to="loc_us-gaap_DerivativeAssetNotionalAmount_4d3e3df0-6bc2-4a18-a7ec-b8141fc9cbc4" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeTable_30c2e25e-3d1c-4d0d-9e1d-d06f907f95b7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DerivativeLineItems_db9e56b9-1774-417d-8ac4-4a204d4521ff" xlink:to="loc_us-gaap_DerivativeTable_30c2e25e-3d1c-4d0d-9e1d-d06f907f95b7" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_5ec96e8e-cf41-47a0-bf2a-0de4b2e124f3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DerivativeTable_30c2e25e-3d1c-4d0d-9e1d-d06f907f95b7" xlink:to="loc_us-gaap_HedgingDesignationAxis_5ec96e8e-cf41-47a0-bf2a-0de4b2e124f3" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_5ec96e8e-cf41-47a0-bf2a-0de4b2e124f3_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_HedgingDesignationAxis_5ec96e8e-cf41-47a0-bf2a-0de4b2e124f3" xlink:to="loc_us-gaap_HedgingDesignationDomain_5ec96e8e-cf41-47a0-bf2a-0de4b2e124f3_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_ddeb37c8-eccf-42ff-a0df-6d3cc45ce9a7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_HedgingDesignationAxis_5ec96e8e-cf41-47a0-bf2a-0de4b2e124f3" xlink:to="loc_us-gaap_HedgingDesignationDomain_ddeb37c8-eccf-42ff-a0df-6d3cc45ce9a7" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_acb65e59-bd6d-4fa6-973d-99b4a7b35fdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_HedgingDesignationDomain_ddeb37c8-eccf-42ff-a0df-6d3cc45ce9a7" xlink:to="loc_us-gaap_NondesignatedMember_acb65e59-bd6d-4fa6-973d-99b4a7b35fdb" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CurrencyAxis_4b154f44-7907-4ef2-b7cf-768b65ad319e" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CurrencyAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DerivativeTable_30c2e25e-3d1c-4d0d-9e1d-d06f907f95b7" xlink:to="loc_srt_CurrencyAxis_4b154f44-7907-4ef2-b7cf-768b65ad319e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_AllCurrenciesDomain_4b154f44-7907-4ef2-b7cf-768b65ad319e_default" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_AllCurrenciesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_CurrencyAxis_4b154f44-7907-4ef2-b7cf-768b65ad319e" xlink:to="loc_currency_AllCurrenciesDomain_4b154f44-7907-4ef2-b7cf-768b65ad319e_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_AllCurrenciesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_CurrencyAxis_4b154f44-7907-4ef2-b7cf-768b65ad319e" xlink:to="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_KRW_4d18449e-7b16-4fe0-a42d-86077871756c" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_KRW"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_KRW_4d18449e-7b16-4fe0-a42d-86077871756c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_EUR_744a92ac-386e-4876-b523-c529019710bc" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_EUR"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_EUR_744a92ac-386e-4876-b523-c529019710bc" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_JPY_54376c75-a952-4ff7-a960-f1ae33439d96" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_JPY"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_JPY_54376c75-a952-4ff7-a960-f1ae33439d96" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_MXN_168eb5a5-58d3-4256-be23-1055d854e236" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_MXN"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_MXN_168eb5a5-58d3-4256-be23-1055d854e236" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_GBP_41db38b7-1f4a-496f-9da5-a3ebffaa75d6" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_GBP"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_GBP_41db38b7-1f4a-496f-9da5-a3ebffaa75d6" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_HUF_d7f616e9-cc9d-45b3-b45b-8595482936bb" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_HUF"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_HUF_d7f616e9-cc9d-45b3-b45b-8595482936bb" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_TWD_9e024b04-6fc2-4680-ab5b-d59a7567a22d" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_TWD"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_TWD_9e024b04-6fc2-4680-ab5b-d59a7567a22d" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_CAD_94f776b5-ae91-4f40-86be-3cf6160af69b" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_CAD"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_CAD_94f776b5-ae91-4f40-86be-3cf6160af69b" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_SGD_e3e2b04c-f690-422f-a555-12eb4ae84d85" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_SGD"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_SGD_e3e2b04c-f690-422f-a555-12eb4ae84d85" xlink:type="arc" order="8"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsBalanceSheetLocationDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails" xlink:type="extended" id="if73e11bec71c4648beda7b33cfb58ef9_DerivativeInstrumentsBalanceSheetLocationDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativesFairValueLineItems_dcca8526-24db-4a8c-b185-560f1b201cf7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativesFairValueLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssets_4c11f124-d732-4552-8625-4412071b23bd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeAssets"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DerivativesFairValueLineItems_dcca8526-24db-4a8c-b185-560f1b201cf7" xlink:to="loc_us-gaap_DerivativeAssets_4c11f124-d732-4552-8625-4412071b23bd" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilities_9688da43-c075-4c1b-a4c9-6f71917c9b9f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeLiabilities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DerivativesFairValueLineItems_dcca8526-24db-4a8c-b185-560f1b201cf7" xlink:to="loc_us-gaap_DerivativeLiabilities_9688da43-c075-4c1b-a4c9-6f71917c9b9f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_4624973a-84b4-4c58-909c-ed716e77003f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DerivativesFairValueLineItems_dcca8526-24db-4a8c-b185-560f1b201cf7" xlink:to="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_4624973a-84b4-4c58-909c-ed716e77003f" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_82769d90-969b-40a3-9d21-d3c129518555" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_4624973a-84b4-4c58-909c-ed716e77003f" xlink:to="loc_us-gaap_HedgingDesignationAxis_82769d90-969b-40a3-9d21-d3c129518555" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_82769d90-969b-40a3-9d21-d3c129518555_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_HedgingDesignationAxis_82769d90-969b-40a3-9d21-d3c129518555" xlink:to="loc_us-gaap_HedgingDesignationDomain_82769d90-969b-40a3-9d21-d3c129518555_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_1cec0ccd-ab0e-4bb3-939b-b69f759fa0d3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_HedgingDesignationAxis_82769d90-969b-40a3-9d21-d3c129518555" xlink:to="loc_us-gaap_HedgingDesignationDomain_1cec0ccd-ab0e-4bb3-939b-b69f759fa0d3" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_6fe729aa-fb2b-444d-82a1-b90850584805" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_HedgingDesignationDomain_1cec0ccd-ab0e-4bb3-939b-b69f759fa0d3" xlink:to="loc_us-gaap_NondesignatedMember_6fe729aa-fb2b-444d-82a1-b90850584805" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis_9b354ea9-80e0-4f39-bc47-b88520539d90" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BalanceSheetLocationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_4624973a-84b4-4c58-909c-ed716e77003f" xlink:to="loc_us-gaap_BalanceSheetLocationAxis_9b354ea9-80e0-4f39-bc47-b88520539d90" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_9b354ea9-80e0-4f39-bc47-b88520539d90_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_9b354ea9-80e0-4f39-bc47-b88520539d90" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_9b354ea9-80e0-4f39-bc47-b88520539d90_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_daf03bf1-5913-4370-8a42-70e247befdbb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_9b354ea9-80e0-4f39-bc47-b88520539d90" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_daf03bf1-5913-4370-8a42-70e247befdbb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember_197b986c-ee6a-4f5a-9fee-efefbfad11c0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_daf03bf1-5913-4370-8a42-70e247befdbb" xlink:to="loc_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember_197b986c-ee6a-4f5a-9fee-efefbfad11c0" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AccruedExpensesMember_cf160ef2-2d8c-44a6-aa5b-2ed4af8d3df9" xlink:href="cgnx-20201231.xsd#cgnx_AccruedExpensesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_daf03bf1-5913-4370-8a42-70e247befdbb" xlink:to="loc_cgnx_AccruedExpensesMember_cf160ef2-2d8c-44a6-aa5b-2ed4af8d3df9" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails" xlink:type="extended" id="i16bc60acc02b427e82f2b177b91ff087_DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails" xlink:type="extended" id="ia6d4cf9f23114c90b12f5e629f3b206b_DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsGainLossLineItems_c6504c14-16d5-410a-8db3-266cf8cdbbbc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeInstrumentsGainLossLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeGainLossOnDerivativeNet_bdb6c060-dd55-40f4-9c6e-1fdc746591a1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeGainLossOnDerivativeNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossLineItems_c6504c14-16d5-410a-8db3-266cf8cdbbbc" xlink:to="loc_us-gaap_DerivativeGainLossOnDerivativeNet_bdb6c060-dd55-40f4-9c6e-1fdc746591a1" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_2042c00a-d86b-4864-8cd5-90a8fd884790" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossLineItems_c6504c14-16d5-410a-8db3-266cf8cdbbbc" xlink:to="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_2042c00a-d86b-4864-8cd5-90a8fd884790" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis_e18f818e-3eb0-4509-abd2-98d8f7ba5cc6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_2042c00a-d86b-4864-8cd5-90a8fd884790" xlink:to="loc_us-gaap_IncomeStatementLocationAxis_e18f818e-3eb0-4509-abd2-98d8f7ba5cc6" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_e18f818e-3eb0-4509-abd2-98d8f7ba5cc6_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_e18f818e-3eb0-4509-abd2-98d8f7ba5cc6" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_e18f818e-3eb0-4509-abd2-98d8f7ba5cc6_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_ec3dc524-4f3c-4e27-bf86-2a42352ffe1f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_e18f818e-3eb0-4509-abd2-98d8f7ba5cc6" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_ec3dc524-4f3c-4e27-bf86-2a42352ffe1f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyGainLossMember_5f28b942-fe90-46aa-9a8c-013ad15b772f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignCurrencyGainLossMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_ec3dc524-4f3c-4e27-bf86-2a42352ffe1f" xlink:to="loc_us-gaap_ForeignCurrencyGainLossMember_5f28b942-fe90-46aa-9a8c-013ad15b772f" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_0c6284be-3afc-4f0b-ad37-4f7d3247db01" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_2042c00a-d86b-4864-8cd5-90a8fd884790" xlink:to="loc_us-gaap_HedgingDesignationAxis_0c6284be-3afc-4f0b-ad37-4f7d3247db01" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_0c6284be-3afc-4f0b-ad37-4f7d3247db01_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_HedgingDesignationAxis_0c6284be-3afc-4f0b-ad37-4f7d3247db01" xlink:to="loc_us-gaap_HedgingDesignationDomain_0c6284be-3afc-4f0b-ad37-4f7d3247db01_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_09b3677b-1635-4f71-b4ea-c1f9b0274ae4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_HedgingDesignationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_HedgingDesignationAxis_0c6284be-3afc-4f0b-ad37-4f7d3247db01" xlink:to="loc_us-gaap_HedgingDesignationDomain_09b3677b-1635-4f71-b4ea-c1f9b0274ae4" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_c1becfbb-30ff-4fba-839a-7cde9ca06d55" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NondesignatedMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_HedgingDesignationDomain_09b3677b-1635-4f71-b4ea-c1f9b0274ae4" xlink:to="loc_us-gaap_NondesignatedMember_c1becfbb-30ff-4fba-839a-7cde9ca06d55" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognition" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognition"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RevenueRecognition" xlink:type="extended" id="ia7ea80fbac83402fae726a17ad8c7cdf_RevenueRecognition"/>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognitionTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RevenueRecognitionTables" xlink:type="extended" id="ifcd81935985b468084d32cea13ff1370_RevenueRecognitionTables"/>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionNarrativesDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognitionNarrativesDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RevenueRecognitionNarrativesDetails" xlink:type="extended" id="iae437cde29404079befa6be77779a5ae_RevenueRecognitionNarrativesDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognitionDisaggregationbyGeographyandTypeDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails" xlink:type="extended" id="i2ae72d22fb1840439a0bbffd3d196a14_RevenueRecognitionDisaggregationbyGeographyandTypeDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueLineItems_d55675f0-d5c1-43f5-9ac4-1479b3eb08f5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisaggregationOfRevenueLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_39a4ef42-be55-4c46-b493-9d658353540e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems_d55675f0-d5c1-43f5-9ac4-1479b3eb08f5" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_39a4ef42-be55-4c46-b493-9d658353540e" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTable_1b180d66-9b67-4e58-a39f-c94352ae131f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisaggregationOfRevenueTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems_d55675f0-d5c1-43f5-9ac4-1479b3eb08f5" xlink:to="loc_us-gaap_DisaggregationOfRevenueTable_1b180d66-9b67-4e58-a39f-c94352ae131f" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_aacaa70f-34ba-4d68-8a10-3b584cd52e2f" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementGeographicalAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable_1b180d66-9b67-4e58-a39f-c94352ae131f" xlink:to="loc_srt_StatementGeographicalAxis_aacaa70f-34ba-4d68-8a10-3b584cd52e2f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_aacaa70f-34ba-4d68-8a10-3b584cd52e2f_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_StatementGeographicalAxis_aacaa70f-34ba-4d68-8a10-3b584cd52e2f" xlink:to="loc_srt_SegmentGeographicalDomain_aacaa70f-34ba-4d68-8a10-3b584cd52e2f_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_StatementGeographicalAxis_aacaa70f-34ba-4d68-8a10-3b584cd52e2f" xlink:to="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_AmericasMember_b3390497-9ec0-47cb-8ac4-c64d694b18fa" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_AmericasMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:to="loc_srt_AmericasMember_b3390497-9ec0-47cb-8ac4-c64d694b18fa" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember_920dd36c-f274-4f32-a4e3-5317941c4a29" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:to="loc_srt_EuropeMember_920dd36c-f274-4f32-a4e3-5317941c4a29" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GreaterChinaMember_b761ecb5-37b8-4394-86d7-513b1c4bcb34" xlink:href="cgnx-20201231.xsd#cgnx_GreaterChinaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:to="loc_cgnx_GreaterChinaMember_b761ecb5-37b8-4394-86d7-513b1c4bcb34" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherAsiaMember_4b30c084-fffd-4136-989e-9ebdf504747a" xlink:href="cgnx-20201231.xsd#cgnx_OtherAsiaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:to="loc_cgnx_OtherAsiaMember_4b30c084-fffd-4136-989e-9ebdf504747a" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductOrServiceAxis_f4408278-9637-4370-9a33-a4686f8bfc9f" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ProductOrServiceAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_DisaggregationOfRevenueTable_1b180d66-9b67-4e58-a39f-c94352ae131f" xlink:to="loc_srt_ProductOrServiceAxis_f4408278-9637-4370-9a33-a4686f8bfc9f" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductsAndServicesDomain_f4408278-9637-4370-9a33-a4686f8bfc9f_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ProductsAndServicesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_ProductOrServiceAxis_f4408278-9637-4370-9a33-a4686f8bfc9f" xlink:to="loc_srt_ProductsAndServicesDomain_f4408278-9637-4370-9a33-a4686f8bfc9f_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductsAndServicesDomain_a9e89d6e-203e-479f-b9eb-d420577132db" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ProductsAndServicesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_ProductOrServiceAxis_f4408278-9637-4370-9a33-a4686f8bfc9f" xlink:to="loc_srt_ProductsAndServicesDomain_a9e89d6e-203e-479f-b9eb-d420577132db" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StandardProductandServicesMember_b3572bb2-a123-4384-a773-c24b1eaa5c36" xlink:href="cgnx-20201231.xsd#cgnx_StandardProductandServicesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_ProductsAndServicesDomain_a9e89d6e-203e-479f-b9eb-d420577132db" xlink:to="loc_cgnx_StandardProductandServicesMember_b3572bb2-a123-4384-a773-c24b1eaa5c36" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ApplicationofCustomerSpecificSolutionsMember_766ebd98-bf87-41fc-b850-d792ff5bff86" xlink:href="cgnx-20201231.xsd#cgnx_ApplicationofCustomerSpecificSolutionsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_ProductsAndServicesDomain_a9e89d6e-203e-479f-b9eb-d420577132db" xlink:to="loc_cgnx_ApplicationofCustomerSpecificSolutionsMember_766ebd98-bf87-41fc-b850-d792ff5bff86" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognitionAllowanceforCreditLossDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails" xlink:type="extended" id="i3054f1055faa44f98afed3bc04b49101_RevenueRecognitionAllowanceforCreditLossDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails" xlink:type="extended" id="id58446c66f224101857442471d457f21_RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/ShareholdersEquity" xlink:type="simple" xlink:href="cgnx-20201231.xsd#ShareholdersEquity"/>
  <link:definitionLink xlink:role="http://cognex.com/role/ShareholdersEquity" xlink:type="extended" id="ibe367851a0e7460cb106b3a2f5d7c1eb_ShareholdersEquity"/>
  <link:roleRef roleURI="http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#ShareholdersEquityAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail" xlink:type="extended" id="i76e7076024094453a3a6b77bf7e222b7_ShareholdersEquityAdditionalInformationDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ClassOfStockLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesAuthorized_f787ad5c-777e-4bc3-9327-0bf74cc8c976" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockSharesAuthorized"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_PreferredStockSharesAuthorized_f787ad5c-777e-4bc3-9327-0bf74cc8c976" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockParOrStatedValuePerShare_32cced02-2ce2-4cb8-8bbb-9b6bfe7f39e6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockParOrStatedValuePerShare"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_PreferredStockParOrStatedValuePerShare_32cced02-2ce2-4cb8-8bbb-9b6bfe7f39e6" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesAuthorized_1fa9c382-f777-46de-bd6f-b8609ed3acdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesAuthorized"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_CommonStockSharesAuthorized_1fa9c382-f777-46de-bd6f-b8609ed3acdb" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_d7d90681-460f-457e-9883-c1159fd7dda5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquityNoteStockSplitConversionRatio1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_d7d90681-460f-457e-9883-c1159fd7dda5" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockParOrStatedValuePerShare_cc9b2611-ba39-4319-bcbc-5899c0d01191" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_CommonStockParOrStatedValuePerShare_cc9b2611-ba39-4319-bcbc-5899c0d01191" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_VoteEntitledForEachCommonShareOutstanding_4a804a4a-5f37-4d14-9b09-5319c3df705d" xlink:href="cgnx-20201231.xsd#cgnx_VoteEntitledForEachCommonShareOutstanding"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_cgnx_VoteEntitledForEachCommonShareOutstanding_4a804a4a-5f37-4d14-9b09-5319c3df705d" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1_ba7132c3-bc56-444d-bad2-6924cc3367ab" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchaseProgramAuthorizedAmount1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1_ba7132c3-bc56-444d-bad2-6924cc3367ab" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Totalsharesrepurchased_17907e5f-282c-4ac4-aa99-84cc39c81301" xlink:href="cgnx-20201231.xsd#cgnx_Totalsharesrepurchased"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_cgnx_Totalsharesrepurchased_17907e5f-282c-4ac4-aa99-84cc39c81301" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Repurchasedsharestotalcost_69fd94e7-eb24-49aa-b80e-6f37707851d1" xlink:href="cgnx-20201231.xsd#cgnx_Repurchasedsharestotalcost"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_cgnx_Repurchasedsharestotalcost_69fd94e7-eb24-49aa-b80e-6f37707851d1" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodShares_5d3c509e-ef10-42d1-b997-a392ce444a8b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodShares"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodShares_5d3c509e-ef10-42d1-b997-a392ce444a8b" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodValue_8266610c-3dde-4b8d-bc9b-dbdbda934a29" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodValue_8266610c-3dde-4b8d-bc9b-dbdbda934a29" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareDeclared_7a03c46d-171d-4354-88c1-e64953718617" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockDividendsPerShareDeclared"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_CommonStockDividendsPerShareDeclared_7a03c46d-171d-4354-88c1-e64953718617" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsOfDividends_80857d21-3c59-474f-bff0-a2f6523ff69b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsOfDividends"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_PaymentsOfDividends_80857d21-3c59-474f-bff0-a2f6523ff69b" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfStockByClassTable_12d0f4be-47e6-4421-b1f0-e2050f169ede" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfStockByClassTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_ScheduleOfStockByClassTable_12d0f4be-47e6-4421-b1f0-e2050f169ede" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementClassOfStockAxis_dae8ce52-1e08-4011-8f3e-39049d990978" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementClassOfStockAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfStockByClassTable_12d0f4be-47e6-4421-b1f0-e2050f169ede" xlink:to="loc_us-gaap_StatementClassOfStockAxis_dae8ce52-1e08-4011-8f3e-39049d990978" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockDomain_dae8ce52-1e08-4011-8f3e-39049d990978_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ClassOfStockDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_StatementClassOfStockAxis_dae8ce52-1e08-4011-8f3e-39049d990978" xlink:to="loc_us-gaap_ClassOfStockDomain_dae8ce52-1e08-4011-8f3e-39049d990978_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockDomain_c7944631-296a-437e-9d12-a452b27cb888" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ClassOfStockDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_StatementClassOfStockAxis_dae8ce52-1e08-4011-8f3e-39049d990978" xlink:to="loc_us-gaap_ClassOfStockDomain_c7944631-296a-437e-9d12-a452b27cb888" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember_bc936c4b-86a6-4d02-975a-7cce3e63b63c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ClassOfStockDomain_c7944631-296a-437e-9d12-a452b27cb888" xlink:to="loc_us-gaap_CommonStockMember_bc936c4b-86a6-4d02-975a-7cce3e63b63c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramAxis_e921b2e4-7fe2-42f3-b78b-70511b9cf862" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareRepurchaseProgramAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfStockByClassTable_12d0f4be-47e6-4421-b1f0-e2050f169ede" xlink:to="loc_us-gaap_ShareRepurchaseProgramAxis_e921b2e4-7fe2-42f3-b78b-70511b9cf862" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramDomain_e921b2e4-7fe2-42f3-b78b-70511b9cf862_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareRepurchaseProgramDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ShareRepurchaseProgramAxis_e921b2e4-7fe2-42f3-b78b-70511b9cf862" xlink:to="loc_us-gaap_ShareRepurchaseProgramDomain_e921b2e4-7fe2-42f3-b78b-70511b9cf862_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareRepurchaseProgramDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ShareRepurchaseProgramAxis_e921b2e4-7fe2-42f3-b78b-70511b9cf862" xlink:to="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramApril2017Member_299de3ed-f07b-46a5-8a7d-3ccbd405456c" xlink:href="cgnx-20201231.xsd#cgnx_RepurchaseProgramApril2017Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:to="loc_cgnx_RepurchaseProgramApril2017Member_299de3ed-f07b-46a5-8a7d-3ccbd405456c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramFebruary2018Member_161a94dd-afed-41a0-b5b3-4665067e9423" xlink:href="cgnx-20201231.xsd#cgnx_RepurchaseProgramFebruary2018Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:to="loc_cgnx_RepurchaseProgramFebruary2018Member_161a94dd-afed-41a0-b5b3-4665067e9423" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramOctober2018Member_f21699ae-e061-41c1-a233-5e897dd1dcbe" xlink:href="cgnx-20201231.xsd#cgnx_RepurchaseProgramOctober2018Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:to="loc_cgnx_RepurchaseProgramOctober2018Member_f21699ae-e061-41c1-a233-5e897dd1dcbe" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramMarch2020Member_887127bf-9716-46c1-8a9f-f2edf0085aa0" xlink:href="cgnx-20201231.xsd#cgnx_RepurchaseProgramMarch2020Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:to="loc_cgnx_RepurchaseProgramMarch2020Member_887127bf-9716-46c1-8a9f-f2edf0085aa0" xlink:type="arc" order="3"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensation" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensation"/>
  <link:definitionLink xlink:role="http://cognex.com/role/StockBasedCompensation" xlink:type="extended" id="i2973e7c83255413898b85c19e8e8b81f_StockBasedCompensation"/>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/StockBasedCompensationTables" xlink:type="extended" id="i6eb9d9eedee94a4d81c5c32401638d12_StockBasedCompensationTables"/>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationExpenseAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail" xlink:type="extended" id="i7beb5a1ed3c844dcb50479d2c0c239cd_StockBasedCompensationExpenseAdditionalInformationDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_b79a0d76-de6f-4d49-8da6-faffe65179ad" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_b79a0d76-de6f-4d49-8da6-faffe65179ad" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_768a434f-601e-4514-9949-2bf83b9db7fb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_768a434f-601e-4514-9949-2bf83b9db7fb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ExpirationPeriodOfStockOptionPlan_ad79befb-2a9f-4ec0-8d32-c653e1736e0f" xlink:href="cgnx-20201231.xsd#cgnx_ExpirationPeriodOfStockOptionPlan"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_ExpirationPeriodOfStockOptionPlan_ad79befb-2a9f-4ec0-8d32-c653e1736e0f" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NumberOfGroupsWithinEmployeePopulation_46394fed-5150-445a-ae2f-84a801175217" xlink:href="cgnx-20201231.xsd#cgnx_NumberOfGroupsWithinEmployeePopulation"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_NumberOfGroupsWithinEmployeePopulation_46394fed-5150-445a-ae2f-84a801175217" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_14e82f8c-1a45-454e-bad4-1dab25192d73" xlink:href="cgnx-20201231.xsd#cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_14e82f8c-1a45-454e-bad4-1dab25192d73" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_f67a069a-caec-44f4-b757-5c61eb3f44f6" xlink:href="cgnx-20201231.xsd#cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_f67a069a-caec-44f4-b757-5c61eb3f44f6" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates_8bd5fd7f-8ca5-449e-aa14-5e4b5625193b" xlink:href="cgnx-20201231.xsd#cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates_8bd5fd7f-8ca5-449e-aa14-5e4b5625193b" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_bbd40bc8-63ad-4bd5-94f8-90dc7a92399a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_bbd40bc8-63ad-4bd5-94f8-90dc7a92399a" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_aa951c07-518f-4e05-a860-fc4a3c61eea2" xlink:href="cgnx-20201231.xsd#cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_aa951c07-518f-4e05-a860-fc4a3c61eea2" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_bc2c16f3-e1d1-4f09-a6bc-e270ca557226" xlink:href="cgnx-20201231.xsd#cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_bc2c16f3-e1d1-4f09-a6bc-e270ca557226" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_7b0732ac-04b9-4f0f-94cb-ecce99ff7559" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_7b0732ac-04b9-4f0f-94cb-ecce99ff7559" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_7b1e1a81-86c8-47c3-8db6-22953f3a8504" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_7b1e1a81-86c8-47c3-8db6-22953f3a8504" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense_756f63c1-3d4c-4ae9-b7f3-5a76532c66b2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_AllocatedShareBasedCompensationExpense_756f63c1-3d4c-4ae9-b7f3-5a76532c66b2" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_aa74a618-0c13-4008-a68b-ab708f74157a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_aa74a618-0c13-4008-a68b-ab708f74157a" xlink:type="arc" order="13"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_2813ff3b-7bd1-4437-8f60-dfbe3f960b70" xlink:href="cgnx-20201231.xsd#cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_2813ff3b-7bd1-4437-8f60-dfbe3f960b70" xlink:type="arc" order="14"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_b1a922cc-4edf-474e-a582-b3d9084fac99" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_b1a922cc-4edf-474e-a582-b3d9084fac99" xlink:type="arc" order="15"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_c7f0a38b-f08a-4843-8c98-ffcf6fd79938" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_c7f0a38b-f08a-4843-8c98-ffcf6fd79938" xlink:type="arc" order="16"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation_369ed93d-955e-422f-bf15-439629e82119" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensation"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensation_369ed93d-955e-422f-bf15-439629e82119" xlink:type="arc" order="17"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_e57d534e-3820-4021-b7e1-c329eada4657" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_e57d534e-3820-4021-b7e1-c329eada4657" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_218f3f6c-7a4d-4384-bf64-f3de02ea6f5b" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_e57d534e-3820-4021-b7e1-c329eada4657" xlink:to="loc_srt_RangeAxis_218f3f6c-7a4d-4384-bf64-f3de02ea6f5b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_218f3f6c-7a4d-4384-bf64-f3de02ea6f5b_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_218f3f6c-7a4d-4384-bf64-f3de02ea6f5b" xlink:to="loc_srt_RangeMember_218f3f6c-7a4d-4384-bf64-f3de02ea6f5b_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_83d6ced2-6e23-46bb-bfd1-3194065501fb" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_218f3f6c-7a4d-4384-bf64-f3de02ea6f5b" xlink:to="loc_srt_RangeMember_83d6ced2-6e23-46bb-bfd1-3194065501fb" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_d373d360-d893-45dc-839d-2549d4b69364" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_83d6ced2-6e23-46bb-bfd1-3194065501fb" xlink:to="loc_srt_MinimumMember_d373d360-d893-45dc-839d-2549d4b69364" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_ff1ca6ae-7410-437a-b2cc-44119efdbfe8" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_83d6ced2-6e23-46bb-bfd1-3194065501fb" xlink:to="loc_srt_MaximumMember_ff1ca6ae-7410-437a-b2cc-44119efdbfe8" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_0fb8d3fe-f1e5-4b9f-a119-18d99a073210" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_e57d534e-3820-4021-b7e1-c329eada4657" xlink:to="loc_us-gaap_AwardTypeAxis_0fb8d3fe-f1e5-4b9f-a119-18d99a073210" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_0fb8d3fe-f1e5-4b9f-a119-18d99a073210_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_0fb8d3fe-f1e5-4b9f-a119-18d99a073210" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_0fb8d3fe-f1e5-4b9f-a119-18d99a073210_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_db3aeefc-f333-4656-a523-a1869eab3bb2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_0fb8d3fe-f1e5-4b9f-a119-18d99a073210" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_db3aeefc-f333-4656-a523-a1869eab3bb2" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_539f67c4-f6a6-4a4c-aa48-8d6b4fde6dd9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_db3aeefc-f333-4656-a523-a1869eab3bb2" xlink:to="loc_us-gaap_EmployeeStockOptionMember_539f67c4-f6a6-4a4c-aa48-8d6b4fde6dd9" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PerformanceSharesMember_f107999a-b435-4397-abed-a1acb630c3c1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PerformanceSharesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_db3aeefc-f333-4656-a523-a1869eab3bb2" xlink:to="loc_us-gaap_PerformanceSharesMember_f107999a-b435-4397-abed-a1acb630c3c1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockUnitsRSUMember_f73f7290-3d00-4325-be8e-171cdee5f169" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedStockUnitsRSUMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_db3aeefc-f333-4656-a523-a1869eab3bb2" xlink:to="loc_us-gaap_RestrictedStockUnitsRSUMember_f73f7290-3d00-4325-be8e-171cdee5f169" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail" xlink:type="extended" id="i84f472cc5cde4525a82a9c91cbfbcf35_StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"/>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail" xlink:type="extended" id="i9af2c56e3519444c8ea7fe9b4e16e872_StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_2b6bbbfe-8fd7-4e2f-8619-67639c9b428b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_2b6bbbfe-8fd7-4e2f-8619-67639c9b428b" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate_3a5a6737-1707-46cf-b564-4b4fb689032b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate_3a5a6737-1707-46cf-b564-4b4fb689032b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_7f433a25-1163-4a7a-8c76-2ea0dac0c7c8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_7f433a25-1163-4a7a-8c76-2ea0dac0c7c8" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_5324f260-ab00-4b4d-b5dc-43c4a109f58f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_5324f260-ab00-4b4d-b5dc-43c4a109f58f" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_a9165c4d-bf1d-4125-9ec2-5b0f304c989f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_a9165c4d-bf1d-4125-9ec2-5b0f304c989f" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_3c4e20c9-c9d2-4f32-b39d-712e668bba7c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_a9165c4d-bf1d-4125-9ec2-5b0f304c989f" xlink:to="loc_us-gaap_AwardTypeAxis_3c4e20c9-c9d2-4f32-b39d-712e668bba7c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_3c4e20c9-c9d2-4f32-b39d-712e668bba7c_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_3c4e20c9-c9d2-4f32-b39d-712e668bba7c" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_3c4e20c9-c9d2-4f32-b39d-712e668bba7c_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f717f905-60d3-4ce8-a7de-c91666b14787" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_3c4e20c9-c9d2-4f32-b39d-712e668bba7c" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f717f905-60d3-4ce8-a7de-c91666b14787" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_10c2637c-03e7-4528-be1c-de9b2f84af1d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f717f905-60d3-4ce8-a7de-c91666b14787" xlink:to="loc_us-gaap_RestrictedStockMember_10c2637c-03e7-4528-be1c-de9b2f84af1d" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_7f129348-67c0-41d1-ad31-8205f4ac56de" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f717f905-60d3-4ce8-a7de-c91666b14787" xlink:to="loc_us-gaap_EmployeeStockOptionMember_7f129348-67c0-41d1-ad31-8205f4ac56de" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail" xlink:type="extended" id="ic30bed2683954c6b9c381e4ef9d9007b_StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_f561709e-03bd-4110-b3d9-f4c91082a62b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_f561709e-03bd-4110-b3d9-f4c91082a62b" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_05948112-7d5a-4639-be4a-0181657447f8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_05948112-7d5a-4639-be4a-0181657447f8" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod_71e995f9-d8c4-45c6-99f5-57d366a1c2bb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod_71e995f9-d8c4-45c6-99f5-57d366a1c2bb" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_7630ce84-64d4-4524-a906-837dd6fee33e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_7630ce84-64d4-4524-a906-837dd6fee33e" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod_166701e0-610e-4a40-97e3-f53097593acc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod_166701e0-610e-4a40-97e3-f53097593acc" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_d332f328-c50d-4b8e-a03d-791f019a8388" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_f561709e-03bd-4110-b3d9-f4c91082a62b" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_6c2865fa-db95-402d-9e30-8a13ddb3d422" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_6c2865fa-db95-402d-9e30-8a13ddb3d422" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_c7c1a268-fa39-4fef-aa1c-34bab3e47c5b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_c7c1a268-fa39-4fef-aa1c-34bab3e47c5b" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue_7f35ad96-a360-4dcb-ab62-5e66b19da241" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue_7f35ad96-a360-4dcb-ab62-5e66b19da241" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue_d9838bb1-d2a8-4992-9788-7b9bae58ebdd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue_d9838bb1-d2a8-4992-9788-7b9bae58ebdd" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_ef1abe75-b79e-4a53-9450-753f96e5c485" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_c7147c7a-c199-49b7-a1c8-c9083790f8ae" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_f561709e-03bd-4110-b3d9-f4c91082a62b" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_c7147c7a-c199-49b7-a1c8-c9083790f8ae" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_a6094b15-9100-454e-8b4a-c9c5bb5bd910" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AwardTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_c7147c7a-c199-49b7-a1c8-c9083790f8ae" xlink:to="loc_us-gaap_AwardTypeAxis_a6094b15-9100-454e-8b4a-c9c5bb5bd910" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_a6094b15-9100-454e-8b4a-c9c5bb5bd910_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AwardTypeAxis_a6094b15-9100-454e-8b4a-c9c5bb5bd910" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_a6094b15-9100-454e-8b4a-c9c5bb5bd910_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8767d9d7-e7eb-4cb4-9719-8ef62cf5fec2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AwardTypeAxis_a6094b15-9100-454e-8b4a-c9c5bb5bd910" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8767d9d7-e7eb-4cb4-9719-8ef62cf5fec2" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_cdf9ec67-4ae9-4190-a92e-933ed559fb7c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8767d9d7-e7eb-4cb4-9719-8ef62cf5fec2" xlink:to="loc_us-gaap_RestrictedStockMember_cdf9ec67-4ae9-4190-a92e-933ed559fb7c" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail" xlink:type="extended" id="i7f0f866ae7a6404bb80f95eb44681c2b_StockBasedCompensationExpenseStockBasedCompensationExpenseDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_71b48099-67e8-4ad4-8e78-e89796e1eb3b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense_7cd26a3c-f717-4e5e-a839-b3bbd4e1ccf0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AllocatedShareBasedCompensationExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_71b48099-67e8-4ad4-8e78-e89796e1eb3b" xlink:to="loc_us-gaap_AllocatedShareBasedCompensationExpense_7cd26a3c-f717-4e5e-a839-b3bbd4e1ccf0" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_1ed0d430-50f2-4fdc-b5eb-bc9bb06e7595" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_71b48099-67e8-4ad4-8e78-e89796e1eb3b" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_1ed0d430-50f2-4fdc-b5eb-bc9bb06e7595" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_71033807-becc-40da-953e-694b8dd0551e" xlink:href="cgnx-20201231.xsd#cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_71b48099-67e8-4ad4-8e78-e89796e1eb3b" xlink:to="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_71033807-becc-40da-953e-694b8dd0551e" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b23e6154-3f70-41f2-a595-cc8f040b509d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_71b48099-67e8-4ad4-8e78-e89796e1eb3b" xlink:to="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b23e6154-3f70-41f2-a595-cc8f040b509d" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis_076fea29-b1d8-411b-8f8b-e293590a56b5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b23e6154-3f70-41f2-a595-cc8f040b509d" xlink:to="loc_us-gaap_IncomeStatementLocationAxis_076fea29-b1d8-411b-8f8b-e293590a56b5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_076fea29-b1d8-411b-8f8b-e293590a56b5_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_076fea29-b1d8-411b-8f8b-e293590a56b5" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_076fea29-b1d8-411b-8f8b-e293590a56b5_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_d65b1dc6-006c-4537-8df2-14dcb0d9d9ff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IncomeStatementLocationAxis_076fea29-b1d8-411b-8f8b-e293590a56b5" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_d65b1dc6-006c-4537-8df2-14dcb0d9d9ff" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ProductCostOfRevenueMember_7e9f8222-4061-4731-9f1c-19f7af3fcac4" xlink:href="cgnx-20201231.xsd#cgnx_ProductCostOfRevenueMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_d65b1dc6-006c-4537-8df2-14dcb0d9d9ff" xlink:to="loc_cgnx_ProductCostOfRevenueMember_7e9f8222-4061-4731-9f1c-19f7af3fcac4" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpenseMember_52469e99-96bb-4114-82e4-7c0e4bd2ec9c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchAndDevelopmentExpenseMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_d65b1dc6-006c-4537-8df2-14dcb0d9d9ff" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpenseMember_52469e99-96bb-4114-82e4-7c0e4bd2ec9c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SellingGeneralAndAdministrativeMember_f9546218-963c-443b-a1d8-aad87a280b5d" xlink:href="cgnx-20201231.xsd#cgnx_SellingGeneralAndAdministrativeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_d65b1dc6-006c-4537-8df2-14dcb0d9d9ff" xlink:to="loc_cgnx_SellingGeneralAndAdministrativeMember_f9546218-963c-443b-a1d8-aad87a280b5d" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/EmployeeSavingsPlan" xlink:type="simple" xlink:href="cgnx-20201231.xsd#EmployeeSavingsPlan"/>
  <link:definitionLink xlink:role="http://cognex.com/role/EmployeeSavingsPlan" xlink:type="extended" id="i4f172c9542604aeab0a4b60948cc06b4_EmployeeSavingsPlan"/>
  <link:roleRef roleURI="http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#EmployeeSavingsPlanAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail" xlink:type="extended" id="i279170eede0c490caa891e084075be08_EmployeeSavingsPlanAdditionalInformationDetail"/>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxes" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxes"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IncomeTaxes" xlink:type="extended" id="ib0a03bf405034608a24e5ebfe16561d6_IncomeTaxes"/>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IncomeTaxesTables" xlink:type="extended" id="i058da81fa324411f8bf79e92e3843786_IncomeTaxesTables"/>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesAdditionalInformationDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IncomeTaxesAdditionalInformationDetails" xlink:type="extended" id="ib03430dbe7be41d9a8bf385e6a94308c_IncomeTaxesAdditionalInformationDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCreditCarryforwardLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_04717a5e-373c-4d6d-8c54-7d1143080d2c" xlink:href="cgnx-20201231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_04717a5e-373c-4d6d-8c54-7d1143080d2c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_02a0b773-ef35-4b49-9407-b94a7f030c11" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefits"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_02a0b773-ef35-4b49-9407-b94a7f030c11" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential_3d8719dc-817d-41e6-a4b7-1653546a8c19" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential_3d8719dc-817d-41e6-a4b7-1653546a8c19" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsForeignTaxStructureChange_25f2c982-9090-4fe4-88e7-89a9ca654434" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxAssetsForeignTaxStructureChange"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_DeferredTaxAssetsForeignTaxStructureChange_25f2c982-9090-4fe4-88e7-89a9ca654434" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_76bf8372-9a7c-4126-9ce4-158c2060d002" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_76bf8372-9a7c-4126-9ce4-158c2060d002" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_5bd9e56c-1779-4752-8320-ea54b2d6fede" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_5bd9e56c-1779-4752-8320-ea54b2d6fede" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_d46f3197-8efb-44f4-b2ec-25f869cd58ea" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_d46f3197-8efb-44f4-b2ec-25f869cd58ea" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_d5277bbd-ab84-4c66-9e48-25c1876385a3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_d5277bbd-ab84-4c66-9e48-25c1876385a3" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_84b7d791-e19e-4a81-8f27-24f35aa92a10" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Cash"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_Cash_84b7d791-e19e-4a81-8f27-24f35aa92a10" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_729869e4-35b0-47ca-8f37-ccf9e17bdef7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_729869e4-35b0-47ca-8f37-ccf9e17bdef7" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount_7e21018b-7450-45be-83f9-3267551fd583" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount_7e21018b-7450-45be-83f9-3267551fd583" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_0d47f7e9-b582-4594-b1d5-e2e0cc4acc9f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_0d47f7e9-b582-4594-b1d5-e2e0cc4acc9f" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_5a4240b6-2f0b-4763-a76a-a4adeacee062" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInOperatingActivities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_5a4240b6-2f0b-4763-a76a-a4adeacee062" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_7193e9cd-1e8d-43fe-a646-d767ebb327e8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetCashProvidedByUsedInFinancingActivities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_7193e9cd-1e8d-43fe-a646-d767ebb327e8" xlink:type="arc" order="13"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense_c737007a-7bab-4f8c-8672-e4727fa7e1ba" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense_c737007a-7bab-4f8c-8672-e4727fa7e1ba" xlink:type="arc" order="14"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesGrossNoncurrent_9f74e437-ab83-4960-a557-52c11f66bb0f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGrossNoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_DeferredTaxLiabilitiesGrossNoncurrent_9f74e437-ab83-4960-a557-52c11f66bb0f" xlink:type="arc" order="15"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_6182b6df-f977-44d5-bb19-c97c1a289391" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilityForUncertainTaxPositionsNoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_6182b6df-f977-44d5-bb19-c97c1a289391" xlink:type="arc" order="16"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_9cc4b905-251e-430c-b3bd-d760695cd1e2" xlink:href="cgnx-20201231.xsd#cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_9cc4b905-251e-430c-b3bd-d760695cd1e2" xlink:type="arc" order="17"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_ec5ccbde-7b5d-4489-9f0b-906b1e5b3a4c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_ec5ccbde-7b5d-4489-9f0b-906b1e5b3a4c" xlink:type="arc" order="18"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_c33f0b3b-30e0-4182-b331-a77d3bc642c9" xlink:href="cgnx-20201231.xsd#cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_c33f0b3b-30e0-4182-b331-a77d3bc642c9" xlink:type="arc" order="19"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_f2e8e6f7-4aea-4d1b-ba6c-43cc682f9f15" xlink:href="cgnx-20201231.xsd#cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_f2e8e6f7-4aea-4d1b-ba6c-43cc682f9f15" xlink:type="arc" order="20"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesGrossCurrent_a5df2e8b-c958-4f71-a850-9202152ac48d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGrossCurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_DeferredTaxLiabilitiesGrossCurrent_a5df2e8b-c958-4f71-a850-9202152ac48d" xlink:type="arc" order="21"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_b280ad5c-384f-4970-8b15-922555bd96c3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_b280ad5c-384f-4970-8b15-922555bd96c3" xlink:type="arc" order="22"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch_b5c05e6e-5376-4497-9ef9-099b87c2767f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch_b5c05e6e-5376-4497-9ef9-099b87c2767f" xlink:type="arc" order="23"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxesPaidNet_b26cf2ee-c274-4805-88e1-56a26f900503" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxesPaidNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeTaxesPaidNet_b26cf2ee-c274-4805-88e1-56a26f900503" xlink:type="arc" order="24"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OpenTaxYearStateAuthorities_19ad11dc-aee6-4397-bcb5-ea47009d78f7" xlink:href="cgnx-20201231.xsd#cgnx_OpenTaxYearStateAuthorities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_OpenTaxYearStateAuthorities_19ad11dc-aee6-4397-bcb5-ea47009d78f7" xlink:type="arc" order="25"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OpentaxyearUnitedStatesInternalRevenueService_de7e565f-b114-4a45-8e69-d83cdc8be935" xlink:href="cgnx-20201231.xsd#cgnx_OpentaxyearUnitedStatesInternalRevenueService"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_OpentaxyearUnitedStatesInternalRevenueService_de7e565f-b114-4a45-8e69-d83cdc8be935" xlink:type="arc" order="26"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Opentaxyearvarioustaxingauthorities_635e72a1-d26d-4d28-884c-b94c75769d8e" xlink:href="cgnx-20201231.xsd#cgnx_Opentaxyearvarioustaxingauthorities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_Opentaxyearvarioustaxingauthorities_635e72a1-d26d-4d28-884c-b94c75769d8e" xlink:type="arc" order="27"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement_588f296e-f133-4135-a2b1-fde0c1f33613" xlink:href="cgnx-20201231.xsd#cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement_588f296e-f133-4135-a2b1-fde0c1f33613" xlink:type="arc" order="28"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_TaxyearsforAPAagreement_4f7d165a-ae75-4f8a-bbfe-a0a02159a591" xlink:href="cgnx-20201231.xsd#cgnx_TaxyearsforAPAagreement"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_TaxyearsforAPAagreement_4f7d165a-ae75-4f8a-bbfe-a0a02159a591" xlink:type="arc" order="29"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Stateresearchandexperimentationtaxcarryforwards_2724b66e-756e-4855-8726-24a4324e25e5" xlink:href="cgnx-20201231.xsd#cgnx_Stateresearchandexperimentationtaxcarryforwards"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_Stateresearchandexperimentationtaxcarryforwards_2724b66e-756e-4855-8726-24a4324e25e5" xlink:type="arc" order="30"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsOther_b506d35e-201a-403b-ab47-ef55236139f6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxReconciliationTaxSettlementsOther"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsOther_b506d35e-201a-403b-ab47-ef55236139f6" xlink:type="arc" order="31"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign_8ac7a584-dfc3-4236-95dc-809103a648ce" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxReconciliationTaxSettlementsForeign"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign_8ac7a584-dfc3-4236-95dc-809103a648ce" xlink:type="arc" order="32"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit_b3b25f06-b716-4af2-abdc-1d0328b745c8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit_b3b25f06-b716-4af2-abdc-1d0328b745c8" xlink:type="arc" order="33"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense_48fb17bc-9a57-4955-b038-f58b2b5c9259" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense_48fb17bc-9a57-4955-b038-f58b2b5c9259" xlink:type="arc" order="34"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability_db3ee2c4-9fb0-47d4-8951-b5a4e164b898" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability_db3ee2c4-9fb0-47d4-8951-b5a4e164b898" xlink:type="arc" order="35"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities_60c1e3d3-99ee-499f-82fa-796ec912169a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilities_60c1e3d3-99ee-499f-82fa-796ec912169a" xlink:type="arc" order="36"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_UnrecognizedTaxBenefitsGross_598e911e-5cbd-4dd7-a854-b6fe502c96f1" xlink:href="cgnx-20201231.xsd#cgnx_UnrecognizedTaxBenefitsGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_UnrecognizedTaxBenefitsGross_598e911e-5cbd-4dd7-a854-b6fe502c96f1" xlink:type="arc" order="37"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_af61348a-cf46-46ea-aaea-49026984874b" xlink:href="cgnx-20201231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_af61348a-cf46-46ea-aaea-49026984874b" xlink:type="arc" order="38"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCreditCarryforwardTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_05112f00-44ad-48d1-bf3a-09050f26ae90" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_05112f00-44ad-48d1-bf3a-09050f26ae90" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_05112f00-44ad-48d1-bf3a-09050f26ae90_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_05112f00-44ad-48d1-bf3a-09050f26ae90" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_05112f00-44ad-48d1-bf3a-09050f26ae90_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_05eb167d-5f95-4533-8edc-0ffed1d58d11" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_05112f00-44ad-48d1-bf3a-09050f26ae90" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_05eb167d-5f95-4533-8edc-0ffed1d58d11" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_c1a9ad28-a394-4306-825c-9498cbc7d556" xlink:href="cgnx-20201231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_05eb167d-5f95-4533-8edc-0ffed1d58d11" xlink:to="loc_cgnx_SualabCo.Ltd.Member_c1a9ad28-a394-4306-825c-9498cbc7d556" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityAxis_68cca575-4b27-4cb4-8644-d255a74d4ddd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxAuthorityAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_us-gaap_IncomeTaxAuthorityAxis_68cca575-4b27-4cb4-8644-d255a74d4ddd" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityDomain_68cca575-4b27-4cb4-8644-d255a74d4ddd_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxAuthorityDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IncomeTaxAuthorityAxis_68cca575-4b27-4cb4-8644-d255a74d4ddd" xlink:to="loc_us-gaap_IncomeTaxAuthorityDomain_68cca575-4b27-4cb4-8644-d255a74d4ddd_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityDomain_c73c3eca-8da7-4127-8a45-28619fd626c1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxAuthorityDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IncomeTaxAuthorityAxis_68cca575-4b27-4cb4-8644-d255a74d4ddd" xlink:to="loc_us-gaap_IncomeTaxAuthorityDomain_c73c3eca-8da7-4127-8a45-28619fd626c1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCountryMember_915ed51d-555e-4fdc-94e3-00fc68015727" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ForeignCountryMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_c73c3eca-8da7-4127-8a45-28619fd626c1" xlink:to="loc_us-gaap_ForeignCountryMember_915ed51d-555e-4fdc-94e3-00fc68015727" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DomesticCountryMember_996bebc9-791f-4635-b1f3-ee3dd8eaf27d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DomesticCountryMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityDomain_c73c3eca-8da7-4127-8a45-28619fd626c1" xlink:to="loc_us-gaap_DomesticCountryMember_996bebc9-791f-4635-b1f3-ee3dd8eaf27d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameAxis_79d52cd2-99d9-432c-81ea-5d01f1f96db7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxAuthorityNameAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_us-gaap_IncomeTaxAuthorityNameAxis_79d52cd2-99d9-432c-81ea-5d01f1f96db7" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameDomain_79d52cd2-99d9-432c-81ea-5d01f1f96db7_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxAuthorityNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameAxis_79d52cd2-99d9-432c-81ea-5d01f1f96db7" xlink:to="loc_us-gaap_IncomeTaxAuthorityNameDomain_79d52cd2-99d9-432c-81ea-5d01f1f96db7_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameDomain_6c365617-1273-445f-800a-44d2dd184622" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxAuthorityNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameAxis_79d52cd2-99d9-432c-81ea-5d01f1f96db7" xlink:to="loc_us-gaap_IncomeTaxAuthorityNameDomain_6c365617-1273-445f-800a-44d2dd184622" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueCommissionersIrelandMember_3fb876c8-2d44-4386-9857-1792e237ecb9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueCommissionersIrelandMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameDomain_6c365617-1273-445f-800a-44d2dd184622" xlink:to="loc_us-gaap_RevenueCommissionersIrelandMember_3fb876c8-2d44-4386-9857-1792e237ecb9" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StateAdministrationOfTaxationChinaMember_6ccbc857-29e3-4522-8f86-9d10da72f9d6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StateAdministrationOfTaxationChinaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IncomeTaxAuthorityNameDomain_6c365617-1273-445f-800a-44d2dd184622" xlink:to="loc_us-gaap_StateAdministrationOfTaxationChinaMember_6ccbc857-29e3-4522-8f86-9d10da72f9d6" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis_eb078cf6-b994-4087-896a-3beb38bcb884" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis_eb078cf6-b994-4087-896a-3beb38bcb884" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfAdoptionMember_eb078cf6-b994-4087-896a-3beb38bcb884_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis_eb078cf6-b994-4087-896a-3beb38bcb884" xlink:to="loc_us-gaap_TypeOfAdoptionMember_eb078cf6-b994-4087-896a-3beb38bcb884_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfAdoptionMember_47c64cc3-61cc-4e4a-b3be-acc181d1c44d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis_eb078cf6-b994-4087-896a-3beb38bcb884" xlink:to="loc_us-gaap_TypeOfAdoptionMember_47c64cc3-61cc-4e4a-b3be-acc181d1c44d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember_ad375bdc-afac-4815-878e-500af018be7c" xlink:href="cgnx-20201231.xsd#cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfAdoptionMember_47c64cc3-61cc-4e4a-b3be-acc181d1c44d" xlink:to="loc_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember_ad375bdc-afac-4815-878e-500af018be7c" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardAxis_3b017639-c5b0-4302-b6bd-b41cfc7d0510" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCreditCarryforwardAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_us-gaap_TaxCreditCarryforwardAxis_3b017639-c5b0-4302-b6bd-b41cfc7d0510" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardNameDomain_3b017639-c5b0-4302-b6bd-b41cfc7d0510_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCreditCarryforwardNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_TaxCreditCarryforwardAxis_3b017639-c5b0-4302-b6bd-b41cfc7d0510" xlink:to="loc_us-gaap_TaxCreditCarryforwardNameDomain_3b017639-c5b0-4302-b6bd-b41cfc7d0510_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardNameDomain_c7b98c21-c41c-4976-994b-f840c23635ff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCreditCarryforwardNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_TaxCreditCarryforwardAxis_3b017639-c5b0-4302-b6bd-b41cfc7d0510" xlink:to="loc_us-gaap_TaxCreditCarryforwardNameDomain_c7b98c21-c41c-4976-994b-f840c23635ff" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchMember_8392cc6a-29e6-4fac-b2f6-4de01b339df9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardNameDomain_c7b98c21-c41c-4976-994b-f840c23635ff" xlink:to="loc_us-gaap_ResearchMember_8392cc6a-29e6-4fac-b2f6-4de01b339df9" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StateResearchAndExperimentationMember_4de89ebf-3cc1-423d-8930-f8680b73dc0d" xlink:href="cgnx-20201231.xsd#cgnx_StateResearchAndExperimentationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TaxCreditCarryforwardNameDomain_c7b98c21-c41c-4976-994b-f840c23635ff" xlink:to="loc_cgnx_StateResearchAndExperimentationMember_4de89ebf-3cc1-423d-8930-f8680b73dc0d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsAxis_c4554416-2064-447e-b908-610eed46f93f" xlink:href="cgnx-20201231.xsd#cgnx_DiscreteTaxItemsAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_cgnx_DiscreteTaxItemsAxis_c4554416-2064-447e-b908-610eed46f93f" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsDomain_c4554416-2064-447e-b908-610eed46f93f_default" xlink:href="cgnx-20201231.xsd#cgnx_DiscreteTaxItemsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_cgnx_DiscreteTaxItemsAxis_c4554416-2064-447e-b908-610eed46f93f" xlink:to="loc_cgnx_DiscreteTaxItemsDomain_c4554416-2064-447e-b908-610eed46f93f_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsDomain_5afffd93-2957-4ba0-bca8-9acbaa3c9928" xlink:href="cgnx-20201231.xsd#cgnx_DiscreteTaxItemsDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_cgnx_DiscreteTaxItemsAxis_c4554416-2064-447e-b908-610eed46f93f" xlink:to="loc_cgnx_DiscreteTaxItemsDomain_5afffd93-2957-4ba0-bca8-9acbaa3c9928" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_a3861584-a880-4f55-a496-2aa3e13047b6" xlink:href="cgnx-20201231.xsd#cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_5afffd93-2957-4ba0-bca8-9acbaa3c9928" xlink:to="loc_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_a3861584-a880-4f55-a496-2aa3e13047b6" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_be473616-b541-4e34-aa99-a3d1076dfd08" xlink:href="cgnx-20201231.xsd#cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_5afffd93-2957-4ba0-bca8-9acbaa3c9928" xlink:to="loc_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_be473616-b541-4e34-aa99-a3d1076dfd08" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_2afba910-d874-417d-b09c-88477714c3e7" xlink:href="cgnx-20201231.xsd#cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_5afffd93-2957-4ba0-bca8-9acbaa3c9928" xlink:to="loc_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_2afba910-d874-417d-b09c-88477714c3e7" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails" xlink:type="extended" id="i73d44f122b1644a2a545891dda669430_IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails" xlink:type="extended" id="i34080ceb0b7449cbb8221bd2c6baf672_IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesScheduleofChangeinAccountingPolicyDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails" xlink:type="extended" id="i78bf7a94f7e4460c96fbb1cfad2db80d_IncomeTaxesScheduleofChangeinAccountingPolicyDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ChangeInAccountingEstimateLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_c1482ea5-27a4-45af-830a-a360f83aeefb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_c1482ea5-27a4-45af-830a-a360f83aeefb" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_f2171141-828c-497b-9cf2-62d7c160c48d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxExpenseBenefit"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_f2171141-828c-497b-9cf2-62d7c160c48d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_5ec95357-1906-4c97-87ca-3649c404e627" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_NetIncomeLoss_5ec95357-1906-4c97-87ca-3649c404e627" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasic_e4424149-49ef-4f5a-a6c2-12623bc8a752" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareBasic"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_EarningsPerShareBasic_e4424149-49ef-4f5a-a6c2-12623bc8a752" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDiluted_88f380ff-10cf-4bde-a001-5a8f50c40037" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareDiluted"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_EarningsPerShareDiluted_88f380ff-10cf-4bde-a001-5a8f50c40037" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsGross_8ffb8d34-8e52-4f99-a879-b186a1248818" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_DeferredTaxAssetsGross_8ffb8d34-8e52-4f99-a879-b186a1248818" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities_93063194-fbe6-4289-847d-0334f393aed6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilities_93063194-fbe6-4289-847d-0334f393aed6" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit_6044a26f-4981-4569-89b1-e79fcde08349" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RetainedEarningsAccumulatedDeficit"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_RetainedEarningsAccumulatedDeficit_6044a26f-4981-4569-89b1-e79fcde08349" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_d0aff611-91ec-4938-acd1-866f5c54ad6a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfChangeInAccountingEstimateTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_d0aff611-91ec-4938-acd1-866f5c54ad6a" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementAxis_a7e9254c-eeef-4983-a927-3a8946495823" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RestatementAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_d0aff611-91ec-4938-acd1-866f5c54ad6a" xlink:to="loc_srt_RestatementAxis_a7e9254c-eeef-4983-a927-3a8946495823" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementDomain_a7e9254c-eeef-4983-a927-3a8946495823_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RestatementDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RestatementAxis_a7e9254c-eeef-4983-a927-3a8946495823" xlink:to="loc_srt_RestatementDomain_a7e9254c-eeef-4983-a927-3a8946495823_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementDomain_f6f024a2-5920-4cab-80aa-d333038b48ce" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RestatementDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RestatementAxis_a7e9254c-eeef-4983-a927-3a8946495823" xlink:to="loc_srt_RestatementDomain_f6f024a2-5920-4cab-80aa-d333038b48ce" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ScenarioPreviouslyReportedMember_9db2b515-9476-4026-94c9-3183c53e0898" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioPreviouslyReportedMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RestatementDomain_f6f024a2-5920-4cab-80aa-d333038b48ce" xlink:to="loc_srt_ScenarioPreviouslyReportedMember_9db2b515-9476-4026-94c9-3183c53e0898" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementAdjustmentMember_8d84129b-97e7-49ca-819f-2960f968e7bd" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RestatementAdjustmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RestatementDomain_f6f024a2-5920-4cab-80aa-d333038b48ce" xlink:to="loc_srt_RestatementAdjustmentMember_8d84129b-97e7-49ca-819f-2960f968e7bd" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_223458d9-a19f-4a74-b7af-f94ef615cc35" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ChangeInAccountingEstimateByTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_d0aff611-91ec-4938-acd1-866f5c54ad6a" xlink:to="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_223458d9-a19f-4a74-b7af-f94ef615cc35" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_223458d9-a19f-4a74-b7af-f94ef615cc35_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ChangeInAccountingEstimateTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_223458d9-a19f-4a74-b7af-f94ef615cc35" xlink:to="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_223458d9-a19f-4a74-b7af-f94ef615cc35_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_2bc9249c-3479-4e1e-9401-38997a834575" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ChangeInAccountingEstimateTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_223458d9-a19f-4a74-b7af-f94ef615cc35" xlink:to="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_2bc9249c-3479-4e1e-9401-38997a834575" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_cda09b7f-c37c-44c5-8a4f-02ccc7f967e4" xlink:href="cgnx-20201231.xsd#cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_2bc9249c-3479-4e1e-9401-38997a834575" xlink:to="loc_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_cda09b7f-c37c-44c5-8a4f-02ccc7f967e4" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails" xlink:type="extended" id="i47a3bc87d7c0464984ce5d0985ade4db_IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#IncomeTaxesConstituentsofDeferredTaxAssetsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails" xlink:type="extended" id="i87973360f20b41e69008be890ebacb5e_IncomeTaxesConstituentsofDeferredTaxAssetsDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageShares" xlink:type="simple" xlink:href="cgnx-20201231.xsd#WeightedAverageShares"/>
  <link:definitionLink xlink:role="http://cognex.com/role/WeightedAverageShares" xlink:type="extended" id="if17d02ccc2924880a3cf4a61134e6ae7_WeightedAverageShares"/>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageSharesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#WeightedAverageSharesTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/WeightedAverageSharesTables" xlink:type="extended" id="i1e56c9a12e754267903d7e8d6be61bbc_WeightedAverageSharesTables"/>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#WeightedAverageSharesCalculationofWeightedAverageSharesDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail" xlink:type="extended" id="i659b4c1309e649628d2799b8fea5bbbb_WeightedAverageSharesCalculationofWeightedAverageSharesDetail"/>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#WeightedAverageSharesAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail" xlink:type="extended" id="i89bb9b3689c44829a2a11000d746ba2e_WeightedAverageSharesAdditionalInformationDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_f4ac6e6f-8b6f-4c01-b8e8-197d51358997" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_968cf57d-84d1-443b-870f-10e81204e571" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_f4ac6e6f-8b6f-4c01-b8e8-197d51358997" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_968cf57d-84d1-443b-870f-10e81204e571" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_c9096f99-e341-46f1-8817-5f1df5a03088" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_f4ac6e6f-8b6f-4c01-b8e8-197d51358997" xlink:to="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_c9096f99-e341-46f1-8817-5f1df5a03088" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_83e14ff5-83b6-48f4-98cb-ba009431bb80" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_c9096f99-e341-46f1-8817-5f1df5a03088" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_83e14ff5-83b6-48f4-98cb-ba009431bb80" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesNameDomain_83e14ff5-83b6-48f4-98cb-ba009431bb80_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AntidilutiveSecuritiesNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_83e14ff5-83b6-48f4-98cb-ba009431bb80" xlink:to="loc_us-gaap_AntidilutiveSecuritiesNameDomain_83e14ff5-83b6-48f4-98cb-ba009431bb80_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesNameDomain_949eaeac-1971-436f-b72b-049a449e1ee1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AntidilutiveSecuritiesNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_83e14ff5-83b6-48f4-98cb-ba009431bb80" xlink:to="loc_us-gaap_AntidilutiveSecuritiesNameDomain_949eaeac-1971-436f-b72b-049a449e1ee1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_92373d3f-2ee8-4b95-b9d8-1e06309c4bd8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EmployeeStockOptionMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AntidilutiveSecuritiesNameDomain_949eaeac-1971-436f-b72b-049a449e1ee1" xlink:to="loc_us-gaap_EmployeeStockOptionMember_92373d3f-2ee8-4b95-b9d8-1e06309c4bd8" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_c2e31510-0f67-42f3-805f-79a31080bd34" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestrictedStockMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_AntidilutiveSecuritiesNameDomain_949eaeac-1971-436f-b72b-049a449e1ee1" xlink:to="loc_us-gaap_RestrictedStockMember_c2e31510-0f67-42f3-805f-79a31080bd34" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformation" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SegmentandGeographicInformation"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SegmentandGeographicInformation" xlink:type="extended" id="i5417692ab0e7496d9ee141c34ce5a0ba_SegmentandGeographicInformation"/>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformationTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SegmentandGeographicInformationTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SegmentandGeographicInformationTables" xlink:type="extended" id="i647831572a5b4ecb9df3ce59e1f383e3_SegmentandGeographicInformationTables"/>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SegmentandGeographicInformationAdditionalInformationDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail" xlink:type="extended" id="i9c5f6ac5c8ec496da5bba9e8b4f76111_SegmentandGeographicInformationAdditionalInformationDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskLineItems_5b09dd67-afca-4552-8b5f-95abc737f2d0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConcentrationRiskLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NumberOfReportableSegments_c5e7d416-dd8e-467e-b44c-421e3ed898b3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NumberOfReportableSegments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskLineItems_5b09dd67-afca-4552-8b5f-95abc737f2d0" xlink:to="loc_us-gaap_NumberOfReportableSegments_c5e7d416-dd8e-467e-b44c-421e3ed898b3" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1_a35e5071-1c2f-49bc-ab2e-cba523053df2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConcentrationRiskPercentage1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskLineItems_5b09dd67-afca-4552-8b5f-95abc737f2d0" xlink:to="loc_us-gaap_ConcentrationRiskPercentage1_a35e5071-1c2f-49bc-ab2e-cba523053df2" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTable_42417149-b2b8-4b06-b069-34bb65197fe3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConcentrationRiskTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_ConcentrationRiskLineItems_5b09dd67-afca-4552-8b5f-95abc737f2d0" xlink:to="loc_us-gaap_ConcentrationRiskTable_42417149-b2b8-4b06-b069-34bb65197fe3" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_40612593-ab53-4024-ab0f-ff535cee1d05" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConcentrationRiskByBenchmarkAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ConcentrationRiskTable_42417149-b2b8-4b06-b069-34bb65197fe3" xlink:to="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_40612593-ab53-4024-ab0f-ff535cee1d05" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskBenchmarkDomain_40612593-ab53-4024-ab0f-ff535cee1d05_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConcentrationRiskBenchmarkDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_40612593-ab53-4024-ab0f-ff535cee1d05" xlink:to="loc_us-gaap_ConcentrationRiskBenchmarkDomain_40612593-ab53-4024-ab0f-ff535cee1d05_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskBenchmarkDomain_952c9f04-272a-4bc4-b30e-2631ea0008d6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConcentrationRiskBenchmarkDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_40612593-ab53-4024-ab0f-ff535cee1d05" xlink:to="loc_us-gaap_ConcentrationRiskBenchmarkDomain_952c9f04-272a-4bc4-b30e-2631ea0008d6" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SalesRevenueNetMember_3afa5b69-8857-4191-a7fa-7e236f0147a0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SalesRevenueNetMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain_952c9f04-272a-4bc4-b30e-2631ea0008d6" xlink:to="loc_us-gaap_SalesRevenueNetMember_3afa5b69-8857-4191-a7fa-7e236f0147a0" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableMember_5b31b37a-526a-4416-bb37-af0941ac5121" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountsReceivableMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskBenchmarkDomain_952c9f04-272a-4bc4-b30e-2631ea0008d6" xlink:to="loc_us-gaap_AccountsReceivableMember_5b31b37a-526a-4416-bb37-af0941ac5121" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByTypeAxis_d46af19d-e615-4494-b4c6-3af654fb9669" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConcentrationRiskByTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ConcentrationRiskTable_42417149-b2b8-4b06-b069-34bb65197fe3" xlink:to="loc_us-gaap_ConcentrationRiskByTypeAxis_d46af19d-e615-4494-b4c6-3af654fb9669" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTypeDomain_d46af19d-e615-4494-b4c6-3af654fb9669_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConcentrationRiskTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ConcentrationRiskByTypeAxis_d46af19d-e615-4494-b4c6-3af654fb9669" xlink:to="loc_us-gaap_ConcentrationRiskTypeDomain_d46af19d-e615-4494-b4c6-3af654fb9669_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTypeDomain_49caf9a3-0922-46df-aebd-ca7ac4eac129" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConcentrationRiskTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ConcentrationRiskByTypeAxis_d46af19d-e615-4494-b4c6-3af654fb9669" xlink:to="loc_us-gaap_ConcentrationRiskTypeDomain_49caf9a3-0922-46df-aebd-ca7ac4eac129" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerConcentrationRiskMember_0a5a0885-246d-47b1-879e-3dc34f296a3a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CustomerConcentrationRiskMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ConcentrationRiskTypeDomain_49caf9a3-0922-46df-aebd-ca7ac4eac129" xlink:to="loc_us-gaap_CustomerConcentrationRiskMember_0a5a0885-246d-47b1-879e-3dc34f296a3a" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MajorCustomersAxis_5e1fb5ec-c105-45ba-a87a-332b8af135bf" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MajorCustomersAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ConcentrationRiskTable_42417149-b2b8-4b06-b069-34bb65197fe3" xlink:to="loc_srt_MajorCustomersAxis_5e1fb5ec-c105-45ba-a87a-332b8af135bf" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_NameOfMajorCustomerDomain_5e1fb5ec-c105-45ba-a87a-332b8af135bf_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_NameOfMajorCustomerDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_MajorCustomersAxis_5e1fb5ec-c105-45ba-a87a-332b8af135bf" xlink:to="loc_srt_NameOfMajorCustomerDomain_5e1fb5ec-c105-45ba-a87a-332b8af135bf_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_NameOfMajorCustomerDomain_6e571f71-0743-42cf-955f-969f2342a73f" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_NameOfMajorCustomerDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_MajorCustomersAxis_5e1fb5ec-c105-45ba-a87a-332b8af135bf" xlink:to="loc_srt_NameOfMajorCustomerDomain_6e571f71-0743-42cf-955f-969f2342a73f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Customer2Member_b26e50b6-987a-48ee-aa98-3ba5b58962df" xlink:href="cgnx-20201231.xsd#cgnx_Customer2Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_NameOfMajorCustomerDomain_6e571f71-0743-42cf-955f-969f2342a73f" xlink:to="loc_cgnx_Customer2Member_b26e50b6-987a-48ee-aa98-3ba5b58962df" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Customer1Member_d7d6a666-ac6d-477d-936f-cc364a729b6e" xlink:href="cgnx-20201231.xsd#cgnx_Customer1Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_NameOfMajorCustomerDomain_6e571f71-0743-42cf-955f-969f2342a73f" xlink:to="loc_cgnx_Customer1Member_d7d6a666-ac6d-477d-936f-cc364a729b6e" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail" xlink:type="extended" id="ifaf8b1e579b140e0a1482279c47e3fcd_SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_a6bb4879-ab56-47ec-8b9b-a58e82ac23b9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_a6bb4879-ab56-47ec-8b9b-a58e82ac23b9" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncurrentAssets_d8a69cae-44c4-4ae2-b180-edb9946f475d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NoncurrentAssets"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:to="loc_us-gaap_NoncurrentAssets_d8a69cae-44c4-4ae2-b180-edb9946f475d" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NumberOfReportableSegments_fb213e0a-ad79-4aa5-9bb9-ec35d3f734e9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NumberOfReportableSegments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:to="loc_us-gaap_NumberOfReportableSegments_fb213e0a-ad79-4aa5-9bb9-ec35d3f734e9" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1_4f6e48d7-76e0-47c2-b6d8-f89ec4a57c79" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ConcentrationRiskPercentage1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:to="loc_us-gaap_ConcentrationRiskPercentage1_4f6e48d7-76e0-47c2-b6d8-f89ec4a57c79" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_de92914b-f095-4684-82f9-f1392086f381" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:to="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_de92914b-f095-4684-82f9-f1392086f381" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_df0c3ad9-2a9c-4c8f-8ddb-07c04acfb3b5" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_StatementGeographicalAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_de92914b-f095-4684-82f9-f1392086f381" xlink:to="loc_srt_StatementGeographicalAxis_df0c3ad9-2a9c-4c8f-8ddb-07c04acfb3b5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_df0c3ad9-2a9c-4c8f-8ddb-07c04acfb3b5_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_StatementGeographicalAxis_df0c3ad9-2a9c-4c8f-8ddb-07c04acfb3b5" xlink:to="loc_srt_SegmentGeographicalDomain_df0c3ad9-2a9c-4c8f-8ddb-07c04acfb3b5_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_StatementGeographicalAxis_df0c3ad9-2a9c-4c8f-8ddb-07c04acfb3b5" xlink:to="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_US_2f378a8c-70b9-415c-9f02-077c03c3b518" xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:to="loc_country_US_2f378a8c-70b9-415c-9f02-077c03c3b518" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember_0c6839be-94c8-48d6-a85c-ee1c36df7fc1" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:to="loc_srt_EuropeMember_0c6839be-94c8-48d6-a85c-ee1c36df7fc1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GreaterChinaMember_973122e3-6b1b-4936-998b-6e39c9425dc6" xlink:href="cgnx-20201231.xsd#cgnx_GreaterChinaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:to="loc_cgnx_GreaterChinaMember_973122e3-6b1b-4936-998b-6e39c9425dc6" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherGeographicAreaMember_e99a982a-bb31-4d1b-b837-8e24042a8882" xlink:href="cgnx-20201231.xsd#cgnx_OtherGeographicAreaMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:to="loc_cgnx_OtherGeographicAreaMember_e99a982a-bb31-4d1b-b837-8e24042a8882" xlink:type="arc" order="3"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/Acquisitions" xlink:type="simple" xlink:href="cgnx-20201231.xsd#Acquisitions"/>
  <link:definitionLink xlink:role="http://cognex.com/role/Acquisitions" xlink:type="extended" id="i7870b53f2f7c4b779c08b5d0e62fda17_Acquisitions"/>
  <link:roleRef roleURI="http://cognex.com/role/AcquisitionsAcquisitionsTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AcquisitionsAcquisitionsTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/AcquisitionsAcquisitionsTables" xlink:type="extended" id="ie5334689c4f34d3e8c5fe8304c5b35de_AcquisitionsAcquisitionsTables"/>
  <link:roleRef roleURI="http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AcquisitionsSualabCoLtdNarrativeDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails" xlink:type="extended" id="ib18b094d4bed4c7f8c78ee793a60979b_AcquisitionsSualabCoLtdNarrativeDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife_a286a754-3e08-43cc-a037-606c38a76bb3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife_a286a754-3e08-43cc-a037-606c38a76bb3" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount_ceb9064e-d73a-4f2c-b85d-3a39bb4203ed" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount_ceb9064e-d73a-4f2c-b85d-3a39bb4203ed" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationConsiderationTransferred1_fb71d914-b055-44f2-8d51-1321ed82c7e7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_BusinessCombinationConsiderationTransferred1_fb71d914-b055-44f2-8d51-1321ed82c7e7" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireBusinessesGross_0c5c2039-b812-4cd1-ac30-a212a569915b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_PaymentsToAcquireBusinessesGross_0c5c2039-b812-4cd1-ac30-a212a569915b" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationLiability_f384fd02-3c28-4191-8af5-6eacb6531aeb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiability"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationLiability_f384fd02-3c28-4191-8af5-6eacb6531aeb" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_6e045822-10bb-4bf3-9131-05bd3943eca7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_6e045822-10bb-4bf3-9131-05bd3943eca7" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_1b5d03dd-4527-4ef8-8348-534272c27d2c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_1b5d03dd-4527-4ef8-8348-534272c27d2c" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_aa76d602-7973-4ade-9a39-4d1ecf2ce3e6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_aa76d602-7973-4ade-9a39-4d1ecf2ce3e6" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_aa76d602-7973-4ade-9a39-4d1ecf2ce3e6_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_aa76d602-7973-4ade-9a39-4d1ecf2ce3e6" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_aa76d602-7973-4ade-9a39-4d1ecf2ce3e6_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_6bc7079a-9ed4-4aed-9e68-06a9bf356536" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_aa76d602-7973-4ade-9a39-4d1ecf2ce3e6" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_6bc7079a-9ed4-4aed-9e68-06a9bf356536" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_4ece16f3-afe7-4e5e-a557-cf928816dcbd" xlink:href="cgnx-20201231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_6bc7079a-9ed4-4aed-9e68-06a9bf356536" xlink:to="loc_cgnx_SualabCo.Ltd.Member_4ece16f3-afe7-4e5e-a557-cf928816dcbd" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_40dba15d-9eff-4377-9127-6424cb654935" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_40dba15d-9eff-4377-9127-6424cb654935" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_40dba15d-9eff-4377-9127-6424cb654935_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_40dba15d-9eff-4377-9127-6424cb654935" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_40dba15d-9eff-4377-9127-6424cb654935_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_40dba15d-9eff-4377-9127-6424cb654935" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompletedTechnologyMember_265fa984-35da-4adf-9009-aeb9de2bb342" xlink:href="cgnx-20201231.xsd#cgnx_CompletedTechnologyMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_cgnx_CompletedTechnologyMember_265fa984-35da-4adf-9009-aeb9de2bb342" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerRelationshipsMember_bf12bb70-1473-43c3-aa51-3892391ff47a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CustomerRelationshipsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_us-gaap_CustomerRelationshipsMember_bf12bb70-1473-43c3-aa51-3892391ff47a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_d4ba23b2-7a73-4a54-93a0-2622131a7fab" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TrademarksMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_us-gaap_TrademarksMember_d4ba23b2-7a73-4a54-93a0-2622131a7fab" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_01baefbd-8847-4bbf-bcdd-ef2754019a88" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NoncompeteAgreementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_01baefbd-8847-4bbf-bcdd-ef2754019a88" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_77ab247f-034f-4fe4-b0e9-4f94b400ce5a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DevelopedTechnologyRightsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_77ab247f-034f-4fe4-b0e9-4f94b400ce5a" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_da808c59-3350-4537-aee2-46d132735a6d" xlink:href="cgnx-20201231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_da808c59-3350-4537-aee2-46d132735a6d" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_5570079e-7755-4447-ad0e-f6698d40cfec" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:to="loc_srt_RangeAxis_5570079e-7755-4447-ad0e-f6698d40cfec" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_5570079e-7755-4447-ad0e-f6698d40cfec_default" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_srt_RangeAxis_5570079e-7755-4447-ad0e-f6698d40cfec" xlink:to="loc_srt_RangeMember_5570079e-7755-4447-ad0e-f6698d40cfec_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_e4e12dfe-106a-4550-9f0c-4a9fbde43bf2" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_srt_RangeAxis_5570079e-7755-4447-ad0e-f6698d40cfec" xlink:to="loc_srt_RangeMember_e4e12dfe-106a-4550-9f0c-4a9fbde43bf2" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_51a26b48-2c1b-445f-8f38-0d038d2fff05" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_e4e12dfe-106a-4550-9f0c-4a9fbde43bf2" xlink:to="loc_srt_MinimumMember_51a26b48-2c1b-445f-8f38-0d038d2fff05" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_d6469a2c-3f94-4d5a-ad8c-531fa356fcad" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_RangeMember_e4e12dfe-106a-4550-9f0c-4a9fbde43bf2" xlink:to="loc_srt_MaximumMember_d6469a2c-3f94-4d5a-ad8c-531fa356fcad" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_fdfb9ccf-5f01-437c-b443-a6e9bfeaf1ee" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_fdfb9ccf-5f01-437c-b443-a6e9bfeaf1ee" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_fdfb9ccf-5f01-437c-b443-a6e9bfeaf1ee_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_fdfb9ccf-5f01-437c-b443-a6e9bfeaf1ee" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_fdfb9ccf-5f01-437c-b443-a6e9bfeaf1ee_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_4c752de8-9c0b-49f6-bd20-90aca718294b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_fdfb9ccf-5f01-437c-b443-a6e9bfeaf1ee" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_4c752de8-9c0b-49f6-bd20-90aca718294b" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_InprocessTechnologyMember_3f06788d-03ed-4935-95d5-8cccb027f6d6" xlink:href="cgnx-20201231.xsd#cgnx_InprocessTechnologyMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_4c752de8-9c0b-49f6-bd20-90aca718294b" xlink:to="loc_cgnx_InprocessTechnologyMember_3f06788d-03ed-4935-95d5-8cccb027f6d6" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_57ce8511-72b1-4a52-901f-a4f2b71c4335" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_4c752de8-9c0b-49f6-bd20-90aca718294b" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_57ce8511-72b1-4a52-901f-a4f2b71c4335" xlink:type="arc" order="1"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails" xlink:type="extended" id="ibecdfcb2a2ca4f70b68a9d779f047eb3_AcquisitionsSualabCoLtdPurchasePriceAllocationDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents_6c44eb18-096e-4d41-9e99-6bd473a23012" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents_6c44eb18-096e-4d41-9e99-6bd473a23012" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities_dafc8a32-fcf0-41f8-a7cc-674eb04589e5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities_dafc8a32-fcf0-41f8-a7cc-674eb04589e5" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables_d1ce0456-4fb8-4ca9-be3a-429a93fd4d91" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables_d1ce0456-4fb8-4ca9-be3a-429a93fd4d91" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory_5866e693-d192-4640-a5a1-39f0b4fe45cf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory_5866e693-d192-4640-a5a1-39f0b4fe45cf" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets_79f591b9-09b8-4edd-9822-d8e2901f28ca" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets_79f591b9-09b8-4edd-9822-d8e2901f28ca" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment_00a4c294-745c-4cbb-b1ad-21438a957572" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment_00a4c294-745c-4cbb-b1ad-21438a957572" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset_bd196dc9-6121-42ef-847b-f9d2aa8d9895" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset_bd196dc9-6121-42ef-847b-f9d2aa8d9895" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets_4060ad26-48e1-4db5-b494-0d47281ea24b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets_4060ad26-48e1-4db5-b494-0d47281ea24b" xlink:type="arc" order="7"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets_e8b5b60f-dc5c-48e9-9248-f0d6029edc5b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets_e8b5b60f-dc5c-48e9-9248-f0d6029edc5b" xlink:type="arc" order="8"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable_d73d99f4-2fe6-4bc2-80ef-d790fbc24908" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable_d73d99f4-2fe6-4bc2-80ef-d790fbc24908" xlink:type="arc" order="9"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities_7dcc618f-bd2a-4dd9-bff7-2330aeb16a1a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities_7dcc618f-bd2a-4dd9-bff7-2330aeb16a1a" xlink:type="arc" order="10"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits_733d8ed8-af2b-48f6-9d73-3b9be0dcd2d6" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits_733d8ed8-af2b-48f6-9d73-3b9be0dcd2d6" xlink:type="arc" order="11"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent_c6f42f5c-3d51-49cb-a391-54813e9d7723" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent_c6f42f5c-3d51-49cb-a391-54813e9d7723" xlink:type="arc" order="12"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent_1da37211-822d-41f2-8942-02a47fe3870d" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent_1da37211-822d-41f2-8942-02a47fe3870d" xlink:type="arc" order="13"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue_02176b54-3153-4a40-95e8-b6b677eb7ed0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue_02176b54-3153-4a40-95e8-b6b677eb7ed0" xlink:type="arc" order="14"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther_52e475af-023b-49b6-97e7-38e3a8f1f448" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther_52e475af-023b-49b6-97e7-38e3a8f1f448" xlink:type="arc" order="15"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_7653ab5c-6a3b-43db-a0dc-14a73e17c352" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_7653ab5c-6a3b-43db-a0dc-14a73e17c352" xlink:type="arc" order="16"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_e75430a6-17b6-461d-adfd-127ad755e296" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Goodwill"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_Goodwill_e75430a6-17b6-461d-adfd-127ad755e296" xlink:type="arc" order="17"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_27ac72a0-1ec4-4f6d-aead-c038af7a8891" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_27ac72a0-1ec4-4f6d-aead-c038af7a8891" xlink:type="arc" order="18"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_76c0e6a4-4db1-4b14-92cb-9ec0b806795f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_76c0e6a4-4db1-4b14-92cb-9ec0b806795f" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_3b4cade8-7331-43c9-a7ee-46393d165e7e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_76c0e6a4-4db1-4b14-92cb-9ec0b806795f" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_3b4cade8-7331-43c9-a7ee-46393d165e7e" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_3b4cade8-7331-43c9-a7ee-46393d165e7e_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_3b4cade8-7331-43c9-a7ee-46393d165e7e" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_3b4cade8-7331-43c9-a7ee-46393d165e7e_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_fd2b2db0-0135-4309-a8ed-28c474b3ca66" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionAcquireeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BusinessAcquisitionAxis_3b4cade8-7331-43c9-a7ee-46393d165e7e" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_fd2b2db0-0135-4309-a8ed-28c474b3ca66" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_c0998cd1-480b-41e5-9750-0bb93322495a" xlink:href="cgnx-20201231.xsd#cgnx_SualabCo.Ltd.Member"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_fd2b2db0-0135-4309-a8ed-28c474b3ca66" xlink:to="loc_cgnx_SualabCo.Ltd.Member_c0998cd1-480b-41e5-9750-0bb93322495a" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8676f7e1-3985-4b95-9789-b348c2dd7940" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_76c0e6a4-4db1-4b14-92cb-9ec0b806795f" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8676f7e1-3985-4b95-9789-b348c2dd7940" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_8676f7e1-3985-4b95-9789-b348c2dd7940_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8676f7e1-3985-4b95-9789-b348c2dd7940" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_8676f7e1-3985-4b95-9789-b348c2dd7940_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8676f7e1-3985-4b95-9789-b348c2dd7940" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompletedTechnologyMember_b688c56f-9605-4e8f-bf0f-acb80a4527e9" xlink:href="cgnx-20201231.xsd#cgnx_CompletedTechnologyMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:to="loc_cgnx_CompletedTechnologyMember_b688c56f-9605-4e8f-bf0f-acb80a4527e9" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_InprocessTechnologyMember_1c5c54f3-70f0-423b-a0aa-ca06cca11900" xlink:href="cgnx-20201231.xsd#cgnx_InprocessTechnologyMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:to="loc_cgnx_InprocessTechnologyMember_1c5c54f3-70f0-423b-a0aa-ca06cca11900" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerRelationshipsMember_f326d481-1945-4976-8d5b-7f69d0ab737c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CustomerRelationshipsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:to="loc_us-gaap_CustomerRelationshipsMember_f326d481-1945-4976-8d5b-7f69d0ab737c" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_2fadeade-f155-425f-9a92-6bbfcde98b2f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NoncompeteAgreementsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_2fadeade-f155-425f-9a92-6bbfcde98b2f" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_cc75a146-9ad7-4d61-9407-e8a5497f1afc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TrademarksMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:to="loc_us-gaap_TrademarksMember_cc75a146-9ad7-4d61-9407-e8a5497f1afc" xlink:type="arc" order="4"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringCharges" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RestructuringCharges"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RestructuringCharges" xlink:type="extended" id="i034aa7c3cd3a48478c7a809c02c6617b_RestructuringCharges"/>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RestructuringChargesTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RestructuringChargesTables" xlink:type="extended" id="i1d967f9adf5b441db501bce1f46a0c12_RestructuringChargesTables"/>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesAdditionalInformationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RestructuringChargesAdditionalInformationDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RestructuringChargesAdditionalInformationDetails" xlink:type="extended" id="i5f9608f69ef548289d4e0a9aa85410f4_RestructuringChargesAdditionalInformationDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails" xlink:type="extended" id="i430bb130e97b42c9bf9e5685278d0321_RestructuringChargesScheduleofRestructuringandRelatedCostsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems_377dc22d-9985-43ef-8db8-597c3fbbe2f1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringCostAndReserveLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_01ddac2d-2091-4d83-bb7d-da402e0dc441" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringCharges"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_377dc22d-9985-43ef-8db8-597c3fbbe2f1" xlink:to="loc_us-gaap_RestructuringCharges_01ddac2d-2091-4d83-bb7d-da402e0dc441" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_7e7aa338-e3e7-47ff-a356-91dbdd12fa69" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_377dc22d-9985-43ef-8db8-597c3fbbe2f1" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_7e7aa338-e3e7-47ff-a356-91dbdd12fa69" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_54f1398e-4833-4ecd-9a09-421c68905945" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringCostAndReserveAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_7e7aa338-e3e7-47ff-a356-91dbdd12fa69" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_54f1398e-4833-4ecd-9a09-421c68905945" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_54f1398e-4833-4ecd-9a09-421c68905945_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_54f1398e-4833-4ecd-9a09-421c68905945" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_54f1398e-4833-4ecd-9a09-421c68905945_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_01444fac-4832-4b5b-9042-ea0fbf0b3dff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_54f1398e-4833-4ecd-9a09-421c68905945" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_01444fac-4832-4b5b-9042-ea0fbf0b3dff" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OneTimeTerminationBenefitsMember_70327874-e5de-417b-832c-eabdc96e1084" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OneTimeTerminationBenefitsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_01444fac-4832-4b5b-9042-ea0fbf0b3dff" xlink:to="loc_us-gaap_OneTimeTerminationBenefitsMember_70327874-e5de-417b-832c-eabdc96e1084" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_4538f70a-277a-451b-b3e4-fefb8291c570" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ContractTerminationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_01444fac-4832-4b5b-9042-ea0fbf0b3dff" xlink:to="loc_us-gaap_ContractTerminationMember_4538f70a-277a-451b-b3e4-fefb8291c570" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherRestructuringMember_b328dc99-1b10-4ac8-9720-41410303617e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherRestructuringMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_01444fac-4832-4b5b-9042-ea0fbf0b3dff" xlink:to="loc_us-gaap_OtherRestructuringMember_b328dc99-1b10-4ac8-9720-41410303617e" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails" xlink:type="extended" id="iab11c119f1ac449eb702b8a91e1e5742_RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems_65cb653e-91f3-48f7-b94a-2eaf57e77d6c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringCostAndReserveLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveRollForward_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringReserveRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_65cb653e-91f3-48f7-b94a-2eaf57e77d6c" xlink:to="loc_us-gaap_RestructuringReserveRollForward_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve_d2745121-ce9e-418a-b7fe-11f79c56ceb4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringReserve"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_RestructuringReserve_d2745121-ce9e-418a-b7fe-11f79c56ceb4" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_d33a5b08-4bdf-4551-9696-2c77411ae925" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringCharges"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_RestructuringCharges_d33a5b08-4bdf-4551-9696-2c77411ae925" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForRestructuring_359f50ab-38ea-4718-9735-2d0655350e04" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsForRestructuring"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_PaymentsForRestructuring_359f50ab-38ea-4718-9735-2d0655350e04" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveSettledWithoutCash2_686a9b82-c68e-462b-a8bd-c6749e6a8a35" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringReserveSettledWithoutCash2"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_RestructuringReserveSettledWithoutCash2_686a9b82-c68e-462b-a8bd-c6749e6a8a35" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveAccrualAdjustment1_61b6219b-e0f3-43fc-8a55-d2955b9ffbfc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringReserveAccrualAdjustment1"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_RestructuringReserveAccrualAdjustment1_61b6219b-e0f3-43fc-8a55-d2955b9ffbfc" xlink:type="arc" order="5"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveTranslationAdjustment_20d3241a-3a1b-4c68-8e59-b2f658bcca2c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringReserveTranslationAdjustment"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_RestructuringReserveRollForward_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_RestructuringReserveTranslationAdjustment_20d3241a-3a1b-4c68-8e59-b2f658bcca2c" xlink:type="arc" order="6"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve_e1c43cba-a09f-4747-b2f9-a39fe0e5ccf7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringReserve"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2d7eb67d-b233-43ba-a476-296a9d94fede" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfRestructuringAndRelatedCostsTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_RestructuringCostAndReserveLineItems_65cb653e-91f3-48f7-b94a-2eaf57e77d6c" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2d7eb67d-b233-43ba-a476-296a9d94fede" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis_8945398f-3fdc-464b-9f12-9ee237262ae4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BalanceSheetLocationAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2d7eb67d-b233-43ba-a476-296a9d94fede" xlink:to="loc_us-gaap_BalanceSheetLocationAxis_8945398f-3fdc-464b-9f12-9ee237262ae4" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_8945398f-3fdc-464b-9f12-9ee237262ae4_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_8945398f-3fdc-464b-9f12-9ee237262ae4" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_8945398f-3fdc-464b-9f12-9ee237262ae4_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_7f8fcbcb-014b-48fb-be3c-2a27df21e286" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BalanceSheetLocationDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_BalanceSheetLocationAxis_8945398f-3fdc-464b-9f12-9ee237262ae4" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_7f8fcbcb-014b-48fb-be3c-2a27df21e286" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesMember_31ad2fc4-3a5a-46ce-b209-8a65a69c891a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccruedLiabilitiesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_7f8fcbcb-014b-48fb-be3c-2a27df21e286" xlink:to="loc_us-gaap_AccruedLiabilitiesMember_31ad2fc4-3a5a-46ce-b209-8a65a69c891a" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_16185754-7718-4e92-9dc9-6fd7b460e9e1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringCostAndReserveAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2d7eb67d-b233-43ba-a476-296a9d94fede" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_16185754-7718-4e92-9dc9-6fd7b460e9e1" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_16185754-7718-4e92-9dc9-6fd7b460e9e1_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_16185754-7718-4e92-9dc9-6fd7b460e9e1" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_16185754-7718-4e92-9dc9-6fd7b460e9e1_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_b9f56bc6-e20a-40b9-9558-8dac1bcafc0f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfRestructuringDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_RestructuringCostAndReserveAxis_16185754-7718-4e92-9dc9-6fd7b460e9e1" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_b9f56bc6-e20a-40b9-9558-8dac1bcafc0f" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OneTimeTerminationBenefitsMember_af255f1d-329d-4fae-9bd0-ac78d9a027d8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OneTimeTerminationBenefitsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_b9f56bc6-e20a-40b9-9558-8dac1bcafc0f" xlink:to="loc_us-gaap_OneTimeTerminationBenefitsMember_af255f1d-329d-4fae-9bd0-ac78d9a027d8" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_170b7589-b299-40f3-ab58-fcb77caeef2c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ContractTerminationMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_b9f56bc6-e20a-40b9-9558-8dac1bcafc0f" xlink:to="loc_us-gaap_ContractTerminationMember_170b7589-b299-40f3-ab58-fcb77caeef2c" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherRestructuringMember_6459f7b6-ed9b-4614-9de4-4b0d5fc47f89" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherRestructuringMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_TypeOfRestructuringDomain_b9f56bc6-e20a-40b9-9558-8dac1bcafc0f" xlink:to="loc_us-gaap_OtherRestructuringMember_6459f7b6-ed9b-4614-9de4-4b0d5fc47f89" xlink:type="arc" order="2"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SubsequentEvents" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SubsequentEvents"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SubsequentEvents" xlink:type="extended" id="i02f92c4947e94d0798cef2e971793c37_SubsequentEvents"/>
  <link:roleRef roleURI="http://cognex.com/role/SubsequentEventsDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SubsequentEventsDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SubsequentEventsDetails" xlink:type="extended" id="i9b531eba70b843c983013bf13c10c65b_SubsequentEventsDetails">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventLineItems_bc36f1f0-c07e-44fe-869a-9d762f78b6a5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableAmountPerShare_8c6a7a0b-5c14-400c-9560-9258e6baf44f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DividendsPayableAmountPerShare"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_SubsequentEventLineItems_bc36f1f0-c07e-44fe-869a-9d762f78b6a5" xlink:to="loc_us-gaap_DividendsPayableAmountPerShare_8c6a7a0b-5c14-400c-9560-9258e6baf44f" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear_b0b89930-fb34-40ad-9996-c1d88fd08f27" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DividendsPayableDateDeclaredDayMonthAndYear"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_SubsequentEventLineItems_bc36f1f0-c07e-44fe-869a-9d762f78b6a5" xlink:to="loc_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear_b0b89930-fb34-40ad-9996-c1d88fd08f27" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear_fd9ab87f-7f82-4123-8e23-37d4d4d7affa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DividendsPayableDateOfRecordDayMonthAndYear"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_SubsequentEventLineItems_bc36f1f0-c07e-44fe-869a-9d762f78b6a5" xlink:to="loc_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear_fd9ab87f-7f82-4123-8e23-37d4d4d7affa" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTable_6eaa5e41-edaa-45e0-a7c4-3c8075d77d31" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_us-gaap_SubsequentEventLineItems_bc36f1f0-c07e-44fe-869a-9d762f78b6a5" xlink:to="loc_us-gaap_SubsequentEventTable_6eaa5e41-edaa-45e0-a7c4-3c8075d77d31" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeAxis_300d3c45-bedd-4819-b2e9-2ffd148b0ff7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_us-gaap_SubsequentEventTable_6eaa5e41-edaa-45e0-a7c4-3c8075d77d31" xlink:to="loc_us-gaap_SubsequentEventTypeAxis_300d3c45-bedd-4819-b2e9-2ffd148b0ff7" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeDomain_300d3c45-bedd-4819-b2e9-2ffd148b0ff7_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_SubsequentEventTypeAxis_300d3c45-bedd-4819-b2e9-2ffd148b0ff7" xlink:to="loc_us-gaap_SubsequentEventTypeDomain_300d3c45-bedd-4819-b2e9-2ffd148b0ff7_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeDomain_55f46e0d-2d62-4a18-9d34-346bf9399cbf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventTypeDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_SubsequentEventTypeAxis_300d3c45-bedd-4819-b2e9-2ffd148b0ff7" xlink:to="loc_us-gaap_SubsequentEventTypeDomain_55f46e0d-2d62-4a18-9d34-346bf9399cbf" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventMember_30421fe3-4833-4c13-beae-0d495836ae23" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_SubsequentEventTypeDomain_55f46e0d-2d62-4a18-9d34-346bf9399cbf" xlink:to="loc_us-gaap_SubsequentEventMember_30421fe3-4833-4c13-beae-0d495836ae23" xlink:type="arc" order="0"/>
  </link:definitionLink>
  <link:roleRef roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnaudited" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SelectedQuarterlyFinancialDataUnaudited"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SelectedQuarterlyFinancialDataUnaudited" xlink:type="extended" id="i172f7cf27aff4d7083dd98340205e9b6_SelectedQuarterlyFinancialDataUnaudited"/>
  <link:roleRef roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SelectedQuarterlyFinancialDataUnauditedTables"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedTables" xlink:type="extended" id="ib4006f3facd74ffbb712807c521a402c_SelectedQuarterlyFinancialDataUnauditedTables"/>
  <link:roleRef roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SelectedQuarterlyFinancialDataUnauditedDetails"/>
  <link:definitionLink xlink:role="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails" xlink:type="extended" id="ie14eb2cd57884220a915d49f9c4c54d8_SelectedQuarterlyFinancialDataUnauditedDetails"/>
  <link:roleRef roleURI="http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts" xlink:type="simple" xlink:href="cgnx-20201231.xsd#ScheduleIIValuationandQualifyingAccounts"/>
  <link:definitionLink xlink:role="http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts" xlink:type="extended" id="ia24cd37ab00641f1a8db62d2e599cc2d_ScheduleIIValuationandQualifyingAccounts"/>
  <link:roleRef roleURI="http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail" xlink:type="simple" xlink:href="cgnx-20201231.xsd#ScheduleIIValuationandQualifyingAccountsDetail"/>
  <link:definitionLink xlink:role="http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail" xlink:type="extended" id="ic5885aa2ed73462c995dab87f12e19ef_ScheduleIIValuationandQualifyingAccountsDetail">
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_f79dddaf-4bb3-4f88-b175-9e68989e7a50" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ValuationAndQualifyingAccountsDisclosureLineItems"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_MovementInValuationAllowancesAndReservesRollForward"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_f79dddaf-4bb3-4f88-b175-9e68989e7a50" xlink:to="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_f8b82d5a-363d-4eea-b323-3bafa798f8de" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesBalance_f8b82d5a-363d-4eea-b323-3bafa798f8de" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_4bbd90ea-33de-43be-b881-6b9a533ff214" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_4bbd90ea-33de-43be-b881-6b9a533ff214" xlink:type="arc" order="2"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDeductions_98e5e2bb-102e-48d9-9ec2-c2003d1baba5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowancesAndReservesDeductions"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDeductions_98e5e2bb-102e-48d9-9ec2-c2003d1baba5" xlink:type="arc" order="3"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesAdjustments_594e33e5-0c60-444c-8357-64af480e9c75" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowancesAndReservesAdjustments"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesAdjustments_594e33e5-0c60-444c-8357-64af480e9c75" xlink:type="arc" order="4"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_c7a67388-2d05-4c84-a363-74b25d404972" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_4bf231c6-7241-4907-b31b-d0e5cc5b16af" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ValuationAndQualifyingAccountsDisclosureTable"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/all" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_f79dddaf-4bb3-4f88-b175-9e68989e7a50" xlink:to="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_4bf231c6-7241-4907-b31b-d0e5cc5b16af" xlink:type="arc" order="1" xbrldt:closed="true" xbrldt:contextElement="segment"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_35150f10-278a-404d-98f9-bd2334930da1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowancesAndReservesTypeAxis"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/hypercube-dimension" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_4bf231c6-7241-4907-b31b-d0e5cc5b16af" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_35150f10-278a-404d-98f9-bd2334930da1" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDomain_35150f10-278a-404d-98f9-bd2334930da1_default" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowancesAndReservesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-default" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_35150f10-278a-404d-98f9-bd2334930da1" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDomain_35150f10-278a-404d-98f9-bd2334930da1_default" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDomain_0b5e9ba1-2c35-41d8-a353-17776a881251" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowancesAndReservesDomain"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/dimension-domain" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_35150f10-278a-404d-98f9-bd2334930da1" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDomain_0b5e9ba1-2c35-41d8-a353-17776a881251" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UncollectibleReceivablesMember_c3e23a6e-bb09-4344-8ae4-3fa4dbc6ba18" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UncollectibleReceivablesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_0b5e9ba1-2c35-41d8-a353-17776a881251" xlink:to="loc_us-gaap_UncollectibleReceivablesMember_c3e23a6e-bb09-4344-8ae4-3fa4dbc6ba18" xlink:type="arc" order="0"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SalesReturnsAndAllowancesMember_5fda0722-e6ab-49ef-9d32-bf6a1101dd6a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SalesReturnsAndAllowancesMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_0b5e9ba1-2c35-41d8-a353-17776a881251" xlink:to="loc_us-gaap_SalesReturnsAndAllowancesMember_5fda0722-e6ab-49ef-9d32-bf6a1101dd6a" xlink:type="arc" order="1"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember_b7656076-063d-49e1-ac68-04f2afc75e84" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember"/>
    <link:definitionArc xlink:arcrole="http://xbrl.org/int/dim/arcrole/domain-member" xlink:from="loc_us-gaap_ValuationAllowancesAndReservesDomain_0b5e9ba1-2c35-41d8-a353-17776a881251" xlink:to="loc_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember_b7656076-063d-49e1-ac68-04f2afc75e84" xlink:type="arc" order="2"/>
  </link:definitionLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.LAB
<SEQUENCE>11
<FILENAME>cgnx-20201231_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 2021 Workiva-->
<!--r:efc8e161-eaa0-41a1-b62b-bbec49e61a75,g:1ad2e941-41d2-4cfb-86c0-34f5fd33bff4-->
<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod_b515b551-a9d3-4b5b-b643-3cdbe1c6402e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_RestatementAxis_f4ef2577-2260-4cd8-ac3d-1616cc6d9b94_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue_bc288e0f-0f5f-4939-b101-c70e39acd352_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_cec636e9-e180-491b-a1b1-8c756401acaf_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-20201231.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_currency_HUF_33a1de78-ea05-44b1-8fca-ff51f2f3beec_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/2020/currency-2020-01-31.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_CommitmentsAndContingenciesDisclosureTextBlock_b8ff0d4e-217d-4e00-9bb0-c7f3eb4ee0d3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock_3221584c-ea4c-49c2-9939-7b5d9e0dddc9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_9faf37d4-d4cc-4b6b-8584-d040ee10f32c_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-20201231.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_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock_6439597a-bd84-4da5-8313-f193167a1b2f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_RangeMember_e7d5b359-3f39-4ec3-9472-10b68a0b9201_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_LiabilitiesAndStockholdersEquityAbstract_f38dff24-c987-4d6e-8b59-2e8ee531d15b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_bee495a8-ba10-43dc-b30c-042a8e87dc8a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_67759576-6edf-44fe-8ed4-2585ae471008_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-20201231.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_dei_SecurityExchangeName_eba479be-f7ec-4520-aaaa-fead5388990a_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/2020/dei-2020-01-31.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_LiabilitiesCurrent_9c943602-b627-44a3-9112-2b187841bca5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_TradeAndOtherAccountsReceivablePolicy_d5b6e4a3-4a78-4448-b818-ee09114ef88c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_CompletedTechnologyMember_c4f38703-ec04-425c-8a15-d1362f3150f8_terseLabel_en-US" xlink:label="lab_cgnx_CompletedTechnologyMember" xlink: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 Technology [Member]</link:label>
    <link:label id="lab_cgnx_CompletedTechnologyMember_label_en-US" xlink:label="lab_cgnx_CompletedTechnologyMember" xlink: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 Technology [Member]</link:label>
    <link:label id="lab_cgnx_CompletedTechnologyMember_documentation_en-US" xlink:label="lab_cgnx_CompletedTechnologyMember" 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 Technology [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompletedTechnologyMember" xlink:href="cgnx-20201231.xsd#cgnx_CompletedTechnologyMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_CompletedTechnologyMember" xlink:to="lab_cgnx_CompletedTechnologyMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DeferredTaxAssetsOtherNoncurrent_aa99ed16-ef3f-4f01-8bce-20fe37fdc8e4_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-20201231.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_PerformanceSharesMember_092d97a6-5d60-4db8-b2f7-d001c54b7037_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PrepaidExpenseAndOtherAssetsCurrent_4a32c4d8-414c-4d63-b19d-8b39e28f0597_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_672e39f1-870f-4881-9869-7c27e61a7c0b_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_cfe7999b-a0a2-4859-877e-be151dc2c1fd_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AssetsAbstract_45617735-0a17-4562-b90a-d11078d40598_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfPropertyPlantAndEquipmentTable_1fa41419-e513-4096-b845-d7d114f10bda_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccountingPoliciesAbstract_872ba1e2-9703-4ec2-ad7a-085d0ace8db2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OperatingLeasePayments_7d232f83-8a93-4957-b727-ca13569243f4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock_c9c133cd-60d8-4df5-a7a5-021996719a7e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife_ccba0067-94f2-4e0d-8903-3f1beca77fbd_terseLabel_en-US" xlink:label="lab_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink: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, useful life</link:label>
    <link:label id="lab_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife_label_en-US" xlink:label="lab_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Acquired Finite-lived Intangible Assets, Weighted Average Useful Life</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:to="lab_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_c5f5bc43-2ea5-4c5c-8c7e-56566adbc5cc_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">2021</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_9fdf8781-2a08-4172-b2ac-ed37e243d551_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_c8509bbe-4359-47fb-8aea-6ecc936cec53_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_1139fd67-cf36-457a-ae99-d8a1dae6cc06_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">2024</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock_4cb121a2-b0a6-4fd2-b884-a0581c8a5f17_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_9c37b1e3-c22a-4515-96d2-583599b09ec6_terseLabel_en-US" xlink:label="lab_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems" xlink: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 [Line Items]</link:label>
    <link:label id="lab_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_label_en-US" xlink:label="lab_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems" xlink: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 or Change in Accounting Principle [Line Items]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems" xlink:to="lab_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_f9ac6910-5790-4203-950e-7b9be647d646_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LiabilitiesFairValueAdjustment_eae1953f-9de3-4b50-ab4a-95aa05500946_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_a167803f-c915-4d35-b522-1e54a75b2123_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-20201231.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_BuildingMember_681b4062-e7d8-4bf4-8d1a-daa30102c3e4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_RestructuringReserveSettledWithoutCash2_a30658ba-c9f0-4203-bb9b-25ddb2170afd_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CommonStockParOrStatedValuePerShare_5bc7b9c5-1442-4ab8-957f-16581ce3fe45_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OtherLiabilitiesNoncurrent_906a7049-2389-4427-8e90-28235b639642_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_DeferredIncomeTaxAssetsNet_2c8820f4-6df3-4720-a1ff-d59c0ea71a0b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice_696990a5-3c85-459c-8966-0dedca29e198_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InvestmentIncomeNonoperating_0ad86008-a660-4aa1-b08d-71f62bd9e3ad_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_MoneyMarketInstrumentsFairValueDisclosure_4261c7f2-63e6-4919-b6d1-36063ddf5773_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-20201231.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_InventoryWorkInProcessNetOfReserves_1e247e32-962c-4424-a53f-88896d0b7220_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ValuationAllowanceOfDeferredTaxAssetsMember_3cc73144-207a-4e7f-9ad6-6931155bdfbb_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment_4ced88ca-1aa5-47c6-be52-f4209549caf3_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-20201231.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_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset_34527f2f-13f3-4f9c-ac41-d46bc571f7ec_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_1e02ffb8-3019-4259-8b11-f744fb2b6abe_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InventoryNet_6e764ecb-ea01-4cd9-b16a-0633a8193f84_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_9ebc04f2-d990-4b78-8477-c45d2054bad9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_UnbilledReceivablesCurrent_275f835c-253d-4a63-861b-2bb6e7098fc8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueMeasurementFrequencyDomain_74d427e7-2e21-40dd-acae-2a0329a69e1a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_0e3da874-1cac-4ac5-8284-b6bd32055303_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-20201231.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_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement_ce4b8bb1-d623-46a0-8497-f803ddf87ba8_terseLabel_en-US" xlink:label="lab_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement" xlink: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 years covered through advanced pricing agreement</link:label>
    <link:label id="lab_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement_label_en-US" xlink:label="lab_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement" xlink: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 Years Covered Through Advanced Pricing Agreement</link:label>
    <link:label id="lab_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement_documentation_en-US" xlink:label="lab_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement" 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">Tax years covered through Advanced Pricing Agreement.</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement" xlink:href="cgnx-20201231.xsd#cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement" xlink:to="lab_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskPercentage1_6d774ffd-8497-4898-b4cf-18e6d2f6305e_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_199423e8-c0ba-443c-b883-f32ccdde9c20_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_ValuationAndQualifyingAccountsDisclosureLineItems_2fe35e44-32d8-4a79-b85a-af8e82409d82_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_currency_SGD_2c207465-7567-4eb1-b85f-a75d1d75ae47_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/2020/currency-2020-01-31.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_StatementLineItems_1b74e353-d079-4911-b787-9c3d63fd266b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ClassOfStockDomain_21e64447-d8ab-4874-b956-39513657ee11_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StatementTable_9ac75016-a5d8-4f0e-9e54-36dbce63b44b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs_91aed047-8ca4-41d4-9ae1-3e9e174188c5_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</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StandardProductWarrantyPolicy_44c35d2f-a95b-4426-9f6c-01ed24ee38d1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_TypeOfRestructuringDomain_f8edfa68-38d2-4685-b583-2e55d6b2d59b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_RangeAxis_b013b3b2-e8b8-4cd1-851f-b398313745d2_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_cgnx_Customer2Member_e198c3b0-dec0-4e33-ab3d-7109d5c9e35c_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-20201231.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_ForeignCurrencyGainLossMember_7d2ce7b1-c167-4419-a20f-027dc8c81847_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DerivativeLiabilityCollateralRightToReclaimCashOffset_31ff817e-cb2a-48e8-9577-05416a89c36a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate_d32aa58e-9254-429c-950d-8ec46881ca4d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock_14f1cb4b-cb2f-4f74-9712-049f7e1b6d78_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntitySmallBusiness_e8c2241c-e6e8-4695-9812-fc4783420a42_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/2020/dei-2020-01-31.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_AdjustmentForLongTermIntercompanyTransactionsNetOfTax_f3064128-00ee-4888-a2f2-71baf43851c5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ConsolidationPolicyTextBlock_545955c8-cff2-4c6e-a8f0-5f477d1db112_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_3e29f56e-9bd2-460b-8695-3a60444eb265_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareRepurchaseProgramDomain_e3aac163-c7a1-4825-8e88-2b01b939f488_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_899a19a4-b166-468f-b39d-5ac2a807dc6c_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_b8a6f8e7-b9ff-4999-9829-48706c4fdad8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_AmendmentFlag_a834ed17-44c2-4421-864a-8b98cc8615c6_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/2020/dei-2020-01-31.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_WeightedAverageNumberOfSharesOutstandingAbstract_31411288-2329-4332-be02-3442fffb396c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_cac2b73e-119c-46a9-8b60-ecbca4da7d82_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_9db245b8-2186-4635-a842-8cf842d00ca4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_d6de54d4-a4e2-481a-92f5-991104dbd0a4_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_6c8e62fb-fcfd-46e7-832c-727425e66fe9_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_a5ad5972-c9db-42e5-a0be-500bcd06d06e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_1942c93b-d22b-4130-a5ab-6ddcc3f1bb10_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OtherAccruedLiabilitiesCurrent_f196355c-f3ab-44b9-9f98-a8593ca9676e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_601be108-3b7f-4a30-9db9-fdf924d21364_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RestructuringAndRelatedActivitiesDisclosureTextBlock_7da8cdf4-4b55-415d-964c-ecc16977ad54_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueByMeasurementFrequencyAxis_94e2c2e0-f529-4859-bcf3-c6c69e40a3bd_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_AccruedLiabilitiesCurrentAbstract_22c92483-b6c4-4225-b1c9-e762f982a767_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_a79a6632-5772-4e0d-9116-bdca0f24ee9f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DerivativeGainLossOnDerivativeNet_f3fcf9dc-0e74-4d38-8cf4-f6bcd2279ed0_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OffsettingAssetsTableTextBlock_b81cc54f-543b-4015-ae96-4c2f9e0a0380_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_DerivativesPolicyTextBlock_a3390c44-430b-4761-aa37-8493b3780779_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_SubsequentEventsTextBlock_ec9a4339-ef8f-45c1-8d00-8191a6a4f8c9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_d38ec804-670b-47d1-adc3-bb334a2b0391_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-20201231.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_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_b358f2bd-f550-490b-841d-5d05d3bb6f67_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccruedIncomeTaxesNoncurrent_630cfca4-24eb-486c-9354-a670c9fd5257_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CommitmentsAndContingenciesPolicyTextBlock_4d729085-0b6a-49ab-94f0-ce3e2b16438a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_WeightedAverageNumberDilutedSharesOutstandingAdjustment_e0111dcd-48bc-46ac-b9bb-699d2b379219_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_ApplicationofCustomerSpecificSolutionsMember_4c1bd15a-e7bc-430e-914c-f88803ce257f_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-20201231.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_us-gaap_PropertyPlantAndEquipmentByTypeAxis_162d4d7b-a39f-4d3c-9265-37a9c1f3d25c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ValuationAllowancesAndReservesBalance_e3e198af-7890-4f88-8ac4-1f1607937ca8_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_b64825bd-1279-49a7-bcca-b05dc69ea7b1_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_d57430a0-286e-4061-85d9-c5ec8afb9dc2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeStatementLocationDomain_58029170-e5d2-4726-9e94-2ef2cd94f9e5_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_329a9107-acb8-48d7-bab0-84a4fa526404_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_8db7c44d-7329-4faa-8ac3-9cae33321d33_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">2022</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_NetCashProvidedByUsedInFinancingActivitiesAbstract_a6535d09-56e6-4490-8dd5-76fe7e935873_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_SellingGeneralAndAdministrativeExpense_36d63462-6bfe-45db-bfc4-1924150219cf_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_e5bba1fb-c02b-4189-97c9-ec1d5d25d1fe_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">2023</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OtherAssetsNoncurrent_b3365796-614c-489f-91d4-f1ed02b06a08_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ConcentrationRiskTable_df5f9cbd-12a5-4e9c-ad4b-a22d4d0206a8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_GainLossOnSaleOfInvestments_13e8f406-c744-4b25-b4ac-e14c3e3385df_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_SellingGeneralAndAdministrativeMember_df7db85f-426b-45c5-9b36-f901641a9b11_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-20201231.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_us-gaap_Assets_2408a27d-ea46-4e67-a775-3f80e45040d3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_a4bee000-6981-4169-a155-cd21b087621a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_c77a0c48-1b72-431d-8d1a-bea6aa593a41_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_06f4c710-82d8-4aad-9f19-664826e36467_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_SubsequentEventTypeAxis_37d0643e-6863-404d-8e67-4bd8e6e01954_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_10795df1-a1d2-4eae-91f6-fe580b7a01e8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OperatingLeasesOfLessorDisclosureTextBlock_f930e286-f685-4dfb-98f9-26feac90ebc5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_IntangibleAssetsFiniteLivedPolicy_e5fe432f-9fe0-41f9-bb62-a0a99bca2288_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_currency_JPY_5e5e002c-c46b-4e2a-81b8-b9174dae0aef_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/2020/currency-2020-01-31.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_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_f5e0ec43-28a3-44e6-ab70-fe47c2772870_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-20201231.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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents_8fd684ed-c597-4ef8-b714-afdb4cde3120_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink: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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink: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, Cash and Equivalents</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherIntangibleAssetsMember_407a53cc-0e78-4f05-88b0-bbf1c68a87a2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_Liabilities_a6ac62ce-f4ed-49b8-b82f-5d6757f0ffd1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LiabilityForUncertainTaxPositionsNoncurrent_6d2a52c1-b101-4208-b183-e8f868e740a8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_MunicipalBondsFairValueDisclosure_731f56b6-4b21-4010-81d4-04c1167d0a21_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-20201231.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_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_c70cbfb3-b114-4043-8d07-cce58921e31b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1_ec557bda-2b0c-47aa-bb93-f25950039f75_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_DueFromForeignBanks_b4199f35-be99-496e-bcab-6074e8600c92_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-20201231.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_CommitmentsAndContingenciesDisclosureAbstract_91b94af5-8812-48b7-8670-652c1a3a92b2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense_5f7331f5-b6d2-4ed4-96f6-605d026be024_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueInputsLevel1Member_f0816ac7-5947-41bf-a1e0-ef44ff941464_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense_64e88da8-be38-463a-b1d0-8df81366546f_terseLabel_en-US" xlink:label="lab_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense" xlink: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 cuts and jobs act, transition tax for accumulated foreign earnings, income tax expense</link:label>
    <link:label id="lab_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense_label_en-US" xlink:label="lab_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense" xlink: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 Cuts and Jobs Act, Transition Tax for Accumulated Foreign Earnings, Income Tax Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense" xlink:to="lab_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncreaseDecreaseInInventories_384a9ce3-7700-438c-b102-f13ec5a2a823_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_dfad90d9-4ba1-4e63-99a5-06612ac92282_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncreaseDecreaseInOtherOperatingCapitalNet_3e2ece10-885e-4ac1-9f40-1427c5dd4db8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CompletedTechnologiesAndOtherIntangibleAssetsMember_e37d2dd0-7f76-4d66-a0e2-f8f34339ef56_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-20201231.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_us-gaap_AdditionalPaidInCapitalMember_e7c0b589-3d97-4901-a7c8-c76f6dd6e36c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_057a52b9-89dc-4be0-a130-ff4388bd8a81_terseLabel_en-US" xlink:label="lab_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1" xlink: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 split</link:label>
    <link:label id="lab_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_label_en-US" xlink:label="lab_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1" xlink: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, Stock Split, Conversion Ratio</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquityNoteStockSplitConversionRatio1"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1" xlink:to="lab_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_ca2f4036-dea6-46cf-8aa2-8dc7b4f17fb9_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_f13230e2-7999-42b4-9e3a-53a915f3a629_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-20201231.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_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure_32d656cd-1502-49da-b2c6-ac4337349491_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueOfFinancialInstrumentsPolicy_4179be7a-6c9e-4fd1-a4e5-7cc3cd8950ad_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_CommonStockSharesOutstanding_0f0f267c-355f-459f-ba45-305f8be03ea4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_IncomeTaxDisclosureAbstract_de2e60aa-0998-4333-9c63-911ac7663f5a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_NumberOfGroupsWithinEmployeePopulation_f57ebe1c-4383-4598-bab2-2dd743a76e52_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-20201231.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_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock_1f40cfa4-00f4-47be-9ebf-35c73e956aba_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ScheduleOfGoodwillTable_5ca41659-a3b1-4217-9b0e-280f5374deb9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset_2d118981-7476-4ca1-affb-f133a98a93fb_terseLabel_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset" xlink: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_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset_label_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset" xlink: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, Operating Lease, Right-of-Use Asset</link:label>
    <link:label id="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset_documentation_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset" 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">Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Right-of-Use Asset</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset" xlink:to="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments_97518e91-e060-4624-b380-61197cea95e7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_36f6d258-a21a-4fa6-a3b0-93e234e01543_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_36de18c1-b131-43c4-8c98-e8851275f7a2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_AccountingChangesAndErrorCorrectionsAbstract_388f359b-2fd2-447f-b976-befc6ef58e36_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock_b40caa42-83cb-42eb-91bd-b8e766a4880a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_a3eb3c8e-fc99-439f-ba3f-ff0c5ee85b6f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired_e4570c01-7b0b-4ab7-b6f2-1cf6c0c64a4c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CommonStockSharesAuthorized_b6b7da88-7cdb-40a8-af27-e70f3861cc17_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_PropertyPlantAndEquipmentGross_a5697e9c-6186-4bd2-866d-7b3e7539affa_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities_ddfae523-480a-4623-991b-b4bedf1cf93e_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities" xlink: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</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities" xlink: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, Current Assets, Marketable Securities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_bb52fe48-3942-4cc8-bd48-1c213272224f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ValuationAllowancesAndReservesTypeAxis_3e7692d0-3686-4e18-a991-5b612d4676f5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_GoodwillAndIntangibleAssetsGoodwillPolicy_745a569d-2df5-4d30-9794-3a1ae700eb00_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_AccruedVacationCurrent_7d74368e-459d-4703-a631-b8ee716ff2b5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_SovereignBondsFairValueDisclosure_bf1e59f7-8b02-45e4-818f-40fa85669565_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-20201231.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_IncomeStatementAbstract_a0b5986b-5ec0-4e20-922f-a821ba956205_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_AccumulatedOtherComprehensiveIncomeMember_92f138e1-24ec-4785-a00c-9c5953b6dbf4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InvestmentsClassifiedByContractualMaturityDateTableTextBlock_c8b9d44d-5c41-4839-ada7-5058147b8e45_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_5bb01ec4-02e0-4609-afa2-708a45f803c6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InterestReceivable_6ed9e0b2-2c09-49a4-9f63-2a31488bd196_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ChangeInAccountingEstimateLineItems_661f4221-579f-4f01-a752-e26e26079717_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ScheduleOfChangeInAccountingEstimateTable_17c54018-367e-4c22-a05f-dc205512b903_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_NonvestedRestrictedStockSharesActivityTableTextBlock_78c558c1-b476-4004-a26e-f51ac97b6029_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_UseOfEstimates_7972aed4-4554-44a1-a15e-e7345c594af9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeTaxAuthorityDomain_65a0b20b-afcb-4aed-bc34-d22ab3ac9c51_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_RestructuringReserveRollForward_55c8a89e-33d2-437a-86e3-057054daeb70_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PaymentsToAcquirePropertyPlantAndEquipment_38a22113-fc1b-444c-b022-4bc56bbcbc84_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_RestatementAdjustmentMember_3ead5afd-09cb-43ac-bf3f-9c74e2a799ae_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_BusinessCombinationContingentConsiderationLiability_19e26d80-6d68-420f-b263-15c956a58542_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PropertyPlantAndEquipmentAbstract_48959d2a-8059-4ca0-9a8e-49be24563b90_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_e4f59459-6ce3-449f-81bd-21da3d5044ba_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_ac131c73-0937-4817-bea3-72088e716c00_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_c43a9206-8bb5-45aa-ab9f-9083cbd6ef92_totalLabel_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" 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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_36bbde1b-1a3c-4973-a254-13a6c8aa2220_verboseLabel_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" 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 before income tax expense</link:label>
    <link:label id="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_label_en-US" xlink:label="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" xlink: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 Equity Method Investments, Income Taxes, Noncontrolling Interest</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" xlink:to="lab_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_HedgingDesignationAxis_25c97f1a-f963-411f-b3b5-80981d32764c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities_2819f238-4415-4b4c-bac9-6947001f6765_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" 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">Accrued expenses</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink: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, Current Liabilities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DisaggregationOfRevenueTable_eeec9003-9a9e-4f82-b0b8-e11f6b2ef450_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OperatingLeaseImpairmentLoss_e7965149-1062-4cfd-8205-1daeac5f9c40_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_12290b58-a487-4f6e-a7ae-9317ff6ae148_verboseLabel_en-US" xlink:label="lab_us-gaap_OperatingLeaseImpairmentLoss" 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">Operating lease asset impairment charges</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ScheduleOfInventoryCurrentTableTextBlock_7c5cc2ae-60ad-452f-9ef0-2005465173a1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DeferredTaxAssetsOperatingLossCarryforwardsDomestic_1fc62156-4799-443a-b2f3-f9c8f984a9fd_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_cfe9d7f5-4e4c-49a4-be29-f4a30be3668c_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-20201231.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_476f47d0-cd23-45fe-9c96-3cc85b1427f9_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-20201231.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_ScheduleOfRestructuringAndRelatedCostsTextBlock_140ca88d-0f1b-44cc-98ce-d245bee85743_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_GoodwillAcquiredDuringPeriod_77d6e6c7-d5d0-4afd-b1c3-0cdbdea71c2d_terseLabel_en-US" xlink:label="lab_us-gaap_GoodwillAcquiredDuringPeriod" xlink: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 acquired during the period</link:label>
    <link:label id="lab_us-gaap_GoodwillAcquiredDuringPeriod_label_en-US" xlink:label="lab_us-gaap_GoodwillAcquiredDuringPeriod" xlink: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, Acquired During Period</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAcquiredDuringPeriod" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_GoodwillAcquiredDuringPeriod" xlink:to="lab_us-gaap_GoodwillAcquiredDuringPeriod" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_QuarterlyFinancialInformationTextBlock_9c084519-725c-474a-bfd3-11f5462f3fc4_terseLabel_en-US" xlink:label="lab_us-gaap_QuarterlyFinancialInformationTextBlock" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Selected Quarterly Financial Data (Unaudited)</link:label>
    <link:label id="lab_us-gaap_QuarterlyFinancialInformationTextBlock_label_en-US" xlink:label="lab_us-gaap_QuarterlyFinancialInformationTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Quarterly Financial Information [Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_QuarterlyFinancialInformationTextBlock" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_QuarterlyFinancialInformationTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_QuarterlyFinancialInformationTextBlock" xlink:to="lab_us-gaap_QuarterlyFinancialInformationTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IntangibleAssetsDisclosureTextBlock_3637902f-7fae-459b-82cc-13042082b04f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PropertyPlantAndEquipmentUsefulLife_7c4c9efe-f84b-4aef-b107-07068f1552db_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_GoodwillLineItems_7e24ea21-66ff-4ec5-abe7-37904aca748c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueDisclosuresAbstract_ce7d71cb-b69f-4ace-800b-7a7fa8df7be0_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfChangeInAccountingEstimateTextBlock_d77471e2-8c0c-48da-995f-1743c9427b36_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_8f8e8720-bd52-446b-abb3-7296c7bd22ec_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DeferredTaxAssetsLiabilitiesNet_24cf6de9-d645-482b-bf9c-f68440685f9a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_6c34c4fb-eb03-4a3f-940c-e1953a192a36_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_AvailableForSaleSecuritiesDebtSecurities_63c7e244-9080-4f2d-81f8-1cc909ad1028_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_e906f298-a505-4d86-b5af-2173cf59b840_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AvailableForSaleSecuritiesGrossRealizedGains_3d1dd619-d666-4741-bf64-52d1e06c7229_terseLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesGrossRealizedGains" xlink: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 on sale of debt securities</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesGrossRealizedGains_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesGrossRealizedGains" xlink: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, Gross Realized Gains</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesGrossRealizedGains" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesGrossRealizedGains"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesGrossRealizedGains" xlink:to="lab_us-gaap_AvailableForSaleSecuritiesGrossRealizedGains" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_RestrictedStockMember_4279f625-de97-4189-88dc-c9d96d71982d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables_fbb59cae-a40b-4815-a78b-458ae108acae_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink: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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink: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, Current Assets, Receivables</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ProductWarrantyAccrualPayments_1765b5a3-081f-4dff-9433-60789f18e8a2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InventoryFinishedGoodsNetOfReserves_83734939-5559-44cb-88bd-7e30d2854cee_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_CompanyContributionsVestAtEndOfTwoYear_cb944702-8bd4-4498-a0c9-400deb78a376_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-20201231.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_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_0bef7dd2-2e9b-402f-a1ba-4aeae908ad5a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LandMember_82b55570-05b1-4ea2-bef8-b1f520f51aa4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OperatingLeaseLiabilityCurrent_36aca1de-c798-441f-8a4a-ca26041a8e5e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ProductWarrantyAccrual_450d5c0f-3f95-47e3-bff0-e225596dd104_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_8a17f825-947f-4b6f-92b0-7b60d7227e88_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock_21defdb0-4787-4a88-b626-51ca1d1aa2eb_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue_847e8868-0cef-48ee-897a-6f77bd826df4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock_4541d1e3-0809-443b-8819-7c3293cab231_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch_0e417e2f-d911-4c6c-8fc2-3d9ebc86bf43_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DerivativeInstrumentsGainLossLineItems_79d537bb-c03b-4913-9211-39ee594df43b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock_d5a626a5-5f01-4976-87a5-31d498e50729_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CorporateBondSecuritiesMember_b978880f-8782-4c99-b758-0b4aaf472be1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueDisclosuresTextBlock_bc8b65ea-5a36-4016-8364-6b64a7953c87_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_LongTermInvestmentsMember_5a562eb9-b6a6-4b94-b93f-57caa57cc4d2_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-20201231.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_AccountsReceivableMember_31e7b8ae-4249-4b4c-ba6b-65cbbdcd9067_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DerivativesFairValueLineItems_8d97f3d4-0b39-4b0d-a03d-2a758c9087d3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_NameOfMajorCustomerDomain_bcceef0d-9b3d-47a2-b12a-574df89483da_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_currency_GBP_93c7b535-4658-4ba3-9351-f34ecc0c5f6f_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/2020/currency-2020-01-31.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_srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember_96ffd73a-159d-407d-ba10-bbf99232ad10_terseLabel_en-US" xlink:label="lab_srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cumulative Effect, Period of Adoption, Adjustment</link:label>
    <link:label id="lab_srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember_label_en-US" xlink:label="lab_srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cumulative Effect, Period of Adoption, Adjustment [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:to="lab_srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AdditionalPaidInCapitalCommonStock_0a44d319-bb50-4dde-90dd-89fd35bfdb8e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityRegistrantName_8c99ce84-2c2f-48a4-914c-f784d4d7c4de_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/2020/dei-2020-01-31.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_SubsequentEventTypeDomain_bfa84516-41df-4000-a381-75aebed5b2f6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax_10ec459a-cbc0-46e9-8a4b-de6b095f0021_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessAcquisitionLineItems_566248b8-0797-48f3-a7d0-c3c737fce33c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ConcentrationRiskLineItems_1eab69fe-ee07-4f70-a00e-4a1e2a18e565_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OperatingLeaseWeightedAverageDiscountRatePercent_359c2b61-e2de-471f-b40e-51e65a92220b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AssetsFairValueDisclosureAbstract_115b8c7e-a835-4ec6-82ba-f986eef59053_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber_620d3e92-23d1-4dbd-84ba-fd12b3e85dbe_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_7bb29a42-1029-456a-b9af-e9585d9658ef_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ContractTerminationMember_e76209c0-cd01-460e-b10e-cc91b2e445b6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ProductWarrantyAccrualWarrantiesIssued_946abf9e-3304-4be6-8f65-1b47ff7e0ef2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PaymentsOfDividendsCommonStock_43f400d7-fc25-444b-ac04-ec491d6267af_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1_c1912a16-20f3-4257-96da-08a1fb57869f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityIncorporationStateCountryCode_e1db9758-8804-445f-902e-089c0010f000_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/2020/dei-2020-01-31.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_DividendsPayableDateOfRecordDayMonthAndYear_1ff92125-893b-4113-872e-9b7b732f43fc_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RestructuringReserve_41535a8a-cc3d-455f-b547-4fa7e5e82ff9_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_bdec882e-0b9b-48f2-96d6-9d2727708863_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OneTimeTerminationBenefitsMember_83d3141d-1e3c-448c-9ea4-f71b9b59341a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AdjustmentsForNewAccountingPronouncementsAxis_97cce444-4110-4ea3-9c53-f46c755288ef_terseLabel_en-US" xlink:label="lab_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink: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 for New Accounting Pronouncements [Axis]</link:label>
    <link:label id="lab_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis_label_en-US" xlink:label="lab_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink: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 [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:to="lab_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_1c23d77b-fd7e-4155-9852-2608d163d61d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_ExcessAndObsoleteInventoryCharges_5f9e1870-ec80-478e-9631-da87f8c561b1_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-20201231.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_us-gaap_TaxCreditCarryforwardTable_aa7435a4-dd97-4598-a750-979676d3c168_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_AssetBackedSecuritiesFairValueDisclosure_f6c0614a-57aa-4e93-976e-8a511002314c_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-20201231.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_dei_EntityAddressPostalZipCode_48da144a-26ec-4406-9f9f-ee837becaaea_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/2020/dei-2020-01-31.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_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember_628a0f84-34d7-4474-8644-667f47209c7b_terseLabel_en-US" xlink:label="lab_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember" xlink: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 Standards Update 2016-09, Statutory Tax Withholding Component [Member]</link:label>
    <link:label id="lab_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember_label_en-US" xlink:label="lab_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember" xlink: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 2016-09, Statutory Tax Withholding Component [Member]</link:label>
    <link:label id="lab_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember_documentation_en-US" xlink:label="lab_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember" 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">Accounting Standards Update 2016-09, Statutory Tax Withholding Component [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember" xlink:href="cgnx-20201231.xsd#cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember" xlink:to="lab_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ExpirationPeriodOfStockOptionPlan_10ea3a42-43a4-4567-aaf5-15e477d27649_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-20201231.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_RestructuringCostAndReserveAxis_8f8193b2-547c-4201-aa51-92d51c776dbd_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_7a45d018-b294-4ed0-8d58-a465b169e721_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy_1dd03f5c-5288-49b9-9bed-514b67102b41_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_Goodwill_fb5de715-fb0d-41b6-a217-97f52bf9f413_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_98217a0a-90c4-410f-96d4-13bbacb8f77d_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_56bbb1c0-13a2-4a25-b790-0905c026db36_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfAvailableForSaleSecuritiesLineItems_0468d050-4007-4515-b5a1-fd7633b53e48_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_3eb887f3-af4c-46a6-9c0d-c845c311ee4a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_bd8b1c65-186c-4bfd-b2c2-599b54dca3c0_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncreaseDecreaseInAccruedIncomeTaxesPayable_6ebb5d94-1a79-4df7-8c18-97441a1de450_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_9ace562d-5664-4f23-a46f-adfcc3748efc_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-20201231.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_CommonStockDividendsPerShareDeclared_73a90862-1ef3-4cd8-8e35-ddaea8459578_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfGoodwillTextBlock_d6a9721c-1293-47ba-8c60-e0c79dbfb96a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_OpenTaxYearStateAuthorities_1e44156a-5c5c-49bf-a047-b9abe888dc51_terseLabel_en-US" xlink:label="lab_cgnx_OpenTaxYearStateAuthorities" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Open tax year state authorities</link:label>
    <link:label id="lab_cgnx_OpenTaxYearStateAuthorities_label_en-US" xlink:label="lab_cgnx_OpenTaxYearStateAuthorities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Open Tax Year State Authorities</link:label>
    <link:label id="lab_cgnx_OpenTaxYearStateAuthorities_documentation_en-US" xlink:label="lab_cgnx_OpenTaxYearStateAuthorities" 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">Open Tax Year State Authorities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OpenTaxYearStateAuthorities" xlink:href="cgnx-20201231.xsd#cgnx_OpenTaxYearStateAuthorities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_OpenTaxYearStateAuthorities" xlink:to="lab_cgnx_OpenTaxYearStateAuthorities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EquityAbstract_28f83050-8429-44eb-a700-a686a5b30534_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_OtherAsiaMember_7b0fe994-9fb1-462c-b3a4-e2bbee4db4bc_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-20201231.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_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_3d89930b-bd07-4fba-8984-2a130232d40b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ContractWithCustomerLiabilityCurrent_36d6ff77-dc68-4a07-ad2e-027fc1cddc11_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_f167cd75-a540-4aa0-8d42-23e022ee88e3_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_410dd1e4-f93e-4efc-8487-bff1004c51f3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_ChiaroTechnologiesLLCMember_36d1aefd-c984-40c5-9f66-7cc0a05c1b91_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-20201231.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_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice_9f2f50d9-93e0-42f4-9caf-f498caf8d2a6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CustomerConcentrationRiskMember_144ba85a-e7f9-4b4b-8bd4-e5ec8d9af961_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock_19d5ca80-e6e9-447e-87c6-ae840f2f7d14_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_WeightedAverageNumberOfDilutedSharesOutstanding_f35f5cf1-e013-4dd9-a514-d31da91d5f74_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_a88ed9d5-bbed-453b-b764-f0d48cb4a66c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PropertySubjectToOrAvailableForOperatingLeaseGross_4301b6f5-dfab-434b-89a6-8188f12feea9_terseLabel_en-US" xlink:label="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Buildings include rental property</link:label>
    <link:label id="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross_label_en-US" xlink:label="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross" xlink: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, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross" xlink:to="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod_664e3ebd-a92e-4abe-a20f-e0c7c7eed7b9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RevenueCommissionersIrelandMember_11a907f5-7222-4045-895e-71edc4a1de8c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_StateAdministrationOfTaxationChinaMember_dac1f596-4508-4ab3-837c-0ca4b2c9ca89_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease_b77fbf4d-40c3-427a-aa66-945395cadca2_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-20201231.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_NetCashProvidedByUsedInFinancingActivities_9eca354f-29dd-4ffb-9145-a6835b490627_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_20322b65-94c8-41c2-b99a-0951478e6f07_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_edf6727c-7720-4fac-90fe-afd5568f4831_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_UnrecognizedTaxBenefits_60503af7-454d-41d2-a3d3-04ce61cca034_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_8572ccad-e481-48a9-a3f4-f73e35bc62fd_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_82ee3e26-f1c5-471d-96ab-d7fac4ba4a36_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_TaxCreditCarryforwardNameDomain_84e6dad4-0529-4c46-9819-87780311e573_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax_b6cafdcc-9445-4a64-8ed4-0e6d441c63fa_terseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax" xlink: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 foreign currency translation adjustment</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax" xlink: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, Foreign Currency Transaction and Translation Gain (Loss), Arising During Period, Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax" xlink:to="lab_us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LongTermInvestments_71cf8ea9-6447-4bc3-a13a-4faf6d788d26_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 $390,417 and $431,633 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</link:label>
    <link:label id="lab_us-gaap_LongTermInvestments_9a89f147-77d4-46ba-8a90-b2afe4fab185_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FiniteLivedIntangibleAssetsLineItems_47173340-a569-4b1a-9b96-10dd072185e7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_DocumentFiscalYearFocus_9b9d04a3-3f01-404a-ba6b-21f7bc68d101_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/2020/dei-2020-01-31.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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets_56cbfe4f-3b2d-4840-b4e4-a7d71d690a76_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink: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 tax asset</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink: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, Deferred Tax Assets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo_8ed17373-d6ca-4527-9e7d-bf4bc15e53b5_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">2022</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_ValuationAndQualifyingAccountsAbstract_7f4b26d8-a492-411c-b878-7f0620039606_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_dei_EntityCurrentReportingStatus_74f5ac9d-0f3f-4444-b4ee-4ec6c714ad3a_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/2020/dei-2020-01-31.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_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_6bd94eec-048d-491e-a993-24d989791281_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-20201231.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_IntangibleAssetsNetIncludingGoodwill_069aa74a-c1db-4b95-851c-bcbc09e7d5e2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EarningsPerSharePolicyTextBlock_9d226864-486d-46fb-b13b-5588eccae06b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InventoryDisclosureAbstract_96f1f7ff-4073-47b1-b225-76248976c856_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CommonStockSharesIssued_57068707-a644-4e82-a40e-12174bf34e8b_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_781845a7-f2a0-4706-b0bb-a4552011ea77_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_5b4c7b78-6274-414a-9f4b-bdb4b00397a4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CashAndCashEquivalentsAtCarryingValue_f2bb9783-71dd-420b-8b35-566a4a331a0d_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_c5939f1d-926d-4699-87b6-42c02ae1ceba_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OperatingLeaseLiability_7cca738c-1f6a-42ea-8b47-81d92b3759a2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_SalesReturnsAndAllowancesMember_220dfd73-8623-41fd-b5c3-f007e4dda075_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_SegmentReportingAbstract_9ecb3936-7382-489a-934b-634b32cf998b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareRepurchaseProgramAxis_6f2c98c6-7d4a-4de9-85d3-e7abd3b4b9c3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StockholdersEquity_1a626e63-b135-404c-a027-12669c017c45_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_6af089c4-c979-4a76-9b2b-5180ee33a538_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_476625d3-ee2d-4864-83a2-dd47844dab14_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_DistributionRightsMember_53941c01-e7c0-46ef-9224-a55504f6f48e_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_1f669904-f1c6-46bf-9818-16b4e0aadf3d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationConsiderationTransferred1_6b08be34-b540-4960-9773-1755b844ecbb_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeTaxReconciliationForeignIncomeTaxRateDifferential_ed266048-5e82-437b-a35c-e4adb7bee6af_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RestructuringAndRelatedCostNumberOfPositionsEliminated_8961dd45-4f1f-4870-a9a5-f0c98dba8dbf_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_RepurchaseProgramFebruary2018Member_3273aa18-dc0c-48e4-a39c-cdc88cc5cf41_terseLabel_en-US" xlink:label="lab_cgnx_RepurchaseProgramFebruary2018Member" xlink: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 February 2018 [Member]</link:label>
    <link:label id="lab_cgnx_RepurchaseProgramFebruary2018Member_label_en-US" xlink:label="lab_cgnx_RepurchaseProgramFebruary2018Member" xlink: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 February 2018 [Member]</link:label>
    <link:label id="lab_cgnx_RepurchaseProgramFebruary2018Member_documentation_en-US" xlink:label="lab_cgnx_RepurchaseProgramFebruary2018Member" 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 February 2018</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramFebruary2018Member" xlink:href="cgnx-20201231.xsd#cgnx_RepurchaseProgramFebruary2018Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_RepurchaseProgramFebruary2018Member" xlink:to="lab_cgnx_RepurchaseProgramFebruary2018Member" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityAddressCityOrTown_acf4103e-b133-4cb5-b126-c60c90117f48_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/2020/dei-2020-01-31.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_FairValueByFairValueHierarchyLevelAxis_3204b006-7153-4a38-a18a-2b5e6e409e76_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RestrictedStockUnitsRSUMember_4d87e859-b3ff-4663-8744-c818c9862e66_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LesseeOperatingLeaseLiabilityPaymentsDueYearFive_9117d13e-912c-40f7-b488-b0ba6140610e_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">2025</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FinancialInstrumentAxis_87c03b90-580c-4788-9b8a-3fb02f83ea47_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_TypeOfAdoptionMember_387fb75c-67b4-440f-8c54-1f1e4a085439_terseLabel_en-US" xlink:label="lab_us-gaap_TypeOfAdoptionMember" xlink: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 Adoption [Domain]</link:label>
    <link:label id="lab_us-gaap_TypeOfAdoptionMember_label_en-US" xlink:label="lab_us-gaap_TypeOfAdoptionMember" xlink: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 [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfAdoptionMember" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TypeOfAdoptionMember" xlink:to="lab_us-gaap_TypeOfAdoptionMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_GainLossOnSaleOfPropertyPlantEquipment_613407a4-5ead-4449-b5eb-c1b9f4ef02ff_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IndefiniteLivedIntangibleAssetsByMajorClassAxis_c68f5b40-f4dd-4df0-acbb-03bb98cdb757_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PaymentsOfDividends_c204ba60-06ee-4931-a202-c69eeebfaf2d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DeferredTaxAssetsValuationAllowance_1b5c125c-4568-4b41-b347-ff453ce691a9_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_503276c4-1428-4181-9521-70df37b2b1be_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_ab21d7dd-2299-44d8-a97b-03663f1e117a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree_79dc5937-3536-4670-b65e-e78dc9f0b90d_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">2023</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_RetirementAllowance_81f0db2d-56dd-478b-839f-45b6a95c11ac_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-20201231.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_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock_f48dfa4e-0639-46d2-b4e6-b914e08a9322_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InprocessTechnologyMember_6d0623db-a313-42d2-a8f9-9e5559413b7b_terseLabel_en-US" xlink:label="lab_cgnx_InprocessTechnologyMember" xlink: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 Technology [Member]</link:label>
    <link:label id="lab_cgnx_InprocessTechnologyMember_label_en-US" xlink:label="lab_cgnx_InprocessTechnologyMember" xlink: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 Technology [Member]</link:label>
    <link:label id="lab_cgnx_InprocessTechnologyMember_documentation_en-US" xlink:label="lab_cgnx_InprocessTechnologyMember" 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">In-process Technology [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_InprocessTechnologyMember" xlink:href="cgnx-20201231.xsd#cgnx_InprocessTechnologyMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_InprocessTechnologyMember" xlink:to="lab_cgnx_InprocessTechnologyMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_LeasesAbstract_ebd10694-4d9d-4ea7-bc58-ba625cda57b2_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">Leases [Abstract]</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_AssetsCurrent_b937be03-ba29-4abe-93cb-c842e504d4b5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_GoodwillDisclosureTextBlock_b34ffc02-93b7-4e8a-b77a-5e3e99842115_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EarningsPerShareAbstract_a7f73f2b-8c2e-459e-bae4-7db5f83e69c4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeTaxAuthorityNameAxis_38c13cbd-b2ea-43f8-b1ae-9737e2ae31d6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RestructuringCharges_69b7f428-3ac6-4aad-aea8-a17401f47a7e_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_a517d575-5eeb-44bc-acd0-314e6856df2d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock_d1ff2e93-6297-411a-a2b0-9db4bf11087d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_ecba1dea-55ee-4452-9226-4d38b08fe430_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_DiscreteTaxItemsAxis_05f75b48-0d0e-4201-9f76-ccf1cdbe9974_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-20201231.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_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_3549434a-fe71-43d9-a7ec-1bbb85191901_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_RepurchaseProgramMarch2020Member_c6c76d27-c541-411d-bfd2-2907fac5f70b_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-20201231.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_2d336928-d87a-4516-b041-fc7067f8d59d_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-20201231.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_StockholdersEquityAbstract_6dacec40-b99d-4143-bdeb-9d51c819e09b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive_a0af8c42-32a1-48c0-b927-545aa3a2501b_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">2025</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_DocumentFiscalPeriodFocus_d907987c-4ffe-441b-b9c7-683883c4c013_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/2020/dei-2020-01-31.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_srt_ValuationAndQualifyingAccountsDisclosureTable_3a96c77d-c1dc-4c16-9db4-5538b8963a68_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_us-gaap_CertificatesOfDepositMember_067727e7-6606-464c-9aec-b1172282b5b2_terseLabel_en-US" xlink:label="lab_us-gaap_CertificatesOfDepositMember" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Certificates of Deposit [Member]</link:label>
    <link:label id="lab_us-gaap_CertificatesOfDepositMember_label_en-US" xlink:label="lab_us-gaap_CertificatesOfDepositMember" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Certificates of Deposit [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CertificatesOfDepositMember" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CertificatesOfDepositMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CertificatesOfDepositMember" xlink:to="lab_us-gaap_CertificatesOfDepositMember" 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_CustomerContractsLiabilityCurrentRollForward_8c985c0c-6814-4db9-bd00-c046efcbaab7_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-20201231.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_cgnx_Stateresearchandexperimentationtaxcarryforwards_71f64052-f686-47f2-ab96-a7176402dfa0_terseLabel_en-US" xlink:label="lab_cgnx_Stateresearchandexperimentationtaxcarryforwards" xlink: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 tax carryforwards</link:label>
    <link:label id="lab_cgnx_Stateresearchandexperimentationtaxcarryforwards_label_en-US" xlink:label="lab_cgnx_Stateresearchandexperimentationtaxcarryforwards" xlink: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 tax carryforwards</link:label>
    <link:label id="lab_cgnx_Stateresearchandexperimentationtaxcarryforwards_documentation_en-US" xlink:label="lab_cgnx_Stateresearchandexperimentationtaxcarryforwards" 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 tax carryforwards</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Stateresearchandexperimentationtaxcarryforwards" xlink:href="cgnx-20201231.xsd#cgnx_Stateresearchandexperimentationtaxcarryforwards"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_Stateresearchandexperimentationtaxcarryforwards" xlink:to="lab_cgnx_Stateresearchandexperimentationtaxcarryforwards" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityFilerCategory_866639f3-9286-471a-829c-c4e69a1b52aa_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/2020/dei-2020-01-31.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_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock_c3227a76-346c-421f-8bdc-f01e9e6bbda4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CommonStockMember_906104de-2746-46ac-aac7-9de0936c1507_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_ProductsAndServicesDomain_8fe3843d-54f7-4237-8aac-ec1e7dcaa535_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_e874daa7-f947-4fa9-8051-76dcf7b82a79_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_fdb0acb3-7d46-4401-8b33-1eaff0e01d21_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ConcentrationRiskBenchmarkDomain_f13b3b38-e902-4315-91c3-a95433556cb4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent_6a5d41f2-b33d-44a2-9301-c3aa69ab1b13_negatedTerseLabel_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent" 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">Operating lease liabilities</link:label>
    <link:label id="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent_label_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent" xlink: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, Operating Lease, Liability, Current</link:label>
    <link:label id="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent_documentation_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent" 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">Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Liability, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent" xlink:to="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SovereignDebtSecuritiesMember_313095a3-a838-499e-9e31-23ebb7ee105d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DefinedContributionPlanCostRecognized_a800daaa-c6f1-4387-8e1b-3c44327e851d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LeaseholdImprovementsMember_c24c89af-8677-4096-99a2-6f64184eaae6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_SalesRevenueNetMember_fffa77b9-c746-4d02-a8eb-3967453e9434_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow_25d1224e-50be-4f01-9e5c-08858f4384a4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_RestatementDomain_2fac4818-545b-4e22-90b7-6b8113a0fd2f_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_MunicipalBondsMember_2fae29d4-6a83-41e7-8e78-489f6a52ab16_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EarningsPerShareDilutedAbstract_5cca3b69-bd2d-4671-9abc-bad7ee98f69b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch_c06766d4-bf23-4ae7-8fdc-3bc80d37f118_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StockIssuedDuringPeriodSharesStockOptionsExercised_2d38f465-82f0-45b5-a6c5-6df1ed961f59_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_fceb33f2-8cea-4bfd-9798-9f3c53294c6e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_8d2ddf27-8344-4611-b4ae-7aae52cc8555_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationDisclosureTextBlock_774d1663-0913-488f-b4b9-824f1a290f2c_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">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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_EmployeeStockOptionMember_26c50eef-5bd1-4182-a5ef-1db9a5f9f412_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_ea9ccc36-7d49-4673-9df5-4349be549b50_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff_337a3b3f-d548-4c54-91fb-fa6018dbbf8d_terseLabel_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Write-offs</link:label>
    <link:label id="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff_label_en-US" xlink:label="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff" xlink: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, Writeoff</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff" xlink:to="lab_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock_aabafc21-75ad-46f2-8c0f-4759636bb4c9_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-20201231.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_SubsequentEventsAbstract_4cd59cf4-2954-4aa7-8c16-f075ac0ae845_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DeferredTaxLiabilitiesGrossNoncurrent_5a0c85f5-5ea4-4e2f-8685-7c76c1385bfb_terseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesGrossNoncurrent" xlink: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, gross</link:label>
    <link:label id="lab_us-gaap_DeferredTaxLiabilitiesGrossNoncurrent_label_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesGrossNoncurrent" xlink: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, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesGrossNoncurrent" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGrossNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesGrossNoncurrent" xlink:to="lab_us-gaap_DeferredTaxLiabilitiesGrossNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_e638b2ff-976c-4359-bc74-235f1999ca29_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_69311ea0-c997-4e4b-8ebc-9987d6c6fb3e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DeferredStateAndLocalIncomeTaxExpenseBenefit_a88746a9-5006-499d-8956-44b9cdc11ae7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_2925169e-feb4-4f66-a55c-83e68871dafb_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery_58964e69-851f-48f3-ab3b-0e65c7785594_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PaymentsForProceedsFromPreviousAcquisition_b1da9e76-3575-4022-85ca-559216b3ae01_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_CompanyContributionsVestAtEndOfOneYear_d7b85825-34af-49e5-859b-56fb20c0ec71_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-20201231.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_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths_3836410c-b38b-4e88-9971-cd68269eb6b5_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">2021</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StatementClassOfStockAxis_658b6bd0-a563-4ffb-8b7d-fff862ab4078_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_IncomeTaxesPaidNet_002ea847-af56-4f31-9301-a10a78555de6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeTaxReconciliationTaxSettlementsOther_60509fa0-4ea6-4bfe-8959-6a0f8051e73b_terseLabel_en-US" xlink:label="lab_us-gaap_IncomeTaxReconciliationTaxSettlementsOther" xlink: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, other, amount</link:label>
    <link:label id="lab_us-gaap_IncomeTaxReconciliationTaxSettlementsOther_label_en-US" xlink:label="lab_us-gaap_IncomeTaxReconciliationTaxSettlementsOther" xlink: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, Other, Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsOther" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxReconciliationTaxSettlementsOther"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsOther" xlink:to="lab_us-gaap_IncomeTaxReconciliationTaxSettlementsOther" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_8c8f7fff-fa7a-4fd5-a4c5-2f2c9575f9b8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable_88b82b1c-32c4-4d8b-b19c-6f247a589d58_terseLabel_en-US" xlink:label="lab_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable" xlink: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_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable_label_en-US" xlink:label="lab_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable" xlink: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 [Table]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable" xlink:to="lab_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccruedLiabilitiesCurrent_5a14d47b-1df1-42fc-89e0-95bcd04ec5a7_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_5ead585b-3cc5-4985-bde3-aeacf4dbb44f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EarningsPerShareDiluted_9a5f867e-e027-46f6-843b-632eafea96a7_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_6365440a-81d5-43fa-9263-deb52baec857_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock_e64b9125-6218-4112-80e6-79b428268e19_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_Totalsharesrepurchased_2bc0da95-9223-4f40-b190-f82f644982cd_terseLabel_en-US" xlink:label="lab_cgnx_Totalsharesrepurchased" xlink: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 shares repurchased</link:label>
    <link:label id="lab_cgnx_Totalsharesrepurchased_label_en-US" xlink:label="lab_cgnx_Totalsharesrepurchased" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">total shares repurchased</link:label>
    <link:label id="lab_cgnx_Totalsharesrepurchased_documentation_en-US" xlink:label="lab_cgnx_Totalsharesrepurchased" 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">total shares repurchased</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Totalsharesrepurchased" xlink:href="cgnx-20201231.xsd#cgnx_Totalsharesrepurchased"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_Totalsharesrepurchased" xlink:to="lab_cgnx_Totalsharesrepurchased" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ScheduleOfStockByClassTable_9c05274f-6978-4fcf-a26b-98eafe14d5bf_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_GuaranteesAbstract_db738eb6-0e37-4e6b-b7a3-02122b9ed2e6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax_b9f60de5-940d-4c32-b3b9-dcbb137f71a4_terseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" xlink: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 on cash flow hedges</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax_9227e580-65b4-44d9-b4d6-8820140bdc75_verboseLabel_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" 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 derivative instruments</link:label>
    <link:label id="lab_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax_label_en-US" xlink:label="lab_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" xlink: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), Derivatives Qualifying as Hedges, Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" xlink:to="lab_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_Depreciation_89b142af-5d4e-48fb-8d2a-ddfb0e3f93c8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityAddressAddressLine1_25ab8e99-0cd4-4248-ba8b-7bd79fdc2b4d_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/2020/dei-2020-01-31.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_NoncompeteAgreementsMember_50f17f0e-e4e4-493b-bfdb-ebc074ef57e7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_PropertyPlantAndEquipmentDisposals_0471ca13-26d1-416e-b434-d568c64bdb2c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityEmergingGrowthCompany_75f7848f-0b75-4511-926a-d55398f25d9b_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/2020/dei-2020-01-31.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_cgnx_RevenuePaymentTerms_9a31e60a-216d-4b9b-8ad4-b74d230b4500_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-20201231.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_13950d35-c5da-462c-8ce1-eaffe346fea5_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-20201231.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_IndefiniteLivedIntangibleAssetsExcludingGoodwill_6cfec7fb-d52e-42f6-b913-54243ad5650a_terseLabel_en-US" xlink:label="lab_us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill" xlink: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 Acquired</link:label>
    <link:label id="lab_us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill_label_en-US" xlink:label="lab_us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill" xlink: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 (Excluding Goodwill)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill" xlink:to="lab_us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredIncomeTaxExpenseBenefit_51e212c9-1676-4b17-9a65-631847d659d0_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DerivativeFairValueOfDerivativeLiability_d2dab53d-cb6e-4e5e-b983-8c7ff2dfd3f4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FiniteLivedIntangibleAssetsAccumulatedAmortization_a21d4a40-4a13-4bde-8808-75adce28ef5f_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_c072d36f-7b77-40f5-b120-de3cb3d78626_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_MaximumMember_e267978c-a0b5-4978-b2f6-63212c5c2b79_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_PreferredStockSharesAuthorized_ac45fc4e-d8a1-4f5a-927d-1a6e283ce2f1_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_fcf7347f-f998-4722-9db9-3a1bb57e5f24_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther_4bfef041-2fe0-47ec-9467-d1c0f09753f7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_4f061e43-9025-4c65-9a40-1e5f50f7cc3a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_SualabCo.Ltd.Member_0ccbf6c6-12aa-47a4-9f48-f4d6b304437c_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-20201231.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_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal_8c9e2bd3-7f74-4076-bdb8-59e7498b2ac3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DividendsCommonStockCash_3e886552-772e-4faa-9a58-91bece0868e1_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</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_AgencyBondsMember_b589a7e3-75be-434c-bffd-797685cdec3a_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-20201231.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_us-gaap_EffectiveIncomeTaxRateContinuingOperations_cba0bf47-2ab5-46c5-8544-c699e39ac6ed_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_9d31a65a-4a6c-468e-b215-fe23f59bafb7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_eb8e1ce7-8480-42f9-a1c3-e92d819f9a67_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AllowanceForDoubtfulAccountsReceivable_ba8a85fa-f4fc-4f6a-86e8-21690f3ca28c_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_ae274ccf-abde-4d6b-ad67-6be5838429db_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InvestmentTypeCategorizationMember_9c60d476-697a-4cbc-baa9-1b700b594e13_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_TradingSymbol_7fd23c5f-649f-4eb6-bf04-2fc3756b0a57_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/2020/dei-2020-01-31.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_GoodwillOtherIncreaseDecrease_d738c1f5-f27c-4031-b7c1-776f28266dca_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccumulatedOtherComprehensiveIncomeLossTable_b91e1d35-2957-41f2-8090-5c14be1cb39b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_facfc215-231c-47e8-bae0-52123422f0a7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions_8b835f76-e2b3-4f2e-9757-68a27e5e861e_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">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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EquipmentMember_58707c04-8dcf-4300-89ab-871ab1d13f15_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_abff7a30-4f03-485f-a2ad-3389456c7d3e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityShellCompany_1b0f44ab-1333-4e0a-913f-bc92ddbb8c97_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/2020/dei-2020-01-31.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_FairValueMeasurementsRecurringMember_f4a22591-a1ca-4100-b00c-16edd88c100e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock_9e79e7e9-4f06-4e31-ae94-f17943fad906_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityPublicFloat_eb0ea1b2-d416-4d65-89c5-681f52fa3eb8_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/2020/dei-2020-01-31.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_BusinessCombinationsPolicy_fcab7662-3866-4e9b-9223-2e4ed1577824_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_DocumentType_b2973d11-a342-4070-8480-33e5a44a187b_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/2020/dei-2020-01-31.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_dei_IcfrAuditorAttestationFlag_4df4e94d-bb36-4c51-bc8a-c2bdab148cc3_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/2020/dei-2020-01-31.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_us-gaap_OtherNonoperatingIncomeExpense_1d986a79-443f-428f-ade0-62a44a913d18_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_StateResearchAndExperimentationMember_926e65bf-6558-4f63-b662-2fbccb902fde_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-20201231.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_ScheduleOfProductWarrantyLiabilityTableTextBlock_feb57288-c4f3-4f52-9c9c-2912f607f83c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PayablesAndAccrualsAbstract_3738ab51-f7a9-4491-ba57-eb90b591e5e2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent_c2691b56-e959-4e60-9314-c404ccf930f5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock_bc2c5754-6fe9-4c89-995e-2be1a084997f_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-20201231.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_ValuationAllowancesAndReservesDomain_58d4d8ae-7f4c-4bf1-8d90-14bf2d5b23a5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PensionAndOtherPostretirementBenefitsDisclosureTextBlock_60146393-971c-4d7f-96a5-179b05f7fcad_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue_7b7592bb-8554-4390-afca-e939d80d30e1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InProcessResearchAndDevelopmentMember_465092df-1d75-4576-a239-7824785a92e4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2859da3c-4415-4b09-b795-272dde82b8ee_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueInputsLevel3Member_e229252a-3cf0-40c6-b7db-5603c91e295d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LesseeLeasesPolicyTextBlock_fb56a5fb-c7dc-44f0-a6fb-65036df99313_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StockRepurchasedDuringPeriodShares_e0ccb062-5f67-4ebc-ac6e-7d2a8ba9242d_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_9b311f36-524a-4c68-b3b8-421d4d078eb0_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DerivativeAssets_581af1e7-6757-4a70-a1f4-af70d2fd9cb4_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_cbf973ae-dfe9-4b9e-9dee-fa56cee305c5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RestructuringCostAndReserveLineItems_f67806b7-f322-46b1-9e8e-932f5f4e87fe_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DeferredIncomeTaxLiabilitiesNet_20f63723-b581-4b93-a033-73da6e2fbf2b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock_8b179c9d-50b8-4424-a284-137ad9834d5c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ProductWarrantyAccrualClassifiedCurrent_8323899a-fac9-4e91-bf27-834b2be121fb_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_IntangibleAssetsNetExcludingGoodwill_3bca21c4-170d-49e9-b5c7-8308a79b8739_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign_3d16eb7b-ea6d-499e-9f7a-4242aeba69a0_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_71bac9d6-091d-4cfa-994a-c2414b7137a3_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-20201231.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_OperatingIncomeLoss_ff492e11-fd5b-4ad1-824a-812b6cee49cf_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_d5c9ba55-1af4-4b47-ba7e-646eaf005f4f_terseLabel_en-US" xlink:label="lab_us-gaap_OperatingIncomeLoss" xlink: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 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ContractWithCustomerAssetAndLiabilityTableTextBlock_09239b80-f3db-411d-b271-3069af43326a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfBusinessAcquisitionsByAcquisitionTable_fea1de97-6306-4327-8704-a0ad39fc858e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_CommitmentsAndContingencies_d6ec6ac0-85b8-444f-bc00-6304645b3904_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent_eed925fd-10e0-4488-99fc-b80489392660_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_36eec228-0d99-420e-a286-815f0310e1ea_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PaymentsForRepurchaseOfCommonStock_c2e50285-40be-42b3-9b5b-b5e1c6845ca2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_a5f8e473-2cfb-4a71-9ede-fa2dc7fee5d7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive_aed995ee-1590-4ab2-abb9-1918bc64bad4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_FurnitureAndFixturesMember_c9888314-96ba-4df2-b8f0-7a1624d5ab54_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityAddressStateOrProvince_ffb405c2-7566-449b-86f1-d97676496e61_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/2020/dei-2020-01-31.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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_ba2583e9-6e66-4630-a0c8-e8a28006adf8_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_23e1ae47-2a08-4537-97ab-1696509eb308_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccountsPayableCurrent_244f53d9-3593-4c1d-8580-73370ccb7b85_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_GoodwillForeignCurrencyTranslationGainLoss_0ac033ea-a530-4f07-98a9-b77c504a8799_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ProductLiabilityContingencyLineItems_c386c7e7-99d5-413f-92ee-56fd20a5cf88_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InternalUseSoftwarePolicy_0c1ef247-b3fe-4cb9-92e6-566b67065253_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RetainedEarningsAccumulatedDeficit_5f2a5924-8392-49c4-a795-cb26ce1540cb_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_2565744c-5927-4ca3-a023-74f3b5b2bcb4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_RepurchaseProgramApril2017Member_b6172238-1177-4d0d-ac60-2414ad383980_terseLabel_en-US" xlink:label="lab_cgnx_RepurchaseProgramApril2017Member" xlink: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 April 2017 [Member]</link:label>
    <link:label id="lab_cgnx_RepurchaseProgramApril2017Member_label_en-US" xlink:label="lab_cgnx_RepurchaseProgramApril2017Member" xlink: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 April 2017 [Member]</link:label>
    <link:label id="lab_cgnx_RepurchaseProgramApril2017Member_documentation_en-US" xlink:label="lab_cgnx_RepurchaseProgramApril2017Member" 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 April 2017</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramApril2017Member" xlink:href="cgnx-20201231.xsd#cgnx_RepurchaseProgramApril2017Member"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_RepurchaseProgramApril2017Member" xlink:to="lab_cgnx_RepurchaseProgramApril2017Member" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_OperatingLeaseRightOfUseAsset_2bd73d3b-30ad-4728-bf1f-445a270a6c1b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_HardwareAndSoftwareMember_1abc5e88-296a-48a6-90b3-4761a64d56f8_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-20201231.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_MoneyMarketFundsAtCarryingValue_4480a9e8-b28c-420a-8762-e94c6cb22444_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ChangeInAccountingEstimateTypeDomain_742b5b71-cbaa-49da-9d91-12af64c5ee4a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment_526b1b04-fc28-4050-904f-26621c51cb63_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink: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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink: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, Property, Plant, and Equipment</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_OtherGeographicAreaMember_028085aa-19a0-40af-ba68-ef5b943bba40_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-20201231.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_srt_MajorCustomersAxis_aaad0a08-8cf7-4c6f-b8c5-c584ce608819_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum_ac72add4-923d-4368-9848-15a3b337e793_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-20201231.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_IncomeTaxPolicyTextBlock_78d5a191-2d4f-4148-b3f9-4de81c8363e7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_HedgingDesignationDomain_2bee0369-072d-40f6-a3d8-709666fea8b1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock_0efe772a-5df5-46f0-a717-415c23d38f09_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability_6bfd3702-dc91-4584-8733-7a737d50685e_terseLabel_en-US" xlink:label="lab_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability" xlink: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 cuts and jobs act, transition tax for accumulated foreign earnings, liability</link:label>
    <link:label id="lab_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability_label_en-US" xlink:label="lab_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability" xlink: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 Cuts and Jobs Act, Transition Tax for Accumulated Foreign Earnings, Liability</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability" xlink:to="lab_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber_32faf0fd-65f1-47ea-bdc2-c31a849fcb74_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_11dcbaee-a5a7-4e3f-8da9-b92b9ccff667_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_85b30d2c-ab4f-4874-ae8e-31da25550091_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_0089b12e-e30e-4907-9821-5e8e22863ab1_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_ab1baa32-0101-49b7-9397-931486e6e917_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AdvertisingExpense_fddc07ee-dae5-4883-9fc7-4c060ea315c1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InvestmentPolicyTextBlock_9855455d-1f13-4123-af47-9ddd1f4801a4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessAcquisitionAxis_878aba1a-76b4-4ba5-95a5-858f1b0f69c4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_SegmentGeographicalDomain_5e8d4c68-bf30-4eef-9ff6-830781863be6_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_DividendsPayableAmountPerShare_01df1efa-6ca7-4352-8628-ce6e35fe8def_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue_fbc3afe0-b6af-4900-b00c-361ea71af689_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue" 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">Deferred income tax liabilities</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue" xlink: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, Current Liabilities, Deferred Revenue</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_71bce776-cf58-44eb-ae6f-c41731d7841c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncreaseDecreaseInDeferredIncomeTaxes_819bd2bb-4090-441a-9d36-b5aeadcd8511_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_EnShapeGmbHAbstract_ced9f94d-5a81-437f-9eb5-9f0a27b9ceb4_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-20201231.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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets_0be1b842-2c31-46ad-8b76-206508fe89fa_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink: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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink: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, Current Assets, Prepaid Expense and Other Assets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets" xlink:type="arc" order="1"/>
    <link:label id="lab_dei_EntityVoluntaryFilers_8b6c23c5-4eeb-46e4-a59d-af0bba82c1ec_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/2020/dei-2020-01-31.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_TaxCreditCarryforwardAxis_3967f8b4-3499-4ddf-8f79-1b99daea43a3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive_c6ca328c-9867-4849-9c92-0d6593594bc1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PreferredStockSharesIssued_d825824e-928b-400d-8e6d-3a902c4a037b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ForeignCountryMember_e9257c8c-1b00-4120-8c16-bc09c0fd6868_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationsAbstract_23efcd41-b513-4415-beba-de5ebbc71ac6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements_0d83061d-35d8-419f-a92e-594d92df0d39_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_22cf7c7e-2efe-4f76-90c0-0b2afd9c9d39_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1_5320d3bf-cb69-4039-bd1d-da258138fd92_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_GoodwillRollForward_c2673da7-c4b8-4030-bd52-afb48e1fcc65_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_UncollectibleReceivablesMember_8d5f1d27-04e6-4f98-a1b9-7e0c071ba01b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_d3af3f25-fbe6-4423-9c67-a90f735a5ef7_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-20201231.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_RentalIncomeNonoperating_bb5d1064-90d3-4245-942a-429106e85f97_terseLabel_en-US" xlink:label="lab_us-gaap_RentalIncomeNonoperating" xlink: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_RentalIncomeNonoperating_label_en-US" xlink:label="lab_us-gaap_RentalIncomeNonoperating" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Rental Income, Nonoperating</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RentalIncomeNonoperating" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RentalIncomeNonoperating"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_RentalIncomeNonoperating" xlink:to="lab_us-gaap_RentalIncomeNonoperating" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory_4c8c6f36-d878-4c0d-804e-9de19542b10a_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink: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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink: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, Inventory</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NetCashProvidedByUsedInOperatingActivities_93715e50-44aa-4e7a-9381-b9bfedbdadd0_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_2dccf8a7-236d-4930-8649-01c45845b51b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ChangeInAccountingEstimateByTypeAxis_d31b49b1-3e40-4de2-a108-7d15f6302de4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityCentralIndexKey_2d164724-419f-4560-b493-da79e9af16cf_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/2020/dei-2020-01-31.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_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue_4bf88fb8-e0b9-41cf-97bd-f3dcc7992a1f_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-20201231.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_AvailableForSaleSecuritiesDebtSecuritiesCurrent_f3d56a22-7887-44fa-a582-076535df0c8a_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 $102,258 and $235,610 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FiniteLivedIntangibleAssetsByMajorClassAxis_b2e52c25-e1d1-4b14-b87d-fb8a07f310f1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_currency_MXN_1ce76b4d-182a-4b8a-8080-4a668cfa7ff0_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/2020/currency-2020-01-31.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_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock_89ac9299-7ba1-4eba-aa17-ea0f7e7f8fbd_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_StatementGeographicalAxis_be4f4962-a142-4938-858d-d4aacd4b137a_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_AvailableForSaleDebtSecuritiesAmortizedCostBasis_73fe8bd8-057c-4bba-b130-ac546365acd7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StatementOfCashFlowsAbstract_5b2c8702-ab28-4551-9b65-b9c02df5f5ad_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeStatementLocationAxis_9b863f7b-34c2-46a9-a6a9-85cbe92d9b73_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_aadf12ac-b29b-4bc4-a828-18ff237eef55_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityCommonStockSharesOutstanding_5d484a5d-21af-45fb-a458-5fc3a1e82fb9_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/2020/dei-2020-01-31.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_cgnx_DiscreteTaxItemsDomain_96387df0-abb4-4881-a151-cc26f358cc67_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-20201231.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_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock_9be86cb1-ed68-4fd7-909f-c9f96b769940_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ReceivablesPolicyTextBlock_fa830bd6-aadf-44a7-ae31-f106a8056ad4_terseLabel_en-US" xlink:label="lab_us-gaap_ReceivablesPolicyTextBlock" xlink: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_ReceivablesPolicyTextBlock_label_en-US" xlink:label="lab_us-gaap_ReceivablesPolicyTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Receivable [Policy Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ReceivablesPolicyTextBlock" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ReceivablesPolicyTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ReceivablesPolicyTextBlock" xlink:to="lab_us-gaap_ReceivablesPolicyTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentFederalTaxExpenseBenefit_d07dcc75-4d86-4cdd-9c8d-b181c021da70_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccruedBonusesCurrent_70117a9a-d742-405b-855b-5645827e1b87_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">Company bonuses</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AmortizationOfIntangibleAssets_8f74bdc7-3aa9-4671-83ca-3d8933f62ca6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized_1297d651-4743-4523-adc3-74565cbe7303_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</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-20201231.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_SegmentReportingDisclosureTextBlock_35ac51af-482b-4617-9ea3-2b257d7e2569_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits_0568dfc7-050e-4140-bf26-fc2db01da724_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_Security12bTitle_025a4dfd-a317-4c85-9b91-f83e528a877b_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/2020/dei-2020-01-31.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_ScheduleOfAccruedLiabilitiesTableTextBlock_04e5a1ec-ea74-4bf4-a5dc-a641c2c235a9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FiniteLivedIntangibleAssetsNet_18df2e42-0639-4c31-ac61-9085f43b0416_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_TreasuryBillsFairValueDisclosure_a4650cbc-9f3a-40d8-80be-aab3dd350a4b_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-20201231.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_us-gaap_NoncurrentAssets_66b5a0b7-2fbe-4618-84df-505f3bedfe74_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_4b733fdd-e60b-4fb9-beb4-00dd380bfafd_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccruedIncomeTaxesCurrent_8850e2e7-4b2f-463f-94df-50dc6c615f43_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_d3ed5592-badf-42f1-82ee-78996ce79064_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 $981, $515, and ($188) in 2020 2019, and 2018, 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_currency_KRW_3826cffd-7a99-4340-9538-4681af263ed8_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/2020/currency-2020-01-31.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_cgnx_ContractLiabilityForeignExchangeRateChanges_60d5100c-7aa4-4428-a45c-08dfee2217a0_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-20201231.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_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_fc49c998-f600-4cca-91cf-96a873cb503a_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_9be02792-f397-4447-bc99-8325b8ae314d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_ScenarioPreviouslyReportedMember_d745c3c5-469d-4ed4-9855-6ae0d585298c_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_bcf06433-569c-4982-b916-9c83e78ccfbd_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ResearchMember_044916ba-9710-4efb-ae3f-16c4e8205849_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShortTermInvestmentsMember_f7ead7c6-667f-45f5-be92-df24804d61ff_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock_9398baad-ab92-46a0-abed-e59ef267beb8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_UnrecognizedTaxBenefitsPeriodIncreaseDecrease_969dbd00-18ad-464b-b39f-f918f75cb4d4_terseLabel_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsPeriodIncreaseDecrease" xlink: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_UnrecognizedTaxBenefitsPeriodIncreaseDecrease_label_en-US" xlink:label="lab_us-gaap_UnrecognizedTaxBenefitsPeriodIncreaseDecrease" xlink: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, Period Increase (Decrease)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsPeriodIncreaseDecrease" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsPeriodIncreaseDecrease"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_UnrecognizedTaxBenefitsPeriodIncreaseDecrease" xlink:to="lab_us-gaap_UnrecognizedTaxBenefitsPeriodIncreaseDecrease" xlink:type="arc" order="1"/>
    <link:label id="lab_srt_ProductOrServiceAxis_4ee8352b-b624-47c2-bc52-6d84d544b36f_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_currency_CAD_6fa5fa53-fbe8-4ddb-82f6-764b5db2bfa3_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/2020/currency-2020-01-31.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_InvestmentTypeAxis_0a778bbe-f28b-4c40-b017-78a4b55c950f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_AccruedExpensesMember_f6d24810-f9f7-410d-940c-543f1ec43773_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-20201231.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_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation_0801dff2-4863-4d4f-9ccd-3cdcc1977b6e_terseLabel_en-US" xlink:label="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation" xlink: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 depreciation</link:label>
    <link:label id="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation_label_en-US" xlink:label="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation" xlink: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, Accumulated Depreciation</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation" xlink:to="lab_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_9ba7a5ae-44f6-4c6e-8670-7b1839f861db_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_OtherRestructuringMember_c481c84e-b613-4b86-ae52-7ddc7c29d2b1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OperatingLeaseExpense_cf28a1fe-d657-4b5d-a5ce-83710b456237_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_d2c30f3e-f3c5-44a2-bd68-00489a47422b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncreaseDecreaseInAccountsPayable_a80a1897-6de5-4ecc-bded-202f1c9be8c3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_InventoryRawMaterialsNetOfReserves_a52b87c3-9e3a-4c85-887e-057cb96b23eb_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CommonStockDividendsPerShareCashPaid_0940d539-d5e3-4960-9d11-f2e50dd9adc6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AntidilutiveSecuritiesNameDomain_e7c855f2-94f5-46be-bdd3-b0b258037d37_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfQuarterlyFinancialInformationTableTextBlock_1eae3440-1b81-4f55-8e42-76ff3f01294c_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock" xlink: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 Selected Quarterly Financial Information Data</link:label>
    <link:label id="lab_us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Quarterly Financial Information [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock" xlink:to="lab_us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DisaggregationOfRevenueLineItems_5b3489cd-4941-4ac2-8dd9-d0d222f66f8e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ClassOfStockLineItems_2208302b-08cb-474e-a6be-afef2d994784_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncreaseDecreaseInAccruedLiabilities_6a906253-1b98-478f-a5de-40c0144a8c49_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock_168ce734-004c-4608-99d7-e1410a625b7e_terseLabel_en-US" xlink:label="lab_us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock" xlink: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 Indefinite-lived Intangible Assets Acquired as Part of Business Combination</link:label>
    <link:label id="lab_us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock_label_en-US" xlink:label="lab_us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock" xlink: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 Indefinite-lived Intangible Assets Acquired as Part of Business Combination [Table Text Block]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock" xlink:to="lab_us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeLiabilities_ef28dfb7-8ad7-424c-8bf9-446042a4280c_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_f0ebf0f1-b23c-4664-973f-7f3f609c6849_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_60a4a83a-9fd8-406f-b6cf-79d9e8181f21_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RevenueFromContractWithCustomerAbstract_3d24c117-d4b8-48ac-a7b2-e7848a4bfc10_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_063530f0-9317-46bb-ad45-6da95b8b218e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets_8a5d35a7-8c87-49a5-9d16-262dedb41879_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets" xlink: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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets" xlink: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, Noncurrent Assets</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxAssetsInventory_542cda58-5875-4e84-88dc-906a21fb23a6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ResearchAndDevelopmentExpense_a489e265-c8b7-4bb2-be2d-6a82ac1360f8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_SubsequentEventMember_6efa5788-fef9-4457-8dec-8e57d39e14bf_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DomesticCountryMember_97d4f165-5ee3-4723-a2f4-b8dba4172648_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ConcentrationRiskByTypeAxis_602674dd-0eaf-4246-8ced-da581dfca9ef_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_RevenueRecognitionPolicyTextBlock_3d400a69-bb53-485f-937a-67143e4dffc8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_CustomerContractsAndRelationshipsMember_89fb32b8-655e-467c-93f5-f615717bb746_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_4c97f274-7a9e-4069-92eb-45e96c9ad505_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-20201231.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_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet_5d1a3c31-4a1b-41a0-8022-ec90647e1027_terseLabel_en-US" xlink:label="lab_us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet" xlink: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_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet_label_en-US" xlink:label="lab_us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet" xlink: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</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet" xlink:to="lab_us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure_8d76d3ab-2c08-485e-805e-35bbb7d5ebaf_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_GainLossOnDispositionOfAssets1_ae2d4ba6-256d-42fb-af55-6bda78956532_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OperatingLeaseLiabilityNoncurrent_e485b4e6-59d6-4ebc-b160-d999c5434ca1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour_6b3bf44a-d64f-4a0e-9c9f-94aeca0154ec_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">2024</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LeaseAndRentalExpense_4e6d0dfc-71c5-4f40-804e-fd6aed9ace1c_terseLabel_en-US" xlink:label="lab_us-gaap_LeaseAndRentalExpense" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Rent expense</link:label>
    <link:label id="lab_us-gaap_LeaseAndRentalExpense_label_en-US" xlink:label="lab_us-gaap_LeaseAndRentalExpense" xlink: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 Leases, Rent Expense</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeaseAndRentalExpense" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseAndRentalExpense"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_LeaseAndRentalExpense" xlink:to="lab_us-gaap_LeaseAndRentalExpense" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome_f5b76594-7898-4009-8b95-f149fb19cbbc_terseLabel_en-US" xlink:label="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome" xlink: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 GILTI tax basis differences</link:label>
    <link:label id="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome_label_en-US" xlink:label="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome" xlink: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, Other Global Intangible Low Tax Income</link:label>
    <link:label id="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome_documentation_en-US" xlink:label="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome" 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, Other Global Intangible Low Tax Income</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome" xlink:to="lab_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_TaxCreditCarryforwardLineItems_f6510109-8541-44cc-a3d0-8f02ca1fac42_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AssetsCurrentAbstract_79d1d0b6-c9f5-4325-9418-65192de4bd5c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount_f1a66c6d-d0d0-474f-a0c8-bede92e0eed1_terseLabel_en-US" xlink:label="lab_us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount" xlink: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 deductible goodwill</link:label>
    <link:label id="lab_us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount_label_en-US" xlink:label="lab_us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount" xlink: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, Goodwill, Expected Tax Deductible Amount</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount" xlink:to="lab_us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount_e38448ae-cc56-4da3-bbfa-d94d0c082e4d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_UnrecognizedTaxBenefitsGross_2b36d3c3-ed2e-4796-9ec6-407e3b648d52_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-20201231.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_ComprehensiveIncomeNetOfTax_d173772e-ebb1-4a66-8e5c-a71ff0bcdf5f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate_35430891-143b-41db-b594-0b2b65b970cc_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PreferredStockParOrStatedValuePerShare_2d26bedf-b798-42f8-8e1c-21ac698c63d4_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_76fd25a9-ec55-466c-b2a4-2e037b94c995_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock_e6ddb38a-0ca4-40fa-bd12-d968c6b04a67_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ValuationAllowancesAndReservesDeductions_7f084ccc-bf54-4418-aea7-824514bb046c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_CityAreaCode_ddde495e-fe9a-4a57-886c-69d70e0f8eff_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/2020/dei-2020-01-31.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_us-gaap_IncomeTaxAuthorityAxis_7b906d97-7215-4465-a205-ae41bb6d6d40_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_DocumentPeriodEndDate_9489b305-450b-40e9-8bf1-3a89d87e871b_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/2020/dei-2020-01-31.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_us-gaap_StockRepurchaseProgramAuthorizedAmount1_c7d5823a-60c7-4ef1-8076-eec0aa688bfb_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DisaggregationOfRevenueTableTextBlock_1a871ae8-70a2-456a-a95d-3bdd0aa476ec_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_MovementInStandardProductWarrantyAccrualRollForward_cb6a0532-a5e4-4a76-af54-23fa7d0ff110_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses_167d0589-51dd-4a47-ad12-51af73e5f51f_terseLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses" xlink: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 on sale of debt securities</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses" xlink: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, Gross Realized Losses</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses" xlink:to="lab_us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_28d413b6-c66a-4be8-9a09-2e1b58406891_terseLabel_en-US" xlink:label="lab_us-gaap_QuarterlyFinancialInformationDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Quarterly Financial Information Disclosure [Abstract]</link:label>
    <link:label id="lab_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_label_en-US" xlink:label="lab_us-gaap_QuarterlyFinancialInformationDisclosureAbstract" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Quarterly Financial Information Disclosure [Abstract]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_QuarterlyFinancialInformationDisclosureAbstract"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract" xlink:to="lab_us-gaap_QuarterlyFinancialInformationDisclosureAbstract" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_12b8ebf6-5591-4986-acc9-3af24906b557_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-20201231.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_ShareBasedCompensation_80c8825d-4aaa-4bf5-9ce9-4e3c97bba4df_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StockRepurchasedDuringPeriodValue_a69748ab-b085-47ce-b0e6-7135f2f93218_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_e6e3a248-7230-4f7c-bebb-92055e3635c9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeTaxReconciliationTaxSettlementsForeign_e4f1b201-0056-4f16-8cfd-40cedc3de464_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_CoverAbstract_e036e2d3-efd2-4626-b057-4f96e8ad9438_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/2020/dei-2020-01-31.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_RestructuringReserveAccrualAdjustment1_f8013267-1d62-471d-93a5-ac0997b1a49b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DefinedContributionPlanEmployerMatchingContributionPercent_50e5d4eb-28f1-4fd7-8081-60fb4c5944c2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable_1a5d6b18-f967-4fc4-98e6-ddbff5ec0bd3_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" 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">Accounts payable</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink: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, Current Liabilities, Accounts Payable</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_6c241fba-c54d-4492-a90e-c14d647fe9c9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_MaximumRemainingMaturityOfForeignCurrencyDerivatives1_593f8fa2-4e6c-4e7d-a32c-ab1a63d2f5a7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncreaseDecreaseInContractWithCustomerLiability_4f68800d-f566-472b-a30f-06adbe403630_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LesseeOperatingLeasesTextBlock_8e020c9e-e365-4428-92d8-28b66bb4592a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DeferredTaxLiabilitiesGrossCurrent_101089fc-d2ef-4a1a-abc3-dcdfbe2eeb1b_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesGrossCurrent" 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 non-current deferred tax liabilities</link:label>
    <link:label id="lab_us-gaap_DeferredTaxLiabilitiesGrossCurrent_label_en-US" xlink:label="lab_us-gaap_DeferredTaxLiabilitiesGrossCurrent" xlink: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, Current</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesGrossCurrent" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGrossCurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesGrossCurrent" xlink:to="lab_us-gaap_DeferredTaxLiabilitiesGrossCurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_e75a28a0-4505-4f85-9f4b-e12f99c35e5e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CustomerRelationshipsMember_888a864f-84be-4d9f-b543-538c369018ae_terseLabel_en-US" xlink:label="lab_us-gaap_CustomerRelationshipsMember" xlink: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 Relationships [Member]</link:label>
    <link:label id="lab_us-gaap_CustomerRelationshipsMember_label_en-US" xlink:label="lab_us-gaap_CustomerRelationshipsMember" xlink: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 Relationships [Member]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerRelationshipsMember" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CustomerRelationshipsMember"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_CustomerRelationshipsMember" xlink:to="lab_us-gaap_CustomerRelationshipsMember" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_ConcentrationRiskByBenchmarkAxis_70284ef4-184d-4b80-9cb5-07f13750d8ce_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CostOfGoodsAndServicesSold_7b80152e-a182-4d1d-9e43-5eaf18d6e835_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_f3d0d2a1-df7e-43cb-b336-f0fcf4a3a2e8_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_9fd554b4-2671-4cf6-939d-512c0417ad91_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_62805bf5-9f79-434f-af73-23477ddeb0b1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StatementEquityComponentsAxis_73686eda-40b6-4a86-aa34-a40e121d5464_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DeferredTaxAssetsGross_54432a3b-ad11-4184-ae2b-77abf66afbca_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_MinimumMember_af0cb356-a3bb-448d-be88-75eacab205fe_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_BalanceSheetLocationDomain_fc805e56-cdae-424c-9280-1ea51b14c7d3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit_32718dd5-a054-445b-9f36-b2605511f57c_terseLabel_en-US" xlink:label="lab_us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit" xlink: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 cuts and jobs act, measurement period adjustment, income tax expense (benefit)</link:label>
    <link:label id="lab_us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit_label_en-US" xlink:label="lab_us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit" xlink: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 Cuts and Jobs Act, Measurement Period Adjustment, Income Tax Expense (Benefit)</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit" xlink:to="lab_us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_11652737-a521-4e9f-bac1-85bb6e91646f_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-20201231.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_cgnx_StandardProductandServicesMember_3e0aee9c-456f-4e65-b10e-8b86a07da7c1_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-20201231.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_srt_EuropeMember_1fda189d-38ca-4d66-9c05-a16e56b73778_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_eb384161-db2f-4be8-9ae1-54814b496312_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross_0c2e1c39-5b2d-4038-92eb-4b09d61d8623_totalLabel_en-US" xlink:label="lab_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross" 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 Liabilities, Gross, Current</link:label>
    <link:label id="lab_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross_label_en-US" xlink:label="lab_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross" xlink: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, With Jurisdictional Netting, Gross</link:label>
    <link:label id="lab_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross_documentation_en-US" xlink:label="lab_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross" 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, With Jurisdictional Netting, Gross</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross" xlink:to="lab_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_IncomeTaxAuthorityNameDomain_180dde78-d57b-4145-84ba-3b63e7d653c4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AssetBackedSecuritiesMember_0a5b8588-aa66-4e08-9073-bb33099d65e9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccruedSalariesCurrent_2b313715-2960-4650-b461-92628cfd264a_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, commissions, 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityInteractiveDataCurrent_adb6408e-09d2-4fdc-b437-7acb8ee5b312_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/2020/dei-2020-01-31.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_country_US_49399ea3-b8bf-4a63-a363-f922753d5b08_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/2020/country-2020-01-31.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_cgnx_NoncurrentDeferredTaxAssetsDeprecation_33141df6-5460-4d47-a66a-f3f133908586_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-20201231.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_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice_aa536571-b143-4980-a895-638a374b84b6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_NetCashProvidedByUsedInOperatingActivitiesAbstract_bc5c4a53-f506-4701-bfd9-de21d3cb5172_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StockholdersEquityNoteDisclosureTextBlock_d9402c4e-f815-4610-8d5f-68b38bd9f5c9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock_0b638482-95c6-4106-bda1-8ff86a8e2d74_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy_95614e65-fc99-4837-88d2-60366a59655e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_MovementInValuationAllowancesAndReservesRollForward_772fa772-11bc-4128-a4cd-8207f2acc0d3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent_494b15a9-4d89-4425-89d7-69f418d3cd40_terseLabel_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent" xlink: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 Act</link:label>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent_label_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent" xlink: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, Discrete Tax Expense, Tax And Jobs Act, Percent</link:label>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent_documentation_en-US" xlink:label="lab_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent" 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, Discrete Tax Expense, Percent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent" xlink:href="cgnx-20201231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent" xlink:to="lab_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_CurrentForeignTaxExpenseBenefit_17db8374-d468-47cf-a874-a0e97ecb74d1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_921ef6f7-1681-43cf-b105-9cc738ba56f0_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-20201231.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_us-gaap_RestructuringReserveTranslationAdjustment_1eac745d-983e-4cb4-ac58-89c2ef4499bb_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DerivativeTable_015a7bb2-99e1-47cf-b9c3-67cf4dbae87a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StatementOfStockholdersEquityAbstract_51e63878-95d3-4279-b1e1-73e6466a8adb_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_DeferredIncomeTaxLiabilities_0901d7a5-40ed-4151-8b50-a07deb9d19b3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AllowanceForDoubtfulAccountsReceivableRollforward_aaf381d1-1568-41f0-8aa8-4c28dff844cc_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AdvertisingCostsPolicyTextBlock_7b84379a-c333-4c4a-9a1e-cb8082bbd66c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_d2a84b49-a0e3-4484-9bf7-8e04b2b3a885_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-20201231.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_NumberOfReportableSegments_c4d090e1-e3a0-425e-96e7-7958d062c1de_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1_fd94e4d2-fe04-4615-af3a-27261e7245ce_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ValuationAllowancesAndReservesChargedToCostAndExpense_8b1015b1-fe34-4b66-8bd3-4bc625f2f764_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ResearchAndDevelopmentExpenseMember_8d8492d5-ab71-40e6-b54e-5d3b9e2eb95f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_NondesignatedMember_df1528cc-b0d4-4177-bb1c-f80a0a48634e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccruedLiabilitiesMember_00cf1a66-c2a0-4511-96a3-2ca8de485c86_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccountsReceivableNetCurrent_21db9c52-b489-4277-9c4a-5dbbb33e2042_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 $831 and $530 in 2020 and 2019, 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LesseeOperatingLeaseLiabilityPaymentsDue_2a4f4fcd-0334-43fb-9be8-66f5aaac44fb_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_a29fb026-2d85-4a1d-acf0-ffe384311b3a_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-20201231.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_OperatingLeaseLeaseIncome_6fed36f1-b567-4b27-a53f-3f40cf4e7c94_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock_fd4ab882-4768-4317-8dbf-37f977316df4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_TrademarksMember_ef70b6a6-95c3-48ed-b3c1-0ea578a47f44_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear_1038e53d-c3a4-4e99-831b-e458f0911586_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PaymentsForRestructuring_e7255cc0-e8b2-4ec6-aea9-e5eb36aa6541_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_Cash_b5d27caf-5536-4ae8-8d00-dbe428bf6439_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_c884423e-7144-47e7-b23a-1e2f1b123b0f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_DocumentTransitionReport_663f73d3-4bd4-430a-b030-cc35f042efe3_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/2020/dei-2020-01-31.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_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_ab7aa9f4-ef3e-440b-bc9a-d2df19d90305_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther_6a9e51bb-2d93-4327-b08d-55f494f7f5ef_negatedTerseLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther" 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">Other liabilities</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther" xlink: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, Noncurrent Liabilities, Other</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeFairValueOfDerivativeAsset_0c53ad0f-03bf-4dc6-a57e-bda23a762467_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CapitalizedContractCostGross_dcfbfc8d-9fab-4247-9fb7-662cda774d3d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent_ecab84ca-2b6c-4d09-ad43-a757d5d826ef_negatedTerseLabel_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent" 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-current operating lease liabilities</link:label>
    <link:label id="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent_label_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent" xlink: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, Operating Lease, Liability, Noncurrent</link:label>
    <link:label id="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent_documentation_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent" 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">Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Liability, Noncurrent</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent" xlink:to="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueInputsLevel2Member_97ce84fc-5447-4907-8e8f-408da1150056_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_LiabilitiesFairValueDisclosureAbstract_21968fb4-cb86-4640-94e2-b87d60c94fd9_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_5ad0c28b-2efc-4a1b-b127-1587192e8e6d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_DerivativeAssetNotionalAmount_7d7f2766-dd63-4bc7-ae45-c8306fd3d198_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_GreaterChinaMember_fa91576f-3cda-49db-ab4f-1ae28fd94d42_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_4e1b2569-735b-4a87-85dc-aa963e419215_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-20201231.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_us-gaap_SubsequentEventLineItems_0d99b63a-7d40-4b37-81b7-accebadc42f7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_CompanyContributionsVestAtEndOfThreeYears_780588ad-5ded-49c5-9ff5-43469dea6dba_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-20201231.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_srt_CumulativeEffectPeriodOfAdoptionAxis_d3331ed4-861d-4b3c-8a5e-0b6fcd814c3f_terseLabel_en-US" xlink:label="lab_srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cumulative Effect, Period of Adoption [Axis]</link:label>
    <link:label id="lab_srt_CumulativeEffectPeriodOfAdoptionAxis_label_en-US" xlink:label="lab_srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cumulative Effect, Period of Adoption [Axis]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAxis"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:to="lab_srt_CumulativeEffectPeriodOfAdoptionAxis" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock_8beb1b74-fc48-47ce-ad41-32c17df79188_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EarningsPerShareBasic_d73da874-5a4e-41fc-be01-7bb7659e2a0f_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_7ebc552d-bc69-464a-a6d2-aad343e26501_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BuildingImprovementsMember_180858e8-a8c8-43ff-acf8-8e7fd0671ff7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_4a78c224-20fe-4beb-bf85-bbc69f335b00_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityFileNumber_33cb91c5-47cd-4d57-aa41-a76b330ab904_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/2020/dei-2020-01-31.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_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_79a3f872-f787-4e9b-a2f3-0e08f2a81ad2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan_da9d4332-ba4b-412c-b393-4445720e88c7_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-20201231.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_7ed2a98f-be9a-425d-be64-3b3cac06ad27_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-20201231.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_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_c409a3b1-de28-4078-b095-09843c76678a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CommonStockValueOutstanding_b0a663c2-2d29-4a9a-982e-378513786a0f_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 2020 and 2019, respectively, issued and outstanding: 175,790 and 172,440 shares in 2020 and 2019, 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_f1ceba2b-7349-47d5-8571-c157ab298b00_terseLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink: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_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink: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, Accumulated Gross Unrealized Gain, before Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:to="lab_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AllocatedShareBasedCompensationExpense_b140356f-4eb4-43d5-a9bf-7c100ebc2b83_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BalanceSheetLocationAxis_23d837c8-8a41-4812-b8e5-de069f2f5409_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_GoodwillAndIntangibleAssetsDisclosureAbstract_0260413a-7175-4a8d-9e77-7410b968c750_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_DocumentAnnualReport_4508ecec-6485-4341-ac0b-d2688dddb050_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/2020/dei-2020-01-31.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_cgnx_CompanyContributionsVestAtEndOfFourYears_dce18b94-3cae-4cc7-8b33-cff940e6f01c_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-20201231.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_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_13a827fa-ba58-4b35-9c37-a4aac978c950_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_Customer1Member_9e94a60e-034e-452a-ab9b-d869a7e619d5_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-20201231.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_currency_TWD_7a0cca1b-2f79-4248-b23e-32b0789d7421_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/2020/currency-2020-01-31.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_currency_AllCurrenciesDomain_f678a017-a7a1-4e4f-8fa3-f00ea4e63526_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/2020/currency-2020-01-31.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_CompensationAndRetirementDisclosureAbstract_fa61a0bc-6b95-47d2-a78b-7a37b2b54430_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_SubsequentEventTable_6e691cc4-e477-4ccb-a2d8-8b5e85047e9c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StockOptionPlanExpense_36d6e847-4d7d-4eeb-857e-fd966bbebadf_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits_dbb3b1b5-1970-40c9-ae18-876b75e2f21e_negatedTerseLabel_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits" 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">Deferred revenue and customer deposits</link:label>
    <link:label id="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits_label_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits" xlink: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, Current Liabilities, Deferred Revenue and Customer Deposits</link:label>
    <link:label id="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits_documentation_en-US" xlink:label="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits" 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">Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities, Deferred Revenue and Customer Deposits</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits" xlink:to="lab_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock_7263b200-44ee-4c99-a651-65d8a2dcf56b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_IncreaseDecreaseInContractWithCustomerAsset_a2b33e4f-1d66-4649-aa08-9b315f0e939b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_c9857443-c476-4e81-ad9d-e583f643b25f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_USTreasuryBillSecuritiesMember_516eaac9-ae5c-4c7d-af3d-37d6e9cadbb1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_2ff2f615-9bac-4c74-b25f-f205306ab5d5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_61851528-3f80-4925-a65c-f7e120b1d12e_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-20201231.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_IncreaseDecreaseInAccountsReceivable_9fddbf44-a4f3-4fcc-9f8d-3a7a4511b3b6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StatementOfIncomeAndComprehensiveIncomeAbstract_a67f2297-d8f3-413f-ae07-db7bc0bfa52a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ConcentrationRiskTypeDomain_7521a7e2-6bdf-47bc-a8f2-af48909ce660_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LiabilitiesAndStockholdersEquity_e4814edf-5755-400d-b148-bb01849a5f8f_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccumulatedOtherComprehensiveIncomeLossNetOfTax_4eda2ecd-35a2-455f-b2f5-758fca632a8e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_IncomeTaxDisclosureTextBlock_bc12b7ce-1b3c-41eb-8dcb-92fc06f2c848_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_Repurchasedsharestotalcost_0d10077b-3006-47ef-9bdf-098f2e4a8f5c_terseLabel_en-US" xlink:label="lab_cgnx_Repurchasedsharestotalcost" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchased shares, total cost</link:label>
    <link:label id="lab_cgnx_Repurchasedsharestotalcost_label_en-US" xlink:label="lab_cgnx_Repurchasedsharestotalcost" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Repurchased shares, total cost</link:label>
    <link:label id="lab_cgnx_Repurchasedsharestotalcost_documentation_en-US" xlink:label="lab_cgnx_Repurchasedsharestotalcost" 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">Repurchased shares, total cost</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Repurchasedsharestotalcost" xlink:href="cgnx-20201231.xsd#cgnx_Repurchasedsharestotalcost"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_Repurchasedsharestotalcost" xlink:to="lab_cgnx_Repurchasedsharestotalcost" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations_89e23be3-841e-4937-927c-8be3a6b2d7e3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_b960f145-b8fd-4980-8a8a-7e4a622138d4_totalLabel_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" 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">Purchase price</link:label>
    <link:label id="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_label_en-US" xlink:label="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink: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, Goodwill, and Liabilities Assumed, Net</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:to="lab_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DeferredTaxLiabilitiesAbstract_b9fc22b7-259c-472c-8061-0f38b3524691_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">Non-current 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_TaxyearsforAPAagreement_801edce9-b3b4-4160-a137-81af09730928_terseLabel_en-US" xlink:label="lab_cgnx_TaxyearsforAPAagreement" xlink: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 years for APA agreement</link:label>
    <link:label id="lab_cgnx_TaxyearsforAPAagreement_label_en-US" xlink:label="lab_cgnx_TaxyearsforAPAagreement" xlink: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 years for APA agreement</link:label>
    <link:label id="lab_cgnx_TaxyearsforAPAagreement_documentation_en-US" xlink:label="lab_cgnx_TaxyearsforAPAagreement" 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">Tax years for APA agreement</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_TaxyearsforAPAagreement" xlink:href="cgnx-20201231.xsd#cgnx_TaxyearsforAPAagreement"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_TaxyearsforAPAagreement" xlink:to="lab_cgnx_TaxyearsforAPAagreement" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_DeferredTaxAssetsForeignTaxStructureChange_bd2e5a65-4739-4bb7-85e3-9c55dd942afe_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-20201231.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_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_21ced7fb-2d72-4105-aa16-120209431021_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_7473a2a2-59e7-4757-ba9a-64fb221c08da_verboseLabel_en-US" xlink:label="lab_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount" 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 not included in calculation of diluted net loss per share (in shares)</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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ProceedsFromSaleMaturityAndCollectionsOfInvestments_80992b7f-cb46-41d0-acef-9ddcf50d9cbd_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_CorporateBondsFairValueDisclosure_f9016fb2-1c47-49f0-a7b2-1c369013c001_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-20201231.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_CurrentIncomeTaxExpenseBenefit_48a6e4b0-0698-43b1-9167-4144d5f63ee6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions_949dd49e-c9b2-475f-a756-bb31d85a8d04_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions_64747baf-3e4a-4426-be39-f36bc427d974_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_IndemnificationProvisionsTextBlock_c0444701-6c19-4f7e-b7fb-a56849e20298_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-20201231.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_us-gaap_FiniteLivedIntangibleAssetUsefulLife_7021071e-be53-47a5-b408-c00146a4eafd_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_EquityComponentDomain_4e806afc-d459-47f8-a34c-207179b36a66_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_CurrencytranslationadjustmentAbstract_e151e671-aab3-4363-b5e2-64b009a02b31_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-20201231.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_cgnx_RepurchaseProgramOctober2018Member_3fa1c25b-4464-4d74-815c-450f63142275_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-20201231.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_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_5ff90397-f5ed-46f2-aaa5-67f394dbdcc2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_GrossProfit_cb6d4210-618a-4817-9489-3e194378d559_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_e3e59a7c-f90c-4e2d-875b-0312f678698f_terseLabel_en-US" xlink:label="lab_us-gaap_GrossProfit" xlink: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 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PropertyPlantAndEquipmentNet_4f01ddb5-5461-4050-8726-90b0d51c531d_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_dcb3b9dc-bc76-4695-a2b6-1c65eeed093e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityTaxIdentificationNumber_f11f5e25-baf7-42e1-9a82-196f443606eb_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/2020/dei-2020-01-31.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_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_f29bdbfc-f203-4b47-8744-96d5ea33496a_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-20201231.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_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock_4b829bbf-fb9e-472c-8a45-21b37852b21d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_NetIncomeLoss_082da2ed-a632-4b6c-a014-6e778fbfdc6e_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_aef31c2c-eea1-4cf8-8c9a-874ce107ea97_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_f4c86cde-c58e-483d-b0a6-2bb16dfda314_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract_438de815-674c-4c66-a3d5-ff969aca43c5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InventoryDisclosureTextBlock_a5781c76-f46f-4201-ae9e-d7002c66e93a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_CurrentFiscalYearEndDate_92e51358-ee9e-4222-91db-dee835c35bbd_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/2020/dei-2020-01-31.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_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_e0d50f8e-115a-4af6-a852-5a78841192d2_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 non-current 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-20201231.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_ValuationAllowancesAndReservesAdjustments_2d733cd8-a44d-4c96-8656-63fc9b3282c0_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_e9113247-ddb5-49a5-aaaa-3b642b9e280e_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-20201231.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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_bb4f33a3-b6d4-4eed-a709-a065f357b288_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DevelopedTechnologyRightsMember_545bb3c5-864d-43e2-8a45-b7136bf4b4ca_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CashAndCashEquivalentsAbstract_5533a79f-2646-43dd-854b-92b7582ee412_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_c8803ff7-c8b4-45d3-aae0-d7e02c0cac0a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_726545b5-6393-409d-96b6-961e946358ef_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_currency_EUR_ba741d98-6428-43bc-bb64-41df3d4049a5_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/2020/currency-2020-01-31.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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod_2d57316a-f6ff-446b-b3ee-a2b9fc8d7ad7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessAcquisitionAcquireeDomain_4c6ccd12-1107-4a63-a8f2-267178549e45_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_72559cc3-1cc4-4229-bc04-29ec566e69a6_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-20201231.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_us-gaap_PropertyPlantAndEquipmentLineItems_3067e5b9-57e1-4a77-9422-5cf6ed1f7101_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_PropertyPlantAndEquipmentTypeDomain_845c6ae5-95e2-4164-aae5-694807f308d7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_d56c5550-507a-4f2b-9981-3aa49c853aa2_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-20201231.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_PropertyPlantAndEquipmentTextBlock_efd0c575-3f16-4670-afea-ffc14d46d1d4_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_USTreasurySecuritiesMember_6e6eb514-1bfe-48a1-93ff-08a0d9ffc2cc_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_OpentaxyearUnitedStatesInternalRevenueService_3d47208d-7d43-4972-9a36-a8d5568a630e_terseLabel_en-US" xlink:label="lab_cgnx_OpentaxyearUnitedStatesInternalRevenueService" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Open tax year united states internal revenue service</link:label>
    <link:label id="lab_cgnx_OpentaxyearUnitedStatesInternalRevenueService_label_en-US" xlink:label="lab_cgnx_OpentaxyearUnitedStatesInternalRevenueService" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Open tax year United States Internal Revenue Service</link:label>
    <link:label id="lab_cgnx_OpentaxyearUnitedStatesInternalRevenueService_documentation_en-US" xlink:label="lab_cgnx_OpentaxyearUnitedStatesInternalRevenueService" 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">Open tax years open to examination within the United States by the Internal Revenue Service</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OpentaxyearUnitedStatesInternalRevenueService" xlink:href="cgnx-20201231.xsd#cgnx_OpentaxyearUnitedStatesInternalRevenueService"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_OpentaxyearUnitedStatesInternalRevenueService" xlink:to="lab_cgnx_OpentaxyearUnitedStatesInternalRevenueService" xlink:type="arc" order="1"/>
    <link:label id="lab_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_a87aaffc-495c-4423-89a0-6b4ab9720758_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_8a0f74b1-3855-43be-939a-0914d7fe6829_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-20201231.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_FiniteLivedIntangibleAssetsGross_6b05c4ce-daa2-4d84-b54f-b645ff571eca_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_Opentaxyearvarioustaxingauthorities_1ec6d415-ea30-48ac-af87-13d939d76578_terseLabel_en-US" xlink:label="lab_cgnx_Opentaxyearvarioustaxingauthorities" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Open tax year, various taxing authorities</link:label>
    <link:label id="lab_cgnx_Opentaxyearvarioustaxingauthorities_label_en-US" xlink:label="lab_cgnx_Opentaxyearvarioustaxingauthorities" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Open tax year, various taxing authorities</link:label>
    <link:label id="lab_cgnx_Opentaxyearvarioustaxingauthorities_documentation_en-US" xlink:label="lab_cgnx_Opentaxyearvarioustaxingauthorities" 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">Open tax year, various taxing authorities</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Opentaxyearvarioustaxingauthorities" xlink:href="cgnx-20201231.xsd#cgnx_Opentaxyearvarioustaxingauthorities"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_cgnx_Opentaxyearvarioustaxingauthorities" xlink:to="lab_cgnx_Opentaxyearvarioustaxingauthorities" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_77c747d7-d7d1-4314-853c-9661aeb11d98_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ProvisionForDoubtfulAccounts_4c2d5be2-f82e-44a1-930a-3fadd8314fb8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax_0b62235f-c3f0-44bc-8a27-ad6fdbb368a0_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_4f977749-6e32-4e9d-8795-8b81672fffc3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PreferredStockValueOutstanding_1aafbe8b-4854-44ad-a7ba-337cef57dcca_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 2020 and 2019, 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue_e12fa86e-26f3-41b5-91c4-834206a646dc_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_CurrencyAxis_e705d62a-a173-4c24-a968-790f516f159a_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_800e703a-a5a6-452f-88fe-8bddb297e7f4_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-20201231.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_ProductLiabilityContingencyTable_6e12a799-9dd0-4d02-abe3-b3cc586a92c8_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_GViVenturesInc.Member_49dac4b8-167c-4724-82d9-dca0ae6b0e76_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-20201231.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_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_4f4b7fd6-75e2-482d-958a-d70017c441dd_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LesseeOperatingLeaseLiabilityMaturityTableTextBlock_69d09cfc-7b02-4611-88a0-e595a8f1957e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_WeightedAverageNumberOfSharesOutstandingBasic_83f254ca-b7dd-4e72-9384-1324f063cbe1_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_9956190a-600e-425f-ab13-67d6491064a1_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_834aaabb-2f5b-475a-b27e-be8ef86a91f6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dei_EntityWellKnownSeasonedIssuer_fde4a202-c8fa-41e6-85ca-bce908e1c578_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/2020/dei-2020-01-31.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_RevenueFromContractWithCustomerTextBlock_6e7e2412-09e2-465a-b6ea-89e52f4d4cd6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_DeferredTaxAssetsOperatingLossCarryforwardsForeign_8f70150a-58ab-4833-85d2-863fe5b26091_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CashAndCashEquivalentsPolicyTextBlock_3f0d8a6d-9670-4b2c-8dcc-1bb95d9de06b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ForeignCurrencyTransactionGainLossBeforeTax_9bcc3c0a-3946-471e-a6e2-d13925b26652_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_InventoryPolicyTextBlock_c4ab01ff-47c7-42a1-adda-24222b78e54c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IncomeTaxExpenseBenefit_9fa28990-7ac2-479d-a268-9b3836490bf0_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_b013321b-9156-49ba-af41-f50d1fded85c_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_a4ddfe6d-5f3e-4eab-a239-5ad1136bccac_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_aa696096-dc83-4236-afa1-ad67a9ade828_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_1bf9c877-b6a8-4802-a726-40ffa514dc7c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PropertyPlantAndEquipmentPolicyTextBlock_4be2daa7-886b-4401-8dd5-33a9e2bf3af5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_5256b55e-bda8-4d04-b135-626fb80fe08d_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cgnx_AgencyBondsFairValueDisclosure_ae555085-cfd2-4ec2-9440-046fc45a440a_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-20201231.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_dei_LocalPhoneNumber_f3ca8438-dce3-4264-844e-15b31507064a_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/2020/dei-2020-01-31.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_PaymentsToAcquireBusinessesGross_30c39e60-ecc0-4ec8-adf6-77b52dd1de07_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract_d0c98183-8392-4686-9ee8-6bdbdd49e4f3_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_AmericasMember_35fdd335-087e-4c10-a046-a442d2abd179_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_srt_CumulativeEffectPeriodOfAdoptionDomain_b5cff30f-56cd-4a6c-8643-d1394841275f_terseLabel_en-US" xlink:label="lab_srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:role="http://www.xbrl.org/2003/role/terseLabel" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cumulative Effect, Period of Adoption [Domain]</link:label>
    <link:label id="lab_srt_CumulativeEffectPeriodOfAdoptionDomain_label_en-US" xlink:label="lab_srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:role="http://www.xbrl.org/2003/role/label" xlink:type="resource" xmlns:xml="http://www.w3.org/XML/1998/namespace" xml:lang="en-US">Cumulative Effect, Period of Adoption [Domain]</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionDomain"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:to="lab_srt_CumulativeEffectPeriodOfAdoptionDomain" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_ef942f5c-02c1-4857-b14f-befbb6b02b71_negatedLabel_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" 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 Unrealized Losses</link:label>
    <link:label id="lab_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_label_en-US" xlink:label="lab_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink: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, Accumulated Gross Unrealized Loss, before Tax</link:label>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:labelArc xlink:arcrole="http://www.xbrl.org/2003/arcrole/concept-label" xlink:from="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:to="lab_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax" xlink:type="arc" order="1"/>
    <link:label id="lab_us-gaap_DerivativeLineItems_109bec3e-199e-4e9c-a7e5-78cb9918cc9b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock_04d274eb-3477-4a72-be98-015662c094ae_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ProductCostOfRevenueMember_73bd48b7-78ab-4088-b465-9ae008a88cbd_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-20201231.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_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_14ba7c59-37bf-4232-9c56-0c724834ece6_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock_648f7f5e-ea88-4297-9063-1936049dd7bc_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="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_StockIssuedDuringPeriodValueStockOptionsExercised_7fb2604e-08fd-47bd-a601-0959631ea6a5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh_1cb18de8-e5ee-49e2-b72c-3adf85187a6e_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfFiniteLivedIntangibleAssetsTable_ccaf6e62-408a-436c-b845-0dc6fa2e067a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:label id="lab_us-gaap_AwardTypeAxis_79e5307d-d12b-4537-8066-2950c6dbcfe7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_2db33a06-844d-4141-bea6-f81f8f1aebc5_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_aba233b1-58ca-4e71-b418-9f9f3e201e87_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PrepaidExpensesAndOtherCurrentAssetsMember_1b9484f2-abbe-4d10-95c4-d6c3f8ec5343_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ComputerHardwareAndSoftwareMember_c41b4da5-2b81-4f83-b453-40749e9f932c_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-20201231.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_RetainedEarningsMember_cdf3aff2-11e1-41f5-a4dd-fc3cac9a9209_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_PreferredStockSharesOutstanding_220aae70-6ef6-4db7-987d-5c3a602f97ec_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_PaymentForContingentConsiderationLiabilityFinancingActivities_5031605f-6902-497e-9af8-aa439d681ffe_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ProductWarrantyPeriod_b284129c-7c8b-4906-815b-eafe59a7782e_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-20201231.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_SignificantAccountingPoliciesTextBlock_02e504d9-cec0-4dcf-b296-e0c326a7d444_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_NetCashProvidedByUsedInInvestingActivities_63e7955f-e2e1-45a9-bb99-e4f1b9ba98b2_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_PaymentsToAcquireInvestments_ae7ddac0-ae7c-40b3-995a-2abf3c008839_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2_ae5f0409-d2e2-4d2e-982d-4b3cb3d5b2d7_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_2f3b0ba1-eec6-4555-a9e2-77dde0772e7b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock_d00e65bc-b3b1-454c-a1a3-69bee8a4035b_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ScheduleOfRestructuringReserveByTypeOfCostTextBlock_98f5a0dc-5a09-4f41-8310-5af923d2cade_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice_b2f5f538-8abe-4daa-960f-52ac33f5305c_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock_163937e8-b7f6-487d-b0d8-681b8101a7eb_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_EarningsPerShareTextBlock_fe700ab8-4814-46e9-9440-3a744fb8b80a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent_4e6b3fea-d83b-4d51-8277-f0fb27952f51_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_LiabilitiesCurrentAbstract_5cf10408-7d13-4cbd-920c-dab2878dd03a_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_6cd328ad-cf19-4272-afc1-c68a0b09480d_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_71009e24-b20e-4cbf-9250-6daea81c735e_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_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice_7cc793e8-139e-4700-b9da-1fd57dd06c00_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_dea499df-2f51-485d-a401-552e40e71b5a_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">Non-current 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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock_69184a57-22e9-4cf5-aa48-866838329697_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_StatementOfFinancialPositionAbstract_66207b94-68e6-462f-8d8a-e5be7171e1df_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_us-gaap_EarningsPerShareBasicAbstract_3a0b1594-04c1-49b9-9143-d49e05e9c361_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="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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:labelLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EX-101.PRE
<SEQUENCE>12
<FILENAME>cgnx-20201231_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 2021 Workiva-->
<!--r:efc8e161-eaa0-41a1-b62b-bbec49e61a75,g:1ad2e941-41d2-4cfb-86c0-34f5fd33bff4-->
<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-20201231.xsd#CoverPage"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CoverPage" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_CoverAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentType_5155990b-8320-4e75-8c57-02d4becd6114" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_DocumentType"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_DocumentType_5155990b-8320-4e75-8c57-02d4becd6114" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentAnnualReport_7803fcfa-698e-41d5-b0da-bbd7e2a28b60" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_DocumentAnnualReport"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_DocumentAnnualReport_7803fcfa-698e-41d5-b0da-bbd7e2a28b60" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentPeriodEndDate_b1f46522-5c02-43e3-80ea-7ff45958ce24" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_DocumentPeriodEndDate"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_DocumentPeriodEndDate_b1f46522-5c02-43e3-80ea-7ff45958ce24" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentTransitionReport_c201564a-4356-4b7f-8731-e12f5bac76c0" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_DocumentTransitionReport"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_DocumentTransitionReport_c201564a-4356-4b7f-8731-e12f5bac76c0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFileNumber_49f47493-5208-4290-8459-24ce6d9c42a8" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityFileNumber"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityFileNumber_49f47493-5208-4290-8459-24ce6d9c42a8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityRegistrantName_3e6e60d0-a7b0-484a-8c0d-25a5f06d91c2" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityRegistrantName"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityRegistrantName_3e6e60d0-a7b0-484a-8c0d-25a5f06d91c2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityIncorporationStateCountryCode_9f3dd8b2-f136-4c28-9b2b-24f0888b5267" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityIncorporationStateCountryCode"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityIncorporationStateCountryCode_9f3dd8b2-f136-4c28-9b2b-24f0888b5267" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityTaxIdentificationNumber_dbf3d23c-6873-40a8-b320-75109893daa7" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityTaxIdentificationNumber"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityTaxIdentificationNumber_dbf3d23c-6873-40a8-b320-75109893daa7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressAddressLine1_e31a7fb4-5eff-4f4f-b98f-92f8bcc2f5ef" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityAddressAddressLine1"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityAddressAddressLine1_e31a7fb4-5eff-4f4f-b98f-92f8bcc2f5ef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressCityOrTown_f3113297-89ac-4b69-97c6-34ea734e0764" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityAddressCityOrTown"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityAddressCityOrTown_f3113297-89ac-4b69-97c6-34ea734e0764" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressStateOrProvince_9115eb7c-284c-4e7c-afdf-ce7dda2560bf" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityAddressStateOrProvince"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityAddressStateOrProvince_9115eb7c-284c-4e7c-afdf-ce7dda2560bf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityAddressPostalZipCode_63aaed15-5fd1-46a5-9cd1-bb8d64dbd550" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityAddressPostalZipCode"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityAddressPostalZipCode_63aaed15-5fd1-46a5-9cd1-bb8d64dbd550" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CityAreaCode_be34d9d0-d3bd-4f14-85b5-b84cd2e1124f" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_CityAreaCode"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_CityAreaCode_be34d9d0-d3bd-4f14-85b5-b84cd2e1124f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_LocalPhoneNumber_2054069c-020d-460a-9740-d994b6b3f6b9" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_LocalPhoneNumber"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_LocalPhoneNumber_2054069c-020d-460a-9740-d994b6b3f6b9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_Security12bTitle_67cbaaac-8ca6-49c5-98ab-bb931873dc53" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_Security12bTitle"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_Security12bTitle_67cbaaac-8ca6-49c5-98ab-bb931873dc53" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_TradingSymbol_afffa248-2789-4af7-bb69-2c749c2a85b5" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_TradingSymbol"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_TradingSymbol_afffa248-2789-4af7-bb69-2c749c2a85b5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_SecurityExchangeName_ac593f0e-db39-4d15-be6e-cc7da9437d87" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_SecurityExchangeName"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_SecurityExchangeName_ac593f0e-db39-4d15-be6e-cc7da9437d87" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityWellKnownSeasonedIssuer_13cc37f7-4b85-4d1e-a8ff-9185a7b110ca" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityWellKnownSeasonedIssuer"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityWellKnownSeasonedIssuer_13cc37f7-4b85-4d1e-a8ff-9185a7b110ca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityVoluntaryFilers_6e2364c8-34a2-41b0-9e96-65bd84a7de45" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityVoluntaryFilers"/>
    <link:presentationArc order="19" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityVoluntaryFilers_6e2364c8-34a2-41b0-9e96-65bd84a7de45" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCurrentReportingStatus_ef107eee-d722-4858-aba2-7a50174d0f90" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityCurrentReportingStatus"/>
    <link:presentationArc order="20" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityCurrentReportingStatus_ef107eee-d722-4858-aba2-7a50174d0f90" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityInteractiveDataCurrent_4677612d-4c9d-442a-93c9-1987bedfdab4" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityInteractiveDataCurrent"/>
    <link:presentationArc order="21" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityInteractiveDataCurrent_4677612d-4c9d-442a-93c9-1987bedfdab4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityFilerCategory_d41c2b0d-4b2d-45ac-8194-4baceb66e1f9" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityFilerCategory"/>
    <link:presentationArc order="22" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityFilerCategory_d41c2b0d-4b2d-45ac-8194-4baceb66e1f9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntitySmallBusiness_8afdff05-632e-44b6-9487-01c549856e71" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntitySmallBusiness"/>
    <link:presentationArc order="23" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntitySmallBusiness_8afdff05-632e-44b6-9487-01c549856e71" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityEmergingGrowthCompany_29740979-ea36-482e-87f1-3a7ffef3f3a8" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityEmergingGrowthCompany"/>
    <link:presentationArc order="24" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityEmergingGrowthCompany_29740979-ea36-482e-87f1-3a7ffef3f3a8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_IcfrAuditorAttestationFlag_e9d04b90-97dc-4452-91e5-989c80ebe0be" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_IcfrAuditorAttestationFlag"/>
    <link:presentationArc order="25" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_IcfrAuditorAttestationFlag_e9d04b90-97dc-4452-91e5-989c80ebe0be" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityShellCompany_230886e4-cc5e-4d0d-a166-d5750919ad1e" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityShellCompany"/>
    <link:presentationArc order="26" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityShellCompany_230886e4-cc5e-4d0d-a166-d5750919ad1e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityPublicFloat_344a8b78-6685-41b9-a250-31ce31e15521" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityPublicFloat"/>
    <link:presentationArc order="27" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityPublicFloat_344a8b78-6685-41b9-a250-31ce31e15521" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCommonStockSharesOutstanding_3e267f91-acc5-45e7-bf9c-6bbccbd80e1c" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityCommonStockSharesOutstanding"/>
    <link:presentationArc order="28" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityCommonStockSharesOutstanding_3e267f91-acc5-45e7-bf9c-6bbccbd80e1c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_EntityCentralIndexKey_b541b8c8-668c-4964-b084-2c36560a76a8" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_EntityCentralIndexKey"/>
    <link:presentationArc order="29" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_EntityCentralIndexKey_b541b8c8-668c-4964-b084-2c36560a76a8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_CurrentFiscalYearEndDate_e26be975-e1f2-4c65-86af-f1c7352865b3" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_CurrentFiscalYearEndDate"/>
    <link:presentationArc order="30" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_CurrentFiscalYearEndDate_e26be975-e1f2-4c65-86af-f1c7352865b3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentFiscalYearFocus_0647456b-5cec-45a3-ab85-a8882d5b8425" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_DocumentFiscalYearFocus"/>
    <link:presentationArc order="31" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_DocumentFiscalYearFocus_0647456b-5cec-45a3-ab85-a8882d5b8425" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_DocumentFiscalPeriodFocus_69e185d4-1fcc-4019-850a-aca40a0a4ee0" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_DocumentFiscalPeriodFocus"/>
    <link:presentationArc order="32" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_DocumentFiscalPeriodFocus_69e185d4-1fcc-4019-850a-aca40a0a4ee0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_dei_AmendmentFlag_116a75e3-361b-4fe8-b247-dd2c87b85025" xlink:href="https://xbrl.sec.gov/dei/2020/dei-2020-01-31.xsd#dei_AmendmentFlag"/>
    <link:presentationArc order="33" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_dei_CoverAbstract_17a05bfe-8fcc-4ff0-a2ea-cfe745596261" xlink:to="loc_dei_AmendmentFlag_116a75e3-361b-4fe8-b247-dd2c87b85025" 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-20201231.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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_0f9923c4-c736-4710-893c-27ee61690091" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_0f9923c4-c736-4710-893c-27ee61690091" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostOfGoodsAndServicesSold_bcdf7d99-7bc5-4bbf-8fe0-9651ffe7f115" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_CostOfGoodsAndServicesSold_bcdf7d99-7bc5-4bbf-8fe0-9651ffe7f115" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit_7bf97275-a078-47ff-9e0f-9c3284a04875" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_GrossProfit_7bf97275-a078-47ff-9e0f-9c3284a04875" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpense_c98b5b63-59d7-4a64-a0d7-e335604b231f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpense_c98b5b63-59d7-4a64-a0d7-e335604b231f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SellingGeneralAndAdministrativeExpense_384c3a90-ec4b-429f-818d-3266941c23d1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_SellingGeneralAndAdministrativeExpense_384c3a90-ec4b-429f-818d-3266941c23d1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_3a6deb13-faeb-4ea6-84c2-febffba9426c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_RestructuringCharges_3a6deb13-faeb-4ea6-84c2-febffba9426c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_4053ed88-afa9-489a-bcf2-d1693d90a857" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_4053ed88-afa9-489a-bcf2-d1693d90a857" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss_7dde014b-d808-40fc-ad4c-f77a1b156728" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_OperatingIncomeLoss_7dde014b-d808-40fc-ad4c-f77a1b156728" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax_1d585f9c-6004-4a0c-af2f-a900144b9493" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_ForeignCurrencyTransactionGainLossBeforeTax_1d585f9c-6004-4a0c-af2f-a900144b9493" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentIncomeNonoperating_0a407170-bc90-41b3-a341-864b5152c497" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_InvestmentIncomeNonoperating_0a407170-bc90-41b3-a341-864b5152c497" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherNonoperatingIncomeExpense_e4b0552b-b779-4809-ab59-ed876d8a793b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_OtherNonoperatingIncomeExpense_e4b0552b-b779-4809-ab59-ed876d8a793b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_95521be6-dc46-44fa-b5ef-2f79639b5ee6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_95521be6-dc46-44fa-b5ef-2f79639b5ee6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_7213332e-eaf0-4727-94ae-98731b1be537" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_7213332e-eaf0-4727-94ae-98731b1be537" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_bc5a3f9e-7f5a-46ba-9912-f6a269302c06" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_NetIncomeLoss_bc5a3f9e-7f5a-46ba-9912-f6a269302c06" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasicAbstract_38972ec9-e395-4f80-b7d2-46c03a52721c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_EarningsPerShareBasicAbstract_38972ec9-e395-4f80-b7d2-46c03a52721c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasic_8d836abb-7225-464d-8ad1-9500473db1c3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_38972ec9-e395-4f80-b7d2-46c03a52721c" xlink:to="loc_us-gaap_EarningsPerShareBasic_8d836abb-7225-464d-8ad1-9500473db1c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDilutedAbstract_80ac016a-584c-4d2f-8ee5-372048f61ba3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_EarningsPerShareDilutedAbstract_80ac016a-584c-4d2f-8ee5-372048f61ba3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDiluted_c2fc5b16-2b71-4783-8104-48ab4e78021a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_80ac016a-584c-4d2f-8ee5-372048f61ba3" xlink:to="loc_us-gaap_EarningsPerShareDiluted_c2fc5b16-2b71-4783-8104-48ab4e78021a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract_c20035b0-d04f-4569-852a-90a9f0fa11bf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingAbstract_c20035b0-d04f-4569-852a-90a9f0fa11bf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_7b639bf5-807c-44f3-a897-70b2cd497945" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c20035b0-d04f-4569-852a-90a9f0fa11bf" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_7b639bf5-807c-44f3-a897-70b2cd497945" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_3c34b7c1-e75c-4e5e-8e43-132113cd2b67" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c20035b0-d04f-4569-852a-90a9f0fa11bf" xlink:to="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_3c34b7c1-e75c-4e5e-8e43-132113cd2b67" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareCashPaid_00670ff0-dc61-4de8-b647-20632576bd12" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b0118af5-9b8c-48c7-a108-cd075ceba404" xlink:to="loc_us-gaap_CommonStockDividendsPerShareCashPaid_00670ff0-dc61-4de8-b647-20632576bd12" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical" xlink:type="simple" xlink:href="cgnx-20201231.xsd#CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical"/>
  <link:presentationLink xlink:role="http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementAbstract_ec1ced84-7bfd-4fb4-b4ee-c029dda293b8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeStatementAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_d7f19eee-83b1-4fca-b99e-5892357b9246" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquityNoteStockSplitConversionRatio1"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementAbstract_ec1ced84-7bfd-4fb4-b4ee-c029dda293b8" xlink:to="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_d7f19eee-83b1-4fca-b99e-5892357b9246" 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-20201231.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_bf6da6fb-8f69-49ba-813e-d64b1a18c5b3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_82c2cd08-00eb-4e6a-85ff-ceac90e240a2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bf6da6fb-8f69-49ba-813e-d64b1a18c5b3" xlink:to="loc_us-gaap_NetIncomeLoss_82c2cd08-00eb-4e6a-85ff-ceac90e240a2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract_3599cc44-70d9-4b03-821d-71662eded416" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bf6da6fb-8f69-49ba-813e-d64b1a18c5b3" xlink:to="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParentAbstract_3599cc44-70d9-4b03-821d-71662eded416" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_d0cc2c13-8258-4851-a3ce-60126d4215b5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3599cc44-70d9-4b03-821d-71662eded416" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_d0cc2c13-8258-4851-a3ce-60126d4215b5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_5a909252-107f-4aeb-b9e2-3833ab77eef5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3599cc44-70d9-4b03-821d-71662eded416" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_5a909252-107f-4aeb-b9e2-3833ab77eef5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_1e75c725-03a3-4ad2-bcf4-a6f41f33a059" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3599cc44-70d9-4b03-821d-71662eded416" xlink:to="loc_us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent_1e75c725-03a3-4ad2-bcf4-a6f41f33a059" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CurrencytranslationadjustmentAbstract_80f0987f-a679-4d15-83cd-e13ef058184d" xlink:href="cgnx-20201231.xsd#cgnx_CurrencytranslationadjustmentAbstract"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_bf6da6fb-8f69-49ba-813e-d64b1a18c5b3" xlink:to="loc_cgnx_CurrencytranslationadjustmentAbstract_80f0987f-a679-4d15-83cd-e13ef058184d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_28c28b25-dd31-4009-b0b1-7261adf7635d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_80f0987f-a679-4d15-83cd-e13ef058184d" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_28c28b25-dd31-4009-b0b1-7261adf7635d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_38b9f3f4-3c52-44a1-a51b-36ced7d5ec88" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_80f0987f-a679-4d15-83cd-e13ef058184d" xlink:to="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent_38b9f3f4-3c52-44a1-a51b-36ced7d5ec88" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_c2305aa0-83b5-49d0-8eef-bca34a9f2b66" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bf6da6fb-8f69-49ba-813e-d64b1a18c5b3" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent_c2305aa0-83b5-49d0-8eef-bca34a9f2b66" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomeNetOfTax_9ac3c574-b1ed-41c9-be23-df716eb6f02a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bf6da6fb-8f69-49ba-813e-d64b1a18c5b3" xlink:to="loc_us-gaap_ComprehensiveIncomeNetOfTax_9ac3c574-b1ed-41c9-be23-df716eb6f02a" 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-20201231.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_82eaee05-a1d3-42b1-ba7d-ff8a673b630e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax_76a9a03d-1295-42e3-9990-cd7005da5338" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_82eaee05-a1d3-42b1-ba7d-ff8a673b630e" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax_76a9a03d-1295-42e3-9990-cd7005da5338" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_43df2a98-1480-4421-ae7e-7cd16ecf917a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_82eaee05-a1d3-42b1-ba7d-ff8a673b630e" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_43df2a98-1480-4421-ae7e-7cd16ecf917a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax_1cd738c3-855b-4d48-ae22-77fe91cc9f98" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfIncomeAndComprehensiveIncomeAbstract_82eaee05-a1d3-42b1-ba7d-ff8a673b630e" xlink:to="loc_us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax_1cd738c3-855b-4d48-ae22-77fe91cc9f98" 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-20201231.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_904619dc-c32f-42b1-b3c9-edb54487ac81" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsAbstract_a1072849-73c7-4d66-ab3f-ad1ef41d0a24" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_904619dc-c32f-42b1-b3c9-edb54487ac81" xlink:to="loc_us-gaap_AssetsAbstract_a1072849-73c7-4d66-ab3f-ad1ef41d0a24" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrentAbstract_bea4430e-4f70-408b-acd9-0375e07496a3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1072849-73c7-4d66-ab3f-ad1ef41d0a24" xlink:to="loc_us-gaap_AssetsCurrentAbstract_bea4430e-4f70-408b-acd9-0375e07496a3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_441c6364-8f3c-4f27-bc9b-e85832334371" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bea4430e-4f70-408b-acd9-0375e07496a3" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_441c6364-8f3c-4f27-bc9b-e85832334371" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_fcc26dd3-5bd8-4165-8bf3-135295438f73" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bea4430e-4f70-408b-acd9-0375e07496a3" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_fcc26dd3-5bd8-4165-8bf3-135295438f73" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableNetCurrent_30dc3417-daef-4da7-83a2-1aac7f96019e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bea4430e-4f70-408b-acd9-0375e07496a3" xlink:to="loc_us-gaap_AccountsReceivableNetCurrent_30dc3417-daef-4da7-83a2-1aac7f96019e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnbilledReceivablesCurrent_d2d582c6-0da9-44ce-a5b1-38d927734ff0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bea4430e-4f70-408b-acd9-0375e07496a3" xlink:to="loc_us-gaap_UnbilledReceivablesCurrent_d2d582c6-0da9-44ce-a5b1-38d927734ff0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet_e4eb90f6-9d28-4d6a-bddc-eab8df6f4a4b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bea4430e-4f70-408b-acd9-0375e07496a3" xlink:to="loc_us-gaap_InventoryNet_e4eb90f6-9d28-4d6a-bddc-eab8df6f4a4b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_57950766-bb24-4677-a4f0-14c328ece04a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bea4430e-4f70-408b-acd9-0375e07496a3" xlink:to="loc_us-gaap_PrepaidExpenseAndOtherAssetsCurrent_57950766-bb24-4677-a4f0-14c328ece04a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsCurrent_12fd5ac9-e395-43b9-b10b-12ed6a2dbf93" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bea4430e-4f70-408b-acd9-0375e07496a3" xlink:to="loc_us-gaap_AssetsCurrent_12fd5ac9-e395-43b9-b10b-12ed6a2dbf93" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_52749346-6d1c-4e60-9e06-872e162ead70" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1072849-73c7-4d66-ab3f-ad1ef41d0a24" xlink:to="loc_us-gaap_LongTermInvestments_52749346-6d1c-4e60-9e06-872e162ead70" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_3bcbdb3b-9307-4ae5-9f9b-86df9f449970" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1072849-73c7-4d66-ab3f-ad1ef41d0a24" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_3bcbdb3b-9307-4ae5-9f9b-86df9f449970" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseRightOfUseAsset_236e5216-aa34-4f88-9dca-6142dd20682e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1072849-73c7-4d66-ab3f-ad1ef41d0a24" xlink:to="loc_us-gaap_OperatingLeaseRightOfUseAsset_236e5216-aa34-4f88-9dca-6142dd20682e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_94879fc3-ecf5-4df9-bbca-7e17d3a9c66a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1072849-73c7-4d66-ab3f-ad1ef41d0a24" xlink:to="loc_us-gaap_Goodwill_94879fc3-ecf5-4df9-bbca-7e17d3a9c66a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_9bbf28c9-eee3-48c4-90cb-0aa6387b8803" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1072849-73c7-4d66-ab3f-ad1ef41d0a24" xlink:to="loc_us-gaap_IntangibleAssetsNetExcludingGoodwill_9bbf28c9-eee3-48c4-90cb-0aa6387b8803" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxAssetsNet_30885580-c172-4fea-bc24-ade7f53132f1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1072849-73c7-4d66-ab3f-ad1ef41d0a24" xlink:to="loc_us-gaap_DeferredIncomeTaxAssetsNet_30885580-c172-4fea-bc24-ade7f53132f1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAssetsNoncurrent_38fe6a7d-82de-41f3-9530-586579200337" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1072849-73c7-4d66-ab3f-ad1ef41d0a24" xlink:to="loc_us-gaap_OtherAssetsNoncurrent_38fe6a7d-82de-41f3-9530-586579200337" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Assets_f3dd9fa4-3df9-48c5-bc96-b565409693c7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a1072849-73c7-4d66-ab3f-ad1ef41d0a24" xlink:to="loc_us-gaap_Assets_f3dd9fa4-3df9-48c5-bc96-b565409693c7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_52175653-4a4a-467e-88cf-04a139cdab43" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_904619dc-c32f-42b1-b3c9-edb54487ac81" xlink:to="loc_us-gaap_LiabilitiesAndStockholdersEquityAbstract_52175653-4a4a-467e-88cf-04a139cdab43" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrentAbstract_b46fce98-7cf8-40b8-9709-e3ce3bc70ae3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_52175653-4a4a-467e-88cf-04a139cdab43" xlink:to="loc_us-gaap_LiabilitiesCurrentAbstract_b46fce98-7cf8-40b8-9709-e3ce3bc70ae3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsPayableCurrent_83c0e37a-bb76-4b4e-a70f-805c00e015c0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b46fce98-7cf8-40b8-9709-e3ce3bc70ae3" xlink:to="loc_us-gaap_AccountsPayableCurrent_83c0e37a-bb76-4b4e-a70f-805c00e015c0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_cc3b6c35-e354-473c-9cfa-40d421c01d08" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b46fce98-7cf8-40b8-9709-e3ce3bc70ae3" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent_cc3b6c35-e354-473c-9cfa-40d421c01d08" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedIncomeTaxesCurrent_03bf0fa9-3cab-4550-9950-f8fe78a04bec" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b46fce98-7cf8-40b8-9709-e3ce3bc70ae3" xlink:to="loc_us-gaap_AccruedIncomeTaxesCurrent_03bf0fa9-3cab-4550-9950-f8fe78a04bec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent_08d46986-d97d-40d4-aa4a-bcf8c0a4cc12" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b46fce98-7cf8-40b8-9709-e3ce3bc70ae3" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityCurrent_08d46986-d97d-40d4-aa4a-bcf8c0a4cc12" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent_fe3cd87e-dc3d-4678-a063-747ce39d9646" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b46fce98-7cf8-40b8-9709-e3ce3bc70ae3" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrent_fe3cd87e-dc3d-4678-a063-747ce39d9646" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesCurrent_f8fd0425-5731-4a63-b561-3b13b9eea2c4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b46fce98-7cf8-40b8-9709-e3ce3bc70ae3" xlink:to="loc_us-gaap_LiabilitiesCurrent_f8fd0425-5731-4a63-b561-3b13b9eea2c4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_c1190b16-38ac-4381-b247-8d5370acf99d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_52175653-4a4a-467e-88cf-04a139cdab43" xlink:to="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_c1190b16-38ac-4381-b247-8d5370acf99d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilitiesNet_ac9b849d-ac0f-4bb1-ab26-f07e02e2ac60" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_52175653-4a4a-467e-88cf-04a139cdab43" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilitiesNet_ac9b849d-ac0f-4bb1-ab26-f07e02e2ac60" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_82912186-b249-462e-8f31-ca25944b2b01" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_52175653-4a4a-467e-88cf-04a139cdab43" xlink:to="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_82912186-b249-462e-8f31-ca25944b2b01" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedIncomeTaxesNoncurrent_ec010bc7-9b16-4e5e-aa4a-cbca59243463" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_52175653-4a4a-467e-88cf-04a139cdab43" xlink:to="loc_us-gaap_AccruedIncomeTaxesNoncurrent_ec010bc7-9b16-4e5e-aa4a-cbca59243463" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherLiabilitiesNoncurrent_7d82fd7c-80c9-46a9-8434-dfc2601ef872" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_52175653-4a4a-467e-88cf-04a139cdab43" xlink:to="loc_us-gaap_OtherLiabilitiesNoncurrent_7d82fd7c-80c9-46a9-8434-dfc2601ef872" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Liabilities_f0529610-7181-454b-ad76-afdce00e9b56" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_52175653-4a4a-467e-88cf-04a139cdab43" xlink:to="loc_us-gaap_Liabilities_f0529610-7181-454b-ad76-afdce00e9b56" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingencies_dc7c391d-c7e8-453b-85e1-082a3ac43e46" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_52175653-4a4a-467e-88cf-04a139cdab43" xlink:to="loc_us-gaap_CommitmentsAndContingencies_dc7c391d-c7e8-453b-85e1-082a3ac43e46" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityAbstract_21441809-d0a1-407f-a730-174b8d1e7890" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_52175653-4a4a-467e-88cf-04a139cdab43" xlink:to="loc_us-gaap_StockholdersEquityAbstract_21441809-d0a1-407f-a730-174b8d1e7890" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockValueOutstanding_d21e7985-ed58-4d6b-8c7a-3cb937890018" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_21441809-d0a1-407f-a730-174b8d1e7890" xlink:to="loc_us-gaap_PreferredStockValueOutstanding_d21e7985-ed58-4d6b-8c7a-3cb937890018" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockValueOutstanding_f205cadc-4a08-4d66-bcd5-05ea30d76fa0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_21441809-d0a1-407f-a730-174b8d1e7890" xlink:to="loc_us-gaap_CommonStockValueOutstanding_f205cadc-4a08-4d66-bcd5-05ea30d76fa0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalCommonStock_d523f18e-0ac1-499b-90d8-6347235fad72" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_21441809-d0a1-407f-a730-174b8d1e7890" xlink:to="loc_us-gaap_AdditionalPaidInCapitalCommonStock_d523f18e-0ac1-499b-90d8-6347235fad72" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit_38747963-6b41-4fbb-904a-66b2a66237e0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_21441809-d0a1-407f-a730-174b8d1e7890" xlink:to="loc_us-gaap_RetainedEarningsAccumulatedDeficit_38747963-6b41-4fbb-904a-66b2a66237e0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_ac9b2bde-2745-42cb-a756-da6a77ad9e61" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_21441809-d0a1-407f-a730-174b8d1e7890" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax_ac9b2bde-2745-42cb-a756-da6a77ad9e61" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_b15d8666-0538-433a-828f-1948c07da28b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_21441809-d0a1-407f-a730-174b8d1e7890" xlink:to="loc_us-gaap_StockholdersEquity_b15d8666-0538-433a-828f-1948c07da28b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesAndStockholdersEquity_7c9b52c9-c134-45a4-9f0c-fe45c8ba66bb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_52175653-4a4a-467e-88cf-04a139cdab43" xlink:to="loc_us-gaap_LiabilitiesAndStockholdersEquity_7c9b52c9-c134-45a4-9f0c-fe45c8ba66bb" 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-20201231.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_5942346b-b84d-4c51-8fe8-54af32f4e3b3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementOfFinancialPositionAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_b268653a-5c07-46a8-b3d6-0cec5ceeeb5e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5942346b-b84d-4c51-8fe8-54af32f4e3b3" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesBalance_b268653a-5c07-46a8-b3d6-0cec5ceeeb5e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockParOrStatedValuePerShare_927b3222-3b16-4585-9f40-5743d9920e70" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_StatementOfFinancialPositionAbstract_5942346b-b84d-4c51-8fe8-54af32f4e3b3" xlink:to="loc_us-gaap_PreferredStockParOrStatedValuePerShare_927b3222-3b16-4585-9f40-5743d9920e70" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesAuthorized_0fa21f10-c339-4bac-bf7d-6d9648047680" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockSharesAuthorized"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_5942346b-b84d-4c51-8fe8-54af32f4e3b3" xlink:to="loc_us-gaap_PreferredStockSharesAuthorized_0fa21f10-c339-4bac-bf7d-6d9648047680" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesIssued_bdd95265-04e0-4729-85eb-71d9e524b7c8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockSharesIssued"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_5942346b-b84d-4c51-8fe8-54af32f4e3b3" xlink:to="loc_us-gaap_PreferredStockSharesIssued_bdd95265-04e0-4729-85eb-71d9e524b7c8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesOutstanding_c584a639-8006-4f88-a0f3-d33e93fccc7d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PreferredStockSharesOutstanding"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_5942346b-b84d-4c51-8fe8-54af32f4e3b3" xlink:to="loc_us-gaap_PreferredStockSharesOutstanding_c584a639-8006-4f88-a0f3-d33e93fccc7d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockParOrStatedValuePerShare_4c6599da-23e2-4f94-b8bd-f887308d7fa0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_5942346b-b84d-4c51-8fe8-54af32f4e3b3" xlink:to="loc_us-gaap_CommonStockParOrStatedValuePerShare_4c6599da-23e2-4f94-b8bd-f887308d7fa0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesAuthorized_a7f41720-f7a7-4bef-817f-d2878b9eb51f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesAuthorized"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_5942346b-b84d-4c51-8fe8-54af32f4e3b3" xlink:to="loc_us-gaap_CommonStockSharesAuthorized_a7f41720-f7a7-4bef-817f-d2878b9eb51f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued_94073abb-86e0-4b9a-8d02-fd7d45d3b2fb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesIssued"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_5942346b-b84d-4c51-8fe8-54af32f4e3b3" xlink:to="loc_us-gaap_CommonStockSharesIssued_94073abb-86e0-4b9a-8d02-fd7d45d3b2fb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesOutstanding_ef61828f-d1a9-44dd-a7a9-50114bfd8605" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockSharesOutstanding"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfFinancialPositionAbstract_5942346b-b84d-4c51-8fe8-54af32f4e3b3" xlink:to="loc_us-gaap_CommonStockSharesOutstanding_ef61828f-d1a9-44dd-a7a9-50114bfd8605" 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-20201231.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_47d4ba1d-c765-4008-bfff-9dc2c9636bda" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementOfCashFlowsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_22debebe-4bbd-408c-b75a-4ef1aabcb8be" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47d4ba1d-c765-4008-bfff-9dc2c9636bda" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivitiesAbstract_22debebe-4bbd-408c-b75a-4ef1aabcb8be" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_4697a651-50e6-4ee4-ad28-d0d037d84fa4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_22debebe-4bbd-408c-b75a-4ef1aabcb8be" xlink:to="loc_us-gaap_NetIncomeLoss_4697a651-50e6-4ee4-ad28-d0d037d84fa4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_22debebe-4bbd-408c-b75a-4ef1aabcb8be" xlink:to="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockOptionPlanExpense_11e94db3-eeba-4683-a970-54a34a302c93" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_StockOptionPlanExpense_11e94db3-eeba-4683-a970-54a34a302c93" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Depreciation_6edf8f50-7dd3-40da-9bc7-efa5663b983e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_Depreciation_6edf8f50-7dd3-40da-9bc7-efa5663b983e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnSaleOfPropertyPlantEquipment_c1ecace3-2935-4ec5-b6c8-d2656a193e9d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_GainLossOnSaleOfPropertyPlantEquipment_c1ecace3-2935-4ec5-b6c8-d2656a193e9d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AmortizationOfIntangibleAssets_2e54bd14-0b51-4a43-9573-8247ed0f425f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_AmortizationOfIntangibleAssets_2e54bd14-0b51-4a43-9573-8247ed0f425f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_eb9dae60-7f37-4b05-8137-bd7bf16e1b2e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_eb9dae60-7f37-4b05-8137-bd7bf16e1b2e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ExcessAndObsoleteInventoryCharges_69d49622-3517-4796-8289-1c061a279c3b" xlink:href="cgnx-20201231.xsd#cgnx_ExcessAndObsoleteInventoryCharges"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsToReconcileNetIncomeLossToCashProvidedByUsedInOperatingActivitiesAbstract_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_cgnx_ExcessAndObsoleteInventoryCharges_69d49622-3517-4796-8289-1c061a279c3b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_46536877-12dd-48ea-b4da-8c5f078127e0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_46536877-12dd-48ea-b4da-8c5f078127e0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_7ab4bdc9-791b-46fb-ba8a-ea11b9c22d87" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments_7ab4bdc9-791b-46fb-ba8a-ea11b9c22d87" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnSaleOfInvestments_aefcc8af-7f8d-4cb8-81d3-e65f8dd10459" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_GainLossOnSaleOfInvestments_aefcc8af-7f8d-4cb8-81d3-e65f8dd10459" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1_ddd0efb4-d485-4531-b288-67d1d92fe56d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1_ddd0efb4-d485-4531-b288-67d1d92fe56d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes_bccc258f-fb1f-42ca-9189-29998c84bf9a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_IncreaseDecreaseInDeferredIncomeTaxes_bccc258f-fb1f-42ca-9189-29998c84bf9a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_0666a7ab-f01e-4162-b278-7513e5a2ea6b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsReceivable_0666a7ab-f01e-4162-b278-7513e5a2ea6b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerAsset_296946cc-9514-4494-bcfa-19968a0220bf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_IncreaseDecreaseInContractWithCustomerAsset_296946cc-9514-4494-bcfa-19968a0220bf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInInventories_b18fe23e-3eaa-4eb1-8616-886c5b1ebd03" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_IncreaseDecreaseInInventories_b18fe23e-3eaa-4eb1-8616-886c5b1ebd03" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_e186912f-b560-45ea-8489-1e36f2fcb8ff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets_e186912f-b560-45ea-8489-1e36f2fcb8ff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccountsPayable_6a3da209-8cda-4d93-8eb5-56b0124b98db" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_IncreaseDecreaseInAccountsPayable_6a3da209-8cda-4d93-8eb5-56b0124b98db" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_3e94ba2d-5843-43cd-81d2-2954b2dec476" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_IncreaseDecreaseInAccruedLiabilities_3e94ba2d-5843-43cd-81d2-2954b2dec476" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable_faecfe8b-1ded-4515-98e9-5d1c4fd1dbeb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable_faecfe8b-1ded-4515-98e9-5d1c4fd1dbeb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_dc4c4456-bc32-480b-9393-875aa9eeccd9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_IncreaseDecreaseInContractWithCustomerLiability_dc4c4456-bc32-480b-9393-875aa9eeccd9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet_ad6c6882-0171-4527-80a8-a8d60155737d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c0ffc1b0-4a01-4464-95be-31463217c25e" xlink:to="loc_us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet_ad6c6882-0171-4527-80a8-a8d60155737d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_08677dc3-2bd9-4563-9c80-2e086c62d6a3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_22debebe-4bbd-408c-b75a-4ef1aabcb8be" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_08677dc3-2bd9-4563-9c80-2e086c62d6a3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_3f75fd49-2f30-4d8e-b36e-10550324478d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47d4ba1d-c765-4008-bfff-9dc2c9636bda" xlink:to="loc_us-gaap_NetCashProvidedByUsedInInvestingActivitiesAbstract_3f75fd49-2f30-4d8e-b36e-10550324478d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireInvestments_1230da69-cc7e-4e34-91e2-c48bfd3ecc0a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f75fd49-2f30-4d8e-b36e-10550324478d" xlink:to="loc_us-gaap_PaymentsToAcquireInvestments_1230da69-cc7e-4e34-91e2-c48bfd3ecc0a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments_ce0d5ecc-6afe-4f31-bf89-9413a224b124" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f75fd49-2f30-4d8e-b36e-10550324478d" xlink:to="loc_us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments_ce0d5ecc-6afe-4f31-bf89-9413a224b124" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_44e83258-55dc-46e7-ae99-9d164dd9fb25" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f75fd49-2f30-4d8e-b36e-10550324478d" xlink:to="loc_us-gaap_PaymentsToAcquirePropertyPlantAndEquipment_44e83258-55dc-46e7-ae99-9d164dd9fb25" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired_58088991-a562-48b6-8b9e-58bc65bacb87" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f75fd49-2f30-4d8e-b36e-10550324478d" xlink:to="loc_us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired_58088991-a562-48b6-8b9e-58bc65bacb87" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_dcd68e6a-a02f-4ac9-8540-ad192c96a01b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f75fd49-2f30-4d8e-b36e-10550324478d" xlink:to="loc_us-gaap_NetCashProvidedByUsedInInvestingActivities_dcd68e6a-a02f-4ac9-8540-ad192c96a01b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_e8bbd1be-0ed0-4811-8f62-9dc79a84a297" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47d4ba1d-c765-4008-bfff-9dc2c9636bda" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivitiesAbstract_e8bbd1be-0ed0-4811-8f62-9dc79a84a297" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions_ce908a41-b3b4-4591-b065-19ce28c3ec57" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e8bbd1be-0ed0-4811-8f62-9dc79a84a297" xlink:to="loc_us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions_ce908a41-b3b4-4591-b065-19ce28c3ec57" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForRepurchaseOfCommonStock_ea38c98d-109f-41e0-a379-7452d3f933e5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e8bbd1be-0ed0-4811-8f62-9dc79a84a297" xlink:to="loc_us-gaap_PaymentsForRepurchaseOfCommonStock_ea38c98d-109f-41e0-a379-7452d3f933e5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsOfDividendsCommonStock_dd9591b8-284e-41ff-ae8e-1d3d88f6db58" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e8bbd1be-0ed0-4811-8f62-9dc79a84a297" xlink:to="loc_us-gaap_PaymentsOfDividendsCommonStock_dd9591b8-284e-41ff-ae8e-1d3d88f6db58" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_8b598b8f-b893-412d-8736-61fc03dceb13" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e8bbd1be-0ed0-4811-8f62-9dc79a84a297" xlink:to="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_8b598b8f-b893-412d-8736-61fc03dceb13" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_8b0b959b-4a6c-4583-ac7f-ec2935fde4fd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e8bbd1be-0ed0-4811-8f62-9dc79a84a297" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_8b0b959b-4a6c-4583-ac7f-ec2935fde4fd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_0716210e-dacc-4023-b35d-89473db01c50" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47d4ba1d-c765-4008-bfff-9dc2c9636bda" xlink:to="loc_us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_0716210e-dacc-4023-b35d-89473db01c50" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_067b1220-eda1-494a-b94e-8112da6afd0c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47d4ba1d-c765-4008-bfff-9dc2c9636bda" xlink:to="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect_067b1220-eda1-494a-b94e-8112da6afd0c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_b7370858-15eb-4003-921c-0578d7be8dd6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47d4ba1d-c765-4008-bfff-9dc2c9636bda" xlink:to="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_b7370858-15eb-4003-921c-0578d7be8dd6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_898335e6-172d-4592-8723-f746896aae55" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47d4ba1d-c765-4008-bfff-9dc2c9636bda" xlink:to="loc_us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents_898335e6-172d-4592-8723-f746896aae55" 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-20201231.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_6f6cd9f1-6ad9-4b16-850e-1eb39be9eab7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementOfStockholdersEquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementTable_62de73db-4a12-42c9-ad55-86ed49c0cbf2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6f6cd9f1-6ad9-4b16-850e-1eb39be9eab7" xlink:to="loc_us-gaap_StatementTable_62de73db-4a12-42c9-ad55-86ed49c0cbf2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_25125a7c-4c95-4ac2-98da-01643631ad14" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_62de73db-4a12-42c9-ad55-86ed49c0cbf2" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_25125a7c-4c95-4ac2-98da-01643631ad14" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_25125a7c-4c95-4ac2-98da-01643631ad14" xlink:to="loc_us-gaap_EquityComponentDomain_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember_6643987a-f4fd-4ab5-be42-cee664b9f8b9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:to="loc_us-gaap_CommonStockMember_6643987a-f4fd-4ab5-be42-cee664b9f8b9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdditionalPaidInCapitalMember_0c4fc56e-1599-433b-8365-f0fe63aa39fc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:to="loc_us-gaap_AdditionalPaidInCapitalMember_0c4fc56e-1599-433b-8365-f0fe63aa39fc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsMember_3f8d593c-f941-4d38-8a04-f5b0d3bd3dfd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:to="loc_us-gaap_RetainedEarningsMember_3f8d593c-f941-4d38-8a04-f5b0d3bd3dfd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_95d0beaa-a24b-497f-8c7a-1f0a1a0437e2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_00ded013-d89d-4c5b-95fb-bacb9bd6dd4e" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_95d0beaa-a24b-497f-8c7a-1f0a1a0437e2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CumulativeEffectPeriodOfAdoptionAxis_6fbbea8e-be52-48ca-ad98-239d7a3975d5" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAxis"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementTable_62de73db-4a12-42c9-ad55-86ed49c0cbf2" xlink:to="loc_srt_CumulativeEffectPeriodOfAdoptionAxis_6fbbea8e-be52-48ca-ad98-239d7a3975d5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CumulativeEffectPeriodOfAdoptionDomain_b2184d44-2f89-4083-8e17-cf5d796af1d0" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_CumulativeEffectPeriodOfAdoptionAxis_6fbbea8e-be52-48ca-ad98-239d7a3975d5" xlink:to="loc_srt_CumulativeEffectPeriodOfAdoptionDomain_b2184d44-2f89-4083-8e17-cf5d796af1d0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember_e507b060-cd5b-49e3-a44f-955dd739bd86" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_CumulativeEffectPeriodOfAdoptionDomain_b2184d44-2f89-4083-8e17-cf5d796af1d0" xlink:to="loc_srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember_e507b060-cd5b-49e3-a44f-955dd739bd86" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementLineItems_1a23d2ef-4a21-4112-b520-29aa62d264f2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementTable_62de73db-4a12-42c9-ad55-86ed49c0cbf2" xlink:to="loc_us-gaap_StatementLineItems_1a23d2ef-4a21-4112-b520-29aa62d264f2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1a23d2ef-4a21-4112-b520-29aa62d264f2" xlink:to="loc_us-gaap_IncreaseDecreaseInStockholdersEquityRollForward_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_809a68f8-85f8-4919-a58e-c0a475d0d55b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_StockholdersEquity_809a68f8-85f8-4919-a58e-c0a475d0d55b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued_441d93cc-06cd-485f-b658-b08f11d1883d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_CommonStockSharesIssued_441d93cc-06cd-485f-b658-b08f11d1883d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_cf72f243-d3c7-4068-88bd-8e108dc66635" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised_cf72f243-d3c7-4068-88bd-8e108dc66635" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_d0195cd6-0675-462b-b983-593591ddf414" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_d0195cd6-0675-462b-b983-593591ddf414" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodValue_946dd3f6-54c0-4985-b776-2b12c714e680" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodValue_946dd3f6-54c0-4985-b776-2b12c714e680" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodShares_c3d1061c-60f7-428e-8725-66750875ab36" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodShares_c3d1061c-60f7-428e-8725-66750875ab36" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_61105382-7999-4350-86e0-acc720c88cb9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue_61105382-7999-4350-86e0-acc720c88cb9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsCommonStockCash_199a64be-7097-4506-9b0b-daee970d8875" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_DividendsCommonStockCash_199a64be-7097-4506-9b0b-daee970d8875" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_19b1e015-5516-4997-ae02-f470c438d286" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_NetIncomeLoss_19b1e015-5516-4997-ae02-f470c438d286" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_073f7206-d927-418e-b2b6-996358c18532" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax_073f7206-d927-418e-b2b6-996358c18532" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_fb94fe08-b42c-49c1-8a51-66f5c6ce2191" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_fb94fe08-b42c-49c1-8a51-66f5c6ce2191" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_8e22faf5-d38c-4e11-8a3d-a45c2a49c6d3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_8e22faf5-d38c-4e11-8a3d-a45c2a49c6d3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_32f97e20-d564-4819-965b-6db3a4005cdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax_32f97e20-d564-4819-965b-6db3a4005cdb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquity_a506f844-b79a-46ff-b194-cea8cebbffda" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_StockholdersEquity_a506f844-b79a-46ff-b194-cea8cebbffda" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesIssued_f90f4f2c-c2da-43cc-901c-c2c487eb3c12" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_069e6e3f-4971-4787-b303-db5f3fb20db0" xlink:to="loc_us-gaap_CommonStockSharesIssued_f90f4f2c-c2da-43cc-901c-c2c487eb3c12" 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-20201231.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_43c85f93-14d0-402b-a056-328f22b91cd2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StatementOfStockholdersEquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_61fa5633-a555-404e-be93-41673bcde533" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquityNoteStockSplitConversionRatio1"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfStockholdersEquityAbstract_43c85f93-14d0-402b-a056-328f22b91cd2" xlink:to="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_61fa5633-a555-404e-be93-41673bcde533" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax_deed298d-3e0d-4c1a-92be-15f265bd2a3c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfStockholdersEquityAbstract_43c85f93-14d0-402b-a056-328f22b91cd2" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax_deed298d-3e0d-4c1a-92be-15f265bd2a3c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_8750a546-0a08-4164-92b8-5361144b3252" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfStockholdersEquityAbstract_43c85f93-14d0-402b-a056-328f22b91cd2" xlink:to="loc_us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax_8750a546-0a08-4164-92b8-5361144b3252" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax_13a245d3-ecb3-4431-9a7f-d028526cba68" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_StatementOfStockholdersEquityAbstract_43c85f93-14d0-402b-a056-328f22b91cd2" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax_13a245d3-ecb3-4431-9a7f-d028526cba68" 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-20201231.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_11007c9c-aac1-4efc-a6d6-e89df6f2d015" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SignificantAccountingPoliciesTextBlock_e75c242c-5220-4102-8785-c92440a414ff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_11007c9c-aac1-4efc-a6d6-e89df6f2d015" xlink:to="loc_us-gaap_SignificantAccountingPoliciesTextBlock_e75c242c-5220-4102-8785-c92440a414ff" 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-20201231.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_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NatureOfOperationsPolicyTextBlock_194e7ec4-8ccb-4289-9c93-87fd8c4e8545" xlink:href="cgnx-20201231.xsd#cgnx_NatureOfOperationsPolicyTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_cgnx_NatureOfOperationsPolicyTextBlock_194e7ec4-8ccb-4289-9c93-87fd8c4e8545" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UseOfEstimates_364a78f3-94f7-4732-986f-88aee6215c06" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_UseOfEstimates_364a78f3-94f7-4732-986f-88aee6215c06" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConsolidationPolicyTextBlock_e97a2ab1-5040-4a0b-bc1a-5b8e004bb0ac" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_ConsolidationPolicyTextBlock_e97a2ab1-5040-4a0b-bc1a-5b8e004bb0ac" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock_e86c8117-66a5-4e1f-ba0d-8a2af973e68d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock_e86c8117-66a5-4e1f-ba0d-8a2af973e68d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueOfFinancialInstrumentsPolicy_9a50e94c-d037-4344-bdc9-52a879449736" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_FairValueOfFinancialInstrumentsPolicy_9a50e94c-d037-4344-bdc9-52a879449736" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsPolicyTextBlock_2f5a049a-2bb5-409b-9da5-5d2c931ba432" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_CashAndCashEquivalentsPolicyTextBlock_2f5a049a-2bb5-409b-9da5-5d2c931ba432" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ReceivablesPolicyTextBlock_1b3294f1-2a6e-41ef-8a3f-3cc8edf716f4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ReceivablesPolicyTextBlock"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_ReceivablesPolicyTextBlock_1b3294f1-2a6e-41ef-8a3f-3cc8edf716f4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryPolicyTextBlock_a3c76b1f-a844-4ba6-b8a1-d8b48b911bbd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryPolicyTextBlock"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_InventoryPolicyTextBlock_a3c76b1f-a844-4ba6-b8a1-d8b48b911bbd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock_f4130eb6-e546-4ac6-86c8-ebea0de2150f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentPolicyTextBlock"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentPolicyTextBlock_f4130eb6-e546-4ac6-86c8-ebea0de2150f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy_f09ebec3-ea95-43b6-9294-64a6fd4d6f4f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy_f09ebec3-ea95-43b6-9294-64a6fd4d6f4f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsFiniteLivedPolicy_aa8f9cfe-3492-4f5b-8c08-e50528dbdf93" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IntangibleAssetsFiniteLivedPolicy"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_IntangibleAssetsFiniteLivedPolicy_aa8f9cfe-3492-4f5b-8c08-e50528dbdf93" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StandardProductWarrantyPolicy_cdec14b9-5c82-46c4-a5fc-00d1360cc861" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StandardProductWarrantyPolicy"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_StandardProductWarrantyPolicy_cdec14b9-5c82-46c4-a5fc-00d1360cc861" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesPolicyTextBlock_76945069-e4db-4070-bef9-9b54d2f6fe47" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommitmentsAndContingenciesPolicyTextBlock"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_CommitmentsAndContingenciesPolicyTextBlock_76945069-e4db-4070-bef9-9b54d2f6fe47" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueRecognitionPolicyTextBlock_db9cc617-f710-4765-b3bd-9571d4bd90a8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueRecognitionPolicyTextBlock"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_RevenueRecognitionPolicyTextBlock_db9cc617-f710-4765-b3bd-9571d4bd90a8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock_8c93832e-4f27-4887-a0fd-a14145817a42" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock_8c93832e-4f27-4887-a0fd-a14145817a42" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdvertisingCostsPolicyTextBlock_a75cb86a-f5a7-4cbe-a8bc-ec61f445ab2c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdvertisingCostsPolicyTextBlock"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_AdvertisingCostsPolicyTextBlock_a75cb86a-f5a7-4cbe-a8bc-ec61f445ab2c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy_18206420-d161-414e-b419-be4f88f4cd96" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy_18206420-d161-414e-b419-be4f88f4cd96" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxPolicyTextBlock_3505424c-c1ad-4777-a3cd-945b0a072891" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxPolicyTextBlock"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_IncomeTaxPolicyTextBlock_3505424c-c1ad-4777-a3cd-945b0a072891" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerSharePolicyTextBlock_a24cbc50-8539-424a-8da0-02fe15bf9c07" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerSharePolicyTextBlock"/>
    <link:presentationArc order="19" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_EarningsPerSharePolicyTextBlock_a24cbc50-8539-424a-8da0-02fe15bf9c07" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock_4875e3dd-bc7e-45b0-99bf-bdd9e8039d9e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ComprehensiveIncomePolicyPolicyTextBlock"/>
    <link:presentationArc order="20" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_ComprehensiveIncomePolicyPolicyTextBlock_4875e3dd-bc7e-45b0-99bf-bdd9e8039d9e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock_0e00a909-4537-4b15-8533-d2eb7983462b" xlink:href="cgnx-20201231.xsd#cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock"/>
    <link:presentationArc order="21" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_cgnx_ConcentrationsOfRiskPolicyPolicyTextBlock_0e00a909-4537-4b15-8533-d2eb7983462b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativesPolicyTextBlock_5805461a-9a9a-418c-a1a4-66329c7a75db" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativesPolicyTextBlock"/>
    <link:presentationArc order="22" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_DerivativesPolicyTextBlock_5805461a-9a9a-418c-a1a4-66329c7a75db" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationsPolicy_38cbfdea-8709-428c-90ed-dc795e4a810b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationsPolicy"/>
    <link:presentationArc order="23" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_BusinessCombinationsPolicy_38cbfdea-8709-428c-90ed-dc795e4a810b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentPolicyTextBlock_e5e38601-04b5-476a-9d88-eb8d84b78ca1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InvestmentPolicyTextBlock"/>
    <link:presentationArc order="24" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_InvestmentPolicyTextBlock_e5e38601-04b5-476a-9d88-eb8d84b78ca1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeLeasesPolicyTextBlock_cf519b86-b1c3-486d-8362-d3b88f091d96" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LesseeLeasesPolicyTextBlock"/>
    <link:presentationArc order="25" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_LesseeLeasesPolicyTextBlock_cf519b86-b1c3-486d-8362-d3b88f091d96" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InternalUseSoftwarePolicy_711c6e0c-42f2-47b3-860e-f2b12061416d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InternalUseSoftwarePolicy"/>
    <link:presentationArc order="26" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_InternalUseSoftwarePolicy_711c6e0c-42f2-47b3-860e-f2b12061416d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy_59823e73-d6d3-4740-893b-bdb5947242cc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy"/>
    <link:presentationArc order="27" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy_59823e73-d6d3-4740-893b-bdb5947242cc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TradeAndOtherAccountsReceivablePolicy_b09539eb-a012-4711-b1a0-952e8f3223f5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TradeAndOtherAccountsReceivablePolicy"/>
    <link:presentationArc order="28" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_6d9b97e1-02f3-4f16-9543-dfba38a765dc" xlink:to="loc_us-gaap_TradeAndOtherAccountsReceivablePolicy_b09539eb-a012-4711-b1a0-952e8f3223f5" 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-20201231.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_cc9c6a58-d3fc-483a-819e-9081f5ae1c4c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum_b2a92a95-5792-42bb-bd2f-32a16ce080d0" xlink:href="cgnx-20201231.xsd#cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_cc9c6a58-d3fc-483a-819e-9081f5ae1c4c" xlink:to="loc_cgnx_AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum_b2a92a95-5792-42bb-bd2f-32a16ce080d0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MaximumInvestmentOfCompanyInPartnership_dce7eb6c-28ee-4c35-9452-2a9b26797e6f" xlink:href="cgnx-20201231.xsd#cgnx_MaximumInvestmentOfCompanyInPartnership"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccountingPoliciesAbstract_cc9c6a58-d3fc-483a-819e-9081f5ae1c4c" xlink:to="loc_cgnx_MaximumInvestmentOfCompanyInPartnership_dce7eb6c-28ee-4c35-9452-2a9b26797e6f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_16064ab5-5a84-460f-b90c-34bb2ee69c51" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cc9c6a58-d3fc-483a-819e-9081f5ae1c4c" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_16064ab5-5a84-460f-b90c-34bb2ee69c51" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_22d3480a-fff0-47ae-8a23-fa66915c2b2a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_16064ab5-5a84-460f-b90c-34bb2ee69c51" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_22d3480a-fff0-47ae-8a23-fa66915c2b2a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_22d3480a-fff0-47ae-8a23-fa66915c2b2a" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingMember_76ebe4f7-798c-4845-85e1-37d95b516056" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:to="loc_us-gaap_BuildingMember_76ebe4f7-798c-4845-85e1-37d95b516056" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingImprovementsMember_04f2432f-d8c2-4d36-a908-9f1dbe237783" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:to="loc_us-gaap_BuildingImprovementsMember_04f2432f-d8c2-4d36-a908-9f1dbe237783" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ComputerHardwareAndSoftwareMember_c6d70098-bd2f-4b41-b43a-d7d8fada5d5e" xlink:href="cgnx-20201231.xsd#cgnx_ComputerHardwareAndSoftwareMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:to="loc_cgnx_ComputerHardwareAndSoftwareMember_c6d70098-bd2f-4b41-b43a-d7d8fada5d5e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_37e1949f-2d8d-4e04-9423-2481b72673c0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:to="loc_us-gaap_EquipmentMember_37e1949f-2d8d-4e04-9423-2481b72673c0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_4d0eb6f9-48dc-4d2d-b297-2d3399099340" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0b6da23d-94fe-4e5f-a7e1-b462766db7d2" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_4d0eb6f9-48dc-4d2d-b297-2d3399099340" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_4a05b866-c79c-4db5-97e8-b872da067cf7" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_16064ab5-5a84-460f-b90c-34bb2ee69c51" xlink:to="loc_srt_RangeAxis_4a05b866-c79c-4db5-97e8-b872da067cf7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_97cb201e-154b-4469-b216-655960388b43" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_4a05b866-c79c-4db5-97e8-b872da067cf7" xlink:to="loc_srt_RangeMember_97cb201e-154b-4469-b216-655960388b43" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_b942e990-2504-4cd2-b4f1-e20af718aeca" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_97cb201e-154b-4469-b216-655960388b43" xlink:to="loc_srt_MinimumMember_b942e990-2504-4cd2-b4f1-e20af718aeca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_f4482918-7ada-4534-b66b-f2f97fb18b57" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_97cb201e-154b-4469-b216-655960388b43" xlink:to="loc_srt_MaximumMember_f4482918-7ada-4534-b66b-f2f97fb18b57" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_eacba240-b41f-4adb-b7af-ae015334d173" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_16064ab5-5a84-460f-b90c-34bb2ee69c51" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentLineItems_eacba240-b41f-4adb-b7af-ae015334d173" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_beb1a47f-0e3a-4f18-a0fe-86afaab854b1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_eacba240-b41f-4adb-b7af-ae015334d173" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentUsefulLife_beb1a47f-0e3a-4f18-a0fe-86afaab854b1" 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-20201231.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_574afe19-00df-4198-a4a5-83c17307181a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_bc94b4fa-a38b-4611-bf8b-13c0ede81b96" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_574afe19-00df-4198-a4a5-83c17307181a" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_bc94b4fa-a38b-4611-bf8b-13c0ede81b96" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c460c14c-75ce-4192-bf24-800c855da42a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bc94b4fa-a38b-4611-bf8b-13c0ede81b96" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_c460c14c-75ce-4192-bf24-800c855da42a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c460c14c-75ce-4192-bf24-800c855da42a" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DistributionRightsMember_a60328e8-b3e0-4405-87d4-7c227b1679c1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:to="loc_us-gaap_DistributionRightsMember_a60328e8-b3e0-4405-87d4-7c227b1679c1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember_b1582d94-592e-402b-b7c7-a20b10d0f30d" xlink:href="cgnx-20201231.xsd#cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:to="loc_cgnx_CompletedTechnologiesAndOtherIntangibleAssetsMember_b1582d94-592e-402b-b7c7-a20b10d0f30d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_b2ac9755-4775-4eaf-831b-0f67c6d31a5e" xlink:href="cgnx-20201231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_b2ac9755-4775-4eaf-831b-0f67c6d31a5e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_fed05b14-e512-4226-8cfc-03a6ba92bab8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_fed05b14-e512-4226-8cfc-03a6ba92bab8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_2f3770e9-260a-48a2-8605-cd380037bdc8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c84b3901-ad1b-4b36-b038-a89d51268544" xlink:to="loc_us-gaap_TrademarksMember_2f3770e9-260a-48a2-8605-cd380037bdc8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_eb93f06a-3550-460e-b90e-de5cde5abe98" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_bc94b4fa-a38b-4611-bf8b-13c0ede81b96" xlink:to="loc_srt_RangeAxis_eb93f06a-3550-460e-b90e-de5cde5abe98" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_61a78ced-2fa4-4a76-8fd4-c5c88e82ef3a" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_eb93f06a-3550-460e-b90e-de5cde5abe98" xlink:to="loc_srt_RangeMember_61a78ced-2fa4-4a76-8fd4-c5c88e82ef3a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_c89b1ee6-7898-4260-9566-3cb1d27545d9" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_61a78ced-2fa4-4a76-8fd4-c5c88e82ef3a" xlink:to="loc_srt_MinimumMember_c89b1ee6-7898-4260-9566-3cb1d27545d9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_8624bc61-d7bb-4a04-8950-d4357906d5ce" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_61a78ced-2fa4-4a76-8fd4-c5c88e82ef3a" xlink:to="loc_srt_MaximumMember_8624bc61-d7bb-4a04-8950-d4357906d5ce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_026ec1fa-5f52-4967-bd6e-e3f25eb6c444" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bc94b4fa-a38b-4611-bf8b-13c0ede81b96" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_026ec1fa-5f52-4967-bd6e-e3f25eb6c444" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetUsefulLife_14a1c759-c73e-4a29-b176-104f05179f08" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_026ec1fa-5f52-4967-bd6e-e3f25eb6c444" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetUsefulLife_14a1c759-c73e-4a29-b176-104f05179f08" 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-20201231.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_0ccf4546-cafc-4b4c-ba8b-811730e5cfa9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductLiabilityContingencyTable_ffa42520-b895-4056-af0d-c860052743e3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0ccf4546-cafc-4b4c-ba8b-811730e5cfa9" xlink:to="loc_us-gaap_ProductLiabilityContingencyTable_ffa42520-b895-4056-af0d-c860052743e3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_8c1ab6b6-6580-4b9c-9e77-91e96022ea87" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_ffa42520-b895-4056-af0d-c860052743e3" xlink:to="loc_srt_RangeAxis_8c1ab6b6-6580-4b9c-9e77-91e96022ea87" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_448d42f9-781f-4e97-85cf-28680d51a4ae" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_8c1ab6b6-6580-4b9c-9e77-91e96022ea87" xlink:to="loc_srt_RangeMember_448d42f9-781f-4e97-85cf-28680d51a4ae" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_4bf5b083-73a0-4e99-b8f0-4b7a5babd788" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_448d42f9-781f-4e97-85cf-28680d51a4ae" xlink:to="loc_srt_MinimumMember_4bf5b083-73a0-4e99-b8f0-4b7a5babd788" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_d15568aa-1645-4adf-800a-8ffc9110d9d5" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_448d42f9-781f-4e97-85cf-28680d51a4ae" xlink:to="loc_srt_MaximumMember_d15568aa-1645-4adf-800a-8ffc9110d9d5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductLiabilityContingencyLineItems_66c47400-4710-4795-9294-883555a26ee8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ffa42520-b895-4056-af0d-c860052743e3" xlink:to="loc_us-gaap_ProductLiabilityContingencyLineItems_66c47400-4710-4795-9294-883555a26ee8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ProductWarrantyPeriod_5de5704e-04ed-4aa5-8c65-bd3aef1c8aef" xlink:href="cgnx-20201231.xsd#cgnx_ProductWarrantyPeriod"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ProductLiabilityContingencyLineItems_66c47400-4710-4795-9294-883555a26ee8" xlink:to="loc_cgnx_ProductWarrantyPeriod_5de5704e-04ed-4aa5-8c65-bd3aef1c8aef" 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-20201231.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_4bba8400-cc98-4cdc-91a0-29e394bc402c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTable_b7b3f2f9-a7d0-4333-8ba7-5425d55475a2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4bba8400-cc98-4cdc-91a0-29e394bc402c" xlink:to="loc_us-gaap_DisaggregationOfRevenueTable_b7b3f2f9-a7d0-4333-8ba7-5425d55475a2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_88827853-3e71-4c61-aaa2-1b5b35e5b15f" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_b7b3f2f9-a7d0-4333-8ba7-5425d55475a2" xlink:to="loc_srt_RangeAxis_88827853-3e71-4c61-aaa2-1b5b35e5b15f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_1d720bc9-b080-4743-a875-3be8a2a13ccb" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_88827853-3e71-4c61-aaa2-1b5b35e5b15f" xlink:to="loc_srt_RangeMember_1d720bc9-b080-4743-a875-3be8a2a13ccb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_f267c397-1c5c-4657-a6e1-32d2a680a141" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_1d720bc9-b080-4743-a875-3be8a2a13ccb" xlink:to="loc_srt_MinimumMember_f267c397-1c5c-4657-a6e1-32d2a680a141" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_4a8c5504-08f3-429c-8440-0bde9bc4ac0a" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_1d720bc9-b080-4743-a875-3be8a2a13ccb" xlink:to="loc_srt_MaximumMember_4a8c5504-08f3-429c-8440-0bde9bc4ac0a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueLineItems_0c142092-e2a9-45c7-855c-5fe224cba1ed" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b7b3f2f9-a7d0-4333-8ba7-5425d55475a2" xlink:to="loc_us-gaap_DisaggregationOfRevenueLineItems_0c142092-e2a9-45c7-855c-5fe224cba1ed" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RevenuePaymentTerms_75142c39-84ab-4a16-95ba-420d76f615c7" xlink:href="cgnx-20201231.xsd#cgnx_RevenuePaymentTerms"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisaggregationOfRevenueLineItems_0c142092-e2a9-45c7-855c-5fe224cba1ed" xlink:to="loc_cgnx_RevenuePaymentTerms_75142c39-84ab-4a16-95ba-420d76f615c7" 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-20201231.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_cfcf8ced-46cb-49bc-a524-2a9e267d3a2a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdvertisingExpense_29716b45-0da9-4660-a234-e57970d16095" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cfcf8ced-46cb-49bc-a524-2a9e267d3a2a" xlink:to="loc_us-gaap_AdvertisingExpense_29716b45-0da9-4660-a234-e57970d16095" 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-20201231.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_3f7d096d-25e1-4173-b2f9-336444c76ab9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingPoliciesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_ebb4fcfa-9eab-4449-b0f3-64222955d1f7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f7d096d-25e1-4173-b2f9-336444c76ab9" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossTable_ebb4fcfa-9eab-4449-b0f3-64222955d1f7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementEquityComponentsAxis_db049493-775a-4c91-9a27-eba7e63cdab9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ebb4fcfa-9eab-4449-b0f3-64222955d1f7" xlink:to="loc_us-gaap_StatementEquityComponentsAxis_db049493-775a-4c91-9a27-eba7e63cdab9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquityComponentDomain_d443ffd7-3a1d-4501-abd0-ef730de3fdc1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db049493-775a-4c91-9a27-eba7e63cdab9" xlink:to="loc_us-gaap_EquityComponentDomain_d443ffd7-3a1d-4501-abd0-ef730de3fdc1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_5447c285-c41e-46e0-8298-c74d10c1ab94" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d443ffd7-3a1d-4501-abd0-ef730de3fdc1" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeMember_5447c285-c41e-46e0-8298-c74d10c1ab94" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ebb4fcfa-9eab-4449-b0f3-64222955d1f7" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossLineItems_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax_a5552adc-d0d4-4754-9a68-cfffbe86ab8b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax_a5552adc-d0d4-4754-9a68-cfffbe86ab8b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_9271b316-f767-4aa9-93ac-1406938fcb23" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:to="loc_us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax_9271b316-f767-4aa9-93ac-1406938fcb23" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax_31fe003d-a93d-4359-830b-5acb661ebf64" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:to="loc_us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax_31fe003d-a93d-4359-830b-5acb661ebf64" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_8da9ae08-93b8-4dfd-87f6-84ed870bf815" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_384be3c9-6ad0-4330-abe2-82be91389b06" xlink:to="loc_us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax_8da9ae08-93b8-4dfd-87f6-84ed870bf815" 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-20201231.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_fdffbb99-add3-413c-8993-b4d21b74cc7a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingChangesAndErrorCorrectionsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock_3628816f-00c7-4d25-86a0-5ce4a8d9c049" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_fdffbb99-add3-413c-8993-b4d21b74cc7a" xlink:to="loc_us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock_3628816f-00c7-4d25-86a0-5ce4a8d9c049" 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-20201231.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_d640b529-7855-48e3-8eaf-b3cc0314c0ed" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AccountingChangesAndErrorCorrectionsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock_307a28d0-89c6-4a88-abb1-00fcb6faca45" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d640b529-7855-48e3-8eaf-b3cc0314c0ed" xlink:to="loc_us-gaap_NewAccountingPronouncementsPolicyPolicyTextBlock_307a28d0-89c6-4a88-abb1-00fcb6faca45" 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-20201231.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_2dc1a289-19ac-4931-afd4-7ec2a5542912" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueDisclosuresTextBlock_8c2b1ffc-8eae-45ef-bec0-928847201d69" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2dc1a289-19ac-4931-afd4-7ec2a5542912" xlink:to="loc_us-gaap_FairValueDisclosuresTextBlock_8c2b1ffc-8eae-45ef-bec0-928847201d69" 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-20201231.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_8c0cf16f-a830-4dea-ac0f-a1b3e8a0039b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock_eddc2385-52a3-405d-809a-6d3e0f4da7ff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8c0cf16f-a830-4dea-ac0f-a1b3e8a0039b" xlink:to="loc_us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock_eddc2385-52a3-405d-809a-6d3e0f4da7ff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock_d5e2d6a6-ec75-4795-8b57-b865e13d0252" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8c0cf16f-a830-4dea-ac0f-a1b3e8a0039b" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock_d5e2d6a6-ec75-4795-8b57-b865e13d0252" 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-20201231.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_9ce7ef3c-24aa-4bcc-a984-8893b1d05022" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_9ef92f3b-a84e-4383-93c0-de9eca9e666c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9ce7ef3c-24aa-4bcc-a984-8893b1d05022" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_9ef92f3b-a84e-4383-93c0-de9eca9e666c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_46425695-a9a4-4508-b531-4e91c9f92bdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9ef92f3b-a84e-4383-93c0-de9eca9e666c" xlink:to="loc_us-gaap_FairValueByFairValueHierarchyLevelAxis_46425695-a9a4-4508-b531-4e91c9f92bdb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_2cc5919e-48d8-4149-bda7-3bd921d1ec6e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_46425695-a9a4-4508-b531-4e91c9f92bdb" xlink:to="loc_us-gaap_FairValueMeasurementsFairValueHierarchyDomain_2cc5919e-48d8-4149-bda7-3bd921d1ec6e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel1Member_5d4f8b4d-66e7-4d5b-b1ff-2d8e06a1438c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2cc5919e-48d8-4149-bda7-3bd921d1ec6e" xlink:to="loc_us-gaap_FairValueInputsLevel1Member_5d4f8b4d-66e7-4d5b-b1ff-2d8e06a1438c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel2Member_6f51c407-b69f-4b42-97fc-9e7e9357f81a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2cc5919e-48d8-4149-bda7-3bd921d1ec6e" xlink:to="loc_us-gaap_FairValueInputsLevel2Member_6f51c407-b69f-4b42-97fc-9e7e9357f81a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueInputsLevel3Member_9f2eaa91-c581-45d3-a53f-7c3b1e25c59e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2cc5919e-48d8-4149-bda7-3bd921d1ec6e" xlink:to="loc_us-gaap_FairValueInputsLevel3Member_9f2eaa91-c581-45d3-a53f-7c3b1e25c59e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis_84e3f58b-5bb5-40c5-810e-3e61a0f9b808" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9ef92f3b-a84e-4383-93c0-de9eca9e666c" xlink:to="loc_us-gaap_FairValueByMeasurementFrequencyAxis_84e3f58b-5bb5-40c5-810e-3e61a0f9b808" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_3f37c381-7a3c-4e64-9dee-4bfa155fbff1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_84e3f58b-5bb5-40c5-810e-3e61a0f9b808" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_3f37c381-7a3c-4e64-9dee-4bfa155fbff1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember_af60b2be-cc39-44e2-9876-c1353e83bb4c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f37c381-7a3c-4e64-9dee-4bfa155fbff1" xlink:to="loc_us-gaap_FairValueMeasurementsRecurringMember_af60b2be-cc39-44e2-9876-c1353e83bb4c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_cc25e278-8663-4d86-be10-55a5296006c4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9ef92f3b-a84e-4383-93c0-de9eca9e666c" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_cc25e278-8663-4d86-be10-55a5296006c4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cc25e278-8663-4d86-be10-55a5296006c4" xlink:to="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MoneyMarketInstrumentsFairValueDisclosure_e8bd2694-3d9e-4824-83da-92cf991c64f4" xlink:href="cgnx-20201231.xsd#cgnx_MoneyMarketInstrumentsFairValueDisclosure"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_MoneyMarketInstrumentsFairValueDisclosure_e8bd2694-3d9e-4824-83da-92cf991c64f4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CorporateBondsFairValueDisclosure_70c65878-0536-444d-9bc3-f4214219c111" xlink:href="cgnx-20201231.xsd#cgnx_CorporateBondsFairValueDisclosure"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_CorporateBondsFairValueDisclosure_70c65878-0536-444d-9bc3-f4214219c111" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_TreasuryBillsFairValueDisclosure_ce45de1a-3984-44b6-b0ca-4c29fb16c7a7" xlink:href="cgnx-20201231.xsd#cgnx_TreasuryBillsFairValueDisclosure"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_TreasuryBillsFairValueDisclosure_ce45de1a-3984-44b6-b0ca-4c29fb16c7a7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AssetBackedSecuritiesFairValueDisclosure_201aee8a-5e17-4953-913a-5db58c169967" xlink:href="cgnx-20201231.xsd#cgnx_AssetBackedSecuritiesFairValueDisclosure"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_AssetBackedSecuritiesFairValueDisclosure_201aee8a-5e17-4953-913a-5db58c169967" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsFairValueDisclosure_c50155fd-e8e4-4aeb-8cf5-9f1bab81be40" xlink:href="cgnx-20201231.xsd#cgnx_AgencyBondsFairValueDisclosure"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_AgencyBondsFairValueDisclosure_c50155fd-e8e4-4aeb-8cf5-9f1bab81be40" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SovereignBondsFairValueDisclosure_3a127787-8661-4d8d-a886-f6872578ef36" xlink:href="cgnx-20201231.xsd#cgnx_SovereignBondsFairValueDisclosure"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_SovereignBondsFairValueDisclosure_3a127787-8661-4d8d-a886-f6872578ef36" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MunicipalBondsFairValueDisclosure_5fd7617e-84f8-4bac-8dda-0d1fa91e6cd3" xlink:href="cgnx-20201231.xsd#cgnx_MunicipalBondsFairValueDisclosure"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AssetsFairValueDisclosureAbstract_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_cgnx_MunicipalBondsFairValueDisclosure_5fd7617e-84f8-4bac-8dda-0d1fa91e6cd3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure_066d832a-e484-46cf-92a3-3ca570c04214" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ef188dc0-a2d1-4fdd-b527-909987730f73" xlink:to="loc_us-gaap_ForeignCurrencyContractAssetFairValueDisclosure_066d832a-e484-46cf-92a3-3ca570c04214" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract_ce68100e-031f-48eb-9aa6-ac96bb71c058" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cc25e278-8663-4d86-be10-55a5296006c4" xlink:to="loc_us-gaap_LiabilitiesFairValueDisclosureAbstract_ce68100e-031f-48eb-9aa6-ac96bb71c058" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure_03866b31-44ad-46d5-a397-a4bb8a39d60a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ce68100e-031f-48eb-9aa6-ac96bb71c058" xlink:to="loc_us-gaap_ForeignCurrencyContractsLiabilityFairValueDisclosure_03866b31-44ad-46d5-a397-a4bb8a39d60a" 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-20201231.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_0f7ecc5b-a171-4b15-b161-d207be4c5fe8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_80f40eed-95e1-4be3-b2e8-fb423e0b0391" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0f7ecc5b-a171-4b15-b161-d207be4c5fe8" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable_80f40eed-95e1-4be3-b2e8-fb423e0b0391" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_4a2c881d-6216-4b98-a63f-a66280a0e9fa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_80f40eed-95e1-4be3-b2e8-fb423e0b0391" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_4a2c881d-6216-4b98-a63f-a66280a0e9fa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_2f8de27d-799a-4198-a276-523100780b29" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4a2c881d-6216-4b98-a63f-a66280a0e9fa" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_2f8de27d-799a-4198-a276-523100780b29" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GViVenturesInc.Member_99b8253f-4420-443b-883b-7c711507bbdc" xlink:href="cgnx-20201231.xsd#cgnx_GViVenturesInc.Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_2f8de27d-799a-4198-a276-523100780b29" xlink:to="loc_cgnx_GViVenturesInc.Member_99b8253f-4420-443b-883b-7c711507bbdc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ChiaroTechnologiesLLCMember_a8d9dbdb-478b-4685-88fb-0d118eb6ba8c" xlink:href="cgnx-20201231.xsd#cgnx_ChiaroTechnologiesLLCMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_2f8de27d-799a-4198-a276-523100780b29" xlink:to="loc_cgnx_ChiaroTechnologiesLLCMember_a8d9dbdb-478b-4685-88fb-0d118eb6ba8c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_5e2b0d11-62d2-4554-b389-4ced86256ada" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_80f40eed-95e1-4be3-b2e8-fb423e0b0391" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationLineItems_5e2b0d11-62d2-4554-b389-4ced86256ada" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_73001a0b-e47f-4aaf-83cd-a8a618659006" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5e2b0d11-62d2-4554-b389-4ced86256ada" xlink:to="loc_us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationCalculationRollForward_73001a0b-e47f-4aaf-83cd-a8a618659006" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_0c282900-bfad-4a41-8785-64e08a90d25b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73001a0b-e47f-4aaf-83cd-a8a618659006" xlink:to="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_0c282900-bfad-4a41-8785-64e08a90d25b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilitiesFairValueAdjustment_528a2706-65e8-4880-bad2-289d3cae6873" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73001a0b-e47f-4aaf-83cd-a8a618659006" xlink:to="loc_us-gaap_LiabilitiesFairValueAdjustment_528a2706-65e8-4880-bad2-289d3cae6873" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_baf10cfd-b6b2-41ab-84bb-9ecaee3be8dd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73001a0b-e47f-4aaf-83cd-a8a618659006" xlink:to="loc_us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities_baf10cfd-b6b2-41ab-84bb-9ecaee3be8dd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_24e8eb70-b450-40ed-8b90-15608f8426cc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73001a0b-e47f-4aaf-83cd-a8a618659006" xlink:to="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_24e8eb70-b450-40ed-8b90-15608f8426cc" 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-20201231.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_92e242fd-44de-48fe-8784-d1291bdb973f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_FairValueDisclosuresAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d49a353-0d0d-41bd-9220-ac94615d4316" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_92e242fd-44de-48fe-8784-d1291bdb973f" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable_5d49a353-0d0d-41bd-9220-ac94615d4316" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_0374b926-4a02-4ba0-8f76-d57e68c2cb2d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5d49a353-0d0d-41bd-9220-ac94615d4316" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_0374b926-4a02-4ba0-8f76-d57e68c2cb2d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d01329c1-4122-4512-b1eb-21196df9317d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0374b926-4a02-4ba0-8f76-d57e68c2cb2d" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d01329c1-4122-4512-b1eb-21196df9317d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GViVenturesInc.Member_2d0b48f5-ab5b-4590-8995-f983626e1cc3" xlink:href="cgnx-20201231.xsd#cgnx_GViVenturesInc.Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_d01329c1-4122-4512-b1eb-21196df9317d" xlink:to="loc_cgnx_GViVenturesInc.Member_2d0b48f5-ab5b-4590-8995-f983626e1cc3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_0ca0dde3-7f97-4956-b794-559aed9df161" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_5d49a353-0d0d-41bd-9220-ac94615d4316" xlink:to="loc_srt_RangeAxis_0ca0dde3-7f97-4956-b794-559aed9df161" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_27c9f86d-7b3c-4ede-9568-8ae32b5bf6c1" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_0ca0dde3-7f97-4956-b794-559aed9df161" xlink:to="loc_srt_RangeMember_27c9f86d-7b3c-4ede-9568-8ae32b5bf6c1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_3644259d-bc4d-4de3-9c1c-2e2c40ccf9b0" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_27c9f86d-7b3c-4ede-9568-8ae32b5bf6c1" xlink:to="loc_srt_MinimumMember_3644259d-bc4d-4de3-9c1c-2e2c40ccf9b0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_3d0e201c-2db3-4177-a3ea-e78e815dc750" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_27c9f86d-7b3c-4ede-9568-8ae32b5bf6c1" xlink:to="loc_srt_MaximumMember_3d0e201c-2db3-4177-a3ea-e78e815dc750" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b9e235c4-da90-417a-9056-39096a3e0597" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5d49a353-0d0d-41bd-9220-ac94615d4316" xlink:to="loc_us-gaap_FairValueByMeasurementFrequencyAxis_b9e235c4-da90-417a-9056-39096a3e0597" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementFrequencyDomain_bdd281bf-8ce7-48ac-b892-5c87d8525488" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b9e235c4-da90-417a-9056-39096a3e0597" xlink:to="loc_us-gaap_FairValueMeasurementFrequencyDomain_bdd281bf-8ce7-48ac-b892-5c87d8525488" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementsRecurringMember_91d0e026-9aa1-4eb1-b068-861526b0a87b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bdd281bf-8ce7-48ac-b892-5c87d8525488" xlink:to="loc_us-gaap_FairValueMeasurementsRecurringMember_91d0e026-9aa1-4eb1-b068-861526b0a87b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5d49a353-0d0d-41bd-9220-ac94615d4316" xlink:to="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_65a8950e-f80f-4d3b-9fc0-42d917f393f0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue_65a8950e-f80f-4d3b-9fc0-42d917f393f0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow_714db484-8cf8-4aa2-914c-27b8056bbd1c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow_714db484-8cf8-4aa2-914c-27b8056bbd1c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh_59046728-cb2f-4788-b628-6241d55dbd36" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh_59046728-cb2f-4788-b628-6241d55dbd36" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_28bb6940-9192-438d-97c7-2cf4ba116029" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_28bb6940-9192-438d-97c7-2cf4ba116029" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_03d5e453-b87f-4ffd-98c7-1445bf70190b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_03d5e453-b87f-4ffd-98c7-1445bf70190b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet_4a35f223-36e5-4a66-a78f-a2f7f5439db1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet_4a35f223-36e5-4a66-a78f-a2f7f5439db1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_f30c9e68-734a-4498-b231-ff58bcc9cbb0" xlink:href="cgnx-20201231.xsd#cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisLineItems_0f6d01ae-cfec-4da8-8bff-0b16e178c9b2" xlink:to="loc_cgnx_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent_f30c9e68-734a-4498-b231-ff58bcc9cbb0" 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-20201231.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_de6ddb97-30ed-4065-a4e4-d5701f719b0c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock_9a13a7f4-786c-442b-ace4-5da98bbf8682" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_de6ddb97-30ed-4065-a4e4-d5701f719b0c" xlink:to="loc_us-gaap_InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock_9a13a7f4-786c-442b-ace4-5da98bbf8682" 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-20201231.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_4feea4dd-818f-4a81-a615-2a18837ef948" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock_428625bd-c243-44d8-8fae-0490ab4a59f5" xlink:href="cgnx-20201231.xsd#cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_4feea4dd-818f-4a81-a615-2a18837ef948" xlink:to="loc_cgnx_ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock_428625bd-c243-44d8-8fae-0490ab4a59f5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock_a27b9d24-ba6c-4895-b4ee-26db6e85aa73" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4feea4dd-818f-4a81-a615-2a18837ef948" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock_a27b9d24-ba6c-4895-b4ee-26db6e85aa73" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock_6e17a897-85c5-4ee9-9047-4c7f9fad9cb4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4feea4dd-818f-4a81-a615-2a18837ef948" xlink:to="loc_us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock_6e17a897-85c5-4ee9-9047-4c7f9fad9cb4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock_3effcce4-1be4-4973-93b9-f8772de2cf64" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4feea4dd-818f-4a81-a615-2a18837ef948" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock_3effcce4-1be4-4973-93b9-f8772de2cf64" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock_8b8699e7-8d16-480d-9a41-d79c1d6de2c4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4feea4dd-818f-4a81-a615-2a18837ef948" xlink:to="loc_us-gaap_InvestmentsClassifiedByContractualMaturityDateTableTextBlock_8b8699e7-8d16-480d-9a41-d79c1d6de2c4" 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-20201231.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_edc5cd9e-e23a-4403-8d88-c5ffb2e152f0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_45a71580-8974-4d6b-b8f7-8d9935c41721" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_edc5cd9e-e23a-4403-8d88-c5ffb2e152f0" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_45a71580-8974-4d6b-b8f7-8d9935c41721" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_96c60fa0-f6dc-4ebc-8de3-518ea9526588" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_45a71580-8974-4d6b-b8f7-8d9935c41721" xlink:to="loc_us-gaap_FinancialInstrumentAxis_96c60fa0-f6dc-4ebc-8de3-518ea9526588" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_96c60fa0-f6dc-4ebc-8de3-518ea9526588" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasuryBillSecuritiesMember_6a2e62eb-5e98-4b8d-9409-4e06dfac884d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_USTreasuryBillSecuritiesMember_6a2e62eb-5e98-4b8d-9409-4e06dfac884d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_4d9092e7-f4c6-4f5e-9e18-5470aabc095a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_4d9092e7-f4c6-4f5e-9e18-5470aabc095a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_0ef14d0f-737c-42f9-9ff4-e20923e4e131" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_0ef14d0f-737c-42f9-9ff4-e20923e4e131" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_af2b8607-d21f-4248-8787-a8df766fd038" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_af2b8607-d21f-4248-8787-a8df766fd038" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_aa56ca5a-d171-4dc0-9ec5-c8d732b1b0ce" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_MunicipalBondsMember_aa56ca5a-d171-4dc0-9ec5-c8d732b1b0ce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CertificatesOfDepositMember_154714a6-645f-4dfb-9dd8-c589d259a976" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CertificatesOfDepositMember"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_us-gaap_CertificatesOfDepositMember_154714a6-645f-4dfb-9dd8-c589d259a976" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_e22b5e6a-0b9e-4df6-971f-99ff18b761dc" xlink:href="cgnx-20201231.xsd#cgnx_AgencyBondsMember"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_2489e7e5-b1e2-4c05-89f5-eba8a312b81f" xlink:to="loc_cgnx_AgencyBondsMember_e22b5e6a-0b9e-4df6-971f-99ff18b761dc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_45a71580-8974-4d6b-b8f7-8d9935c41721" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_ad96eead-653e-4059-8844-a61a13bd860b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_Cash_ad96eead-653e-4059-8844-a61a13bd860b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MoneyMarketFundsAtCarryingValue_74ed9c99-eaa5-42e0-8efb-5da39b40338a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_MoneyMarketFundsAtCarryingValue_74ed9c99-eaa5-42e0-8efb-5da39b40338a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_4b6e35b2-8ad6-42d9-ada3-8b07abf5559a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_CashAndCashEquivalentsAtCarryingValue_4b6e35b2-8ad6-42d9-ada3-8b07abf5559a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_858e7b7c-7b76-4c08-b31f-e1bb613e6a5f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent_858e7b7c-7b76-4c08-b31f-e1bb613e6a5f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_8ca22774-b783-4d8a-bac4-490a9a43c740" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent_8ca22774-b783-4d8a-bac4-490a9a43c740" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LongTermInvestments_33fb79df-6acc-4686-a059-726117e861db" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_us-gaap_LongTermInvestments_33fb79df-6acc-4686-a059-726117e861db" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_9ff51b5e-bba3-421c-a231-92e3867e2fea" xlink:href="cgnx-20201231.xsd#cgnx_CashCashEquivalentsShortTermAndLongTermInvestments"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_3f7e1682-287f-4279-8495-e1212ddc828c" xlink:to="loc_cgnx_CashCashEquivalentsShortTermAndLongTermInvestments_9ff51b5e-bba3-421c-a231-92e3867e2fea" 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-20201231.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_9cf8b62d-d960-4ab2-956a-4f32a57b25ab" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DueFromForeignBanks_a6708fe7-01a7-45ea-9dc1-4cffa63b652e" xlink:href="cgnx-20201231.xsd#cgnx_DueFromForeignBanks"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_9cf8b62d-d960-4ab2-956a-4f32a57b25ab" xlink:to="loc_cgnx_DueFromForeignBanks_a6708fe7-01a7-45ea-9dc1-4cffa63b652e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InterestReceivable_52596820-aacf-4262-ba69-c5ee36cc6393" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9cf8b62d-d960-4ab2-956a-4f32a57b25ab" xlink:to="loc_us-gaap_InterestReceivable_52596820-aacf-4262-ba69-c5ee36cc6393" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesGrossRealizedGains_9d4f5ec2-c13f-489f-a21c-673ecbbe52e5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesGrossRealizedGains"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_9cf8b62d-d960-4ab2-956a-4f32a57b25ab" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesGrossRealizedGains_9d4f5ec2-c13f-489f-a21c-673ecbbe52e5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses_03eb87d2-bf01-4e25-9c62-bb6ab211f05c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CashAndCashEquivalentsAbstract_9cf8b62d-d960-4ab2-956a-4f32a57b25ab" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses_03eb87d2-bf01-4e25-9c62-bb6ab211f05c" 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-20201231.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_ccd67789-98ae-4180-9794-60c31f9e6825" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_32bc7577-a97e-4894-9a07-630408cb6855" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ccd67789-98ae-4180-9794-60c31f9e6825" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_32bc7577-a97e-4894-9a07-630408cb6855" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_ba370cd9-58a3-4775-8c84-6d94e6147bdd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_32bc7577-a97e-4894-9a07-630408cb6855" xlink:to="loc_us-gaap_FinancialInstrumentAxis_ba370cd9-58a3-4775-8c84-6d94e6147bdd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ba370cd9-58a3-4775-8c84-6d94e6147bdd" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasurySecuritiesMember_3461ee78-0dce-418b-b688-b8241022da91" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_us-gaap_USTreasurySecuritiesMember_3461ee78-0dce-418b-b688-b8241022da91" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_eb2854ce-008b-46fc-83b2-91b7a163a051" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_eb2854ce-008b-46fc-83b2-91b7a163a051" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_35ab270e-313f-4792-8fd9-9125026ec9fe" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_35ab270e-313f-4792-8fd9-9125026ec9fe" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_e1a02142-6913-48be-9b17-7600d748ca76" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_e1a02142-6913-48be-9b17-7600d748ca76" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_328138e2-aa1a-43ec-93e7-4d8c523f8843" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_us-gaap_MunicipalBondsMember_328138e2-aa1a-43ec-93e7-4d8c523f8843" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_6a484cd3-ee4a-4868-bc62-3800044b8a9f" xlink:href="cgnx-20201231.xsd#cgnx_AgencyBondsMember"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_cf54bb5b-3a26-4ac9-9fa1-cb9cb7f46406" xlink:to="loc_cgnx_AgencyBondsMember_6a484cd3-ee4a-4868-bc62-3800044b8a9f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeAxis_7119b166-dc45-4803-aed6-cb398512e730" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_32bc7577-a97e-4894-9a07-630408cb6855" xlink:to="loc_us-gaap_InvestmentTypeAxis_7119b166-dc45-4803-aed6-cb398512e730" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InvestmentTypeCategorizationMember_d2a674e8-022f-47ec-9ef6-6cbe23c6dc82" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7119b166-dc45-4803-aed6-cb398512e730" xlink:to="loc_us-gaap_InvestmentTypeCategorizationMember_d2a674e8-022f-47ec-9ef6-6cbe23c6dc82" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShortTermInvestmentsMember_605e2341-dea3-4d35-8e1a-67e9c797860d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d2a674e8-022f-47ec-9ef6-6cbe23c6dc82" xlink:to="loc_us-gaap_ShortTermInvestmentsMember_605e2341-dea3-4d35-8e1a-67e9c797860d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_LongTermInvestmentsMember_b4bfc9ba-4bf9-42c7-a29c-4193238cb245" xlink:href="cgnx-20201231.xsd#cgnx_LongTermInvestmentsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_InvestmentTypeCategorizationMember_d2a674e8-022f-47ec-9ef6-6cbe23c6dc82" xlink:to="loc_cgnx_LongTermInvestmentsMember_b4bfc9ba-4bf9-42c7-a29c-4193238cb245" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_32bc7577-a97e-4894-9a07-630408cb6855" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_5f1a8a6e-a932-43af-be13-0902527885e0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:to="loc_us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis_5f1a8a6e-a932-43af-be13-0902527885e0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_d362af2b-e1ee-45f6-ad6b-8fd88561edc1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax_d362af2b-e1ee-45f6-ad6b-8fd88561edc1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_7f07483c-1ba2-4b9f-85a8-b0756060fd4e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax_7f07483c-1ba2-4b9f-85a8-b0756060fd4e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_b3c774ca-d625-4924-8c8d-a9e5abf8b116" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_eb6e6ae4-305f-497d-a314-6678f6bc253d" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_b3c774ca-d625-4924-8c8d-a9e5abf8b116" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails" xlink:type="simple" xlink:href="cgnx-20201231.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_bfe95698-f3ae-4974-9e10-877d9ccc7eb3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_7f0c92eb-fcc6-4b56-826b-8b8bde3d843b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bfe95698-f3ae-4974-9e10-877d9ccc7eb3" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_7f0c92eb-fcc6-4b56-826b-8b8bde3d843b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_b85d047a-da15-45e8-b9d9-46f5d086366c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7f0c92eb-fcc6-4b56-826b-8b8bde3d843b" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_b85d047a-da15-45e8-b9d9-46f5d086366c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal_6f8d31f6-789d-4c8c-882b-669d90abc123" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7f0c92eb-fcc6-4b56-826b-8b8bde3d843b" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal_6f8d31f6-789d-4c8c-882b-669d90abc123" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery_4abb35da-83fa-434d-b0d3-0a1bd3ade13f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7f0c92eb-fcc6-4b56-826b-8b8bde3d843b" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery_4abb35da-83fa-434d-b0d3-0a1bd3ade13f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff_4cf9f0b9-7901-423a-be9e-6925c94f7655" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_7f0c92eb-fcc6-4b56-826b-8b8bde3d843b" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff_4cf9f0b9-7901-423a-be9e-6925c94f7655" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_b5581687-fb36-41c3-bbec-0982b09ab670" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward_7f0c92eb-fcc6-4b56-826b-8b8bde3d843b" xlink:to="loc_us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss_b5581687-fb36-41c3-bbec-0982b09ab670" 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-20201231.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_0cd26d3e-fc6d-4515-93b9-9d928bd1d382" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CashAndCashEquivalentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_67c7b628-74d2-4ba7-8db7-7a17ca77264b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0cd26d3e-fc6d-4515-93b9-9d928bd1d382" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesTable_67c7b628-74d2-4ba7-8db7-7a17ca77264b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FinancialInstrumentAxis_0c266840-96ac-48e4-bafb-bdf817144bdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_67c7b628-74d2-4ba7-8db7-7a17ca77264b" xlink:to="loc_us-gaap_FinancialInstrumentAxis_0c266840-96ac-48e4-bafb-bdf817144bdb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0c266840-96ac-48e4-bafb-bdf817144bdb" xlink:to="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_USTreasurySecuritiesMember_5e572889-5ca9-4911-9fa1-cc0bf4d2679b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_us-gaap_USTreasurySecuritiesMember_5e572889-5ca9-4911-9fa1-cc0bf4d2679b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CorporateBondSecuritiesMember_fc7f653d-259a-4e72-9a8c-ed35d5f9c915" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_us-gaap_CorporateBondSecuritiesMember_fc7f653d-259a-4e72-9a8c-ed35d5f9c915" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AssetBackedSecuritiesMember_28a21f45-842e-4d49-aad4-9c1004c23f53" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_us-gaap_AssetBackedSecuritiesMember_28a21f45-842e-4d49-aad4-9c1004c23f53" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SovereignDebtSecuritiesMember_8fded93a-ce03-4f56-a6af-c87aa6a7d09b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_us-gaap_SovereignDebtSecuritiesMember_8fded93a-ce03-4f56-a6af-c87aa6a7d09b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MunicipalBondsMember_de18cb98-adba-4c7e-8c6a-05c10afd10db" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_us-gaap_MunicipalBondsMember_de18cb98-adba-4c7e-8c6a-05c10afd10db" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AgencyBondsMember_f32128fd-2a7d-471f-85af-3b7996f10664" xlink:href="cgnx-20201231.xsd#cgnx_AgencyBondsMember"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain_40f7c5dc-a465-4c59-aabe-2bb0a3dd6d28" xlink:to="loc_cgnx_AgencyBondsMember_f32128fd-2a7d-471f-85af-3b7996f10664" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_67c7b628-74d2-4ba7-8db7-7a17ca77264b" xlink:to="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_655212b2-606f-4909-82cf-3d34572f9723" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue_655212b2-606f-4909-82cf-3d34572f9723" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_e91c62a3-7ce6-462f-84a0-fd1575929e38" xlink:href="cgnx-20201231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue_e91c62a3-7ce6-462f-84a0-fd1575929e38" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_d8b5215c-1573-49b1-981c-fd3d5ec2441f" xlink:href="cgnx-20201231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue_d8b5215c-1573-49b1-981c-fd3d5ec2441f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_1d9a1757-60ac-4d44-ae79-aca64ea8002d" xlink:href="cgnx-20201231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue_1d9a1757-60ac-4d44-ae79-aca64ea8002d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_f95cc2c2-00ab-4c95-b034-a5a513ffff72" xlink:href="cgnx-20201231.xsd#cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfAvailableForSaleSecuritiesLineItems_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_cgnx_AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue_f95cc2c2-00ab-4c95-b034-a5a513ffff72" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_299d3cb0-67db-4d9b-960d-9d74fd8970af" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cd1fe78d-472d-4ac2-b8d6-5659c3aa4024" xlink:to="loc_us-gaap_AvailableForSaleSecuritiesDebtSecurities_299d3cb0-67db-4d9b-960d-9d74fd8970af" 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-20201231.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_8d3dfb8e-4c9c-419e-a201-5272c0d9699f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryDisclosureTextBlock_8df51b87-712f-480e-84ad-04e3bf8ee16d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8d3dfb8e-4c9c-419e-a201-5272c0d9699f" xlink:to="loc_us-gaap_InventoryDisclosureTextBlock_8df51b87-712f-480e-84ad-04e3bf8ee16d" 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-20201231.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_db962d82-74c3-4dcd-bdd1-ec1fc564c55b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfInventoryCurrentTableTextBlock_8dd29a87-a83d-474f-bc36-041aec838294" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db962d82-74c3-4dcd-bdd1-ec1fc564c55b" xlink:to="loc_us-gaap_ScheduleOfInventoryCurrentTableTextBlock_8dd29a87-a83d-474f-bc36-041aec838294" 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-20201231.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_da0a6ba2-9a9b-4d87-8d55-8ef7bb35e3fb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InventoryDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryRawMaterialsNetOfReserves_5b34b9ca-37cd-4ba4-bc5a-aa5f32a9a69e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_da0a6ba2-9a9b-4d87-8d55-8ef7bb35e3fb" xlink:to="loc_us-gaap_InventoryRawMaterialsNetOfReserves_5b34b9ca-37cd-4ba4-bc5a-aa5f32a9a69e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryWorkInProcessNetOfReserves_1ca2a3b5-2008-4862-a5e6-264e8d63f09c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_da0a6ba2-9a9b-4d87-8d55-8ef7bb35e3fb" xlink:to="loc_us-gaap_InventoryWorkInProcessNetOfReserves_1ca2a3b5-2008-4862-a5e6-264e8d63f09c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_c4781065-ffda-41be-8c76-5e084d8fb386" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_da0a6ba2-9a9b-4d87-8d55-8ef7bb35e3fb" xlink:to="loc_us-gaap_InventoryFinishedGoodsNetOfReserves_c4781065-ffda-41be-8c76-5e084d8fb386" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InventoryNet_a4ad9510-31e3-453d-a490-003dd7c18dc6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_da0a6ba2-9a9b-4d87-8d55-8ef7bb35e3fb" xlink:to="loc_us-gaap_InventoryNet_a4ad9510-31e3-453d-a490-003dd7c18dc6" 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-20201231.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_9d33dc3b-5832-46ee-8687-3572de7176c8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock_e7be165a-8c34-45c4-ac79-3c425ffb05e6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9d33dc3b-5832-46ee-8687-3572de7176c8" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock_e7be165a-8c34-45c4-ac79-3c425ffb05e6" 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-20201231.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_5b2ee8ba-b509-4167-84dd-243a0cdac783" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTextBlock_2c00e608-69d2-4dd9-9618-4c8c7c6db095" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5b2ee8ba-b509-4167-84dd-243a0cdac783" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTextBlock_2c00e608-69d2-4dd9-9618-4c8c7c6db095" 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-20201231.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_6e7ad5d0-ce2b-4168-8216-a82fe1172776" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_30c434bf-eae6-44d7-b0d4-887a36262d40" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6e7ad5d0-ce2b-4168-8216-a82fe1172776" xlink:to="loc_us-gaap_ScheduleOfPropertyPlantAndEquipmentTable_30c434bf-eae6-44d7-b0d4-887a36262d40" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_b39dc4c7-6045-492f-a8d7-8eb0960c662f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_30c434bf-eae6-44d7-b0d4-887a36262d40" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentByTypeAxis_b39dc4c7-6045-492f-a8d7-8eb0960c662f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b39dc4c7-6045-492f-a8d7-8eb0960c662f" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LandMember_4887d4d3-95f0-4538-94d3-17a641e5d5ff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_LandMember_4887d4d3-95f0-4538-94d3-17a641e5d5ff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingMember_4c1427a6-2959-424d-9c6a-92467ec8b608" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_BuildingMember_4c1427a6-2959-424d-9c6a-92467ec8b608" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BuildingImprovementsMember_8a377938-1ec4-43fe-9165-f11600cb55bf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_BuildingImprovementsMember_8a377938-1ec4-43fe-9165-f11600cb55bf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeaseholdImprovementsMember_e5cfb080-6920-4a31-b275-43b46a08e325" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_LeaseholdImprovementsMember_e5cfb080-6920-4a31-b275-43b46a08e325" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_HardwareAndSoftwareMember_474efb5b-1538-4305-aef4-b67c1674e808" xlink:href="cgnx-20201231.xsd#cgnx_HardwareAndSoftwareMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentTypeDomain_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_cgnx_HardwareAndSoftwareMember_474efb5b-1538-4305-aef4-b67c1674e808" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EquipmentMember_44c8ffbd-2c67-4946-b860-7a9944e83b68" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_EquipmentMember_44c8ffbd-2c67-4946-b860-7a9944e83b68" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FurnitureAndFixturesMember_cbac58ef-63a4-4cb4-a23d-995a059e1d58" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_930c3c5c-1e58-46e7-aaeb-7745854bdbff" xlink:to="loc_us-gaap_FurnitureAndFixturesMember_cbac58ef-63a4-4cb4-a23d-995a059e1d58" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentLineItems_72127edf-a8dc-4fbf-a0bc-5b3792a99ba0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_30c434bf-eae6-44d7-b0d4-887a36262d40" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentLineItems_72127edf-a8dc-4fbf-a0bc-5b3792a99ba0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentGross_1b470fe7-ed3a-4b31-a213-19b1179cd552" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_72127edf-a8dc-4fbf-a0bc-5b3792a99ba0" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentGross_1b470fe7-ed3a-4b31-a213-19b1179cd552" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_e040a709-a13b-4906-89b2-4821503d8888" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_72127edf-a8dc-4fbf-a0bc-5b3792a99ba0" xlink:to="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment_e040a709-a13b-4906-89b2-4821503d8888" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentNet_dc46a5af-5a43-41f9-b677-f3c514af625b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_72127edf-a8dc-4fbf-a0bc-5b3792a99ba0" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentNet_dc46a5af-5a43-41f9-b677-f3c514af625b" 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-20201231.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_c4fe8f21-598d-45bb-9187-d4e312240510" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertyPlantAndEquipmentAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertyPlantAndEquipmentDisposals_e0664ecc-d99c-4316-b04e-7ba6fbb6c42b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c4fe8f21-598d-45bb-9187-d4e312240510" xlink:to="loc_us-gaap_PropertyPlantAndEquipmentDisposals_e0664ecc-d99c-4316-b04e-7ba6fbb6c42b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1_28174317-02bf-4c0e-8e0f-b2bb65d0276c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c4fe8f21-598d-45bb-9187-d4e312240510" xlink:to="loc_us-gaap_AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1_28174317-02bf-4c0e-8e0f-b2bb65d0276c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross_7b776f03-7957-427d-bedc-54ab64fdfdaa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentAbstract_c4fe8f21-598d-45bb-9187-d4e312240510" xlink:to="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross_7b776f03-7957-427d-bedc-54ab64fdfdaa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation_abe5b941-4c76-401b-b314-44d65729af59" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentAbstract_c4fe8f21-598d-45bb-9187-d4e312240510" xlink:to="loc_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation_abe5b941-4c76-401b-b314-44d65729af59" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GainLossOnDispositionOfAssets1_2b25cb87-615d-4ae3-9167-fb84f4ecea80" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GainLossOnDispositionOfAssets1"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_PropertyPlantAndEquipmentAbstract_c4fe8f21-598d-45bb-9187-d4e312240510" xlink:to="loc_us-gaap_GainLossOnDispositionOfAssets1_2b25cb87-615d-4ae3-9167-fb84f4ecea80" 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-20201231.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_df9d3bb7-5893-48d9-9ff3-21fb99772ab1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeasesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock_0119066f-04b0-405f-add4-a01ce34a1c0a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_df9d3bb7-5893-48d9-9ff3-21fb99772ab1" xlink:to="loc_us-gaap_OperatingLeasesOfLessorDisclosureTextBlock_0119066f-04b0-405f-add4-a01ce34a1c0a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeasesTextBlock_c299acc1-0d45-4c01-9f2e-14763a98d240" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_df9d3bb7-5893-48d9-9ff3-21fb99772ab1" xlink:to="loc_us-gaap_LesseeOperatingLeasesTextBlock_c299acc1-0d45-4c01-9f2e-14763a98d240" 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-20201231.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_69a52f35-acf2-4dce-892b-c1d13d26f825" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeasesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock_4212fc4c-0004-4102-ac72-c8f85bbbb1f5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_69a52f35-acf2-4dce-892b-c1d13d26f825" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock_4212fc4c-0004-4102-ac72-c8f85bbbb1f5" 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-20201231.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_228688de-1316-4d09-a67b-dcc25dec0b41" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeasesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable_81095d80-1ee1-499a-b441-443c150fab48" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_LeasesAbstract_228688de-1316-4d09-a67b-dcc25dec0b41" xlink:to="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable_81095d80-1ee1-499a-b441-443c150fab48" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_066d13ec-90de-4676-b552-c7c8eebea894" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable_81095d80-1ee1-499a-b441-443c150fab48" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_066d13ec-90de-4676-b552-c7c8eebea894" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_8fe6df2c-0bca-45d8-be1a-00510882fca8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_066d13ec-90de-4676-b552-c7c8eebea894" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_8fe6df2c-0bca-45d8-be1a-00510882fca8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_c3ef304f-e318-4b16-aa8b-9c2b9474e5aa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8fe6df2c-0bca-45d8-be1a-00510882fca8" xlink:to="loc_us-gaap_ContractTerminationMember_c3ef304f-e318-4b16-aa8b-9c2b9474e5aa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable_81095d80-1ee1-499a-b441-443c150fab48" xlink:to="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseRightOfUseAsset_0977f41d-f6fe-4784-983b-4af6ab0dd68d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseRightOfUseAsset"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseRightOfUseAsset_0977f41d-f6fe-4784-983b-4af6ab0dd68d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityCurrent_67b6a17b-1c9b-47d7-9b00-321782805450" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityCurrent"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseLiabilityCurrent_67b6a17b-1c9b-47d7-9b00-321782805450" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_d6d7a874-38c8-4259-aa89-b0eddd5a5b1c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiabilityNoncurrent"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseLiabilityNoncurrent_d6d7a874-38c8-4259-aa89-b0eddd5a5b1c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseExpense_174f6fb4-395f-40c7-b255-66dd3c7a4004" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseExpense"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseExpense_174f6fb4-395f-40c7-b255-66dd3c7a4004" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeasePayments_fe542d33-fd42-45de-bcec-6c01190bf6b7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeasePayments"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeasePayments_fe542d33-fd42-45de-bcec-6c01190bf6b7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_7ceddb11-8959-467c-8462-671fda132fef" xlink:href="cgnx-20201231.xsd#cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_cgnx_OperatingLeaseExpenseNoLiabilityOrAssetRecognized_7ceddb11-8959-467c-8462-671fda132fef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LeaseAndRentalExpense_2b0beb95-41c0-444b-a2a4-9ad9950f5349" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeaseAndRentalExpense"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_LeaseAndRentalExpense_2b0beb95-41c0-444b-a2a4-9ad9950f5349" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLiability_f0406882-38bd-4447-a08b-cd93629f4d05" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLiability"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseLiability_f0406882-38bd-4447-a08b-cd93629f4d05" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_e18228d6-b509-4b01-bb85-f6dff5e0cbc8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent_e18228d6-b509-4b01-bb85-f6dff5e0cbc8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_b3e3d791-7890-4e03-95df-7d30318fd042" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1_b3e3d791-7890-4e03-95df-7d30318fd042" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_c96976d4-3fd0-4eb0-9992-097c49a126db" xlink:href="cgnx-20201231.xsd#cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_cgnx_OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset_c96976d4-3fd0-4eb0-9992-097c49a126db" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseImpairmentLoss_f9c0b69c-1390-494e-bccc-84da5eac736e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseImpairmentLoss"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseImpairmentLoss_f9c0b69c-1390-494e-bccc-84da5eac736e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingLeaseLeaseIncome_49214371-a2f5-4478-9dc2-12ec04682603" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingLeaseLeaseIncome"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_OperatingLeaseLeaseIncome_49214371-a2f5-4478-9dc2-12ec04682603" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RentalIncomeNonoperating_973863da-691a-4233-8676-ed6bf77173fb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RentalIncomeNonoperating"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems_dcbb9ddc-c4d3-4a9f-81b0-cc507f75823d" xlink:to="loc_us-gaap_RentalIncomeNonoperating_973863da-691a-4233-8676-ed6bf77173fb" 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-20201231.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_8051e53c-87a6-4480-9c2c-941ae67ff45c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LeasesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_01131211-b824-43f0-8b11-09bafcb6890e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8051e53c-87a6-4480-9c2c-941ae67ff45c" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths_01131211-b824-43f0-8b11-09bafcb6890e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_79125fe4-bff4-4ce4-af5c-1bd9433dba94" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8051e53c-87a6-4480-9c2c-941ae67ff45c" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo_79125fe4-bff4-4ce4-af5c-1bd9433dba94" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_4a999ea2-d69c-4a89-a152-757bf99bfb1a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8051e53c-87a6-4480-9c2c-941ae67ff45c" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree_4a999ea2-d69c-4a89-a152-757bf99bfb1a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_c2ea8919-2515-4d9b-a5af-70f45d989724" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8051e53c-87a6-4480-9c2c-941ae67ff45c" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour_c2ea8919-2515-4d9b-a5af-70f45d989724" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive_a1f0d407-8aea-4caa-983f-74f4ed767748" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8051e53c-87a6-4480-9c2c-941ae67ff45c" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive_a1f0d407-8aea-4caa-983f-74f4ed767748" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive_63c181ec-5c22-4237-8f9d-a71a262b8035" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8051e53c-87a6-4480-9c2c-941ae67ff45c" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive_63c181ec-5c22-4237-8f9d-a71a262b8035" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_b6b07b42-e1f9-4268-ab07-8e1955da152c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8051e53c-87a6-4480-9c2c-941ae67ff45c" xlink:to="loc_us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue_b6b07b42-e1f9-4268-ab07-8e1955da152c" 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-20201231.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_6cdd6542-abde-4d77-83df-7ffee037ef73" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillDisclosureTextBlock_dfb5b288-8395-4233-a691-adddeff7b7ba" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6cdd6542-abde-4d77-83df-7ffee037ef73" xlink:to="loc_us-gaap_GoodwillDisclosureTextBlock_dfb5b288-8395-4233-a691-adddeff7b7ba" 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-20201231.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_372c3572-4f21-44e5-88d6-f71e0f19c03a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfGoodwillTextBlock_5b30175e-9d67-4005-891e-85556f1e5447" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_372c3572-4f21-44e5-88d6-f71e0f19c03a" xlink:to="loc_us-gaap_ScheduleOfGoodwillTextBlock_5b30175e-9d67-4005-891e-85556f1e5447" 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-20201231.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_1f88a638-37db-495d-909f-f6151873b365" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfGoodwillTable_2fc3fcf3-ef6b-4e15-a6de-f20adb0ec171" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1f88a638-37db-495d-909f-f6151873b365" xlink:to="loc_us-gaap_ScheduleOfGoodwillTable_2fc3fcf3-ef6b-4e15-a6de-f20adb0ec171" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_883a4d5b-d788-4209-9ef0-bd50fade5ae9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2fc3fcf3-ef6b-4e15-a6de-f20adb0ec171" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_883a4d5b-d788-4209-9ef0-bd50fade5ae9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_28c9f2bb-fc83-4666-896c-de71a2036773" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_883a4d5b-d788-4209-9ef0-bd50fade5ae9" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_28c9f2bb-fc83-4666-896c-de71a2036773" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_dfa0ab1c-e2a6-48ca-a51f-b02fa013439f" xlink:href="cgnx-20201231.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_28c9f2bb-fc83-4666-896c-de71a2036773" xlink:to="loc_cgnx_SualabCo.Ltd.Member_dfa0ab1c-e2a6-48ca-a51f-b02fa013439f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillLineItems_553af93f-8397-4031-9cff-83fd29fedf8c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2fc3fcf3-ef6b-4e15-a6de-f20adb0ec171" xlink:to="loc_us-gaap_GoodwillLineItems_553af93f-8397-4031-9cff-83fd29fedf8c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillRollForward_38608f55-48ec-4348-8728-f96953f10ebf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_553af93f-8397-4031-9cff-83fd29fedf8c" xlink:to="loc_us-gaap_GoodwillRollForward_38608f55-48ec-4348-8728-f96953f10ebf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_c1c9c58f-a1f2-42ea-a49b-7436e36c8fdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_38608f55-48ec-4348-8728-f96953f10ebf" xlink:to="loc_us-gaap_Goodwill_c1c9c58f-a1f2-42ea-a49b-7436e36c8fdb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillAcquiredDuringPeriod_5df42df4-bbda-4a21-a758-9f90709f9098" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAcquiredDuringPeriod"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillRollForward_38608f55-48ec-4348-8728-f96953f10ebf" xlink:to="loc_us-gaap_GoodwillAcquiredDuringPeriod_5df42df4-bbda-4a21-a758-9f90709f9098" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillForeignCurrencyTranslationGainLoss_3c3f8137-c333-4ea0-8a1c-b87c88b19a81" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_38608f55-48ec-4348-8728-f96953f10ebf" xlink:to="loc_us-gaap_GoodwillForeignCurrencyTranslationGainLoss_3c3f8137-c333-4ea0-8a1c-b87c88b19a81" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_ec0f267e-72af-4842-87cc-87b04ede9c1f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_38608f55-48ec-4348-8728-f96953f10ebf" xlink:to="loc_us-gaap_Goodwill_ec0f267e-72af-4842-87cc-87b04ede9c1f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GoodwillOtherIncreaseDecrease_0942e99a-c3d2-4ba3-af9a-dca753cc7fd0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillOtherIncreaseDecrease"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GoodwillRollForward_38608f55-48ec-4348-8728-f96953f10ebf" xlink:to="loc_us-gaap_GoodwillOtherIncreaseDecrease_0942e99a-c3d2-4ba3-af9a-dca753cc7fd0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/GoodwillAdditionalInformationDetail" xlink:type="simple" xlink:href="cgnx-20201231.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_453e8680-1844-4397-b717-66f117735617" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForProceedsFromPreviousAcquisition_452c6ced-5b17-4b97-872c-c548adad25dd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_453e8680-1844-4397-b717-66f117735617" xlink:to="loc_us-gaap_PaymentsForProceedsFromPreviousAcquisition_452c6ced-5b17-4b97-872c-c548adad25dd" 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-20201231.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_027ed712-5884-4e47-93c2-41290a5e7b31" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsDisclosureTextBlock_c3519903-ab75-43f2-a500-d416bbe0bee8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_027ed712-5884-4e47-93c2-41290a5e7b31" xlink:to="loc_us-gaap_IntangibleAssetsDisclosureTextBlock_c3519903-ab75-43f2-a500-d416bbe0bee8" 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-20201231.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_f85db854-e3b6-4b6e-b9ed-3464fcb26607" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock_60a6d4d6-fbf0-4f45-8cf6-6396fee66d26" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f85db854-e3b6-4b6e-b9ed-3464fcb26607" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock_60a6d4d6-fbf0-4f45-8cf6-6396fee66d26" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock_a8f42ba2-f33c-4646-87dc-9c793afd0943" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f85db854-e3b6-4b6e-b9ed-3464fcb26607" xlink:to="loc_us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock_a8f42ba2-f33c-4646-87dc-9c793afd0943" 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-20201231.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_2fe20583-c9ac-4033-abb9-10f0eb660f70" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_d4277e8b-3f4a-4adc-801e-2c56a9aa4050" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2fe20583-c9ac-4033-abb9-10f0eb660f70" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_d4277e8b-3f4a-4adc-801e-2c56a9aa4050" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_ab3fc150-9383-4e1c-9ec4-d40457b7ad4f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d4277e8b-3f4a-4adc-801e-2c56a9aa4050" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_ab3fc150-9383-4e1c-9ec4-d40457b7ad4f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ab3fc150-9383-4e1c-9ec4-d40457b7ad4f" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DistributionRightsMember_518979b2-e303-4d17-a6b4-7f4bc2841e21" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_DistributionRightsMember_518979b2-e303-4d17-a6b4-7f4bc2841e21" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_78bc2cc8-2c92-48f7-911b-3d920d1ea611" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_78bc2cc8-2c92-48f7-911b-3d920d1ea611" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_4c2230af-190b-4b4b-941a-6c8af6b096fb" xlink:href="cgnx-20201231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_4c2230af-190b-4b4b-941a-6c8af6b096fb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_cba1e248-d291-4aed-8c3a-48b95769d996" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_cba1e248-d291-4aed-8c3a-48b95769d996" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_8bc7a57d-036a-45f6-8bc7-333f1d6880f1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_8bc7a57d-036a-45f6-8bc7-333f1d6880f1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_d5a00eff-5799-4126-ada0-b12ec1b0a8bf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_TrademarksMember_d5a00eff-5799-4126-ada0-b12ec1b0a8bf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherIntangibleAssetsMember_25b379f5-48ae-4fe5-aecc-54ec293d8dc3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f45ecb1b-2847-4405-a681-58de4017bc2b" xlink:to="loc_us-gaap_OtherIntangibleAssetsMember_25b379f5-48ae-4fe5-aecc-54ec293d8dc3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_67869a22-e527-4228-a351-1e4dd3271a8e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d4277e8b-3f4a-4adc-801e-2c56a9aa4050" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_67869a22-e527-4228-a351-1e4dd3271a8e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_93ec4c88-4094-4554-809c-db4e11079210" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_67869a22-e527-4228-a351-1e4dd3271a8e" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_93ec4c88-4094-4554-809c-db4e11079210" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_ce81ebfb-824b-4d70-aa56-ac0394e24a26" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_93ec4c88-4094-4554-809c-db4e11079210" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_ce81ebfb-824b-4d70-aa56-ac0394e24a26" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d4277e8b-3f4a-4adc-801e-2c56a9aa4050" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsGross_93bebf61-7eff-48df-a530-39ee3605dc8c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsGross_93bebf61-7eff-48df-a530-39ee3605dc8c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_aeb79a1d-3c6d-4e2a-b47a-57678257290f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_aeb79a1d-3c6d-4e2a-b47a-57678257290f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IntangibleAssetsNetIncludingGoodwill_73f932f2-e36f-4d75-b0bc-db0aaa246e21" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:to="loc_us-gaap_IntangibleAssetsNetIncludingGoodwill_73f932f2-e36f-4d75-b0bc-db0aaa246e21" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsNet_2d186bee-1254-493c-936f-f2cb317454ec" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsNet_2d186bee-1254-493c-936f-f2cb317454ec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill_b4dc84ec-3d26-462d-be17-7272b960c493" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_64b59f9f-1539-467f-85ba-90056a1c8cc5" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill_b4dc84ec-3d26-462d-be17-7272b960c493" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail" xlink:type="simple" xlink:href="cgnx-20201231.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_36281766-4338-4294-96f8-d39e85ccd5fb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths_3fa84407-aaa1-4832-ae23-24e6dd07abf6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_36281766-4338-4294-96f8-d39e85ccd5fb" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths_3fa84407-aaa1-4832-ae23-24e6dd07abf6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo_c5cb962a-8c10-43e9-976f-a13f7065da7a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_36281766-4338-4294-96f8-d39e85ccd5fb" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo_c5cb962a-8c10-43e9-976f-a13f7065da7a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree_05dfd09e-752f-4e26-b153-7be78ce81cfc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_36281766-4338-4294-96f8-d39e85ccd5fb" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree_05dfd09e-752f-4e26-b153-7be78ce81cfc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour_a7dafa83-0e8e-4d74-9b9a-359802ea4861" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_36281766-4338-4294-96f8-d39e85ccd5fb" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour_a7dafa83-0e8e-4d74-9b9a-359802ea4861" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive_c943ea70-e2c1-42b9-934b-a4f21be3845d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_36281766-4338-4294-96f8-d39e85ccd5fb" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive_c943ea70-e2c1-42b9-934b-a4f21be3845d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive_88f8d695-6c21-4f28-9cf7-da1e057b6409" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_36281766-4338-4294-96f8-d39e85ccd5fb" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive_88f8d695-6c21-4f28-9cf7-da1e057b6409" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsNet_4f532939-c87c-4cfb-a129-6ad8e065a8e8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_36281766-4338-4294-96f8-d39e85ccd5fb" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsNet_4f532939-c87c-4cfb-a129-6ad8e065a8e8" 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-20201231.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_030d1f48-acd4-4b0d-bff3-34594fabbe24" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GoodwillAndIntangibleAssetsDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_698bc5f7-5f46-46e7-80ce-3e375e341cae" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_030d1f48-acd4-4b0d-bff3-34594fabbe24" xlink:to="loc_us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable_698bc5f7-5f46-46e7-80ce-3e375e341cae" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_c638200d-64c3-48bf-9d6a-eb5217255d1c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_698bc5f7-5f46-46e7-80ce-3e375e341cae" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_c638200d-64c3-48bf-9d6a-eb5217255d1c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_ece2a04d-8c01-4650-acda-9b41009a69c5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c638200d-64c3-48bf-9d6a-eb5217255d1c" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_ece2a04d-8c01-4650-acda-9b41009a69c5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_29041631-6164-4e49-aa12-d316d3fd10c8" xlink:href="cgnx-20201231.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_ece2a04d-8c01-4650-acda-9b41009a69c5" xlink:to="loc_cgnx_SualabCo.Ltd.Member_29041631-6164-4e49-aa12-d316d3fd10c8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EnShapeGmbHAbstract_aa71737c-c7f4-4df6-a23c-6498ea1c3145" xlink:href="cgnx-20201231.xsd#cgnx_EnShapeGmbHAbstract"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionAcquireeDomain_ece2a04d-8c01-4650-acda-9b41009a69c5" xlink:to="loc_cgnx_EnShapeGmbHAbstract_aa71737c-c7f4-4df6-a23c-6498ea1c3145" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_442ed233-f15e-4dcc-94c2-8a77ac58a6bd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_698bc5f7-5f46-46e7-80ce-3e375e341cae" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_442ed233-f15e-4dcc-94c2-8a77ac58a6bd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_9950c1df-ea4b-4cd8-9934-7b67ecbe4fdc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_442ed233-f15e-4dcc-94c2-8a77ac58a6bd" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_9950c1df-ea4b-4cd8-9934-7b67ecbe4fdc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_8754a736-4d5c-4c81-8910-686eca680907" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9950c1df-ea4b-4cd8-9934-7b67ecbe4fdc" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_8754a736-4d5c-4c81-8910-686eca680907" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_7b994afd-99b7-4a53-a42c-269639447749" xlink:href="cgnx-20201231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_9950c1df-ea4b-4cd8-9934-7b67ecbe4fdc" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_7b994afd-99b7-4a53-a42c-269639447749" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_d966c704-15fd-4537-a373-0f5ab131abaa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_698bc5f7-5f46-46e7-80ce-3e375e341cae" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_d966c704-15fd-4537-a373-0f5ab131abaa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_8b819759-7be3-4842-a676-16becbc02355" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d966c704-15fd-4537-a373-0f5ab131abaa" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_8b819759-7be3-4842-a676-16becbc02355" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_9bf050e4-f64c-4aa1-a91f-793352310ef8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8b819759-7be3-4842-a676-16becbc02355" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_9bf050e4-f64c-4aa1-a91f-793352310ef8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_698bc5f7-5f46-46e7-80ce-3e375e341cae" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsLineItems_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_c1cf9b0a-7f5a-441d-a2a2-7201c750783c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_c1cf9b0a-7f5a-441d-a2a2-7201c750783c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_ba6034f5-ba91-4fc8-ae09-c6337c48ef7e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_ba6034f5-ba91-4fc8-ae09-c6337c48ef7e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_7da258e0-c334-4d3b-96a2-74c7904ac6c6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_7da258e0-c334-4d3b-96a2-74c7904ac6c6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_5f74da78-6a70-4b00-942a-0561523281a5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8e41821f-1537-4ede-8a7a-ca8aa98e5a5c" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization_5f74da78-6a70-4b00-942a-0561523281a5" 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-20201231.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_3d35eb16-648d-48fc-805d-701f0b7a14d4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PayablesAndAccrualsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock_62cb5c83-4980-4b35-92c4-b234e498ab31" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3d35eb16-648d-48fc-805d-701f0b7a14d4" xlink:to="loc_us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock_62cb5c83-4980-4b35-92c4-b234e498ab31" 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-20201231.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_8401d533-2f31-40b9-82ee-09b8190b6b11" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PayablesAndAccrualsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock_db996730-17e5-4644-8e7c-e99d5777f960" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8401d533-2f31-40b9-82ee-09b8190b6b11" xlink:to="loc_us-gaap_ScheduleOfAccruedLiabilitiesTableTextBlock_db996730-17e5-4644-8e7c-e99d5777f960" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock_fcf578ad-4ab4-4576-8bd8-781ba9a92bca" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8401d533-2f31-40b9-82ee-09b8190b6b11" xlink:to="loc_us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock_fcf578ad-4ab4-4576-8bd8-781ba9a92bca" 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-20201231.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_1b2c4194-805e-4dd1-8e89-3fbf6cd74929" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PayablesAndAccrualsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_dfb05d32-696e-4049-9d62-cbf66e2a972d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1b2c4194-805e-4dd1-8e89-3fbf6cd74929" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_dfb05d32-696e-4049-9d62-cbf66e2a972d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedBonusesCurrent_5453ac7d-88be-4271-b3d0-eb1ff089bd9a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dfb05d32-696e-4049-9d62-cbf66e2a972d" xlink:to="loc_us-gaap_AccruedBonusesCurrent_5453ac7d-88be-4271-b3d0-eb1ff089bd9a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedSalariesCurrent_1fb9423a-7c05-4fc9-ae46-057debfcd299" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dfb05d32-696e-4049-9d62-cbf66e2a972d" xlink:to="loc_us-gaap_AccruedSalariesCurrent_1fb9423a-7c05-4fc9-ae46-057debfcd299" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RetirementAllowance_155827d1-59a1-4902-af60-68be587cab3b" xlink:href="cgnx-20201231.xsd#cgnx_RetirementAllowance"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AccruedLiabilitiesCurrentAbstract_dfb05d32-696e-4049-9d62-cbf66e2a972d" xlink:to="loc_cgnx_RetirementAllowance_155827d1-59a1-4902-af60-68be587cab3b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_84fdbbb5-9163-4feb-b42e-b7d78ed8774b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dfb05d32-696e-4049-9d62-cbf66e2a972d" xlink:to="loc_us-gaap_ProductWarrantyAccrualClassifiedCurrent_84fdbbb5-9163-4feb-b42e-b7d78ed8774b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedVacationCurrent_6f0a7e3e-4b10-48d7-92de-59798e47bcf3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dfb05d32-696e-4049-9d62-cbf66e2a972d" xlink:to="loc_us-gaap_AccruedVacationCurrent_6f0a7e3e-4b10-48d7-92de-59798e47bcf3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherAccruedLiabilitiesCurrent_863bb959-8678-4484-a4cd-67b8171080a6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dfb05d32-696e-4049-9d62-cbf66e2a972d" xlink:to="loc_us-gaap_OtherAccruedLiabilitiesCurrent_863bb959-8678-4484-a4cd-67b8171080a6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesCurrent_9349c31b-5ebc-4596-b502-7c72caf0d263" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dfb05d32-696e-4049-9d62-cbf66e2a972d" xlink:to="loc_us-gaap_AccruedLiabilitiesCurrent_9349c31b-5ebc-4596-b502-7c72caf0d263" 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-20201231.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_0299b49c-d6e1-4d37-83aa-b36a8bcaa55f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PayablesAndAccrualsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInStandardProductWarrantyAccrualRollForward_b5284c57-0e47-4cb0-a46a-9ede8290c711" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0299b49c-d6e1-4d37-83aa-b36a8bcaa55f" xlink:to="loc_us-gaap_MovementInStandardProductWarrantyAccrualRollForward_b5284c57-0e47-4cb0-a46a-9ede8290c711" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrual_9f024cfa-6044-4a4c-9232-aea05d35f851" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b5284c57-0e47-4cb0-a46a-9ede8290c711" xlink:to="loc_us-gaap_ProductWarrantyAccrual_9f024cfa-6044-4a4c-9232-aea05d35f851" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualWarrantiesIssued_8c5a81d3-0348-4fc4-b4d4-03d23a5b3c76" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b5284c57-0e47-4cb0-a46a-9ede8290c711" xlink:to="loc_us-gaap_ProductWarrantyAccrualWarrantiesIssued_8c5a81d3-0348-4fc4-b4d4-03d23a5b3c76" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrualPayments_e93bdda7-125f-4456-85c7-bf710b702ede" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b5284c57-0e47-4cb0-a46a-9ede8290c711" xlink:to="loc_us-gaap_ProductWarrantyAccrualPayments_e93bdda7-125f-4456-85c7-bf710b702ede" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProductWarrantyAccrual_cae869eb-04aa-4fbe-a367-7857b81ffc33" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b5284c57-0e47-4cb0-a46a-9ede8290c711" xlink:to="loc_us-gaap_ProductWarrantyAccrual_cae869eb-04aa-4fbe-a367-7857b81ffc33" 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-20201231.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_a0e635d4-b766-4f8d-89c3-f5f2dca6165d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock_a9b35f09-6090-43d7-a287-e8b61448369e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a0e635d4-b766-4f8d-89c3-f5f2dca6165d" xlink:to="loc_us-gaap_CommitmentsAndContingenciesDisclosureTextBlock_a9b35f09-6090-43d7-a287-e8b61448369e" 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-20201231.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_b33fa020-721c-40be-806a-9c67386877a5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommitmentsAndContingenciesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_1a07e1a2-5cfd-4e78-8fdc-432b6ae42555" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b33fa020-721c-40be-806a-9c67386877a5" xlink:to="loc_us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted_1a07e1a2-5cfd-4e78-8fdc-432b6ae42555" 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-20201231.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_bb3e6717-d7f0-482c-9ff8-e6358db3e8b1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GuaranteesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_IndemnificationProvisionsTextBlock_5730579d-355d-4c4a-858c-54aefdf16b5c" xlink:href="cgnx-20201231.xsd#cgnx_IndemnificationProvisionsTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_GuaranteesAbstract_bb3e6717-d7f0-482c-9ff8-e6358db3e8b1" xlink:to="loc_cgnx_IndemnificationProvisionsTextBlock_5730579d-355d-4c4a-858c-54aefdf16b5c" 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-20201231.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_561c3cd4-11a4-4372-b4ae-18d938c793c0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock_170a62c4-3399-4737-a109-f4f5bb67b836" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_561c3cd4-11a4-4372-b4ae-18d938c793c0" xlink:to="loc_us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock_170a62c4-3399-4737-a109-f4f5bb67b836" 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-20201231.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_86ae9f84-c7a8-4b19-a242-46ed4462536a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock_bbab59a1-0b8e-4a3b-b7a1-9e9436195a58" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_86ae9f84-c7a8-4b19-a242-46ed4462536a" xlink:to="loc_us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock_bbab59a1-0b8e-4a3b-b7a1-9e9436195a58" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock_3cce07fc-4e92-4704-8396-a1118aaf006d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_86ae9f84-c7a8-4b19-a242-46ed4462536a" xlink:to="loc_us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock_3cce07fc-4e92-4704-8396-a1118aaf006d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OffsettingAssetsTableTextBlock_136f631a-21ea-4630-a904-486e0fa6631b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_86ae9f84-c7a8-4b19-a242-46ed4462536a" xlink:to="loc_us-gaap_OffsettingAssetsTableTextBlock_136f631a-21ea-4630-a904-486e0fa6631b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock_dcfebb3a-fad3-442c-9b20-7343a4b553ca" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_86ae9f84-c7a8-4b19-a242-46ed4462536a" xlink:to="loc_us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock_dcfebb3a-fad3-442c-9b20-7343a4b553ca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock_05ece7de-8bea-4a1f-a7d5-6e0ae352ecce" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_86ae9f84-c7a8-4b19-a242-46ed4462536a" xlink:to="loc_us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock_05ece7de-8bea-4a1f-a7d5-6e0ae352ecce" 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-20201231.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_33543bda-5e14-4c78-bbca-253a801a2a43" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeTable_944d9cff-fad5-4fae-a367-aec64b7727cc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_33543bda-5e14-4c78-bbca-253a801a2a43" xlink:to="loc_us-gaap_DerivativeTable_944d9cff-fad5-4fae-a367-aec64b7727cc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_d63ead9c-f46d-4ff4-8cc3-87de57d965c3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_944d9cff-fad5-4fae-a367-aec64b7727cc" xlink:to="loc_us-gaap_HedgingDesignationAxis_d63ead9c-f46d-4ff4-8cc3-87de57d965c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_69f9e525-51f1-4c32-9dc3-7f87828ecd5c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d63ead9c-f46d-4ff4-8cc3-87de57d965c3" xlink:to="loc_us-gaap_HedgingDesignationDomain_69f9e525-51f1-4c32-9dc3-7f87828ecd5c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_07b0ae1c-dead-492a-9c1d-47269cb3b193" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_69f9e525-51f1-4c32-9dc3-7f87828ecd5c" xlink:to="loc_us-gaap_NondesignatedMember_07b0ae1c-dead-492a-9c1d-47269cb3b193" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLineItems_c4a660f4-8dec-4288-9a9d-aa66e1e4e17f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_944d9cff-fad5-4fae-a367-aec64b7727cc" xlink:to="loc_us-gaap_DerivativeLineItems_c4a660f4-8dec-4288-9a9d-aa66e1e4e17f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1_bac5791b-657d-441d-b6af-c7c9d3eccf50" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c4a660f4-8dec-4288-9a9d-aa66e1e4e17f" xlink:to="loc_us-gaap_MaximumRemainingMaturityOfForeignCurrencyDerivatives1_bac5791b-657d-441d-b6af-c7c9d3eccf50" 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-20201231.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_805df1a3-a0fc-4883-9ed5-7ba72f775755" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeTable_30c2e25e-3d1c-4d0d-9e1d-d06f907f95b7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_805df1a3-a0fc-4883-9ed5-7ba72f775755" xlink:to="loc_us-gaap_DerivativeTable_30c2e25e-3d1c-4d0d-9e1d-d06f907f95b7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_5ec96e8e-cf41-47a0-bf2a-0de4b2e124f3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_30c2e25e-3d1c-4d0d-9e1d-d06f907f95b7" xlink:to="loc_us-gaap_HedgingDesignationAxis_5ec96e8e-cf41-47a0-bf2a-0de4b2e124f3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_ddeb37c8-eccf-42ff-a0df-6d3cc45ce9a7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5ec96e8e-cf41-47a0-bf2a-0de4b2e124f3" xlink:to="loc_us-gaap_HedgingDesignationDomain_ddeb37c8-eccf-42ff-a0df-6d3cc45ce9a7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_acb65e59-bd6d-4fa6-973d-99b4a7b35fdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ddeb37c8-eccf-42ff-a0df-6d3cc45ce9a7" xlink:to="loc_us-gaap_NondesignatedMember_acb65e59-bd6d-4fa6-973d-99b4a7b35fdb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_CurrencyAxis_4b154f44-7907-4ef2-b7cf-768b65ad319e" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_30c2e25e-3d1c-4d0d-9e1d-d06f907f95b7" xlink:to="loc_srt_CurrencyAxis_4b154f44-7907-4ef2-b7cf-768b65ad319e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_AllCurrenciesDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_CurrencyAxis_4b154f44-7907-4ef2-b7cf-768b65ad319e" xlink:to="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_KRW_4d18449e-7b16-4fe0-a42d-86077871756c" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_KRW"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_KRW_4d18449e-7b16-4fe0-a42d-86077871756c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_EUR_744a92ac-386e-4876-b523-c529019710bc" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_EUR"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_EUR_744a92ac-386e-4876-b523-c529019710bc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_JPY_54376c75-a952-4ff7-a960-f1ae33439d96" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_JPY"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_JPY_54376c75-a952-4ff7-a960-f1ae33439d96" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_MXN_168eb5a5-58d3-4256-be23-1055d854e236" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_MXN"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_MXN_168eb5a5-58d3-4256-be23-1055d854e236" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_GBP_41db38b7-1f4a-496f-9da5-a3ebffaa75d6" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_GBP"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_GBP_41db38b7-1f4a-496f-9da5-a3ebffaa75d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_HUF_d7f616e9-cc9d-45b3-b45b-8595482936bb" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_HUF"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_HUF_d7f616e9-cc9d-45b3-b45b-8595482936bb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_TWD_9e024b04-6fc2-4680-ab5b-d59a7567a22d" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_TWD"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_TWD_9e024b04-6fc2-4680-ab5b-d59a7567a22d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_CAD_94f776b5-ae91-4f40-86be-3cf6160af69b" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_CAD"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_CAD_94f776b5-ae91-4f40-86be-3cf6160af69b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_currency_SGD_e3e2b04c-f690-422f-a555-12eb4ae84d85" xlink:href="https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd#currency_SGD"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_currency_AllCurrenciesDomain_9f9ab166-5336-4c6c-ad48-fe2c6de04c51" xlink:to="loc_currency_SGD_e3e2b04c-f690-422f-a555-12eb4ae84d85" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLineItems_db9e56b9-1774-417d-8ac4-4a204d4521ff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_30c2e25e-3d1c-4d0d-9e1d-d06f907f95b7" xlink:to="loc_us-gaap_DerivativeLineItems_db9e56b9-1774-417d-8ac4-4a204d4521ff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssetNotionalAmount_4d3e3df0-6bc2-4a18-a7ec-b8141fc9cbc4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db9e56b9-1774-417d-8ac4-4a204d4521ff" xlink:to="loc_us-gaap_DerivativeAssetNotionalAmount_4d3e3df0-6bc2-4a18-a7ec-b8141fc9cbc4" 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-20201231.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_6937c848-73fe-40d8-9e48-cd68a26011dc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_4624973a-84b4-4c58-909c-ed716e77003f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6937c848-73fe-40d8-9e48-cd68a26011dc" xlink:to="loc_us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable_4624973a-84b4-4c58-909c-ed716e77003f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_82769d90-969b-40a3-9d21-d3c129518555" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4624973a-84b4-4c58-909c-ed716e77003f" xlink:to="loc_us-gaap_HedgingDesignationAxis_82769d90-969b-40a3-9d21-d3c129518555" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_1cec0ccd-ab0e-4bb3-939b-b69f759fa0d3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_82769d90-969b-40a3-9d21-d3c129518555" xlink:to="loc_us-gaap_HedgingDesignationDomain_1cec0ccd-ab0e-4bb3-939b-b69f759fa0d3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_6fe729aa-fb2b-444d-82a1-b90850584805" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1cec0ccd-ab0e-4bb3-939b-b69f759fa0d3" xlink:to="loc_us-gaap_NondesignatedMember_6fe729aa-fb2b-444d-82a1-b90850584805" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis_9b354ea9-80e0-4f39-bc47-b88520539d90" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4624973a-84b4-4c58-909c-ed716e77003f" xlink:to="loc_us-gaap_BalanceSheetLocationAxis_9b354ea9-80e0-4f39-bc47-b88520539d90" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_daf03bf1-5913-4370-8a42-70e247befdbb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b354ea9-80e0-4f39-bc47-b88520539d90" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_daf03bf1-5913-4370-8a42-70e247befdbb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember_197b986c-ee6a-4f5a-9fee-efefbfad11c0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_daf03bf1-5913-4370-8a42-70e247befdbb" xlink:to="loc_us-gaap_PrepaidExpensesAndOtherCurrentAssetsMember_197b986c-ee6a-4f5a-9fee-efefbfad11c0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AccruedExpensesMember_cf160ef2-2d8c-44a6-aa5b-2ed4af8d3df9" xlink:href="cgnx-20201231.xsd#cgnx_AccruedExpensesMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BalanceSheetLocationDomain_daf03bf1-5913-4370-8a42-70e247befdbb" xlink:to="loc_cgnx_AccruedExpensesMember_cf160ef2-2d8c-44a6-aa5b-2ed4af8d3df9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativesFairValueLineItems_dcca8526-24db-4a8c-b185-560f1b201cf7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4624973a-84b4-4c58-909c-ed716e77003f" xlink:to="loc_us-gaap_DerivativesFairValueLineItems_dcca8526-24db-4a8c-b185-560f1b201cf7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssets_4c11f124-d732-4552-8625-4412071b23bd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dcca8526-24db-4a8c-b185-560f1b201cf7" xlink:to="loc_us-gaap_DerivativeAssets_4c11f124-d732-4552-8625-4412071b23bd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilities_9688da43-c075-4c1b-a4c9-6f71917c9b9f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dcca8526-24db-4a8c-b185-560f1b201cf7" xlink:to="loc_us-gaap_DerivativeLiabilities_9688da43-c075-4c1b-a4c9-6f71917c9b9f" 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-20201231.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_da40f03d-df41-452a-8209-4a4c55f548d5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeFairValueOfDerivativeAsset_30ed2344-a59c-4830-bd37-2dfe4c706f42" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_da40f03d-df41-452a-8209-4a4c55f548d5" xlink:to="loc_us-gaap_DerivativeFairValueOfDerivativeAsset_30ed2344-a59c-4830-bd37-2dfe4c706f42" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset_685e0999-12ee-4c1c-8624-c97eb4842c37" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_da40f03d-df41-452a-8209-4a4c55f548d5" xlink:to="loc_us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset_685e0999-12ee-4c1c-8624-c97eb4842c37" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeAssets_4265d8b8-3b5d-424a-a7f9-cd34066f45b1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_da40f03d-df41-452a-8209-4a4c55f548d5" xlink:to="loc_us-gaap_DerivativeAssets_4265d8b8-3b5d-424a-a7f9-cd34066f45b1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeFairValueOfDerivativeLiability_e6551b1d-ad6c-4f2d-ae92-9de302feb397" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_da40f03d-df41-452a-8209-4a4c55f548d5" xlink:to="loc_us-gaap_DerivativeFairValueOfDerivativeLiability_e6551b1d-ad6c-4f2d-ae92-9de302feb397" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset_502eacf5-3e76-4bb9-9b29-92179de4aab5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_da40f03d-df41-452a-8209-4a4c55f548d5" xlink:to="loc_us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset_502eacf5-3e76-4bb9-9b29-92179de4aab5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeLiabilities_b27ad0e6-c4b7-4a89-9b02-6c1a784483c4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_da40f03d-df41-452a-8209-4a4c55f548d5" xlink:to="loc_us-gaap_DerivativeLiabilities_b27ad0e6-c4b7-4a89-9b02-6c1a784483c4" 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-20201231.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_d7d923b0-11f5-4590-a354-eccb22ad0202" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_2042c00a-d86b-4864-8cd5-90a8fd884790" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d7d923b0-11f5-4590-a354-eccb22ad0202" xlink:to="loc_us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable_2042c00a-d86b-4864-8cd5-90a8fd884790" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis_e18f818e-3eb0-4509-abd2-98d8f7ba5cc6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2042c00a-d86b-4864-8cd5-90a8fd884790" xlink:to="loc_us-gaap_IncomeStatementLocationAxis_e18f818e-3eb0-4509-abd2-98d8f7ba5cc6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_ec3dc524-4f3c-4e27-bf86-2a42352ffe1f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e18f818e-3eb0-4509-abd2-98d8f7ba5cc6" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_ec3dc524-4f3c-4e27-bf86-2a42352ffe1f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCurrencyGainLossMember_5f28b942-fe90-46aa-9a8c-013ad15b772f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ec3dc524-4f3c-4e27-bf86-2a42352ffe1f" xlink:to="loc_us-gaap_ForeignCurrencyGainLossMember_5f28b942-fe90-46aa-9a8c-013ad15b772f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationAxis_0c6284be-3afc-4f0b-ad37-4f7d3247db01" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2042c00a-d86b-4864-8cd5-90a8fd884790" xlink:to="loc_us-gaap_HedgingDesignationAxis_0c6284be-3afc-4f0b-ad37-4f7d3247db01" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_HedgingDesignationDomain_09b3677b-1635-4f71-b4ea-c1f9b0274ae4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0c6284be-3afc-4f0b-ad37-4f7d3247db01" xlink:to="loc_us-gaap_HedgingDesignationDomain_09b3677b-1635-4f71-b4ea-c1f9b0274ae4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NondesignatedMember_c1becfbb-30ff-4fba-839a-7cde9ca06d55" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_09b3677b-1635-4f71-b4ea-c1f9b0274ae4" xlink:to="loc_us-gaap_NondesignatedMember_c1becfbb-30ff-4fba-839a-7cde9ca06d55" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeInstrumentsGainLossLineItems_c6504c14-16d5-410a-8db3-266cf8cdbbbc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2042c00a-d86b-4864-8cd5-90a8fd884790" xlink:to="loc_us-gaap_DerivativeInstrumentsGainLossLineItems_c6504c14-16d5-410a-8db3-266cf8cdbbbc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DerivativeGainLossOnDerivativeNet_bdb6c060-dd55-40f4-9c6e-1fdc746591a1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c6504c14-16d5-410a-8db3-266cf8cdbbbc" xlink:to="loc_us-gaap_DerivativeGainLossOnDerivativeNet_bdb6c060-dd55-40f4-9c6e-1fdc746591a1" 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-20201231.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_7f790a77-0a0b-47a3-99ac-2697d84cf1c8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerTextBlock_6217473a-d988-4537-904a-c08772c8144a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7f790a77-0a0b-47a3-99ac-2697d84cf1c8" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerTextBlock_6217473a-d988-4537-904a-c08772c8144a" 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-20201231.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_ff951b3e-f486-44de-9f64-bf947b47c566" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTableTextBlock_d7c1a86b-e8b5-4784-b483-a139b76565e6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ff951b3e-f486-44de-9f64-bf947b47c566" xlink:to="loc_us-gaap_DisaggregationOfRevenueTableTextBlock_d7c1a86b-e8b5-4784-b483-a139b76565e6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock_96cdfd6a-b534-4ad9-ba6b-5c1d63624670" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ff951b3e-f486-44de-9f64-bf947b47c566" xlink:to="loc_us-gaap_ContractWithCustomerAssetAndLiabilityTableTextBlock_96cdfd6a-b534-4ad9-ba6b-5c1d63624670" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock_40eb33af-6dc6-43c9-8e00-5a58de29ef98" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ff951b3e-f486-44de-9f64-bf947b47c566" xlink:to="loc_us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock_40eb33af-6dc6-43c9-8e00-5a58de29ef98" 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-20201231.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_a8778fe4-9451-401c-9bb3-dcb15183b9ee" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CapitalizedContractCostGross_fdec21f7-010b-4661-b7c2-78e70ea2f244" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a8778fe4-9451-401c-9bb3-dcb15183b9ee" xlink:to="loc_us-gaap_CapitalizedContractCostGross_fdec21f7-010b-4661-b7c2-78e70ea2f244" 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-20201231.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_3640481d-04de-42ad-b8c9-10312d75c4c4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueTable_1b180d66-9b67-4e58-a39f-c94352ae131f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3640481d-04de-42ad-b8c9-10312d75c4c4" xlink:to="loc_us-gaap_DisaggregationOfRevenueTable_1b180d66-9b67-4e58-a39f-c94352ae131f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_aacaa70f-34ba-4d68-8a10-3b584cd52e2f" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_1b180d66-9b67-4e58-a39f-c94352ae131f" xlink:to="loc_srt_StatementGeographicalAxis_aacaa70f-34ba-4d68-8a10-3b584cd52e2f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_StatementGeographicalAxis_aacaa70f-34ba-4d68-8a10-3b584cd52e2f" xlink:to="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_AmericasMember_b3390497-9ec0-47cb-8ac4-c64d694b18fa" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_AmericasMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:to="loc_srt_AmericasMember_b3390497-9ec0-47cb-8ac4-c64d694b18fa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember_920dd36c-f274-4f32-a4e3-5317941c4a29" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:to="loc_srt_EuropeMember_920dd36c-f274-4f32-a4e3-5317941c4a29" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GreaterChinaMember_b761ecb5-37b8-4394-86d7-513b1c4bcb34" xlink:href="cgnx-20201231.xsd#cgnx_GreaterChinaMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:to="loc_cgnx_GreaterChinaMember_b761ecb5-37b8-4394-86d7-513b1c4bcb34" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherAsiaMember_4b30c084-fffd-4136-989e-9ebdf504747a" xlink:href="cgnx-20201231.xsd#cgnx_OtherAsiaMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_f5632d9d-0059-4fc4-a183-365a879e316c" xlink:to="loc_cgnx_OtherAsiaMember_4b30c084-fffd-4136-989e-9ebdf504747a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductOrServiceAxis_f4408278-9637-4370-9a33-a4686f8bfc9f" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_1b180d66-9b67-4e58-a39f-c94352ae131f" xlink:to="loc_srt_ProductOrServiceAxis_f4408278-9637-4370-9a33-a4686f8bfc9f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ProductsAndServicesDomain_a9e89d6e-203e-479f-b9eb-d420577132db" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ProductsAndServicesDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ProductOrServiceAxis_f4408278-9637-4370-9a33-a4686f8bfc9f" xlink:to="loc_srt_ProductsAndServicesDomain_a9e89d6e-203e-479f-b9eb-d420577132db" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StandardProductandServicesMember_b3572bb2-a123-4384-a773-c24b1eaa5c36" xlink:href="cgnx-20201231.xsd#cgnx_StandardProductandServicesMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ProductsAndServicesDomain_a9e89d6e-203e-479f-b9eb-d420577132db" xlink:to="loc_cgnx_StandardProductandServicesMember_b3572bb2-a123-4384-a773-c24b1eaa5c36" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ApplicationofCustomerSpecificSolutionsMember_766ebd98-bf87-41fc-b850-d792ff5bff86" xlink:href="cgnx-20201231.xsd#cgnx_ApplicationofCustomerSpecificSolutionsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ProductsAndServicesDomain_a9e89d6e-203e-479f-b9eb-d420577132db" xlink:to="loc_cgnx_ApplicationofCustomerSpecificSolutionsMember_766ebd98-bf87-41fc-b850-d792ff5bff86" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisaggregationOfRevenueLineItems_d55675f0-d5c1-43f5-9ac4-1479b3eb08f5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1b180d66-9b67-4e58-a39f-c94352ae131f" xlink:to="loc_us-gaap_DisaggregationOfRevenueLineItems_d55675f0-d5c1-43f5-9ac4-1479b3eb08f5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_39a4ef42-be55-4c46-b493-9d658353540e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d55675f0-d5c1-43f5-9ac4-1479b3eb08f5" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_39a4ef42-be55-4c46-b493-9d658353540e" 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-20201231.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_aa4723a6-6f5b-4778-b4fe-bb110d81578f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueRecognitionAndDeferredRevenueAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_e5b37f7d-0e0f-4157-b85a-ab2a4b9454b5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_aa4723a6-6f5b-4778-b4fe-bb110d81578f" xlink:to="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_e5b37f7d-0e0f-4157-b85a-ab2a4b9454b5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivable_f258f5f4-9788-4acd-ba1c-2dfa70a4c04d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e5b37f7d-0e0f-4157-b85a-ab2a4b9454b5" xlink:to="loc_us-gaap_AllowanceForDoubtfulAccountsReceivable_f258f5f4-9788-4acd-ba1c-2dfa70a4c04d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ProvisionForDoubtfulAccounts_c64ee249-8f8b-4ae2-a98f-ff8cb78fb946" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e5b37f7d-0e0f-4157-b85a-ab2a4b9454b5" xlink:to="loc_us-gaap_ProvisionForDoubtfulAccounts_c64ee249-8f8b-4ae2-a98f-ff8cb78fb946" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs_6374910a-2dc5-4ddc-8e01-ad1ac0962103" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e5b37f7d-0e0f-4157-b85a-ab2a4b9454b5" xlink:to="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs_6374910a-2dc5-4ddc-8e01-ad1ac0962103" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment_d5553402-2336-4975-af79-58d0e9da09c0" xlink:href="cgnx-20201231.xsd#cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AllowanceForDoubtfulAccountsReceivableRollforward_e5b37f7d-0e0f-4157-b85a-ab2a4b9454b5" xlink:to="loc_cgnx_AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment_d5553402-2336-4975-af79-58d0e9da09c0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllowanceForDoubtfulAccountsReceivable_b1b6648d-86f2-45e8-831d-bf3adde66890" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e5b37f7d-0e0f-4157-b85a-ab2a4b9454b5" xlink:to="loc_us-gaap_AllowanceForDoubtfulAccountsReceivable_b1b6648d-86f2-45e8-831d-bf3adde66890" 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-20201231.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_9a52d2c1-9505-42cc-a5b4-0c359c145de1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RevenueFromContractWithCustomerAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_7e9d0008-0db6-4791-aa97-41a1154f2016" xlink:href="cgnx-20201231.xsd#cgnx_CustomerContractsLiabilityCurrentRollForward"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_RevenueFromContractWithCustomerAbstract_9a52d2c1-9505-42cc-a5b4-0c359c145de1" xlink:to="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_7e9d0008-0db6-4791-aa97-41a1154f2016" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent_6bdc7b83-43d8-42bb-89d4-2d109e668f1c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7e9d0008-0db6-4791-aa97-41a1154f2016" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityCurrent_6bdc7b83-43d8-42bb-89d4-2d109e668f1c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease_9d875c85-9017-435a-98ec-4f932f5360a0" xlink:href="cgnx-20201231.xsd#cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_7e9d0008-0db6-4791-aa97-41a1154f2016" xlink:to="loc_cgnx_ContractWithCustomerLiabilityPeriodIncreaseDecrease_9d875c85-9017-435a-98ec-4f932f5360a0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized_e2054310-df81-463c-b508-49d1b7eaa06e" xlink:href="cgnx-20201231.xsd#cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_7e9d0008-0db6-4791-aa97-41a1154f2016" xlink:to="loc_cgnx_ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized_e2054310-df81-463c-b508-49d1b7eaa06e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ContractLiabilityForeignExchangeRateChanges_9c0f95e5-0b71-4c2c-875d-a8b3e84741ef" xlink:href="cgnx-20201231.xsd#cgnx_ContractLiabilityForeignExchangeRateChanges"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_CustomerContractsLiabilityCurrentRollForward_7e9d0008-0db6-4791-aa97-41a1154f2016" xlink:to="loc_cgnx_ContractLiabilityForeignExchangeRateChanges_9c0f95e5-0b71-4c2c-875d-a8b3e84741ef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractWithCustomerLiabilityCurrent_39925339-a3f7-47a5-9693-3d21f72f3b38" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7e9d0008-0db6-4791-aa97-41a1154f2016" xlink:to="loc_us-gaap_ContractWithCustomerLiabilityCurrent_39925339-a3f7-47a5-9693-3d21f72f3b38" 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-20201231.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_84d6ee08-0843-4b2c-8a70-979afa1099d0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityNoteDisclosureTextBlock_ec951580-e0f4-4e23-89eb-1e2071db27d9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_84d6ee08-0843-4b2c-8a70-979afa1099d0" xlink:to="loc_us-gaap_StockholdersEquityNoteDisclosureTextBlock_ec951580-e0f4-4e23-89eb-1e2071db27d9" 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-20201231.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_6847c133-d673-4b64-bdb8-80161c3d217a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EquityAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfStockByClassTable_12d0f4be-47e6-4421-b1f0-e2050f169ede" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6847c133-d673-4b64-bdb8-80161c3d217a" xlink:to="loc_us-gaap_ScheduleOfStockByClassTable_12d0f4be-47e6-4421-b1f0-e2050f169ede" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StatementClassOfStockAxis_dae8ce52-1e08-4011-8f3e-39049d990978" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_12d0f4be-47e6-4421-b1f0-e2050f169ede" xlink:to="loc_us-gaap_StatementClassOfStockAxis_dae8ce52-1e08-4011-8f3e-39049d990978" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockDomain_c7944631-296a-437e-9d12-a452b27cb888" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_dae8ce52-1e08-4011-8f3e-39049d990978" xlink:to="loc_us-gaap_ClassOfStockDomain_c7944631-296a-437e-9d12-a452b27cb888" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockMember_bc936c4b-86a6-4d02-975a-7cce3e63b63c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c7944631-296a-437e-9d12-a452b27cb888" xlink:to="loc_us-gaap_CommonStockMember_bc936c4b-86a6-4d02-975a-7cce3e63b63c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramAxis_e921b2e4-7fe2-42f3-b78b-70511b9cf862" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_12d0f4be-47e6-4421-b1f0-e2050f169ede" xlink:to="loc_us-gaap_ShareRepurchaseProgramAxis_e921b2e4-7fe2-42f3-b78b-70511b9cf862" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e921b2e4-7fe2-42f3-b78b-70511b9cf862" xlink:to="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramApril2017Member_299de3ed-f07b-46a5-8a7d-3ccbd405456c" xlink:href="cgnx-20201231.xsd#cgnx_RepurchaseProgramApril2017Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:to="loc_cgnx_RepurchaseProgramApril2017Member_299de3ed-f07b-46a5-8a7d-3ccbd405456c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramFebruary2018Member_161a94dd-afed-41a0-b5b3-4665067e9423" xlink:href="cgnx-20201231.xsd#cgnx_RepurchaseProgramFebruary2018Member"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:to="loc_cgnx_RepurchaseProgramFebruary2018Member_161a94dd-afed-41a0-b5b3-4665067e9423" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramOctober2018Member_f21699ae-e061-41c1-a233-5e897dd1dcbe" xlink:href="cgnx-20201231.xsd#cgnx_RepurchaseProgramOctober2018Member"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:to="loc_cgnx_RepurchaseProgramOctober2018Member_f21699ae-e061-41c1-a233-5e897dd1dcbe" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_RepurchaseProgramMarch2020Member_887127bf-9716-46c1-8a9f-f2edf0085aa0" xlink:href="cgnx-20201231.xsd#cgnx_RepurchaseProgramMarch2020Member"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareRepurchaseProgramDomain_852d05a3-664c-4b0b-916a-85ce7178c0c1" xlink:to="loc_cgnx_RepurchaseProgramMarch2020Member_887127bf-9716-46c1-8a9f-f2edf0085aa0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_12d0f4be-47e6-4421-b1f0-e2050f169ede" xlink:to="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockSharesAuthorized_f787ad5c-777e-4bc3-9327-0bf74cc8c976" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_PreferredStockSharesAuthorized_f787ad5c-777e-4bc3-9327-0bf74cc8c976" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PreferredStockParOrStatedValuePerShare_32cced02-2ce2-4cb8-8bbb-9b6bfe7f39e6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_PreferredStockParOrStatedValuePerShare_32cced02-2ce2-4cb8-8bbb-9b6bfe7f39e6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockSharesAuthorized_1fa9c382-f777-46de-bd6f-b8609ed3acdb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_CommonStockSharesAuthorized_1fa9c382-f777-46de-bd6f-b8609ed3acdb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_d7d90681-460f-457e-9883-c1159fd7dda5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquityNoteStockSplitConversionRatio1"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_d7d90681-460f-457e-9883-c1159fd7dda5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockParOrStatedValuePerShare_cc9b2611-ba39-4319-bcbc-5899c0d01191" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockParOrStatedValuePerShare"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_CommonStockParOrStatedValuePerShare_cc9b2611-ba39-4319-bcbc-5899c0d01191" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_VoteEntitledForEachCommonShareOutstanding_4a804a4a-5f37-4d14-9b09-5319c3df705d" xlink:href="cgnx-20201231.xsd#cgnx_VoteEntitledForEachCommonShareOutstanding"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_cgnx_VoteEntitledForEachCommonShareOutstanding_4a804a4a-5f37-4d14-9b09-5319c3df705d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1_ba7132c3-bc56-444d-bad2-6924cc3367ab" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchaseProgramAuthorizedAmount1"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_StockRepurchaseProgramAuthorizedAmount1_ba7132c3-bc56-444d-bad2-6924cc3367ab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Totalsharesrepurchased_17907e5f-282c-4ac4-aa99-84cc39c81301" xlink:href="cgnx-20201231.xsd#cgnx_Totalsharesrepurchased"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_cgnx_Totalsharesrepurchased_17907e5f-282c-4ac4-aa99-84cc39c81301" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Repurchasedsharestotalcost_69fd94e7-eb24-49aa-b80e-6f37707851d1" xlink:href="cgnx-20201231.xsd#cgnx_Repurchasedsharestotalcost"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_cgnx_Repurchasedsharestotalcost_69fd94e7-eb24-49aa-b80e-6f37707851d1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodShares_5d3c509e-ef10-42d1-b997-a392ce444a8b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodShares"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodShares_5d3c509e-ef10-42d1-b997-a392ce444a8b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockRepurchasedDuringPeriodValue_8266610c-3dde-4b8d-bc9b-dbdbda934a29" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockRepurchasedDuringPeriodValue"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_StockRepurchasedDuringPeriodValue_8266610c-3dde-4b8d-bc9b-dbdbda934a29" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CommonStockDividendsPerShareDeclared_7a03c46d-171d-4354-88c1-e64953718617" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CommonStockDividendsPerShareDeclared"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_CommonStockDividendsPerShareDeclared_7a03c46d-171d-4354-88c1-e64953718617" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsOfDividends_80857d21-3c59-474f-bff0-a2f6523ff69b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsOfDividends"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ClassOfStockLineItems_a9a0a044-9d36-4b68-ada7-2b37f08f3e8b" xlink:to="loc_us-gaap_PaymentsOfDividends_80857d21-3c59-474f-bff0-a2f6523ff69b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/StockBasedCompensation" xlink:type="simple" xlink:href="cgnx-20201231.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_1ff0eb09-42f4-41d1-83c7-5513528372c1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock_82b19d54-7efc-4b74-8ba2-1784f3428901" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_1ff0eb09-42f4-41d1-83c7-5513528372c1" xlink:to="loc_us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock_82b19d54-7efc-4b74-8ba2-1784f3428901" 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-20201231.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_7a7b78d4-f36b-494f-a692-0e96a3f7b585" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock_e03c216a-3e1e-400c-987d-96a7bf8e612f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7a7b78d4-f36b-494f-a692-0e96a3f7b585" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock_e03c216a-3e1e-400c-987d-96a7bf8e612f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock_1701c092-fe6c-4319-907f-15a1639ad9c4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7a7b78d4-f36b-494f-a692-0e96a3f7b585" xlink:to="loc_us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock_1701c092-fe6c-4319-907f-15a1639ad9c4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock_1c099dec-037d-4a1b-b2f1-20e358f920ef" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7a7b78d4-f36b-494f-a692-0e96a3f7b585" xlink:to="loc_us-gaap_NonvestedRestrictedStockSharesActivityTableTextBlock_1c099dec-037d-4a1b-b2f1-20e358f920ef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock_7c07081b-a671-4f24-863c-68ab29e3d72d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7a7b78d4-f36b-494f-a692-0e96a3f7b585" xlink:to="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock_7c07081b-a671-4f24-863c-68ab29e3d72d" 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-20201231.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_7a2e0ff1-4317-4d12-957c-2f72e2bccab7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_e57d534e-3820-4021-b7e1-c329eada4657" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7a2e0ff1-4317-4d12-957c-2f72e2bccab7" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_e57d534e-3820-4021-b7e1-c329eada4657" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_218f3f6c-7a4d-4384-bf64-f3de02ea6f5b" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_e57d534e-3820-4021-b7e1-c329eada4657" xlink:to="loc_srt_RangeAxis_218f3f6c-7a4d-4384-bf64-f3de02ea6f5b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_83d6ced2-6e23-46bb-bfd1-3194065501fb" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_218f3f6c-7a4d-4384-bf64-f3de02ea6f5b" xlink:to="loc_srt_RangeMember_83d6ced2-6e23-46bb-bfd1-3194065501fb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_d373d360-d893-45dc-839d-2549d4b69364" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_83d6ced2-6e23-46bb-bfd1-3194065501fb" xlink:to="loc_srt_MinimumMember_d373d360-d893-45dc-839d-2549d4b69364" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_ff1ca6ae-7410-437a-b2cc-44119efdbfe8" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_83d6ced2-6e23-46bb-bfd1-3194065501fb" xlink:to="loc_srt_MaximumMember_ff1ca6ae-7410-437a-b2cc-44119efdbfe8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_0fb8d3fe-f1e5-4b9f-a119-18d99a073210" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e57d534e-3820-4021-b7e1-c329eada4657" xlink:to="loc_us-gaap_AwardTypeAxis_0fb8d3fe-f1e5-4b9f-a119-18d99a073210" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_db3aeefc-f333-4656-a523-a1869eab3bb2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0fb8d3fe-f1e5-4b9f-a119-18d99a073210" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_db3aeefc-f333-4656-a523-a1869eab3bb2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_539f67c4-f6a6-4a4c-aa48-8d6b4fde6dd9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db3aeefc-f333-4656-a523-a1869eab3bb2" xlink:to="loc_us-gaap_EmployeeStockOptionMember_539f67c4-f6a6-4a4c-aa48-8d6b4fde6dd9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PerformanceSharesMember_f107999a-b435-4397-abed-a1acb630c3c1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db3aeefc-f333-4656-a523-a1869eab3bb2" xlink:to="loc_us-gaap_PerformanceSharesMember_f107999a-b435-4397-abed-a1acb630c3c1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockUnitsRSUMember_f73f7290-3d00-4325-be8e-171cdee5f169" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_db3aeefc-f333-4656-a523-a1869eab3bb2" xlink:to="loc_us-gaap_RestrictedStockUnitsRSUMember_f73f7290-3d00-4325-be8e-171cdee5f169" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e57d534e-3820-4021-b7e1-c329eada4657" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_b79a0d76-de6f-4d49-8da6-faffe65179ad" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant_b79a0d76-de6f-4d49-8da6-faffe65179ad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_768a434f-601e-4514-9949-2bf83b9db7fb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1_768a434f-601e-4514-9949-2bf83b9db7fb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ExpirationPeriodOfStockOptionPlan_ad79befb-2a9f-4ec0-8d32-c653e1736e0f" xlink:href="cgnx-20201231.xsd#cgnx_ExpirationPeriodOfStockOptionPlan"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_ExpirationPeriodOfStockOptionPlan_ad79befb-2a9f-4ec0-8d32-c653e1736e0f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NumberOfGroupsWithinEmployeePopulation_46394fed-5150-445a-ae2f-84a801175217" xlink:href="cgnx-20201231.xsd#cgnx_NumberOfGroupsWithinEmployeePopulation"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_NumberOfGroupsWithinEmployeePopulation_46394fed-5150-445a-ae2f-84a801175217" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_14e82f8c-1a45-454e-bad4-1dab25192d73" xlink:href="cgnx-20201231.xsd#cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement_14e82f8c-1a45-454e-bad4-1dab25192d73" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_f67a069a-caec-44f4-b757-5c61eb3f44f6" xlink:href="cgnx-20201231.xsd#cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement_f67a069a-caec-44f4-b757-5c61eb3f44f6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates_8bd5fd7f-8ca5-449e-aa14-5e4b5625193b" xlink:href="cgnx-20201231.xsd#cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates_8bd5fd7f-8ca5-449e-aa14-5e4b5625193b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_bbd40bc8-63ad-4bd5-94f8-90dc7a92399a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_bbd40bc8-63ad-4bd5-94f8-90dc7a92399a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_aa951c07-518f-4e05-a860-fc4a3c61eea2" xlink:href="cgnx-20201231.xsd#cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue_aa951c07-518f-4e05-a860-fc4a3c61eea2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_bc2c16f3-e1d1-4f09-a6bc-e270ca557226" xlink:href="cgnx-20201231.xsd#cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue_bc2c16f3-e1d1-4f09-a6bc-e270ca557226" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_7b0732ac-04b9-4f0f-94cb-ecce99ff7559" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions_7b0732ac-04b9-4f0f-94cb-ecce99ff7559" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_7b1e1a81-86c8-47c3-8db6-22953f3a8504" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_7b1e1a81-86c8-47c3-8db6-22953f3a8504" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense_756f63c1-3d4c-4ae9-b7f3-5a76532c66b2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_AllocatedShareBasedCompensationExpense_756f63c1-3d4c-4ae9-b7f3-5a76532c66b2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_aa74a618-0c13-4008-a68b-ab708f74157a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_aa74a618-0c13-4008-a68b-ab708f74157a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_2813ff3b-7bd1-4437-8f60-dfbe3f960b70" xlink:href="cgnx-20201231.xsd#cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_2813ff3b-7bd1-4437-8f60-dfbe3f960b70" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_b1a922cc-4edf-474e-a582-b3d9084fac99" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_b1a922cc-4edf-474e-a582-b3d9084fac99" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_c7f0a38b-f08a-4843-8c98-ffcf6fd79938" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_c7f0a38b-f08a-4843-8c98-ffcf6fd79938" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensation_369ed93d-955e-422f-bf15-439629e82119" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_332114ce-2c09-4830-a3d8-df8308260ff6" xlink:to="loc_us-gaap_ShareBasedCompensation_369ed93d-955e-422f-bf15-439629e82119" 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-20201231.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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_6e538c06-9137-4904-8c3c-567d7041d68e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingRollForward_6e538c06-9137-4904-8c3c-567d7041d68e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_2dedab50-06ec-4405-8646-84c6b40b89e0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6e538c06-9137-4904-8c3c-567d7041d68e" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_2dedab50-06ec-4405-8646-84c6b40b89e0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod_dc7762cf-7eb3-4f82-a509-8161ff73ce61" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6e538c06-9137-4904-8c3c-567d7041d68e" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod_dc7762cf-7eb3-4f82-a509-8161ff73ce61" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_733dc04d-75c0-4396-b615-b58ab329b88f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6e538c06-9137-4904-8c3c-567d7041d68e" xlink:to="loc_us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised_733dc04d-75c0-4396-b615-b58ab329b88f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod_23a17a6a-8787-4c16-b53f-abb05f7dbd04" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6e538c06-9137-4904-8c3c-567d7041d68e" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod_23a17a6a-8787-4c16-b53f-abb05f7dbd04" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_14add589-aa86-4fc4-b2e0-f02978e2a048" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6e538c06-9137-4904-8c3c-567d7041d68e" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber_14add589-aa86-4fc4-b2e0-f02978e2a048" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_2940234f-5268-4f9c-908b-58e22b682f39" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePriceRollforward_2940234f-5268-4f9c-908b-58e22b682f39" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_75256681-1fe9-4684-bd6c-7292722bab68" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2940234f-5268-4f9c-908b-58e22b682f39" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_75256681-1fe9-4684-bd6c-7292722bab68" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice_71a1c709-19cc-49ef-8c19-d0d7282b53ea" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2940234f-5268-4f9c-908b-58e22b682f39" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice_71a1c709-19cc-49ef-8c19-d0d7282b53ea" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice_bd225b4d-bb1b-4ba9-9acd-04ddef92e7b0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2940234f-5268-4f9c-908b-58e22b682f39" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice_bd225b4d-bb1b-4ba9-9acd-04ddef92e7b0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice_e7a0ccdf-63c2-4c80-bba8-05c55a95fb9b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2940234f-5268-4f9c-908b-58e22b682f39" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice_e7a0ccdf-63c2-4c80-bba8-05c55a95fb9b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_68a5bdb1-82b4-4418-a552-c86b460ba977" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2940234f-5268-4f9c-908b-58e22b682f39" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice_68a5bdb1-82b4-4418-a552-c86b460ba977" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber_4e447740-5850-4b22-8cf1-1f6dfcfc39d6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber_4e447740-5850-4b22-8cf1-1f6dfcfc39d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber_77180212-cd95-4076-b01a-88ec1c6d6599" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber_77180212-cd95-4076-b01a-88ec1c6d6599" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice_8b28de73-6de0-4c36-9c10-13b76935f996" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice_8b28de73-6de0-4c36-9c10-13b76935f996" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice_a03da0c8-2fb0-4dee-a31b-73813de0670d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice_a03da0c8-2fb0-4dee-a31b-73813de0670d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2_f93c0f8b-dbb0-428e-863a-76af7ae35b2c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2_f93c0f8b-dbb0-428e-863a-76af7ae35b2c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1_103062f1-d09c-47f3-86f0-e6913e9001cd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1_103062f1-d09c-47f3-86f0-e6913e9001cd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1_b328a82b-b7cd-4d09-993d-30c61850672f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1_b328a82b-b7cd-4d09-993d-30c61850672f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue_96c6cdb6-3690-4430-93da-f95a5454e3fb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue_96c6cdb6-3690-4430-93da-f95a5454e3fb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue_443f29a1-1a15-457d-8473-eb21820775dd" xlink:href="cgnx-20201231.xsd#cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_cgnx_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue_443f29a1-1a15-457d-8473-eb21820775dd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue_744615d3-72c6-42f6-b5a9-25251b82eab4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a5f43426-0876-4e53-9bb8-c9d18dd24dd2" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue_744615d3-72c6-42f6-b5a9-25251b82eab4" 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-20201231.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_37e86b92-d2d0-4ae1-9776-097a6f60e4b0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_a9165c4d-bf1d-4125-9ec2-5b0f304c989f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_37e86b92-d2d0-4ae1-9776-097a6f60e4b0" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable_a9165c4d-bf1d-4125-9ec2-5b0f304c989f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_3c4e20c9-c9d2-4f32-b39d-712e668bba7c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a9165c4d-bf1d-4125-9ec2-5b0f304c989f" xlink:to="loc_us-gaap_AwardTypeAxis_3c4e20c9-c9d2-4f32-b39d-712e668bba7c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f717f905-60d3-4ce8-a7de-c91666b14787" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3c4e20c9-c9d2-4f32-b39d-712e668bba7c" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_f717f905-60d3-4ce8-a7de-c91666b14787" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_10c2637c-03e7-4528-be1c-de9b2f84af1d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f717f905-60d3-4ce8-a7de-c91666b14787" xlink:to="loc_us-gaap_RestrictedStockMember_10c2637c-03e7-4528-be1c-de9b2f84af1d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_7f129348-67c0-41d1-ad31-8205f4ac56de" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f717f905-60d3-4ce8-a7de-c91666b14787" xlink:to="loc_us-gaap_EmployeeStockOptionMember_7f129348-67c0-41d1-ad31-8205f4ac56de" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a9165c4d-bf1d-4125-9ec2-5b0f304c989f" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardLineItems_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_2b6bbbfe-8fd7-4e2f-8619-67639c9b428b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate_2b6bbbfe-8fd7-4e2f-8619-67639c9b428b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate_3a5a6737-1707-46cf-b564-4b4fb689032b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate_3a5a6737-1707-46cf-b564-4b4fb689032b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_7f433a25-1163-4a7a-8c76-2ea0dac0c7c8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate_7f433a25-1163-4a7a-8c76-2ea0dac0c7c8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_5324f260-ab00-4b4d-b5dc-43c4a109f58f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_cc0c13d2-01ff-49d7-a0a8-df71b21f2ad9" xlink:to="loc_us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1_5324f260-ab00-4b4d-b5dc-43c4a109f58f" 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-20201231.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_324f6bd1-9a02-4bdb-98aa-765ebe8b0409" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_c7147c7a-c199-49b7-a1c8-c9083790f8ae" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_324f6bd1-9a02-4bdb-98aa-765ebe8b0409" xlink:to="loc_us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable_c7147c7a-c199-49b7-a1c8-c9083790f8ae" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AwardTypeAxis_a6094b15-9100-454e-8b4a-c9c5bb5bd910" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c7147c7a-c199-49b7-a1c8-c9083790f8ae" xlink:to="loc_us-gaap_AwardTypeAxis_a6094b15-9100-454e-8b4a-c9c5bb5bd910" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8767d9d7-e7eb-4cb4-9719-8ef62cf5fec2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a6094b15-9100-454e-8b4a-c9c5bb5bd910" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain_8767d9d7-e7eb-4cb4-9719-8ef62cf5fec2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_cdf9ec67-4ae9-4190-a92e-933ed559fb7c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8767d9d7-e7eb-4cb4-9719-8ef62cf5fec2" xlink:to="loc_us-gaap_RestrictedStockMember_cdf9ec67-4ae9-4190-a92e-933ed559fb7c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_f561709e-03bd-4110-b3d9-f4c91082a62b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c7147c7a-c199-49b7-a1c8-c9083790f8ae" xlink:to="loc_us-gaap_ShareBasedCompensationSharesAuthorizedUnderStockOptionPlansExercisePriceRangeLineItems_f561709e-03bd-4110-b3d9-f4c91082a62b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f561709e-03bd-4110-b3d9-f4c91082a62b" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedRollForward_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_05948112-7d5a-4639-be4a-0181657447f8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_05948112-7d5a-4639-be4a-0181657447f8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod_71e995f9-d8c4-45c6-99f5-57d366a1c2bb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod_71e995f9-d8c4-45c6-99f5-57d366a1c2bb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_7630ce84-64d4-4524-a906-837dd6fee33e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod_7630ce84-64d4-4524-a906-837dd6fee33e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod_166701e0-610e-4a40-97e3-f53097593acc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod_166701e0-610e-4a40-97e3-f53097593acc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_d332f328-c50d-4b8e-a03d-791f019a8388" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f1996d82-0d5e-45da-a5e1-bb82d2d418d6" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber_d332f328-c50d-4b8e-a03d-791f019a8388" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f561709e-03bd-4110-b3d9-f4c91082a62b" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValueRollForward_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_6c2865fa-db95-402d-9e30-8a13ddb3d422" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_6c2865fa-db95-402d-9e30-8a13ddb3d422" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_c7c1a268-fa39-4fef-aa1c-34bab3e47c5b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue_c7c1a268-fa39-4fef-aa1c-34bab3e47c5b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue_7f35ad96-a360-4dcb-ab62-5e66b19da241" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue_7f35ad96-a360-4dcb-ab62-5e66b19da241" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue_d9838bb1-d2a8-4992-9788-7b9bae58ebdd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue_d9838bb1-d2a8-4992-9788-7b9bae58ebdd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_ef1abe75-b79e-4a53-9450-753f96e5c485" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5ae75d63-0ba1-4b10-a3f7-2213410d3aa3" xlink:to="loc_us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue_ef1abe75-b79e-4a53-9450-753f96e5c485" 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-20201231.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_9e68445f-7498-4f8e-9c19-9ee69239f08a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DisclosureOfCompensationRelatedCostsSharebasedPaymentsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_81f96af6-540c-4348-85e9-d4d72a4634dc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9e68445f-7498-4f8e-9c19-9ee69239f08a" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1_81f96af6-540c-4348-85e9-d4d72a4634dc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b23e6154-3f70-41f2-a595-cc8f040b509d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9e68445f-7498-4f8e-9c19-9ee69239f08a" xlink:to="loc_us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable_b23e6154-3f70-41f2-a595-cc8f040b509d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationAxis_076fea29-b1d8-411b-8f8b-e293590a56b5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b23e6154-3f70-41f2-a595-cc8f040b509d" xlink:to="loc_us-gaap_IncomeStatementLocationAxis_076fea29-b1d8-411b-8f8b-e293590a56b5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeStatementLocationDomain_d65b1dc6-006c-4537-8df2-14dcb0d9d9ff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_076fea29-b1d8-411b-8f8b-e293590a56b5" xlink:to="loc_us-gaap_IncomeStatementLocationDomain_d65b1dc6-006c-4537-8df2-14dcb0d9d9ff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ProductCostOfRevenueMember_7e9f8222-4061-4731-9f1c-19f7af3fcac4" xlink:href="cgnx-20201231.xsd#cgnx_ProductCostOfRevenueMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_d65b1dc6-006c-4537-8df2-14dcb0d9d9ff" xlink:to="loc_cgnx_ProductCostOfRevenueMember_7e9f8222-4061-4731-9f1c-19f7af3fcac4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchAndDevelopmentExpenseMember_52469e99-96bb-4114-82e4-7c0e4bd2ec9c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d65b1dc6-006c-4537-8df2-14dcb0d9d9ff" xlink:to="loc_us-gaap_ResearchAndDevelopmentExpenseMember_52469e99-96bb-4114-82e4-7c0e4bd2ec9c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SellingGeneralAndAdministrativeMember_f9546218-963c-443b-a1d8-aad87a280b5d" xlink:href="cgnx-20201231.xsd#cgnx_SellingGeneralAndAdministrativeMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeStatementLocationDomain_d65b1dc6-006c-4537-8df2-14dcb0d9d9ff" xlink:to="loc_cgnx_SellingGeneralAndAdministrativeMember_f9546218-963c-443b-a1d8-aad87a280b5d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_71b48099-67e8-4ad4-8e78-e89796e1eb3b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b23e6154-3f70-41f2-a595-cc8f040b509d" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_71b48099-67e8-4ad4-8e78-e89796e1eb3b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AllocatedShareBasedCompensationExpense_7cd26a3c-f717-4e5e-a839-b3bbd4e1ccf0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_71b48099-67e8-4ad4-8e78-e89796e1eb3b" xlink:to="loc_us-gaap_AllocatedShareBasedCompensationExpense_7cd26a3c-f717-4e5e-a839-b3bbd4e1ccf0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_1ed0d430-50f2-4fdc-b5eb-bc9bb06e7595" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_71b48099-67e8-4ad4-8e78-e89796e1eb3b" xlink:to="loc_us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense_1ed0d430-50f2-4fdc-b5eb-bc9bb06e7595" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_71033807-becc-40da-953e-694b8dd0551e" xlink:href="cgnx-20201231.xsd#cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_EmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsLineItems_71b48099-67e8-4ad4-8e78-e89796e1eb3b" xlink:to="loc_cgnx_EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount_71033807-becc-40da-953e-694b8dd0551e" 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-20201231.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_57c441eb-98ec-4a7d-9ca4-9b86d5da7ac8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CompensationAndRetirementDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock_c0d36f86-3655-4a4c-a664-5fad3701825c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_57c441eb-98ec-4a7d-9ca4-9b86d5da7ac8" xlink:to="loc_us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock_c0d36f86-3655-4a4c-a664-5fad3701825c" 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-20201231.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_28904488-18ca-436d-9784-bdd5007f4e0a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CompensationAndRetirementDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan_7dcb4dae-ebd8-4623-a975-e0089a04afd7" xlink:href="cgnx-20201231.xsd#cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_28904488-18ca-436d-9784-bdd5007f4e0a" xlink:to="loc_cgnx_MinimumAgeToBeEligibleToDefinedContributionPlan_7dcb4dae-ebd8-4623-a975-e0089a04afd7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent_35d6a125-0bec-485c-adac-052f5fb43d6d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_28904488-18ca-436d-9784-bdd5007f4e0a" xlink:to="loc_us-gaap_DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent_35d6a125-0bec-485c-adac-052f5fb43d6d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch_3f667761-5c41-4e01-8dbb-003af0d36b7b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_28904488-18ca-436d-9784-bdd5007f4e0a" xlink:to="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercentOfMatch_3f667761-5c41-4e01-8dbb-003af0d36b7b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent_47be9960-8595-4b4f-92b0-eaba500407b1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_28904488-18ca-436d-9784-bdd5007f4e0a" xlink:to="loc_us-gaap_DefinedContributionPlanEmployerMatchingContributionPercent_47be9960-8595-4b4f-92b0-eaba500407b1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfOneYear_3db04057-09b2-4e04-ac19-cd2a913704d6" xlink:href="cgnx-20201231.xsd#cgnx_CompanyContributionsVestAtEndOfOneYear"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_28904488-18ca-436d-9784-bdd5007f4e0a" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfOneYear_3db04057-09b2-4e04-ac19-cd2a913704d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfTwoYear_de11a93f-7e56-4d5e-b6a9-42f4bb22572f" xlink:href="cgnx-20201231.xsd#cgnx_CompanyContributionsVestAtEndOfTwoYear"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_28904488-18ca-436d-9784-bdd5007f4e0a" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfTwoYear_de11a93f-7e56-4d5e-b6a9-42f4bb22572f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfThreeYears_47bd9bff-e36c-47de-9a7f-6c9a2a5464c0" xlink:href="cgnx-20201231.xsd#cgnx_CompanyContributionsVestAtEndOfThreeYears"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_28904488-18ca-436d-9784-bdd5007f4e0a" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfThreeYears_47bd9bff-e36c-47de-9a7f-6c9a2a5464c0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompanyContributionsVestAtEndOfFourYears_7cf304be-14d4-4cf1-991b-792cacfe291d" xlink:href="cgnx-20201231.xsd#cgnx_CompanyContributionsVestAtEndOfFourYears"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_CompensationAndRetirementDisclosureAbstract_28904488-18ca-436d-9784-bdd5007f4e0a" xlink:to="loc_cgnx_CompanyContributionsVestAtEndOfFourYears_7cf304be-14d4-4cf1-991b-792cacfe291d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DefinedContributionPlanCostRecognized_c9d239ea-a0fc-4b94-bd87-b445b29a27aa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_28904488-18ca-436d-9784-bdd5007f4e0a" xlink:to="loc_us-gaap_DefinedContributionPlanCostRecognized_c9d239ea-a0fc-4b94-bd87-b445b29a27aa" 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-20201231.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_fdd2ec8f-dd44-46d4-9120-ecb4147df8b7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxDisclosureTextBlock_24cf0a41-686b-4459-a1a5-b5b292f402cf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_fdd2ec8f-dd44-46d4-9120-ecb4147df8b7" xlink:to="loc_us-gaap_IncomeTaxDisclosureTextBlock_24cf0a41-686b-4459-a1a5-b5b292f402cf" 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-20201231.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_47935275-5d4b-4603-95cd-56b009123d8c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock_610f2b3a-9396-4dbc-822e-12e5daa011ab" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47935275-5d4b-4603-95cd-56b009123d8c" xlink:to="loc_us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock_610f2b3a-9396-4dbc-822e-12e5daa011ab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock_811f1951-fecd-4711-8a89-f67d0f4c3d21" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47935275-5d4b-4603-95cd-56b009123d8c" xlink:to="loc_us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock_811f1951-fecd-4711-8a89-f67d0f4c3d21" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock_980a7098-cad8-4c70-84a9-598c55366b3b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47935275-5d4b-4603-95cd-56b009123d8c" xlink:to="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock_980a7098-cad8-4c70-84a9-598c55366b3b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock_9ade593a-c88d-43ba-83e8-4fa7e7c9c3de" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47935275-5d4b-4603-95cd-56b009123d8c" xlink:to="loc_us-gaap_SummaryOfIncomeTaxContingenciesTextBlock_9ade593a-c88d-43ba-83e8-4fa7e7c9c3de" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock_8d741ecf-0fae-49f7-805c-c855afd0028a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47935275-5d4b-4603-95cd-56b009123d8c" xlink:to="loc_us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock_8d741ecf-0fae-49f7-805c-c855afd0028a" 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-20201231.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_2e96d86b-f4bf-4e50-9b3d-b5bc00706d20" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2e96d86b-f4bf-4e50-9b3d-b5bc00706d20" xlink:to="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_05112f00-44ad-48d1-bf3a-09050f26ae90" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_05112f00-44ad-48d1-bf3a-09050f26ae90" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_05eb167d-5f95-4533-8edc-0ffed1d58d11" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_05112f00-44ad-48d1-bf3a-09050f26ae90" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_05eb167d-5f95-4533-8edc-0ffed1d58d11" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_c1a9ad28-a394-4306-825c-9498cbc7d556" xlink:href="cgnx-20201231.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_05eb167d-5f95-4533-8edc-0ffed1d58d11" xlink:to="loc_cgnx_SualabCo.Ltd.Member_c1a9ad28-a394-4306-825c-9498cbc7d556" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityAxis_68cca575-4b27-4cb4-8644-d255a74d4ddd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_us-gaap_IncomeTaxAuthorityAxis_68cca575-4b27-4cb4-8644-d255a74d4ddd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityDomain_c73c3eca-8da7-4127-8a45-28619fd626c1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_68cca575-4b27-4cb4-8644-d255a74d4ddd" xlink:to="loc_us-gaap_IncomeTaxAuthorityDomain_c73c3eca-8da7-4127-8a45-28619fd626c1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ForeignCountryMember_915ed51d-555e-4fdc-94e3-00fc68015727" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c73c3eca-8da7-4127-8a45-28619fd626c1" xlink:to="loc_us-gaap_ForeignCountryMember_915ed51d-555e-4fdc-94e3-00fc68015727" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DomesticCountryMember_996bebc9-791f-4635-b1f3-ee3dd8eaf27d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c73c3eca-8da7-4127-8a45-28619fd626c1" xlink:to="loc_us-gaap_DomesticCountryMember_996bebc9-791f-4635-b1f3-ee3dd8eaf27d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameAxis_79d52cd2-99d9-432c-81ea-5d01f1f96db7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_us-gaap_IncomeTaxAuthorityNameAxis_79d52cd2-99d9-432c-81ea-5d01f1f96db7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxAuthorityNameDomain_6c365617-1273-445f-800a-44d2dd184622" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_79d52cd2-99d9-432c-81ea-5d01f1f96db7" xlink:to="loc_us-gaap_IncomeTaxAuthorityNameDomain_6c365617-1273-445f-800a-44d2dd184622" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueCommissionersIrelandMember_3fb876c8-2d44-4386-9857-1792e237ecb9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6c365617-1273-445f-800a-44d2dd184622" xlink:to="loc_us-gaap_RevenueCommissionersIrelandMember_3fb876c8-2d44-4386-9857-1792e237ecb9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StateAdministrationOfTaxationChinaMember_6ccbc857-29e3-4522-8f86-9d10da72f9d6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6c365617-1273-445f-800a-44d2dd184622" xlink:to="loc_us-gaap_StateAdministrationOfTaxationChinaMember_6ccbc857-29e3-4522-8f86-9d10da72f9d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis_eb078cf6-b994-4087-896a-3beb38bcb884" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AdjustmentsForNewAccountingPronouncementsAxis"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis_eb078cf6-b994-4087-896a-3beb38bcb884" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfAdoptionMember_47c64cc3-61cc-4e4a-b3be-acc181d1c44d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TypeOfAdoptionMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_AdjustmentsForNewAccountingPronouncementsAxis_eb078cf6-b994-4087-896a-3beb38bcb884" xlink:to="loc_us-gaap_TypeOfAdoptionMember_47c64cc3-61cc-4e4a-b3be-acc181d1c44d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember_ad375bdc-afac-4815-878e-500af018be7c" xlink:href="cgnx-20201231.xsd#cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TypeOfAdoptionMember_47c64cc3-61cc-4e4a-b3be-acc181d1c44d" xlink:to="loc_cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember_ad375bdc-afac-4815-878e-500af018be7c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardAxis_3b017639-c5b0-4302-b6bd-b41cfc7d0510" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCreditCarryforwardAxis"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_us-gaap_TaxCreditCarryforwardAxis_3b017639-c5b0-4302-b6bd-b41cfc7d0510" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardNameDomain_c7b98c21-c41c-4976-994b-f840c23635ff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3b017639-c5b0-4302-b6bd-b41cfc7d0510" xlink:to="loc_us-gaap_TaxCreditCarryforwardNameDomain_c7b98c21-c41c-4976-994b-f840c23635ff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ResearchMember_8392cc6a-29e6-4fac-b2f6-4de01b339df9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c7b98c21-c41c-4976-994b-f840c23635ff" xlink:to="loc_us-gaap_ResearchMember_8392cc6a-29e6-4fac-b2f6-4de01b339df9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_StateResearchAndExperimentationMember_4de89ebf-3cc1-423d-8930-f8680b73dc0d" xlink:href="cgnx-20201231.xsd#cgnx_StateResearchAndExperimentationMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardNameDomain_c7b98c21-c41c-4976-994b-f840c23635ff" xlink:to="loc_cgnx_StateResearchAndExperimentationMember_4de89ebf-3cc1-423d-8930-f8680b73dc0d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsAxis_c4554416-2064-447e-b908-610eed46f93f" xlink:href="cgnx-20201231.xsd#cgnx_DiscreteTaxItemsAxis"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_cgnx_DiscreteTaxItemsAxis_c4554416-2064-447e-b908-610eed46f93f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxItemsDomain_5afffd93-2957-4ba0-bca8-9acbaa3c9928" xlink:href="cgnx-20201231.xsd#cgnx_DiscreteTaxItemsDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_DiscreteTaxItemsAxis_c4554416-2064-447e-b908-610eed46f93f" xlink:to="loc_cgnx_DiscreteTaxItemsDomain_5afffd93-2957-4ba0-bca8-9acbaa3c9928" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_a3861584-a880-4f55-a496-2aa3e13047b6" xlink:href="cgnx-20201231.xsd#cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_5afffd93-2957-4ba0-bca8-9acbaa3c9928" xlink:to="loc_cgnx_ForeignTaxBenefitGainsTaxedOutsideUSMember_a3861584-a880-4f55-a496-2aa3e13047b6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_be473616-b541-4e34-aa99-a3d1076dfd08" xlink:href="cgnx-20201231.xsd#cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_5afffd93-2957-4ba0-bca8-9acbaa3c9928" xlink:to="loc_cgnx_ForeignTaxExpenseTransferPriceAdjustmentMember_be473616-b541-4e34-aa99-a3d1076dfd08" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_2afba910-d874-417d-b09c-88477714c3e7" xlink:href="cgnx-20201231.xsd#cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_cgnx_DiscreteTaxItemsDomain_5afffd93-2957-4ba0-bca8-9acbaa3c9928" xlink:to="loc_cgnx_DiscreteTaxExpenseForeignTaxFilingAdjustmentsMember_2afba910-d874-417d-b09c-88477714c3e7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCreditCarryforwardLineItems"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardTable_5922ab93-4075-4f53-a5e6-432615c9a0be" xlink:to="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_04717a5e-373c-4d6d-8c54-7d1143080d2c" xlink:href="cgnx-20201231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_04717a5e-373c-4d6d-8c54-7d1143080d2c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_02a0b773-ef35-4b49-9407-b94a7f030c11" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_02a0b773-ef35-4b49-9407-b94a7f030c11" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential_3d8719dc-817d-41e6-a4b7-1653546a8c19" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential_3d8719dc-817d-41e6-a4b7-1653546a8c19" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsForeignTaxStructureChange_25f2c982-9090-4fe4-88e7-89a9ca654434" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxAssetsForeignTaxStructureChange"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_DeferredTaxAssetsForeignTaxStructureChange_25f2c982-9090-4fe4-88e7-89a9ca654434" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_76bf8372-9a7c-4126-9ce4-158c2060d002" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_76bf8372-9a7c-4126-9ce4-158c2060d002" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_5bd9e56c-1779-4752-8320-ea54b2d6fede" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic_5bd9e56c-1779-4752-8320-ea54b2d6fede" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_d46f3197-8efb-44f4-b2ec-25f869cd58ea" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign_d46f3197-8efb-44f4-b2ec-25f869cd58ea" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_d5277bbd-ab84-4c66-9e48-25c1876385a3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_d5277bbd-ab84-4c66-9e48-25c1876385a3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Cash_84b7d791-e19e-4a81-8f27-24f35aa92a10" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_Cash_84b7d791-e19e-4a81-8f27-24f35aa92a10" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_729869e4-35b0-47ca-8f37-ccf9e17bdef7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_729869e4-35b0-47ca-8f37-ccf9e17bdef7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount_7e21018b-7450-45be-83f9-3267551fd583" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount_7e21018b-7450-45be-83f9-3267551fd583" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_0d47f7e9-b582-4594-b1d5-e2e0cc4acc9f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_0d47f7e9-b582-4594-b1d5-e2e0cc4acc9f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_5a4240b6-2f0b-4763-a76a-a4adeacee062" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_NetCashProvidedByUsedInOperatingActivities_5a4240b6-2f0b-4763-a76a-a4adeacee062" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_7193e9cd-1e8d-43fe-a646-d767ebb327e8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_NetCashProvidedByUsedInFinancingActivities_7193e9cd-1e8d-43fe-a646-d767ebb327e8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense_c737007a-7bab-4f8c-8672-e4727fa7e1ba" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense_c737007a-7bab-4f8c-8672-e4727fa7e1ba" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesGrossNoncurrent_9f74e437-ab83-4960-a557-52c11f66bb0f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGrossNoncurrent"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_DeferredTaxLiabilitiesGrossNoncurrent_9f74e437-ab83-4960-a557-52c11f66bb0f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_6182b6df-f977-44d5-bb19-c97c1a289391" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_LiabilityForUncertainTaxPositionsNoncurrent"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_LiabilityForUncertainTaxPositionsNoncurrent_6182b6df-f977-44d5-bb19-c97c1a289391" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_9cc4b905-251e-430c-b3bd-d760695cd1e2" xlink:href="cgnx-20201231.xsd#cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets_9cc4b905-251e-430c-b3bd-d760695cd1e2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_ec5ccbde-7b5d-4489-9f0b-906b1e5b3a4c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued"/>
    <link:presentationArc order="19" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued_ec5ccbde-7b5d-4489-9f0b-906b1e5b3a4c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_c33f0b3b-30e0-4182-b331-a77d3bc642c9" xlink:href="cgnx-20201231.xsd#cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves"/>
    <link:presentationArc order="20" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_c33f0b3b-30e0-4182-b331-a77d3bc642c9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_f2e8e6f7-4aea-4d1b-ba6c-43cc682f9f15" xlink:href="cgnx-20201231.xsd#cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves"/>
    <link:presentationArc order="21" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves_f2e8e6f7-4aea-4d1b-ba6c-43cc682f9f15" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesGrossCurrent_a5df2e8b-c958-4f71-a850-9202152ac48d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxLiabilitiesGrossCurrent"/>
    <link:presentationArc order="22" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_DeferredTaxLiabilitiesGrossCurrent_a5df2e8b-c958-4f71-a850-9202152ac48d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_b280ad5c-384f-4970-8b15-922555bd96c3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsValuationAllowance"/>
    <link:presentationArc order="23" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_b280ad5c-384f-4970-8b15-922555bd96c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch_b5c05e6e-5376-4497-9ef9-099b87c2767f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch"/>
    <link:presentationArc order="24" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch_b5c05e6e-5376-4497-9ef9-099b87c2767f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxesPaidNet_b26cf2ee-c274-4805-88e1-56a26f900503" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxesPaidNet"/>
    <link:presentationArc order="25" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeTaxesPaidNet_b26cf2ee-c274-4805-88e1-56a26f900503" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OpenTaxYearStateAuthorities_19ad11dc-aee6-4397-bcb5-ea47009d78f7" xlink:href="cgnx-20201231.xsd#cgnx_OpenTaxYearStateAuthorities"/>
    <link:presentationArc order="26" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_OpenTaxYearStateAuthorities_19ad11dc-aee6-4397-bcb5-ea47009d78f7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OpentaxyearUnitedStatesInternalRevenueService_de7e565f-b114-4a45-8e69-d83cdc8be935" xlink:href="cgnx-20201231.xsd#cgnx_OpentaxyearUnitedStatesInternalRevenueService"/>
    <link:presentationArc order="27" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_OpentaxyearUnitedStatesInternalRevenueService_de7e565f-b114-4a45-8e69-d83cdc8be935" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Opentaxyearvarioustaxingauthorities_635e72a1-d26d-4d28-884c-b94c75769d8e" xlink:href="cgnx-20201231.xsd#cgnx_Opentaxyearvarioustaxingauthorities"/>
    <link:presentationArc order="28" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_Opentaxyearvarioustaxingauthorities_635e72a1-d26d-4d28-884c-b94c75769d8e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement_588f296e-f133-4135-a2b1-fde0c1f33613" xlink:href="cgnx-20201231.xsd#cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement"/>
    <link:presentationArc order="29" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement_588f296e-f133-4135-a2b1-fde0c1f33613" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_TaxyearsforAPAagreement_4f7d165a-ae75-4f8a-bbfe-a0a02159a591" xlink:href="cgnx-20201231.xsd#cgnx_TaxyearsforAPAagreement"/>
    <link:presentationArc order="30" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_TaxyearsforAPAagreement_4f7d165a-ae75-4f8a-bbfe-a0a02159a591" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Stateresearchandexperimentationtaxcarryforwards_2724b66e-756e-4855-8726-24a4324e25e5" xlink:href="cgnx-20201231.xsd#cgnx_Stateresearchandexperimentationtaxcarryforwards"/>
    <link:presentationArc order="31" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_Stateresearchandexperimentationtaxcarryforwards_2724b66e-756e-4855-8726-24a4324e25e5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsOther_b506d35e-201a-403b-ab47-ef55236139f6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxReconciliationTaxSettlementsOther"/>
    <link:presentationArc order="32" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsOther_b506d35e-201a-403b-ab47-ef55236139f6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign_8ac7a584-dfc3-4236-95dc-809103a648ce" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxReconciliationTaxSettlementsForeign"/>
    <link:presentationArc order="33" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_IncomeTaxReconciliationTaxSettlementsForeign_8ac7a584-dfc3-4236-95dc-809103a648ce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit_b3b25f06-b716-4af2-abdc-1d0328b745c8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit"/>
    <link:presentationArc order="34" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit_b3b25f06-b716-4af2-abdc-1d0328b745c8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense_48fb17bc-9a57-4955-b038-f58b2b5c9259" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense"/>
    <link:presentationArc order="35" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense_48fb17bc-9a57-4955-b038-f58b2b5c9259" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability_db3ee2c4-9fb0-47d4-8951-b5a4e164b898" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability"/>
    <link:presentationArc order="36" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability_db3ee2c4-9fb0-47d4-8951-b5a4e164b898" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities_60c1e3d3-99ee-499f-82fa-796ec912169a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DeferredIncomeTaxLiabilities"/>
    <link:presentationArc order="37" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilities_60c1e3d3-99ee-499f-82fa-796ec912169a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_UnrecognizedTaxBenefitsGross_598e911e-5cbd-4dd7-a854-b6fe502c96f1" xlink:href="cgnx-20201231.xsd#cgnx_UnrecognizedTaxBenefitsGross"/>
    <link:presentationArc order="38" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_UnrecognizedTaxBenefitsGross_598e911e-5cbd-4dd7-a854-b6fe502c96f1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_af61348a-cf46-46ea-aaea-49026984874b" xlink:href="cgnx-20201231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar"/>
    <link:presentationArc order="39" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_TaxCreditCarryforwardLineItems_9b3990e5-c1cf-49c4-b1d0-2a466012eebd" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar_af61348a-cf46-46ea-aaea-49026984874b" 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-20201231.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_8c67af8c-fcb1-4c7e-b35b-68de99e1048e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_c1a3e356-1645-4a6c-8d21-edc957e58d28" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8c67af8c-fcb1-4c7e-b35b-68de99e1048e" xlink:to="loc_us-gaap_CurrentIncomeTaxExpenseBenefitContinuingOperationsAbstract_c1a3e356-1645-4a6c-8d21-edc957e58d28" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentFederalTaxExpenseBenefit_a1a35f8d-9bc5-498b-8b36-98d828f0a1fe" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c1a3e356-1645-4a6c-8d21-edc957e58d28" xlink:to="loc_us-gaap_CurrentFederalTaxExpenseBenefit_a1a35f8d-9bc5-498b-8b36-98d828f0a1fe" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_0e19c1ae-02a9-493d-968f-582c88c7f994" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c1a3e356-1645-4a6c-8d21-edc957e58d28" xlink:to="loc_us-gaap_CurrentStateAndLocalTaxExpenseBenefit_0e19c1ae-02a9-493d-968f-582c88c7f994" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentForeignTaxExpenseBenefit_be5421b7-6e51-4f7b-bcba-6f3ff146e796" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c1a3e356-1645-4a6c-8d21-edc957e58d28" xlink:to="loc_us-gaap_CurrentForeignTaxExpenseBenefit_be5421b7-6e51-4f7b-bcba-6f3ff146e796" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_3b88f6a6-d853-42cb-80dc-6433af3f6ae2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c1a3e356-1645-4a6c-8d21-edc957e58d28" xlink:to="loc_us-gaap_CurrentIncomeTaxExpenseBenefit_3b88f6a6-d853-42cb-80dc-6433af3f6ae2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_6172eb7a-311d-495f-a332-e7e476a3d0a7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8c67af8c-fcb1-4c7e-b35b-68de99e1048e" xlink:to="loc_us-gaap_DeferredIncomeTaxExpenseBenefitContinuingOperationsAbstract_6172eb7a-311d-495f-a332-e7e476a3d0a7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_6de7ec7f-cdc3-46f8-8785-72a3a541f79b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6172eb7a-311d-495f-a332-e7e476a3d0a7" xlink:to="loc_us-gaap_DeferredFederalIncomeTaxExpenseBenefit_6de7ec7f-cdc3-46f8-8785-72a3a541f79b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_edc01a3a-22fa-4f6e-9f98-ed0d40940fd3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6172eb7a-311d-495f-a332-e7e476a3d0a7" xlink:to="loc_us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit_edc01a3a-22fa-4f6e-9f98-ed0d40940fd3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_3c74c638-34a5-4e2b-9304-4ef828484306" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6172eb7a-311d-495f-a332-e7e476a3d0a7" xlink:to="loc_us-gaap_DeferredForeignIncomeTaxExpenseBenefit_3c74c638-34a5-4e2b-9304-4ef828484306" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_cb8bdfca-be1c-4e02-8e98-de3e0cef876a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6172eb7a-311d-495f-a332-e7e476a3d0a7" xlink:to="loc_us-gaap_DeferredIncomeTaxExpenseBenefit_cb8bdfca-be1c-4e02-8e98-de3e0cef876a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_49c46d97-3b00-4d00-8edc-cea21b3b7e6d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8c67af8c-fcb1-4c7e-b35b-68de99e1048e" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_49c46d97-3b00-4d00-8edc-cea21b3b7e6d" 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-20201231.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_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_80ec0d23-385c-4163-b921-5df3947dee31" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate_80ec0d23-385c-4163-b921-5df3947dee31" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_f57d05e3-8b08-457a-8ff7-a040e21c5fa8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes_f57d05e3-8b08-457a-8ff7-a040e21c5fa8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_b21dcad6-f73e-4579-919c-3d923d1c4089" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential_b21dcad6-f73e-4579-919c-3d923d1c4089" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits_992b2fb0-cee1-43ff-ac1c-8fa179397772" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits_992b2fb0-cee1-43ff-ac1c-8fa179397772" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_83ce39b3-3d5f-4d95-bac9-6a783cecf314" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent_83ce39b3-3d5f-4d95-bac9-6a783cecf314" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements_b398c01f-8ae3-47a4-b074-dd72f7800a3e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements_b398c01f-8ae3-47a4-b074-dd72f7800a3e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign_df549be4-d394-49d9-9fae-3ad6d0268337" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign_df549be4-d394-49d9-9fae-3ad6d0268337" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_5d0583e2-73f9-4db7-b9cf-848f849c4103" xlink:href="cgnx-20201231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty_5d0583e2-73f9-4db7-b9cf-848f849c4103" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate_f69e7bb3-dc40-46c6-9653-8db7ced8de2f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate_f69e7bb3-dc40-46c6-9653-8db7ced8de2f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_f64e94b5-b131-4c1f-8471-41a247e0c186" xlink:href="cgnx-20201231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent_f64e94b5-b131-4c1f-8471-41a247e0c186" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent_4a9f29d8-0816-44c7-94c6-fd22b6f0f927" xlink:href="cgnx-20201231.xsd#cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent_4a9f29d8-0816-44c7-94c6-fd22b6f0f927" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent_9e8163e1-5c1b-4a89-92db-90f8a50fc9e9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent_9e8163e1-5c1b-4a89-92db-90f8a50fc9e9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments_f997b67c-4296-4777-b321-05bace1c3050" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments_f997b67c-4296-4777-b321-05bace1c3050" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_ae552bef-e454-4181-88f4-5953b340fea3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EffectiveIncomeTaxRateContinuingOperations"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IncomeTaxDisclosureAbstract_5abdd00c-bd39-42df-9e53-025f73f7544f" xlink:to="loc_us-gaap_EffectiveIncomeTaxRateContinuingOperations_ae552bef-e454-4181-88f4-5953b340fea3" 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-20201231.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_22b9f6ea-d2c9-4e43-9d4a-f38bafd7c0e3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_d0aff611-91ec-4938-acd1-866f5c54ad6a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_22b9f6ea-d2c9-4e43-9d4a-f38bafd7c0e3" xlink:to="loc_us-gaap_ScheduleOfChangeInAccountingEstimateTable_d0aff611-91ec-4938-acd1-866f5c54ad6a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementAxis_a7e9254c-eeef-4983-a927-3a8946495823" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_d0aff611-91ec-4938-acd1-866f5c54ad6a" xlink:to="loc_srt_RestatementAxis_a7e9254c-eeef-4983-a927-3a8946495823" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementDomain_f6f024a2-5920-4cab-80aa-d333038b48ce" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RestatementDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RestatementAxis_a7e9254c-eeef-4983-a927-3a8946495823" xlink:to="loc_srt_RestatementDomain_f6f024a2-5920-4cab-80aa-d333038b48ce" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ScenarioPreviouslyReportedMember_9db2b515-9476-4026-94c9-3183c53e0898" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScenarioPreviouslyReportedMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RestatementDomain_f6f024a2-5920-4cab-80aa-d333038b48ce" xlink:to="loc_srt_ScenarioPreviouslyReportedMember_9db2b515-9476-4026-94c9-3183c53e0898" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RestatementAdjustmentMember_8d84129b-97e7-49ca-819f-2960f968e7bd" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RestatementAdjustmentMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RestatementDomain_f6f024a2-5920-4cab-80aa-d333038b48ce" xlink:to="loc_srt_RestatementAdjustmentMember_8d84129b-97e7-49ca-819f-2960f968e7bd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_223458d9-a19f-4a74-b7af-f94ef615cc35" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d0aff611-91ec-4938-acd1-866f5c54ad6a" xlink:to="loc_us-gaap_ChangeInAccountingEstimateByTypeAxis_223458d9-a19f-4a74-b7af-f94ef615cc35" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_2bc9249c-3479-4e1e-9401-38997a834575" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_223458d9-a19f-4a74-b7af-f94ef615cc35" xlink:to="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_2bc9249c-3479-4e1e-9401-38997a834575" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_cda09b7f-c37c-44c5-8a4f-02ccc7f967e4" xlink:href="cgnx-20201231.xsd#cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateTypeDomain_2bc9249c-3479-4e1e-9401-38997a834575" xlink:to="loc_cgnx_ChangeinGlobalIntangibleLowTaxedIncomeMember_cda09b7f-c37c-44c5-8a4f-02ccc7f967e4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d0aff611-91ec-4938-acd1-866f5c54ad6a" xlink:to="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_c1482ea5-27a4-45af-830a-a360f83aeefb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ChangeInAccountingEstimateLineItems_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments_c1482ea5-27a4-45af-830a-a360f83aeefb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IncomeTaxExpenseBenefit_f2171141-828c-497b-9cf2-62d7c160c48d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_IncomeTaxExpenseBenefit_f2171141-828c-497b-9cf2-62d7c160c48d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_5ec95357-1906-4c97-87ca-3649c404e627" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_NetIncomeLoss_5ec95357-1906-4c97-87ca-3649c404e627" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasic_e4424149-49ef-4f5a-a6c2-12623bc8a752" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_EarningsPerShareBasic_e4424149-49ef-4f5a-a6c2-12623bc8a752" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDiluted_88f380ff-10cf-4bde-a001-5a8f50c40037" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_EarningsPerShareDiluted_88f380ff-10cf-4bde-a001-5a8f50c40037" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsGross_8ffb8d34-8e52-4f99-a879-b186a1248818" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_DeferredTaxAssetsGross_8ffb8d34-8e52-4f99-a879-b186a1248818" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredIncomeTaxLiabilities_93063194-fbe6-4289-847d-0334f393aed6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_DeferredIncomeTaxLiabilities_93063194-fbe6-4289-847d-0334f393aed6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RetainedEarningsAccumulatedDeficit_6044a26f-4981-4569-89b1-e79fcde08349" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_73b13aa1-ce00-4335-a62a-aa5b98a181ab" xlink:to="loc_us-gaap_RetainedEarningsAccumulatedDeficit_6044a26f-4981-4569-89b1-e79fcde08349" 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-20201231.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_8149724b-7be8-4bb3-8883-23bb6bad41bc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_49c2b573-fe17-4f01-b350-e9775824446d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8149724b-7be8-4bb3-8883-23bb6bad41bc" xlink:to="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_49c2b573-fe17-4f01-b350-e9775824446d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_55775ecc-74bf-44a5-b825-f7f43838874a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_49c2b573-fe17-4f01-b350-e9775824446d" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_55775ecc-74bf-44a5-b825-f7f43838874a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions_d877cd6e-258b-4abc-89cc-f8a666283f69" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_49c2b573-fe17-4f01-b350-e9775824446d" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions_d877cd6e-258b-4abc-89cc-f8a666283f69" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsPeriodIncreaseDecrease_7a5551a6-3bac-4b3b-9f3a-4ccdeadf980a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsPeriodIncreaseDecrease"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_49c2b573-fe17-4f01-b350-e9775824446d" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsPeriodIncreaseDecrease_7a5551a6-3bac-4b3b-9f3a-4ccdeadf980a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions_e5621cec-2164-4cd4-9ec0-3a7bb422c8d0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_49c2b573-fe17-4f01-b350-e9775824446d" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions_e5621cec-2164-4cd4-9ec0-3a7bb422c8d0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations_84c1d677-61f8-4302-a48f-92d8f75cccf6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ReconciliationOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForward_49c2b573-fe17-4f01-b350-e9775824446d" xlink:to="loc_us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations_84c1d677-61f8-4302-a48f-92d8f75cccf6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UnrecognizedTaxBenefits_3b882de5-23d2-45c2-a80b-eb750fdd19e1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_49c2b573-fe17-4f01-b350-e9775824446d" xlink:to="loc_us-gaap_UnrecognizedTaxBenefits_3b882de5-23d2-45c2-a80b-eb750fdd19e1" 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-20201231.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_30b5811b-be93-4906-a8df-e528b66307c0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IncomeTaxDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_ad91e0fd-d885-4867-825f-67c61297913e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_30b5811b-be93-4906-a8df-e528b66307c0" xlink:to="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_ad91e0fd-d885-4867-825f-67c61297913e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_c0ec5dd3-3bb6-42c7-94dd-15dd626e7cef" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_ad91e0fd-d885-4867-825f-67c61297913e" xlink:to="loc_cgnx_DeferredTaxAssetsIntangibleAssetChangeinTaxStructure_c0ec5dd3-3bb6-42c7-94dd-15dd626e7cef" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_aecb95fd-85a3-4e0c-aff7-8f6c8d5b933a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ad91e0fd-d885-4867-825f-67c61297913e" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost_aecb95fd-85a3-4e0c-aff7-8f6c8d5b933a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic_bc2bcc88-fa76-40a8-be44-c4b9e955b8c3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ad91e0fd-d885-4867-825f-67c61297913e" xlink:to="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic_bc2bcc88-fa76-40a8-be44-c4b9e955b8c3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsInventory_8617ddb5-e18c-41fe-89ec-db436643c7f8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ad91e0fd-d885-4867-825f-67c61297913e" xlink:to="loc_us-gaap_DeferredTaxAssetsInventory_8617ddb5-e18c-41fe-89ec-db436643c7f8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther_8bbf6886-46a3-421d-8bfc-1dc23d1dce99" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ad91e0fd-d885-4867-825f-67c61297913e" xlink:to="loc_us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther_8bbf6886-46a3-421d-8bfc-1dc23d1dce99" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_NoncurrentDeferredTaxAssetsDeprecation_59c6d37b-407c-47b6-9cbe-947f012539a7" xlink:href="cgnx-20201231.xsd#cgnx_NoncurrentDeferredTaxAssetsDeprecation"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_ad91e0fd-d885-4867-825f-67c61297913e" xlink:to="loc_cgnx_NoncurrentDeferredTaxAssetsDeprecation_59c6d37b-407c-47b6-9cbe-947f012539a7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign_5a20d76e-24ef-4533-b188-83a0240aa537" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ad91e0fd-d885-4867-825f-67c61297913e" xlink:to="loc_us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign_5a20d76e-24ef-4533-b188-83a0240aa537" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsOtherNoncurrent_2ab7844b-b844-4067-95c3-0c294e048d89" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxAssetsOtherNoncurrent"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_ad91e0fd-d885-4867-825f-67c61297913e" xlink:to="loc_cgnx_DeferredTaxAssetsOtherNoncurrent_2ab7844b-b844-4067-95c3-0c294e048d89" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_00e14dbe-d57e-4fe6-9d80-3a6cdc3496bb" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxAssetsNetNoncurrentClassificationAbstract_ad91e0fd-d885-4867-825f-67c61297913e" xlink:to="loc_cgnx_DeferredTaxAssetsWithJurisdictionalNettingGross_00e14dbe-d57e-4fe6-9d80-3a6cdc3496bb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsValuationAllowance_c44a5b42-779f-49d6-b081-c8eace2d579a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ad91e0fd-d885-4867-825f-67c61297913e" xlink:to="loc_us-gaap_DeferredTaxAssetsValuationAllowance_c44a5b42-779f-49d6-b081-c8eace2d579a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_87e2899a-11a3-4789-b347-e7a31f4b93cf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_ad91e0fd-d885-4867-825f-67c61297913e" xlink:to="loc_us-gaap_DeferredTaxAssetsLiabilitiesNet_87e2899a-11a3-4789-b347-e7a31f4b93cf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DeferredTaxLiabilitiesAbstract_2c72029b-5831-4155-9888-d4153ba1f68a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_30b5811b-be93-4906-a8df-e528b66307c0" xlink:to="loc_us-gaap_DeferredTaxLiabilitiesAbstract_2c72029b-5831-4155-9888-d4153ba1f68a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_8f87331e-5948-4152-8bf2-566d844f2d9d" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesAbstract_2c72029b-5831-4155-9888-d4153ba1f68a" xlink:to="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome_8f87331e-5948-4152-8bf2-566d844f2d9d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome_8433b5f6-33b6-4d53-9cb5-8ef7d8f90253" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesAbstract_2c72029b-5831-4155-9888-d4153ba1f68a" xlink:to="loc_cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome_8433b5f6-33b6-4d53-9cb5-8ef7d8f90253" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross_e543923a-9fd5-4a2f-971f-98c0c90301f1" xlink:href="cgnx-20201231.xsd#cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_DeferredTaxLiabilitiesAbstract_2c72029b-5831-4155-9888-d4153ba1f68a" xlink:to="loc_cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross_e543923a-9fd5-4a2f-971f-98c0c90301f1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/WeightedAverageShares" xlink:type="simple" xlink:href="cgnx-20201231.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_47a16653-f479-44b8-84a1-df6c50d80e32" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareTextBlock_3acdfd95-1174-4879-8474-b3970687d246" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_47a16653-f479-44b8-84a1-df6c50d80e32" xlink:to="loc_us-gaap_EarningsPerShareTextBlock_3acdfd95-1174-4879-8474-b3970687d246" 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-20201231.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_287aa6bf-bfac-410f-8eea-7f94881026df" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock_e6b5a1bf-108c-4203-8ca3-b82f80aab56f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_287aa6bf-bfac-410f-8eea-7f94881026df" xlink:to="loc_us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock_e6b5a1bf-108c-4203-8ca3-b82f80aab56f" 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-20201231.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_e164a6e3-edb5-4a33-bedf-af908be5e4ae" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_b254fc6e-2d2e-4433-9191-83372231aee8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e164a6e3-edb5-4a33-bedf-af908be5e4ae" xlink:to="loc_us-gaap_WeightedAverageNumberOfSharesOutstandingBasic_b254fc6e-2d2e-4433-9191-83372231aee8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment_bd3232ec-f398-4bc8-96ba-e954aab6ef3e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e164a6e3-edb5-4a33-bedf-af908be5e4ae" xlink:to="loc_us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment_bd3232ec-f398-4bc8-96ba-e954aab6ef3e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_1874cb77-9280-4416-bcad-d81eba604871" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e164a6e3-edb5-4a33-bedf-af908be5e4ae" xlink:to="loc_us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding_1874cb77-9280-4416-bcad-d81eba604871" 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-20201231.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_893bda78-39e5-408a-ac32-5009598ad5ea" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_c9096f99-e341-46f1-8817-5f1df5a03088" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_893bda78-39e5-408a-ac32-5009598ad5ea" xlink:to="loc_us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable_c9096f99-e341-46f1-8817-5f1df5a03088" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_83e14ff5-83b6-48f4-98cb-ba009431bb80" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c9096f99-e341-46f1-8817-5f1df5a03088" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_83e14ff5-83b6-48f4-98cb-ba009431bb80" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesNameDomain_949eaeac-1971-436f-b72b-049a449e1ee1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_83e14ff5-83b6-48f4-98cb-ba009431bb80" xlink:to="loc_us-gaap_AntidilutiveSecuritiesNameDomain_949eaeac-1971-436f-b72b-049a449e1ee1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EmployeeStockOptionMember_92373d3f-2ee8-4b95-b9d8-1e06309c4bd8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_949eaeac-1971-436f-b72b-049a449e1ee1" xlink:to="loc_us-gaap_EmployeeStockOptionMember_92373d3f-2ee8-4b95-b9d8-1e06309c4bd8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestrictedStockMember_c2e31510-0f67-42f3-805f-79a31080bd34" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_949eaeac-1971-436f-b72b-049a449e1ee1" xlink:to="loc_us-gaap_RestrictedStockMember_c2e31510-0f67-42f3-805f-79a31080bd34" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_f4ac6e6f-8b6f-4c01-b8e8-197d51358997" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_c9096f99-e341-46f1-8817-5f1df5a03088" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareLineItems_f4ac6e6f-8b6f-4c01-b8e8-197d51358997" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_968cf57d-84d1-443b-870f-10e81204e571" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f4ac6e6f-8b6f-4c01-b8e8-197d51358997" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_968cf57d-84d1-443b-870f-10e81204e571" 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-20201231.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_b40521a0-639a-4e24-b7ff-ea9225da2da1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentReportingAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SegmentReportingDisclosureTextBlock_b6c5d6ef-e8ff-477c-84a4-49dfcaeefc61" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b40521a0-639a-4e24-b7ff-ea9225da2da1" xlink:to="loc_us-gaap_SegmentReportingDisclosureTextBlock_b6c5d6ef-e8ff-477c-84a4-49dfcaeefc61" 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-20201231.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_e3642587-14cf-4129-9ca4-60b86ee87e2d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentReportingAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock_7cbc4ed0-4147-4633-bd77-1bf79c5f0cd1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_e3642587-14cf-4129-9ca4-60b86ee87e2d" xlink:to="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock_7cbc4ed0-4147-4633-bd77-1bf79c5f0cd1" 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-20201231.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_14bd7359-6ead-4ccd-98ba-473f10ccba80" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentReportingAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTable_42417149-b2b8-4b06-b069-34bb65197fe3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_14bd7359-6ead-4ccd-98ba-473f10ccba80" xlink:to="loc_us-gaap_ConcentrationRiskTable_42417149-b2b8-4b06-b069-34bb65197fe3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_40612593-ab53-4024-ab0f-ff535cee1d05" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_42417149-b2b8-4b06-b069-34bb65197fe3" xlink:to="loc_us-gaap_ConcentrationRiskByBenchmarkAxis_40612593-ab53-4024-ab0f-ff535cee1d05" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskBenchmarkDomain_952c9f04-272a-4bc4-b30e-2631ea0008d6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_40612593-ab53-4024-ab0f-ff535cee1d05" xlink:to="loc_us-gaap_ConcentrationRiskBenchmarkDomain_952c9f04-272a-4bc4-b30e-2631ea0008d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SalesRevenueNetMember_3afa5b69-8857-4191-a7fa-7e236f0147a0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_952c9f04-272a-4bc4-b30e-2631ea0008d6" xlink:to="loc_us-gaap_SalesRevenueNetMember_3afa5b69-8857-4191-a7fa-7e236f0147a0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccountsReceivableMember_5b31b37a-526a-4416-bb37-af0941ac5121" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_952c9f04-272a-4bc4-b30e-2631ea0008d6" xlink:to="loc_us-gaap_AccountsReceivableMember_5b31b37a-526a-4416-bb37-af0941ac5121" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskByTypeAxis_d46af19d-e615-4494-b4c6-3af654fb9669" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_42417149-b2b8-4b06-b069-34bb65197fe3" xlink:to="loc_us-gaap_ConcentrationRiskByTypeAxis_d46af19d-e615-4494-b4c6-3af654fb9669" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskTypeDomain_49caf9a3-0922-46df-aebd-ca7ac4eac129" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_d46af19d-e615-4494-b4c6-3af654fb9669" xlink:to="loc_us-gaap_ConcentrationRiskTypeDomain_49caf9a3-0922-46df-aebd-ca7ac4eac129" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerConcentrationRiskMember_0a5a0885-246d-47b1-879e-3dc34f296a3a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_49caf9a3-0922-46df-aebd-ca7ac4eac129" xlink:to="loc_us-gaap_CustomerConcentrationRiskMember_0a5a0885-246d-47b1-879e-3dc34f296a3a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MajorCustomersAxis_5e1fb5ec-c105-45ba-a87a-332b8af135bf" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_42417149-b2b8-4b06-b069-34bb65197fe3" xlink:to="loc_srt_MajorCustomersAxis_5e1fb5ec-c105-45ba-a87a-332b8af135bf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_NameOfMajorCustomerDomain_6e571f71-0743-42cf-955f-969f2342a73f" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_NameOfMajorCustomerDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_MajorCustomersAxis_5e1fb5ec-c105-45ba-a87a-332b8af135bf" xlink:to="loc_srt_NameOfMajorCustomerDomain_6e571f71-0743-42cf-955f-969f2342a73f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Customer2Member_b26e50b6-987a-48ee-aa98-3ba5b58962df" xlink:href="cgnx-20201231.xsd#cgnx_Customer2Member"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_NameOfMajorCustomerDomain_6e571f71-0743-42cf-955f-969f2342a73f" xlink:to="loc_cgnx_Customer2Member_b26e50b6-987a-48ee-aa98-3ba5b58962df" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_Customer1Member_d7d6a666-ac6d-477d-936f-cc364a729b6e" xlink:href="cgnx-20201231.xsd#cgnx_Customer1Member"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_NameOfMajorCustomerDomain_6e571f71-0743-42cf-955f-969f2342a73f" xlink:to="loc_cgnx_Customer1Member_d7d6a666-ac6d-477d-936f-cc364a729b6e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskLineItems_5b09dd67-afca-4552-8b5f-95abc737f2d0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_42417149-b2b8-4b06-b069-34bb65197fe3" xlink:to="loc_us-gaap_ConcentrationRiskLineItems_5b09dd67-afca-4552-8b5f-95abc737f2d0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NumberOfReportableSegments_c5e7d416-dd8e-467e-b44c-421e3ed898b3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5b09dd67-afca-4552-8b5f-95abc737f2d0" xlink:to="loc_us-gaap_NumberOfReportableSegments_c5e7d416-dd8e-467e-b44c-421e3ed898b3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1_a35e5071-1c2f-49bc-ab2e-cba523053df2" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5b09dd67-afca-4552-8b5f-95abc737f2d0" xlink:to="loc_us-gaap_ConcentrationRiskPercentage1_a35e5071-1c2f-49bc-ab2e-cba523053df2" 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-20201231.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_6479df51-0d17-46c0-baf1-3ab177bbf261" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SegmentReportingAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_de92914b-f095-4684-82f9-f1392086f381" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6479df51-0d17-46c0-baf1-3ab177bbf261" xlink:to="loc_us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable_de92914b-f095-4684-82f9-f1392086f381" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_StatementGeographicalAxis_df0c3ad9-2a9c-4c8f-8ddb-07c04acfb3b5" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-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_de92914b-f095-4684-82f9-f1392086f381" xlink:to="loc_srt_StatementGeographicalAxis_df0c3ad9-2a9c-4c8f-8ddb-07c04acfb3b5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_SegmentGeographicalDomain"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_StatementGeographicalAxis_df0c3ad9-2a9c-4c8f-8ddb-07c04acfb3b5" xlink:to="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_country_US_2f378a8c-70b9-415c-9f02-077c03c3b518" xlink:href="https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd#country_US"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:to="loc_country_US_2f378a8c-70b9-415c-9f02-077c03c3b518" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_EuropeMember_0c6839be-94c8-48d6-a85c-ee1c36df7fc1" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_EuropeMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:to="loc_srt_EuropeMember_0c6839be-94c8-48d6-a85c-ee1c36df7fc1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_GreaterChinaMember_973122e3-6b1b-4936-998b-6e39c9425dc6" xlink:href="cgnx-20201231.xsd#cgnx_GreaterChinaMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:to="loc_cgnx_GreaterChinaMember_973122e3-6b1b-4936-998b-6e39c9425dc6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_OtherGeographicAreaMember_e99a982a-bb31-4d1b-b837-8e24042a8882" xlink:href="cgnx-20201231.xsd#cgnx_OtherGeographicAreaMember"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_SegmentGeographicalDomain_16a883b6-73b8-4ee8-9758-01bec32eed2e" xlink:to="loc_cgnx_OtherGeographicAreaMember_e99a982a-bb31-4d1b-b837-8e24042a8882" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_de92914b-f095-4684-82f9-f1392086f381" xlink:to="loc_us-gaap_RevenuesFromExternalCustomersAndLongLivedAssetsLineItems_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_a6bb4879-ab56-47ec-8b9b-a58e82ac23b9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_a6bb4879-ab56-47ec-8b9b-a58e82ac23b9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncurrentAssets_d8a69cae-44c4-4ae2-b180-edb9946f475d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:to="loc_us-gaap_NoncurrentAssets_d8a69cae-44c4-4ae2-b180-edb9946f475d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NumberOfReportableSegments_fb213e0a-ad79-4aa5-9bb9-ec35d3f734e9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:to="loc_us-gaap_NumberOfReportableSegments_fb213e0a-ad79-4aa5-9bb9-ec35d3f734e9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ConcentrationRiskPercentage1_4f6e48d7-76e0-47c2-b6d8-f89ec4a57c79" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_77f3470f-99a2-41ec-91ef-79078619f9a4" xlink:to="loc_us-gaap_ConcentrationRiskPercentage1_4f6e48d7-76e0-47c2-b6d8-f89ec4a57c79" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/Acquisitions" xlink:type="simple" xlink:href="cgnx-20201231.xsd#Acquisitions"/>
  <link:presentationLink xlink:role="http://cognex.com/role/Acquisitions" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationsAbstract_a3c691fc-b1f0-4d10-be81-6df6bbc0fcb8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationDisclosureTextBlock_e4d21a12-0d76-4047-805c-46c832bb96ae" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a3c691fc-b1f0-4d10-be81-6df6bbc0fcb8" xlink:to="loc_us-gaap_BusinessCombinationDisclosureTextBlock_e4d21a12-0d76-4047-805c-46c832bb96ae" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/AcquisitionsAcquisitionsTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AcquisitionsAcquisitionsTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/AcquisitionsAcquisitionsTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationsAbstract_fd8d1009-89de-403e-9952-99d30d11e179" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock_53385282-22ca-480a-b651-454106993ad9" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessCombinationsAbstract_fd8d1009-89de-403e-9952-99d30d11e179" xlink:to="loc_us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock_53385282-22ca-480a-b651-454106993ad9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AcquisitionsSualabCoLtdNarrativeDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationsAbstract_f6338ebb-d8b4-4678-aa6b-a786a5e57b34" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f6338ebb-d8b4-4678-aa6b-a786a5e57b34" xlink:to="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_aa76d602-7973-4ade-9a39-4d1ecf2ce3e6" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_aa76d602-7973-4ade-9a39-4d1ecf2ce3e6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_6bc7079a-9ed4-4aed-9e68-06a9bf356536" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_aa76d602-7973-4ade-9a39-4d1ecf2ce3e6" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_6bc7079a-9ed4-4aed-9e68-06a9bf356536" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_4ece16f3-afe7-4e5e-a557-cf928816dcbd" xlink:href="cgnx-20201231.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_6bc7079a-9ed4-4aed-9e68-06a9bf356536" xlink:to="loc_cgnx_SualabCo.Ltd.Member_4ece16f3-afe7-4e5e-a557-cf928816dcbd" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_40dba15d-9eff-4377-9127-6424cb654935" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_40dba15d-9eff-4377-9127-6424cb654935" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_40dba15d-9eff-4377-9127-6424cb654935" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompletedTechnologyMember_265fa984-35da-4adf-9009-aeb9de2bb342" xlink:href="cgnx-20201231.xsd#cgnx_CompletedTechnologyMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_cgnx_CompletedTechnologyMember_265fa984-35da-4adf-9009-aeb9de2bb342" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerRelationshipsMember_bf12bb70-1473-43c3-aa51-3892391ff47a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CustomerRelationshipsMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_us-gaap_CustomerRelationshipsMember_bf12bb70-1473-43c3-aa51-3892391ff47a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_d4ba23b2-7a73-4a54-93a0-2622131a7fab" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_TrademarksMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_us-gaap_TrademarksMember_d4ba23b2-7a73-4a54-93a0-2622131a7fab" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_01baefbd-8847-4bbf-bcdd-ef2754019a88" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_01baefbd-8847-4bbf-bcdd-ef2754019a88" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DevelopedTechnologyRightsMember_77ab247f-034f-4fe4-b0e9-4f94b400ce5a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_DevelopedTechnologyRightsMember"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_us-gaap_DevelopedTechnologyRightsMember_77ab247f-034f-4fe4-b0e9-4f94b400ce5a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CustomerContractsAndRelationshipsMember_da808c59-3350-4537-aee2-46d132735a6d" xlink:href="cgnx-20201231.xsd#cgnx_CustomerContractsAndRelationshipsMember"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_794affce-8f11-4e32-b6a0-3ed301a147aa" xlink:to="loc_cgnx_CustomerContractsAndRelationshipsMember_da808c59-3350-4537-aee2-46d132735a6d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeAxis_5570079e-7755-4447-ad0e-f6698d40cfec" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeAxis"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:to="loc_srt_RangeAxis_5570079e-7755-4447-ad0e-f6698d40cfec" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_RangeMember_e4e12dfe-106a-4550-9f0c-4a9fbde43bf2" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_RangeMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeAxis_5570079e-7755-4447-ad0e-f6698d40cfec" xlink:to="loc_srt_RangeMember_e4e12dfe-106a-4550-9f0c-4a9fbde43bf2" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MinimumMember_51a26b48-2c1b-445f-8f38-0d038d2fff05" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MinimumMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_e4e12dfe-106a-4550-9f0c-4a9fbde43bf2" xlink:to="loc_srt_MinimumMember_51a26b48-2c1b-445f-8f38-0d038d2fff05" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_MaximumMember_d6469a2c-3f94-4d5a-ad8c-531fa356fcad" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_MaximumMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_RangeMember_e4e12dfe-106a-4550-9f0c-4a9fbde43bf2" xlink:to="loc_srt_MaximumMember_d6469a2c-3f94-4d5a-ad8c-531fa356fcad" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_fdfb9ccf-5f01-437c-b443-a6e9bfeaf1ee" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis_fdfb9ccf-5f01-437c-b443-a6e9bfeaf1ee" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_4c752de8-9c0b-49f6-bd20-90aca718294b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_fdfb9ccf-5f01-437c-b443-a6e9bfeaf1ee" xlink:to="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_4c752de8-9c0b-49f6-bd20-90aca718294b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_InprocessTechnologyMember_3f06788d-03ed-4935-95d5-8cccb027f6d6" xlink:href="cgnx-20201231.xsd#cgnx_InprocessTechnologyMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_4c752de8-9c0b-49f6-bd20-90aca718294b" xlink:to="loc_cgnx_InprocessTechnologyMember_3f06788d-03ed-4935-95d5-8cccb027f6d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_InProcessResearchAndDevelopmentMember_57ce8511-72b1-4a52-901f-a4f2b71c4335" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_InProcessResearchAndDevelopmentMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain_4c752de8-9c0b-49f6-bd20-90aca718294b" xlink:to="loc_us-gaap_InProcessResearchAndDevelopmentMember_57ce8511-72b1-4a52-901f-a4f2b71c4335" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionLineItems"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_2f88ea43-6b56-4d12-b844-7b5955a40041" xlink:to="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife_a286a754-3e08-43cc-a037-606c38a76bb3" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife_a286a754-3e08-43cc-a037-606c38a76bb3" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount_ceb9064e-d73a-4f2c-b85d-3a39bb4203ed" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount_ceb9064e-d73a-4f2c-b85d-3a39bb4203ed" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationConsiderationTransferred1_fb71d914-b055-44f2-8d51-1321ed82c7e7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationConsiderationTransferred1"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_BusinessCombinationConsiderationTransferred1_fb71d914-b055-44f2-8d51-1321ed82c7e7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsToAcquireBusinessesGross_0c5c2039-b812-4cd1-ac30-a212a569915b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_PaymentsToAcquireBusinessesGross"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_PaymentsToAcquireBusinessesGross_0c5c2039-b812-4cd1-ac30-a212a569915b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationContingentConsiderationLiability_f384fd02-3c28-4191-8af5-6eacb6531aeb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationContingentConsiderationLiability"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_BusinessCombinationContingentConsiderationLiability_f384fd02-3c28-4191-8af5-6eacb6531aeb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_6e045822-10bb-4bf3-9131-05bd3943eca7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_6e045822-10bb-4bf3-9131-05bd3943eca7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_1b5d03dd-4527-4ef8-8348-534272c27d2c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_dc0d7d86-d3db-4281-bd91-8fb552d66aac" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill_1b5d03dd-4527-4ef8-8348-534272c27d2c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationsAbstract_38b6bd06-1e7d-4b7a-a1ad-4656182c9b60" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_76c0e6a4-4db1-4b14-92cb-9ec0b806795f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_38b6bd06-1e7d-4b7a-a1ad-4656182c9b60" xlink:to="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_76c0e6a4-4db1-4b14-92cb-9ec0b806795f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAxis_3b4cade8-7331-43c9-a7ee-46393d165e7e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_76c0e6a4-4db1-4b14-92cb-9ec0b806795f" xlink:to="loc_us-gaap_BusinessAcquisitionAxis_3b4cade8-7331-43c9-a7ee-46393d165e7e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionAcquireeDomain_fd2b2db0-0135-4309-a8ed-28c474b3ca66" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_3b4cade8-7331-43c9-a7ee-46393d165e7e" xlink:to="loc_us-gaap_BusinessAcquisitionAcquireeDomain_fd2b2db0-0135-4309-a8ed-28c474b3ca66" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_SualabCo.Ltd.Member_c0998cd1-480b-41e5-9750-0bb93322495a" xlink:href="cgnx-20201231.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_fd2b2db0-0135-4309-a8ed-28c474b3ca66" xlink:to="loc_cgnx_SualabCo.Ltd.Member_c0998cd1-480b-41e5-9750-0bb93322495a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8676f7e1-3985-4b95-9789-b348c2dd7940" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_76c0e6a4-4db1-4b14-92cb-9ec0b806795f" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis_8676f7e1-3985-4b95-9789-b348c2dd7940" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8676f7e1-3985-4b95-9789-b348c2dd7940" xlink:to="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_CompletedTechnologyMember_b688c56f-9605-4e8f-bf0f-acb80a4527e9" xlink:href="cgnx-20201231.xsd#cgnx_CompletedTechnologyMember"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:to="loc_cgnx_CompletedTechnologyMember_b688c56f-9605-4e8f-bf0f-acb80a4527e9" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_InprocessTechnologyMember_1c5c54f3-70f0-423b-a0aa-ca06cca11900" xlink:href="cgnx-20201231.xsd#cgnx_InprocessTechnologyMember"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:to="loc_cgnx_InprocessTechnologyMember_1c5c54f3-70f0-423b-a0aa-ca06cca11900" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_CustomerRelationshipsMember_f326d481-1945-4976-8d5b-7f69d0ab737c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_CustomerRelationshipsMember"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_FiniteLivedIntangibleAssetsMajorClassNameDomain_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:to="loc_us-gaap_CustomerRelationshipsMember_f326d481-1945-4976-8d5b-7f69d0ab737c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NoncompeteAgreementsMember_2fadeade-f155-425f-9a92-6bbfcde98b2f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:to="loc_us-gaap_NoncompeteAgreementsMember_2fadeade-f155-425f-9a92-6bbfcde98b2f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TrademarksMember_cc75a146-9ad7-4d61-9407-e8a5497f1afc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_181411f3-bb6e-448e-b307-b52612f73e1a" xlink:to="loc_us-gaap_TrademarksMember_cc75a146-9ad7-4d61-9407-e8a5497f1afc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessAcquisitionLineItems"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable_76c0e6a4-4db1-4b14-92cb-9ec0b806795f" xlink:to="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents_6c44eb18-096e-4d41-9e99-6bd473a23012" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents_6c44eb18-096e-4d41-9e99-6bd473a23012" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities_dafc8a32-fcf0-41f8-a7cc-674eb04589e5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities_dafc8a32-fcf0-41f8-a7cc-674eb04589e5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables_d1ce0456-4fb8-4ca9-be3a-429a93fd4d91" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables_d1ce0456-4fb8-4ca9-be3a-429a93fd4d91" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory_5866e693-d192-4640-a5a1-39f0b4fe45cf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory_5866e693-d192-4640-a5a1-39f0b4fe45cf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets_79f591b9-09b8-4edd-9822-d8e2901f28ca" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets_79f591b9-09b8-4edd-9822-d8e2901f28ca" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment_00a4c294-745c-4cbb-b1ad-21438a957572" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment_00a4c294-745c-4cbb-b1ad-21438a957572" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset_bd196dc9-6121-42ef-847b-f9d2aa8d9895" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset_bd196dc9-6121-42ef-847b-f9d2aa8d9895" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets_4060ad26-48e1-4db5-b494-0d47281ea24b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets_4060ad26-48e1-4db5-b494-0d47281ea24b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets_e8b5b60f-dc5c-48e9-9248-f0d6029edc5b" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets_e8b5b60f-dc5c-48e9-9248-f0d6029edc5b" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable_d73d99f4-2fe6-4bc2-80ef-d790fbc24908" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable_d73d99f4-2fe6-4bc2-80ef-d790fbc24908" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities_7dcc618f-bd2a-4dd9-bff7-2330aeb16a1a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities"/>
    <link:presentationArc order="11" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities_7dcc618f-bd2a-4dd9-bff7-2330aeb16a1a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits_733d8ed8-af2b-48f6-9d73-3b9be0dcd2d6" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits"/>
    <link:presentationArc order="12" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits_733d8ed8-af2b-48f6-9d73-3b9be0dcd2d6" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent_c6f42f5c-3d51-49cb-a391-54813e9d7723" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent"/>
    <link:presentationArc order="13" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent_c6f42f5c-3d51-49cb-a391-54813e9d7723" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent_1da37211-822d-41f2-8942-02a47fe3870d" xlink:href="cgnx-20201231.xsd#cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent"/>
    <link:presentationArc order="14" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent_1da37211-822d-41f2-8942-02a47fe3870d" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue_02176b54-3153-4a40-95e8-b6b677eb7ed0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue"/>
    <link:presentationArc order="15" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue_02176b54-3153-4a40-95e8-b6b677eb7ed0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther_52e475af-023b-49b6-97e7-38e3a8f1f448" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther"/>
    <link:presentationArc order="16" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther_52e475af-023b-49b6-97e7-38e3a8f1f448" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_7653ab5c-6a3b-43db-a0dc-14a73e17c352" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill"/>
    <link:presentationArc order="17" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill_7653ab5c-6a3b-43db-a0dc-14a73e17c352" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_Goodwill_e75430a6-17b6-461d-adfd-127ad755e296" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_Goodwill"/>
    <link:presentationArc order="18" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_Goodwill_e75430a6-17b6-461d-adfd-127ad755e296" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_27ac72a0-1ec4-4f6d-aead-c038af7a8891" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet"/>
    <link:presentationArc order="19" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_BusinessAcquisitionLineItems_4ae60eaf-e04d-42e2-9cf1-506357bef836" xlink:to="loc_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet_27ac72a0-1ec4-4f6d-aead-c038af7a8891" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/totalLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/RestructuringCharges" xlink:type="simple" xlink:href="cgnx-20201231.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_a9e9f3f5-7a4b-47fd-858f-a925d1959c72" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock_ea8edbbc-a81b-4da0-8452-4364272821c5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_a9e9f3f5-7a4b-47fd-858f-a925d1959c72" xlink:to="loc_us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock_ea8edbbc-a81b-4da0-8452-4364272821c5" 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-20201231.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_27f4bb59-9af6-4eb6-8a1a-f9a48b4256db" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock_d4bfe7e9-7266-490b-a7e8-aa58656a165e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_27f4bb59-9af6-4eb6-8a1a-f9a48b4256db" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock_d4bfe7e9-7266-490b-a7e8-aa58656a165e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock_25bb049b-beb3-44fa-9802-180d96c0ae0d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_27f4bb59-9af6-4eb6-8a1a-f9a48b4256db" xlink:to="loc_us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock_25bb049b-beb3-44fa-9802-180d96c0ae0d" 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-20201231.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_0882dbd8-a710-4d01-97d9-4a2bb5d8fe4e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent_36352cf5-46f0-4331-b23f-1575c7992d55" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0882dbd8-a710-4d01-97d9-4a2bb5d8fe4e" xlink:to="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent_36352cf5-46f0-4331-b23f-1575c7992d55" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_4a44bf18-38f4-46b6-8ec5-90359bab5986" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0882dbd8-a710-4d01-97d9-4a2bb5d8fe4e" xlink:to="loc_us-gaap_RestructuringCharges_4a44bf18-38f4-46b6-8ec5-90359bab5986" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated_3349645c-827d-4253-b78f-407ec51e00f8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0882dbd8-a710-4d01-97d9-4a2bb5d8fe4e" xlink:to="loc_us-gaap_RestructuringAndRelatedCostNumberOfPositionsEliminated_3349645c-827d-4253-b78f-407ec51e00f8" 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-20201231.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_8a7d1a2f-b305-4f37-b367-ede75454e99d" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_7e7aa338-e3e7-47ff-a356-91dbdd12fa69" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8a7d1a2f-b305-4f37-b367-ede75454e99d" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_7e7aa338-e3e7-47ff-a356-91dbdd12fa69" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_54f1398e-4833-4ecd-9a09-421c68905945" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7e7aa338-e3e7-47ff-a356-91dbdd12fa69" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_54f1398e-4833-4ecd-9a09-421c68905945" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_01444fac-4832-4b5b-9042-ea0fbf0b3dff" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_54f1398e-4833-4ecd-9a09-421c68905945" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_01444fac-4832-4b5b-9042-ea0fbf0b3dff" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OneTimeTerminationBenefitsMember_70327874-e5de-417b-832c-eabdc96e1084" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_01444fac-4832-4b5b-9042-ea0fbf0b3dff" xlink:to="loc_us-gaap_OneTimeTerminationBenefitsMember_70327874-e5de-417b-832c-eabdc96e1084" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_4538f70a-277a-451b-b3e4-fefb8291c570" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_01444fac-4832-4b5b-9042-ea0fbf0b3dff" xlink:to="loc_us-gaap_ContractTerminationMember_4538f70a-277a-451b-b3e4-fefb8291c570" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherRestructuringMember_b328dc99-1b10-4ac8-9720-41410303617e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_01444fac-4832-4b5b-9042-ea0fbf0b3dff" xlink:to="loc_us-gaap_OtherRestructuringMember_b328dc99-1b10-4ac8-9720-41410303617e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems_377dc22d-9985-43ef-8db8-597c3fbbe2f1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7e7aa338-e3e7-47ff-a356-91dbdd12fa69" xlink:to="loc_us-gaap_RestructuringCostAndReserveLineItems_377dc22d-9985-43ef-8db8-597c3fbbe2f1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_01ddac2d-2091-4d83-bb7d-da402e0dc441" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_377dc22d-9985-43ef-8db8-597c3fbbe2f1" xlink:to="loc_us-gaap_RestructuringCharges_01ddac2d-2091-4d83-bb7d-da402e0dc441" 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-20201231.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_9e5508a4-c0a3-4a24-94ff-4502020bb514" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringAndRelatedActivitiesAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2d7eb67d-b233-43ba-a476-296a9d94fede" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_9e5508a4-c0a3-4a24-94ff-4502020bb514" xlink:to="loc_us-gaap_ScheduleOfRestructuringAndRelatedCostsTable_2d7eb67d-b233-43ba-a476-296a9d94fede" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationAxis_8945398f-3fdc-464b-9f12-9ee237262ae4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2d7eb67d-b233-43ba-a476-296a9d94fede" xlink:to="loc_us-gaap_BalanceSheetLocationAxis_8945398f-3fdc-464b-9f12-9ee237262ae4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_BalanceSheetLocationDomain_7f8fcbcb-014b-48fb-be3c-2a27df21e286" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8945398f-3fdc-464b-9f12-9ee237262ae4" xlink:to="loc_us-gaap_BalanceSheetLocationDomain_7f8fcbcb-014b-48fb-be3c-2a27df21e286" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AccruedLiabilitiesMember_31ad2fc4-3a5a-46ce-b209-8a65a69c891a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_7f8fcbcb-014b-48fb-be3c-2a27df21e286" xlink:to="loc_us-gaap_AccruedLiabilitiesMember_31ad2fc4-3a5a-46ce-b209-8a65a69c891a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveAxis_16185754-7718-4e92-9dc9-6fd7b460e9e1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2d7eb67d-b233-43ba-a476-296a9d94fede" xlink:to="loc_us-gaap_RestructuringCostAndReserveAxis_16185754-7718-4e92-9dc9-6fd7b460e9e1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_TypeOfRestructuringDomain_b9f56bc6-e20a-40b9-9558-8dac1bcafc0f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_16185754-7718-4e92-9dc9-6fd7b460e9e1" xlink:to="loc_us-gaap_TypeOfRestructuringDomain_b9f56bc6-e20a-40b9-9558-8dac1bcafc0f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OneTimeTerminationBenefitsMember_af255f1d-329d-4fae-9bd0-ac78d9a027d8" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b9f56bc6-e20a-40b9-9558-8dac1bcafc0f" xlink:to="loc_us-gaap_OneTimeTerminationBenefitsMember_af255f1d-329d-4fae-9bd0-ac78d9a027d8" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ContractTerminationMember_170b7589-b299-40f3-ab58-fcb77caeef2c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b9f56bc6-e20a-40b9-9558-8dac1bcafc0f" xlink:to="loc_us-gaap_ContractTerminationMember_170b7589-b299-40f3-ab58-fcb77caeef2c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OtherRestructuringMember_6459f7b6-ed9b-4614-9de4-4b0d5fc47f89" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_b9f56bc6-e20a-40b9-9558-8dac1bcafc0f" xlink:to="loc_us-gaap_OtherRestructuringMember_6459f7b6-ed9b-4614-9de4-4b0d5fc47f89" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCostAndReserveLineItems_65cb653e-91f3-48f7-b94a-2eaf57e77d6c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_2d7eb67d-b233-43ba-a476-296a9d94fede" xlink:to="loc_us-gaap_RestructuringCostAndReserveLineItems_65cb653e-91f3-48f7-b94a-2eaf57e77d6c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveRollForward_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_65cb653e-91f3-48f7-b94a-2eaf57e77d6c" xlink:to="loc_us-gaap_RestructuringReserveRollForward_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve_d2745121-ce9e-418a-b7fe-11f79c56ceb4" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_RestructuringReserve_d2745121-ce9e-418a-b7fe-11f79c56ceb4" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_d33a5b08-4bdf-4551-9696-2c77411ae925" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_RestructuringCharges_d33a5b08-4bdf-4551-9696-2c77411ae925" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_PaymentsForRestructuring_359f50ab-38ea-4718-9735-2d0655350e04" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_PaymentsForRestructuring_359f50ab-38ea-4718-9735-2d0655350e04" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveSettledWithoutCash2_686a9b82-c68e-462b-a8bd-c6749e6a8a35" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_RestructuringReserveSettledWithoutCash2_686a9b82-c68e-462b-a8bd-c6749e6a8a35" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedTerseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveAccrualAdjustment1_61b6219b-e0f3-43fc-8a55-d2955b9ffbfc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_RestructuringReserveAccrualAdjustment1_61b6219b-e0f3-43fc-8a55-d2955b9ffbfc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserveTranslationAdjustment_20d3241a-3a1b-4c68-8e59-b2f658bcca2c" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_RestructuringReserveTranslationAdjustment_20d3241a-3a1b-4c68-8e59-b2f658bcca2c" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringReserve_e1c43cba-a09f-4747-b2f9-a39fe0e5ccf7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_5dc54c38-a7a4-49e8-a5f4-3a9fe89cadc4" xlink:to="loc_us-gaap_RestructuringReserve_e1c43cba-a09f-4747-b2f9-a39fe0e5ccf7" 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-20201231.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_8239a29b-6fdb-4327-aa94-34430de2ca39" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventsTextBlock_7defd9d8-0713-450d-81a9-5f75e96675c5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_8239a29b-6fdb-4327-aa94-34430de2ca39" xlink:to="loc_us-gaap_SubsequentEventsTextBlock_7defd9d8-0713-450d-81a9-5f75e96675c5" 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-20201231.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_f68bd71a-70ec-46f0-9533-fd5548e99a18" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_SubsequentEventsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTable_6eaa5e41-edaa-45e0-a7c4-3c8075d77d31" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f68bd71a-70ec-46f0-9533-fd5548e99a18" xlink:to="loc_us-gaap_SubsequentEventTable_6eaa5e41-edaa-45e0-a7c4-3c8075d77d31" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeAxis_300d3c45-bedd-4819-b2e9-2ffd148b0ff7" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6eaa5e41-edaa-45e0-a7c4-3c8075d77d31" xlink:to="loc_us-gaap_SubsequentEventTypeAxis_300d3c45-bedd-4819-b2e9-2ffd148b0ff7" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventTypeDomain_55f46e0d-2d62-4a18-9d34-346bf9399cbf" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_300d3c45-bedd-4819-b2e9-2ffd148b0ff7" xlink:to="loc_us-gaap_SubsequentEventTypeDomain_55f46e0d-2d62-4a18-9d34-346bf9399cbf" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventMember_30421fe3-4833-4c13-beae-0d495836ae23" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_55f46e0d-2d62-4a18-9d34-346bf9399cbf" xlink:to="loc_us-gaap_SubsequentEventMember_30421fe3-4833-4c13-beae-0d495836ae23" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SubsequentEventLineItems_bc36f1f0-c07e-44fe-869a-9d762f78b6a5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_6eaa5e41-edaa-45e0-a7c4-3c8075d77d31" xlink:to="loc_us-gaap_SubsequentEventLineItems_bc36f1f0-c07e-44fe-869a-9d762f78b6a5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableAmountPerShare_8c6a7a0b-5c14-400c-9560-9258e6baf44f" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bc36f1f0-c07e-44fe-869a-9d762f78b6a5" xlink:to="loc_us-gaap_DividendsPayableAmountPerShare_8c6a7a0b-5c14-400c-9560-9258e6baf44f" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear_b0b89930-fb34-40ad-9996-c1d88fd08f27" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bc36f1f0-c07e-44fe-869a-9d762f78b6a5" xlink:to="loc_us-gaap_DividendsPayableDateDeclaredDayMonthAndYear_b0b89930-fb34-40ad-9996-c1d88fd08f27" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear_fd9ab87f-7f82-4123-8e23-37d4d4d7affa" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_bc36f1f0-c07e-44fe-869a-9d762f78b6a5" xlink:to="loc_us-gaap_DividendsPayableDateOfRecordDayMonthAndYear_fd9ab87f-7f82-4123-8e23-37d4d4d7affa" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnaudited" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SelectedQuarterlyFinancialDataUnaudited"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SelectedQuarterlyFinancialDataUnaudited" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_218317a7-6b4f-4ed3-9e54-9ba73b29a890" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_QuarterlyFinancialInformationDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_QuarterlyFinancialInformationTextBlock_a73d34b0-0a29-43a4-a2ec-db9ad5234048" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_QuarterlyFinancialInformationTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_218317a7-6b4f-4ed3-9e54-9ba73b29a890" xlink:to="loc_us-gaap_QuarterlyFinancialInformationTextBlock_a73d34b0-0a29-43a4-a2ec-db9ad5234048" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedTables" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SelectedQuarterlyFinancialDataUnauditedTables"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedTables" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_e89363e8-4701-4a05-831e-38afaa950f23" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_QuarterlyFinancialInformationDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock_b4d06c19-92e1-4ed3-a6eb-b9352775eb63" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_e89363e8-4701-4a05-831e-38afaa950f23" xlink:to="loc_us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock_b4d06c19-92e1-4ed3-a6eb-b9352775eb63" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails" xlink:type="simple" xlink:href="cgnx-20201231.xsd#SelectedQuarterlyFinancialDataUnauditedDetails"/>
  <link:presentationLink xlink:role="http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_0fb3b42f-90c8-49a9-83e5-b0fd5a9e79be" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_QuarterlyFinancialInformationDisclosureAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_aba129c4-59ff-4abb-811b-fb990b1920ac" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_QuarterlyFinancialInformationDisclosureAbstract_0fb3b42f-90c8-49a9-83e5-b0fd5a9e79be" xlink:to="loc_us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax_aba129c4-59ff-4abb-811b-fb990b1920ac" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_GrossProfit_15586215-3882-4c21-ae38-59b0f98edb1e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_GrossProfit"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_0fb3b42f-90c8-49a9-83e5-b0fd5a9e79be" xlink:to="loc_us-gaap_GrossProfit_15586215-3882-4c21-ae38-59b0f98edb1e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_RestructuringCharges_65c4314c-9ff2-4b0b-bd66-8dfb87623079" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_RestructuringCharges"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_0fb3b42f-90c8-49a9-83e5-b0fd5a9e79be" xlink:to="loc_us-gaap_RestructuringCharges_65c4314c-9ff2-4b0b-bd66-8dfb87623079" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_259c1b3a-6aad-4010-b10a-eff6ebafc8dc" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_0fb3b42f-90c8-49a9-83e5-b0fd5a9e79be" xlink:to="loc_us-gaap_ImpairmentOfIntangibleAssetsExcludingGoodwill_259c1b3a-6aad-4010-b10a-eff6ebafc8dc" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_OperatingIncomeLoss_3e2a6855-2bb8-413d-9697-3c02064e3a26" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_OperatingIncomeLoss"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_0fb3b42f-90c8-49a9-83e5-b0fd5a9e79be" xlink:to="loc_us-gaap_OperatingIncomeLoss_3e2a6855-2bb8-413d-9697-3c02064e3a26" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_NetIncomeLoss_22e065fb-d825-4b9d-bbdc-ae13fdbefa5e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_NetIncomeLoss"/>
    <link:presentationArc order="6" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_0fb3b42f-90c8-49a9-83e5-b0fd5a9e79be" xlink:to="loc_us-gaap_NetIncomeLoss_22e065fb-d825-4b9d-bbdc-ae13fdbefa5e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareBasic_817b7985-83d0-4e5c-aa86-166666f43130" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareBasic"/>
    <link:presentationArc order="7" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_0fb3b42f-90c8-49a9-83e5-b0fd5a9e79be" xlink:to="loc_us-gaap_EarningsPerShareBasic_817b7985-83d0-4e5c-aa86-166666f43130" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_EarningsPerShareDiluted_c4eb864a-e67c-4496-9e29-42575fcd55fb" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_EarningsPerShareDiluted"/>
    <link:presentationArc order="8" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_0fb3b42f-90c8-49a9-83e5-b0fd5a9e79be" xlink:to="loc_us-gaap_EarningsPerShareDiluted_c4eb864a-e67c-4496-9e29-42575fcd55fb" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_b7fbd829-007c-467e-9aec-7aada9c334b0" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_StockholdersEquityNoteStockSplitConversionRatio1"/>
    <link:presentationArc order="9" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_0fb3b42f-90c8-49a9-83e5-b0fd5a9e79be" xlink:to="loc_us-gaap_StockholdersEquityNoteStockSplitConversionRatio1_b7fbd829-007c-467e-9aec-7aada9c334b0" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_60b8c708-7c34-47c8-9525-8184f709ab1e" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount"/>
    <link:presentationArc order="10" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_QuarterlyFinancialInformationDisclosureAbstract_0fb3b42f-90c8-49a9-83e5-b0fd5a9e79be" xlink:to="loc_us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount_60b8c708-7c34-47c8-9525-8184f709ab1e" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/verboseLabel"/>
  </link:presentationLink>
  <link:roleRef roleURI="http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts" xlink:type="simple" xlink:href="cgnx-20201231.xsd#ScheduleIIValuationandQualifyingAccounts"/>
  <link:presentationLink xlink:role="http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsAbstract_199a9d6a-4ca6-409c-838d-8c1f6280ceb6" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ValuationAndQualifyingAccountsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock_f8a3e1e6-44a7-47c0-8a62-b2b8138ec84d" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ValuationAndQualifyingAccountsAbstract_199a9d6a-4ca6-409c-838d-8c1f6280ceb6" xlink:to="loc_srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock_f8a3e1e6-44a7-47c0-8a62-b2b8138ec84d" 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-20201231.xsd#ScheduleIIValuationandQualifyingAccountsDetail"/>
  <link:presentationLink xlink:role="http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail" xlink:type="extended">
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsAbstract_0d9e61b6-9742-4aa0-beb5-eeb3da6d2de9" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ValuationAndQualifyingAccountsAbstract"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_4bf231c6-7241-4907-b31b-d0e5cc5b16af" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ValuationAndQualifyingAccountsDisclosureTable"/>
    <link:presentationArc order="1" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ValuationAndQualifyingAccountsAbstract_0d9e61b6-9742-4aa0-beb5-eeb3da6d2de9" xlink:to="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_4bf231c6-7241-4907-b31b-d0e5cc5b16af" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_35150f10-278a-404d-98f9-bd2334930da1" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_4bf231c6-7241-4907-b31b-d0e5cc5b16af" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesTypeAxis_35150f10-278a-404d-98f9-bd2334930da1" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDomain_0b5e9ba1-2c35-41d8-a353-17776a881251" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_35150f10-278a-404d-98f9-bd2334930da1" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDomain_0b5e9ba1-2c35-41d8-a353-17776a881251" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_UncollectibleReceivablesMember_c3e23a6e-bb09-4344-8ae4-3fa4dbc6ba18" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0b5e9ba1-2c35-41d8-a353-17776a881251" xlink:to="loc_us-gaap_UncollectibleReceivablesMember_c3e23a6e-bb09-4344-8ae4-3fa4dbc6ba18" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_SalesReturnsAndAllowancesMember_5fda0722-e6ab-49ef-9d32-bf6a1101dd6a" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0b5e9ba1-2c35-41d8-a353-17776a881251" xlink:to="loc_us-gaap_SalesReturnsAndAllowancesMember_5fda0722-e6ab-49ef-9d32-bf6a1101dd6a" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember_b7656076-063d-49e1-ac68-04f2afc75e84" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_0b5e9ba1-2c35-41d8-a353-17776a881251" xlink:to="loc_us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember_b7656076-063d-49e1-ac68-04f2afc75e84" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_f79dddaf-4bb3-4f88-b175-9e68989e7a50" xlink:href="http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd#srt_ValuationAndQualifyingAccountsDisclosureLineItems"/>
    <link:presentationArc order="2" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_srt_ValuationAndQualifyingAccountsDisclosureTable_4bf231c6-7241-4907-b31b-d0e5cc5b16af" xlink:to="loc_srt_ValuationAndQualifyingAccountsDisclosureLineItems_f79dddaf-4bb3-4f88-b175-9e68989e7a50" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f79dddaf-4bb3-4f88-b175-9e68989e7a50" xlink:to="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_f8b82d5a-363d-4eea-b323-3bafa798f8de" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesBalance_f8b82d5a-363d-4eea-b323-3bafa798f8de" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodStartLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_4bbd90ea-33de-43be-b881-6b9a533ff214" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-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_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense_4bbd90ea-33de-43be-b881-6b9a533ff214" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesDeductions_98e5e2bb-102e-48d9-9ec2-c2003d1baba5" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowancesAndReservesDeductions"/>
    <link:presentationArc order="3" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesDeductions_98e5e2bb-102e-48d9-9ec2-c2003d1baba5" xlink:type="arc" preferredLabel="http://www.xbrl.org/2009/role/negatedLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesAdjustments_594e33e5-0c60-444c-8357-64af480e9c75" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowancesAndReservesAdjustments"/>
    <link:presentationArc order="4" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesAdjustments_594e33e5-0c60-444c-8357-64af480e9c75" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/terseLabel"/>
    <link:loc xlink:type="locator" xlink:label="loc_us-gaap_ValuationAllowancesAndReservesBalance_c7a67388-2d05-4c84-a363-74b25d404972" xlink:href="http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd#us-gaap_ValuationAllowancesAndReservesBalance"/>
    <link:presentationArc order="5" xlink:arcrole="http://www.xbrl.org/2003/arcrole/parent-child" xlink:from="loc_us-gaap_MovementInValuationAllowancesAndReservesRollForward_f95342dd-debe-482f-854d-c69b8bb9a499" xlink:to="loc_us-gaap_ValuationAllowancesAndReservesBalance_c7a67388-2d05-4c84-a363-74b25d404972" xlink:type="arc" preferredLabel="http://www.xbrl.org/2003/role/periodEndLabel"/>
  </link:presentationLink>
</link:linkbase>
</XBRL>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>GRAPHIC
<SEQUENCE>13
<FILENAME>cgnx-20201231_g1.jpg
<TEXT>
begin 644 cgnx-20201231_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 **** "BN0^/7QZ^$/[,'P?U_P"/?QY\=V/AKPEX
M9L&O-9UG4),1PQ@@  #+.[,51(U!=W954%F /X9>-O\ @Y&_X*;_ /!5']JJ
M']CG_@BC\$['PE;WLDAA\8^)["&]U&.R0@/J-SYPDM-/MU##*LD[DE%5B[K&
M0#]_**_.#X4_\$L/^"TVBZ''XI^('_!P%XF3Q?*@DFM;'X1Z7?Z/;R<Y0173
M+YZ9/WMD)(_A&!7RW_P5G_X*]?\ !<+_ ()3_!K5O@=^TC\)/A_XAD\:Z=<:
M7\/_ -H_P#]JL8H)F0AFFLGWI%J*1DNB9CC!7<@F6-Z /W#HH)"@LQ  ')-?
MB?\ \%-_^#K#6]!^/:?L3_\ !)#X8:9\1?&EWKD>@KXWU.)[FQN-3DE$*VVF
MVT;I]K;S&"BX=Q$6'RI*A#D _;"BO@?X(?L%_P#!9KQ-\,X/$7[4?_!:CQ!H
MWC;4;<376B?#_P"%/ADZ5H\C+_Q[K)<61DN@AX+_ +K=@CG[Q^+OVIO^"T7_
M  5W_P""$W[5^C?!C_@HW!X8^/\ \,?$]NUUX;^(&C>'HM U2_MHW5)MBVX%
MLES"74R6[QL"'B(F4/NH _<FBO,/V//VP_@!^W?^S_H?[2W[-7C>+7/#&NQ'
M8Y79<65PN/-M;F+),,\9.&0^S LK*Q^&?^"Z'Q*_X*K_ +$7PO\ #?QR_8A_
M;.N]6N/%OQ1L?"T/@'Q)\/\ 0K@1RZF\JVB6EPMJCX258X=LWF,PD#&3*G<
M?IK17\O'[$O_  =B_P#!2>P_:\\ 6G[9'Q@T35?AG<>)X++QS9)X,T^SDAL9
MF\F2X$D,*R*8-XGP"-WD[3P2*_J%AFBN(EG@E5T=0R.C9# \@@CJ* '45\Y?
M\%7/VQ?$'[#W[#WBWXP_#FQ6_P#'FH&W\._#+2!"LKZAXCU&5;6PC6-N)=LD
MGG,A^\D+BOYO=4_X.GO^"Y&E>);CPG/^T3X=>\MKY[1TC^'ND$&57*$ FWZ9
M'6@#^L^BO%/@I\ OVK/"_P *[K0OC=^W9XB\5>+=3T:&&77M/\&:%86^E7@Y
MDGLH%LFR"<J%N3,-H' /-?B=_P %P/\ @L+_ ,%F?^"37[;TG[,_A']M73/%
M.@ZCX5LO$&A:EJGPRT6*[2WGDGA,4WEV^QG66VE^90H*E3M% ']#E%?C+_P3
MY^*?_!Q)_P %#?\ @GSI7[<WP/\ ^"B'PW.LZK<ZG%9?#OQ-\(K&WAG:TNI;
M?;_:$()#2>7E<Q*H+ ,P&6KQG]AG_@[_ /CEX,_:!'[.O_!5KX&:#I-I:ZY)
MHNN>+_"=E/:7?A^[CE,,C7MF\DJS)'(&$GDF-D"DA)"-I /Z **AT[4=/UC3
MX-6TF^ANK6ZA6:VN;>0/'+&P#*ZL.&4@@@C@@U-0 45^6>H?\%[])MO^#B>V
M_P"";J>(;0_#3^P?^$/FNPJ8_P"$V=A<J_F?>P"!IWE_\]V8]J_4R@ HK$^(
MWAGQ+XQ\%WWAOP?\1M2\):E=(@M?$.D6=I<7%F0ZL2D=W#-"VX H=\;<,2,-
MAA_/'_P63_X+6?\ !:#_ ()<?MW^(OV3_#?[:&D>*-'L]-L=3T75[_X8Z-#<
MM;7,(<1S*D!7>C!TW+@,%#;5W;0 ?T;T5^3?_!,C4O\ @N/_ ,%'OV!_!/[;
MVC?\%;O"OA>Z\8#4V@\'WO[.FEW<,#6>J7=CM>\2YC8J_P!EWDB$%?,V\[=Q
M^6OVG/\ @X:_X+7?\$?_ -L!_P!FG_@H+\+?A=\1;".WAU&VU'1-.GTUM;TN
M1V5+JSN8V"1DM'(C++;L5>-EQ@!B ?T$T5X]^P;^W#\#O^"B?[+_ (<_:L_9
M^U.>70]?B9)["^54N]+O(SMGL[A%)"RQMP<$JRE74LCJQ^$O^#A;]HO_ (*6
M?\$ROV<+;]L']EW]N*YN-+N_'4>E:GX/\3_#W0[E+*&Z2XDA:VN$M$?9$8EB
MVR^8[!PQDRIW@'ZG45_/?_P0I_X*[?\ !8[_ (*X?MKW/[./CK]MG3_"N@:'
MX+O/$VMWVD?#/19+R>"&YM+400F2W*([27D9WLK *C?*3BOV>_:X_:S^'_\
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
M@O-:CU2_M=-AM$D6WU:[MH@(H55%Q%$@X R1D\DT ?85%%?,7_!8G]O/3O\
M@F__ ,$]/B#^TS'>PIXAMM,.E^![>8 _:-;NLQ6ORG[XC8M.Z]X[>2@#Z=HK
MY0_X(F_M^1?\%(_^"<G@']HC5M3BN/%<%F=#\?(@4&/6[,+'.[*O"><IBN54
M=$N4':OJ^@ HKX>_X+5>(OV[/V:/V1OB/^VE^R-^V=>^')_!.D1:F? ^K>!M
M'U'3IK>-HHYUCFDMOM,;D%Y=SR2KN!4*JD%?R"_X)<?\%V?^"VO_  4H_;L\
M#?L4_P##;WA_P7_PFG]I_P#%3?\ "H-)U'[']CTN[O\ _CWQ!YF_[+Y?^L7;
MOW<[=I /Z7J*_*C_ (* P?\ !QQ^P+\ M>_:<^%?[<_PV^.&A^#["34_$^B:
MC\&+?1+^*QC7=-/%';S2+,D2AG<>:C;%8@,1MKC/^"(?_!TS8_M^?&G2_P!D
M/]LOX9Z)X-\>^(-T?A+Q)X9DE32=9N54M]C>&=Y'M9V524/F.DC90;&**X!^
MQ5%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
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
MQ#1R*KH205!K\0O^"B'_  9@S>%O!FH_$?\ X)M?&_5==OK&!YQ\._B ]O\
M:+T 9,=K?Q)%&).RQS1JIR-TRXR?GO\ X-+OVKOC1^S+_P %5#^Q#XC;4K+0
M?B9:ZKIOB+POJ2/'_9VLZ;:7%W'.T38,4ZBUGMF& 2)<,"47: ?U(T444 ?S
MR_\ !Y#_ ,$P/^$;\6:'_P %1/A+X>Q9:V\'A_XIQVT/$5XJ;+#47QVDC7[,
M[' #16PY:0U;_P"#-O\ X*>_V3KFO?\ !+GXL^(0+?46N/$/PJ>YD^Y<!=^H
M:<F?[Z+]J11@ QW1.2X%?NI^T_\ LY_#+]KG]GOQA^S1\8](%[X:\:Z%/IFJ
M1 #?&LB_)-&3]V6-PDJ-_"\:L.E?Q5_$7PS\</\ @EQ^W]JWACPWXNCMO'7P
M4^(TD>G:Y8\Q2W-C<YBF"YYCD"JQC;JCE&'44 ?U&?\ !2?5M4_X*+?M=>%?
M^"-_PYU&X'@^TBM/&G[46K6,Q3[-H$<JR6&@>8I^6;4)U5G4%76! XW*S"OO
MO2-(TK0-*M="T+38+.QLK=+>SL[6(1Q01(H5(T50 JJH  '   KY _X(>_ 6
M3P1^Q1H_[5OC_7U\0?$S]I"WM?B9\1_$[1;6N+C4[=+FULXP<F.WM+:6.".(
M':I$A4 /BOL>@#\ ?^#YS_FUW_N=O_<!78?\&/O_ "0'X^_]CAHO_I+<5Q__
M  ?.?\VN_P#<[?\ N KPO_@VJ_X)?Z;_ ,%(OV5/COX;O_VQ/C1\,/LVLZ?8
MBQ^''C-K+2M2\ZUG.[4;':5OE7;@*60[68;AG- '[D_\$Y?VT[+]M'XS?M+:
MKX/\:+K7@_P-\88O"OA.>"59( EKHVGB[:)EX9&O3=,K D,I!!P:];_9(_9;
M\$?L=_".X^"_PYNG?16\7Z_KEC;F!8ULUU35KK43:HJ\>7";HQ(>I6-2>:_/
M_P#X-:OV3_B/^PS\+OVC_P!DSXLF%]=\$?'N6PN;JV4B*\B.D6$L%U&&Y"30
M212J#R%D&>:_4Z@ K^?[_@Z]\2_'W]MW5O&/@#X"VAO?AA^R18:5JGQ5GAD8
M^?K^M.(X8T4 B4VEH5=R#F(7<V[%?M?^VU^U7X$_8?\ V3?'W[5_Q'=3I?@C
MPY/J'V9I-AO;D#9;6BD]'FG>*%?]J05\2?\ !,VZ_8(\+_\ !-74_A;^U]^V
M-\']4\:?M 0ZMXH^.ZW/Q&TI)+K4]=1FN;9@9SL,$#Q6P R%: E>M 'Y>_\
M!G3_ ,% /^%%?MF:_P#L/^.-;\KP[\7[#[3X>6>3"0:_91NZJN>%\^V\Y">K
M/!;J,G%?TWU_"]\0-,\9?L#?MLZA:_"KXG:;J>L_"KX@^?X6\8^'[Z.YM;U[
M*Z$EI>PR1,R.D@2.3 )X;:><BO[3/V'OVK?!'[<7[)'P_P#VL/AZ473O&_AN
M#4&M4DW&RN<%+FU8]VAN$EA8^L9H \E_X+I?\H?OVB?^R7ZC_P"@"OYL?^#7
M'_E.O\#/^YF_]1C5J_I._P""Z7_*'[]HG_LE^H_^@"OY>?\ @@!\./BE\6O^
M"N'PE^'WP6^/6H?#'Q-J']O?V;XXTK1+749]-\O0-1EDVV]VK0R>9&CPG>#M
M$I8?,H- ']='[:7Q"^'_ ,)_V0?BA\1_BI?6]OX=T?P#JUQK#W3@(\(M),Q\
M]6?.Q5&2S,  20*_C._X)6?#7XE?%K_@I/\  KP3\([*YFUZ3XJ:)=VTEH#N
MM8[:]BN9KDD<JD,,4DK-V6,GM7T)_P %U_CG_P %@?AW^T9XD_86_P""A/[6
M'BKQ=HNDWJ7VB1I##IVD^(=/9BUIJ MK2..*7(7HP<Q2I(F=R$U^SW_!JS\$
M?^"7>H?L=6?[37[(7PU:W^*9M5T/XIZCXDU3[=J^GWRJK20QL55(+2;"S1^4
MB!UPKEGA8* ?JY1110 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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
MG^ >JI"K, 7;^VM$;:/4[58X] 3VK]1_^#I[]I7QS^QS^R=\!OVH_AN%?6?
MO[4N@:M:VTCE8[I8M'ULR6[D<B.6/?$V.=LC8KUSX6?\&YO_  1\^!GCJQ^)
M_P %OV8M>\(^)-,9FT_7_#7QC\6V-Y;%E*MLFAU577*DJ0#R"0>#7MW[0O\
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
M<KC5].U7PSX<NI?B7\<-%F*2Q7\=A"9-+T6>,Y659)76>>!Q@PF%L'-?5?\
MPZ=_X)9?](T_V?\ _P ,WH?_ ,BUY/H7_!O!_P $D/"_Q3'QR\,_L[^*-.\;
M"]DO!XQL?C9XPAU7[3)N\R;[6FK";S&W-N?=D[CD\U]A>!_!ND?#WPE8>"M
MO-5N+/3;<0V\VN:]=ZI=NH).9;J\EEGG;G[\DC-[T ?SL_\ !WQ_P2J^"7[,
MEK\,_P!LS]EGX*^%O OAG4YG\(^+=!\':!;:99+?;9;NRNA!;(B>9)&MVCO@
M<6\(.2:[[_@S"_X**V$-OXS_ .":'Q(\1I'-)/)XJ^&L=S-S+E0NHV4>>X"1
M7*H.H-T_8FOUC_:O_P""/W[ _P"W)J#7O[67P[\8^-X!J;:A;Z1JWQC\5#3;
M.Y92IDM[&/4UMK8[690(HT #$  '%>7>"O\ @VI_X(M_#7Q;I_C[X=?LD:GH
M&NZ3=+<Z5K6B_%SQ7:W=G,IRLL4T6J*\;@]&4@B@#L_^"\^K66B_\$=?VAKR
M_E"1O\.+N!26 ^>5DB0<D=6=1Z\\9/%?S:?\&P&H6.F?\%T?@7<ZA=)#&TWB
M*)7<X!>3PWJD:+]2[*H]R*_IX_:9_P""4_[%G[8^A_\ ")_M->&O'OB[1##:
M(_A_4?C9XL739#;1I'#(]G%J:P/*!&K&5D,CR%I'9G=F/C7A?_@V;_X(G^!_
M$=CXQ\%?L>W^CZOIETESINJZ7\6/%5O<VDZ'<DL4L>J!HW4@$,I!!&0: ,__
M (.%/^"/ND?\%4?V1Y;_ .'>CVT?Q?\ A_!/J'@"_.U&U%-NZ?29'.!LG"C8
M6("3+&<JK2;OYRO^"-O_  4[^*7_  1\_;@M_B#JVG:I_P (GJ%R-#^+'@Z2
M-HY9K-92KN(GQMN[5]SQAMIR)(B565Z_L3^%OPO\-?!_P?#X'\)ZGXBN[*"1
MW2?Q3XOU+7+PESDAKO4KB>X<9Z*TA"C@ #BOE7]H3_@WQ_X(^_M3_&77_P!H
M'XX?L;VFJ>+?%%Y]KU[4[+QCK>G)=W&T*TI@L[V*%7;;N9E0%V+.V69F(!]7
M_##XG> /C3\.M#^+?PJ\5V>N^&_$FEPZCH>L:?+OAO+65 \<BGT*D<'!'0@$
M$5NUXM^QK_P3W_93_P""?_A>Z\"_LF^#->\-:#='<= N_B#K>JV$#%BS/!;:
MA>3Q6SLQ)9HE1GXW$X%>TT %%%% !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 %?$7_  5 _P""
M_?[ W_!+2]?P!\4/%%]XN^(9MUEC^'W@U(Y[RW5EW(]Y([+%9JP*D!V\TJP9
M8W7FK7_!>O\ X*9W/_!+C_@G]KGQA\%2P'Q[XFO$\._#V*=%=8M0GC=FNV0Y
MW+;PQRRX(*LZQ(W#U_/G_P &XO[%%E_P4_\ ^"KJ>*OVE_/\6Z%X1LKOQSXV
M.NR-<?V[>BXC2"*Y9\^;YEU<+,ZOD2)#(K9#&@#]COV:_P#@L'_P6V_;@T"W
M^,/[,O\ P12TK3OA]?+YNE:MX_\ BJFGR:E"02DD'G00NZN,$2)"\?HYZUW_
M (M_X. M/_8^U.T\,?\ !6G]A7XD_L^76H%ETOQ):/#XK\-W[JI8QQ:AIXW&
M4@;O*\K<HY;%?HA%%%!$L,,:HB*%1%& H'0 =A7GW[5W[+GP;_;0_9]\4?LT
M?'OPK#J_ACQ5ICVE[#(@\RW<C,=S"Q!\N:)]LB..590: /)OV)?V\OB'^WG_
M ,$_M!_;:^ GP5TR]O/%6M:XN@>%M>\3/I:OIUGKE]80/+<+;W.R=K>UCD9
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
M8>%=8^->M>)? ]E9RJR6VDWL%FT4 4?<$3I+"%/.V)3SD&@#Z<KY,_X+(?\
M!530/^"0?[,>A?M*>(_@Q>>.8-<\>6OAE-)LM;2P>%YK*]NA.9&BD! %D5V[
M1GS <\8/UG7@'[>7[#V@?MR7_P %-'\;Q:;<^&_AM\;+'QUX@TO459AJ,=EI
M6J0V\"(%*R9O;JT=T?"-%'*"2<*P!\K^&/\ @M;_ ,%'/%GP4G_:'L/^""/Q
M%M/"-MHLNKS:EK?Q5TK39%L8XC,T_P!GNX8YROEJ6&(\L,8SD5\S?"S_ (//
MM$^-?Q.\.?!KX8?\$S_$6J^)?%NO6>B^'M+3XG6D1O+ZZF2""$/)9JB%Y)$7
M<[*HSDD#)K]<?VW?^3+_ (O?]DOU_P#]-T]?QH_\$G?^4IO[-/\ V<!X-_\
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
MI]I>FYBMK@H#)$DQ1#*JME0Y1-P .U<X'Q3I%I;0?\')FO3PP*KS?L1Z8\K
M<LW_  E]ZN3^"J/P%7/^"[_[)G_!0C]L+]CFR^'?_!.;X[7'@OQ;8^*K?4-7
MM[/Q%-H\VM6"12J;9+R'#1D2O%)L8JC^7\S JH(!P/\ P77_ ."\EU_P1O\
M$GPP\+:/^S>WCJX\=->7FH3W>M-806UE:O"CQPN(I/,G8S \C:@"DAMXQ^@G
MA#Q):^,O">E^+[*SN;:'5=.@O(;>\B\N:)98U<*Z_P +@-@CL017\_7[0T7[
M;WA7X2_!?]E__@LU\(/"7Q:\6?"'Q_9>/M.UW2?B#;WVM0^$;0@:B/$""-S'
MIQ+6ZRW[DEQ&@*3-&SGW'PM^R5_P<@_M??\ !2WP!^VCX_\ VD_#G@#X16GB
M2RU2TT#P#\46OM#3P^DJ2/:);6X\O4Y+B$%6GE7;(9,[D1410#]I:*** "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 _G^_X/DM:\1I
M<_LU^'=TB:1(GBNYP&.V6Y4Z2O(Z91&X_P"NK5S'_!CTVE#XW_M K-L^W'PK
MH1M\_>\K[3=^9CVW>5G\*_0/_@Z%_P"";?B__@H!_P $\V\4?![P]+JGCWX2
MZF_B+0],M8M\^I6)B,=_:1*.6D,8CF51EG:U5 "7%?B=_P &K_[;GA']C3_@
MJ;IGA_XGZY%IGASXJ:!/X/NKV[D"0VE]+-#/92.3TW3P"WR>%^U$G !( /ZU
MJ**Q?B+\1? ?PB\"ZM\3OBCXPT[P_P"'="L9+W6=:U>[6"VL[=!EY))'("J!
MW- &U7\<7_!R%_RFU^/G_8P:?_Z:;*OZZ?V=?CW\/_VH_@?X9_:&^%,UW+X9
M\7Z6FHZ%<7UJ8)9[5R?+E,9Y0.H#@'!PPR <@?RB?\'3?PG\0?#'_@M=\4M6
MU;39(++Q?8Z+KNB3.I N+=]+MK>1USU N;:Y3CC,9Z=  ?T8?\$"/^4-O[/?
M_9/X?_1TM?7]?%?_  ;M>,_#WC?_ ((O_ 6_\.ZC%<)9>%)=.NO+<$Q7%M>7
M$,J,!T(9#P>Q![BOHC]LW]H/P9^RE^R?\1/VB_'^MPZ?IGA#PC?:C)//*$WR
MI"WDPKZR22F.-%'+/(JCDB@#Y<_X-E_^4'/P(_[!^M_^G_4:T?\ @JE_R>G^
MPY_V<!>_^H_J%='_ ,$%/@[XB^!'_!'OX!_#SQ7IDMEJ!\$+JL]I.I62+^T+
MB;4%5E;E6"W2Y4\@Y&!C%<U_P57FB@_;1_8;>:54!_:"NU!9L#)T"_ 'U)(
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
M?@!H(NK'2-.UM=:^']_&[*QTFY/GV;(^<EH<F!G&/WEN^* /Z:/C''_PWO\
M\%D/!WP"C'VOX=?LG:=!XZ\;)]Z&[\;:A$Z:':N/[]I:^?? CHTR ]:^[J^2
MO^"+?[,7Q*_9Z_8JT_QQ^T3>S7_Q>^+VJ3^/OBQJ=Y$$G?5M1"NMLR@ 1BWM
MU@@\I?D1HGV@ XKZUH _%'_@]P_Y,N^#G_94)_\ TW35\(?\&NEM_P %.+G5
M_CPG_!,S4O@U;:Y_PC^C?V^?B[!J393S+WR/L+69V++N\S=YZLARG3!K[O\
M^#W#_DR[X.?]E0G_ /3=-7AG_!CM<0K\7/VA[1I )'\.>'71.Y5;B^!/X;A^
M= 'O_P#P:KK^UBG[8_[<R_MSMJ9^+0\2^#_^$X.K;/--WC7<;?+_ '?D^7Y?
ME>5^Z\KR_+^3;7[15Y-\-OV5- ^&?[8OQ4_:TT358A-\5/"GA73-7TM+/:RW
M6C-JJB[:7=^\\R"_MX@FT;!9YW-O 3ROX4_M^:?^T/\ \%7/&?['OP8\96VI
M>%?@_P##!Y?B(]E'%+$_B>]U"V%M;>=M+![6VMKL.J,%WWCI("\ " 'U;111
M0!YA^V[_ ,F7_%[_ +)?K_\ Z;IZ_C1_X)._\I3?V:?^S@/!O_I\LZ_LN_;=
M_P"3+_B]_P!DOU__ --T]?QH_P#!)W_E*;^S3_V<!X-_]/EG0!_;[7Y1_P#!
MY ^OI_P2,L5T</\ 9V^+NBC5=N<?9_LM^1GV\X0]>^*_5ROGC_@JW^Q!9_\
M!17]@#XD?LE_:8+;5/$6C";PS>W)PEMJUM(ES9LS#E4,T2(Y&3Y;OP<XH _F
MS_X-+TLF_P""U7@=KK9O7PKXA-MN/._^SI0<>IVE_P ,U_6G7\9O_!(WXN:Y
M_P $R?\ @LU\,O$7[1.CW/A2;PCX[G\-^.K36%\EM*CO(IM-N9)P>B0BX,I/
M(Q'D9XK^S%65U#HP((R"#P10!\7_ /!Q$L+_ /!%GX_B=5*_\(C 0''&?M]K
MC\<XQ[U_+G_P13;75_X*X?LY'PYYGVC_ (7!H8D\OKY'VM//_#RO,S[9K^A7
M_@[I_:H\,_ __@D_J?P.DU>-/$'Q=\2:?I&EV2N/--I:7,5_=S@?\\U%O#"Q
M[&Z0=\C\X/\ @S__ .":7C/XR_M<2_\ !0_QWX=FM_!'PPAN;3PO=W,)":KK
MUQ T)$>>'2W@ED=V_ADD@QDAMH!_3/7XP_\ ![1_R8+\*/\ LL"_^FJ^K]GJ
M_&'_ (/:/^3!?A1_V6!?_35?4 ?-_P#P8^_\E\^/O_8GZ+_Z57-?T75_.C_P
M8^_\E\^/O_8GZ+_Z57-?T74 %? 7P,Q_P4(_X+->.OVC[M5O?AM^RAIUQ\/?
M )/SP7?C*^C5]>O$[;[:W,5BP/\ STR.]>[_ /!5#]M.']@;]ASQM^T#ID2W
M7B=+-=)^'^D[ [ZEX@O&\BP@6/\ Y:?OG$C*.?+BD/:OES]DC_@WOUKX%_ 3
M0?"5W_P5._:M\+:_>VJZIXUT[P#\3-/L]+?7;E5DOYH8VTV1RK3ER&=W<@#+
M&@#^>[_@NM^P3+_P3E_X*7^/?@OX?TIK/PGJUX/$O@ HNU!I-ZS21Q1_[,$H
MFML_].V>]?TZ_P#!![]OU/\ @HO_ ,$T_ ?QFUW6!=^+]#MCX:\?;GW2?VM9
M(B-,_P#M3PM!<^@^T8[5^9__  <C?\$)]4\ ?L53?ML^&?VO_CI\7_$/PYO+
M>/5X?B[XJL]7^RZ%/(8YGMC!902(4GD@D8%F01^:V!C-?-W_  9__P#!0)?V
M<OVZ=4_8\\<ZYY/ACXT6*Q:4LTF([?Q!:*\EL1GA?.A,\)QR\GV<<X% ']0U
M?PI_MO?\GH_%[_LJ&O\ _IQGK^ZROX4_VWO^3T?B]_V5#7__ $XST ?W&?";
M_DE?AG_L7[+_ -$)705SOPBECG^$_A>:&171_#MDR.IR&!@3!![UP/[?'[8_
MPW_8$_9%\<?M7?%"^@2R\*:)+/864TH5M3OV&VULH^Y>:8I&,= Q8X"D@ ]@
MHKP#_@E1K'Q%\4?\$VO@?XX^+GBF_P!:\3>)?AGI.NZWJFJ7#2SSW%_;)>,7
M9R3P9]H'\( 48 Q7O] 'XH_\'N'_ "9=\'/^RH3_ /INFKX9_P"#9/\ :Q_;
M)_8Z^$_[4'QB_98_8FM/C+I>CZ1X;U+QO WCM=(N]+M[9-9>-K>#[-,]ZSHU
MPQ1,,HMP &+@#[F_X/<"/^&+_@V,_P#-4)__ $W35Y=_P8R%,_M11DC)'@GY
M3W'_ !/O\: /A'_@I!_P6\_:0_X+D?$3P%^SO\7=7\&_!KX9Q^*K=HX#-=36
M-G=2DP#4=1N C22K#'+(!LC145W)4GYA_0)_P1*_X(?? O\ X)"?#?5=4T'Q
MLWCGXA^,;:%?$OCB6R6"+[,AWQVEG$&<Q6^X[V)=FE8*S$!41/Q"_P"#H#_@
MC*?V ?VB_P#AJ[X!>%##\(/B;JDCM:6<.(?#6MONDELL 82"8!YH ,!0)8P
M(EW??O\ P:<_\%G/^&A?AA!_P35_:-\5F3QQX*TPO\-]4OI_GUO1(EYL23]Z
M>T4?*.K6X''[AV(!^K7[;O\ R9?\7O\ LE^O_P#INGK^+7_@G8OQ*?\ X*!_
M I/@Q-H<?C _&/PP/"<GB>.9],74_P"U;;[*;M8"LK6_G;/,$9#E-VT@X-?V
ME?MN_P#)E_Q>_P"R7Z__ .FZ>OXT/^"4,B1?\%2OV:Y97"JOQ^\&EF8X ']M
MV?)H _8C]JJU_P""SEO_ ,%T?V/V_P""FM_X)N/![?$V ^ &^$L=POAM+G<O
MVA<70^TBZV>7G[03\N?*)'F5^^U>6_M/_LP:!^TNWP\N]6U*.SN_AU\3])\9
MZ3<O:><?.LS(KQ#YEVF2&::/=SMWYP<8KR7_ (*O?M]V'[&7PO\ "/PY\!^,
M;:T^*_QB\=Z1X.^&>GA(IIQ<7E]!;SWWDR*RM';Q2LV71D,K0HP_>"@#ZLKX
M0_X.:/\ E!S\=_\ L'Z)_P"G_3J^[Z^$/^#FC_E!S\=_^P?HG_I_TZ@#\$?^
M#3__ )3:_#G_ +%_Q%_Z:;FOZW:_DB_X-/\ _E-K\.?^Q?\ $7_IIN:_K=H
M\@_X*$_\F"_'#_LC_B;_ --5S7\>/_!'C_E*_P#LV_\ 9</#'_ISMZ_LO_:L
M^'6L?&#]EWXD_"7PZH.H>*? .L:18@D#,US930IR>!\SBOXO/^"9/BS3?@[_
M ,%-_@+XN\?N-,L_#_QL\-RZW)?'ROL44>JV_G/)NQMV*&)SC&TYQ0!_<#7P
M#_P<6_\ )I_PE_[.@\"?^E[5]_5^>_\ P71\1Z=\2OB3^R1^Q'X:F6\\4^._
MVG/#WB"YTF$!Y8O#^C&6ZU&[91G"H#'R< X?GY30!^A%?R!?\'1W_*=?XY_]
MRS_ZC&DU_7[7\@/_  =%R))_P76^.;1N& /AH9!SR/#.E C\Z /O[X?_ /!=
M?]OK_@E%_P $EOV>;G6_^";6@WO@K7/!=OIO@7XC7'Q(:XM[UHHMZ?:K."U#
MVTCIEUB:8%A')M8[&Q\3?L1_LY_$S_@YO_X*3^+_ !E^UA^U]H7@SQ+<V4.I
MW.E6VD2/<WFF0D1&STF!F\J-+>,1@^9(S@2>:5G(E:OW2_8,_8V^#7[?G_!O
M!\(?V5?CMI'VC0O%'P@T^);J)!]HTVZ5=T%Y 3]V6*0*ZGH<%6!5F!_F:^,/
MPN_:\_X(H_\ !1-_#K:M-X?^(OPK\21WWA_7K6-A;ZE;Y)@NHP?];:W$)(:,
M\%7DB<9#J #^RK]E3]E[X-?L7_L]^%OV8O@!X9_LGPGX1TX6FF6SR;Y9"69Y
M9Y7P-\TLKO*[X&YW8X&<#YR_X*E?\G5?L4?]G'R?^HYJ]>A_\$L?^"C?PH_X
M*B_L>^'OVG?AJ8K.^F7[#XQ\."??)H>KQJIGM6/4I\RR1N<;XI(V(!)4><_\
M%3;FWB_:O_8FAEG17?\ :.D*JS $@>'=6''XLH_$>M '.?\ !>[_ ((Q>#/^
M"LO[-1N/!UI9:;\8?!=K+/X \038C%X/O/I5R^.8)2/E8_ZJ7#CY3(K_ ,P7
M[$G[8G[4?_!(']N"V^+?A'2;[1?%/@_59M(\;>#-85X%U"V64)>:9=H1E<E.
M"03'(B2+\R"O[<J_&'_@Z._X(3?\-2^";_\ X*(_LF>#/,^)/AK3@WC_ ,.Z
M;;YD\3Z9"F!=1HHS)>VZ*!C[TL*[1EHHU< ]G_81_;/^!_[?_P#P6PL_VI?V
M??$ O= \1?L*Z8TEM*5%SIEVOC"^$]E<H"?+FB?*L.A&&4LC*Q_1[XBZ;XPU
MGX?:[H_P]U^'2M?N]&NH=#U2XA\R.SO&B989F3!W*DA5B,'(&*_FZ_X,E_\
MD_KXK_\ 9'V_].MC7]+U 'Y _P#!$;_@@_\ M9_L[:G^T;\3_P#@I5XZL-:\
M6?&GPK<^$#?6FO/J]W<V-R)/MMY//(H+>:3;[$8[L1-O"_**ZW_@W$_X)5_\
M%(O^"7GB'XI^ /VKOBKI=[\-KMH8_!'A[2M?>]MY;M9I#)J,,3*/L:O&5#)A
M7D+ NO[M2?U1HH **** "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 *_,+_ (*=?\&L/[#7[?GC74_C=\*?$%]\'/B!JTSW&K:CX=TZ
M.ZTK4[ER2UQ<6#-'B5FY9X9(MQ+,ZNS%J_3VB@#\K_@#^P%_P<L_LN>%K;X4
M^ _^"I'P@\;>&-,B6WTB?XD>%+N[O[> #:H,H@:9\#&!)/)C  ..*]1\/?\
M!&WXY_M->+=*\;_\%@OVZ-4^.>FZ/>)>Z9\(O#WA^+P]X.CN48-&]W;0-OU0
MH1E?/*CDJRLI*G[_ ** (=/T^PTFP@TK2K*&VM;:%8K:VMX@D<4:@!451PJ@
M   < "ODK_@K1_P1D_98_P""NOPTL/#WQE-[X>\7>'DD'A/Q]H<:&\T\/@M!
M(C_+<VS, QB8@@@E'C))/UW10!^)G[&G_! S_@N?_P $Q]1U?PW^PC_P5$^'
M4'A'5;LW%UH?BGP[<O:7,VT+Y_V.2"Y2WE*J@9XI S!%#,P4"OJWP=_P1\_:
M?_:;\;>'_'O_  6/_;G;XTZ1X7U&/4=$^#WA3PO#HGA,7T?,<]\D>)-4VDDJ
MDRJHY!W(S(?T&HH 1$2-!'&H55&%4#  K\\/V[?^"07_  4#_;H^/OPX^/&K
M?\%6/#_@B7X2:\=9\ Z/X0^ <@M[2^W(?M%P;C7I6NG*HL9#8CV%U$:B1]WZ
M(44 <;\$- ^/OASP@VG?M%_%+PIXNUL7'[G5?"'@>XT"#R=B *]O/J-^6DWA
MV+K(BX8 1C;EO'OV<_\ @F%\!OV:?V]/C3^W[X(&?$OQFM=.AO;$V:I'I7DK
MF\:%PQ+?:YDAGE! _>1 C.:^DZ* /#/VW?@%^UO^TC\-M?\ A!\ ?VIO"'PT
MT;Q1X8N-(U74-2^%EQKNJPF=9(Y9K6<:O:0Q9B=54/;RE6#-N.5"?D7X _X,
MG/%'PP\=Z)\2_!'_  57-EK7AW5[;4](O%^!X8P74$JRQ28;6B#M=%."".*_
M>>B@#A?@3X;_ &D/#&@36'[2'Q@\'>,M0'E+9ZAX0^']SX?4 *0YFCGU2_$C
M,<$%#&J\C:<C'SY_P5J_X(P?LK_\%=?AO8:%\8S>>'?&'AZ.1?"?C_0XD:\T
M]7Y:"5'^6YMF8!C$Q!!R4>,LQ/U[10!^)O[&G_! [_@NA_P3'U#5_#7["7_!
M43X<P>$-5NC<76A^*?#ER]K<38"^?]CD@N4MY2JH&>*0,P10S,% KZM\%_\
M!'O]IK]I;QSH'Q!_X+%_MTR_&K2_#&HQZCH7P@\+>&(=#\)K>Q\QSWL<>)-3
M*GYE64*!RIWHS(?T%HH 155%"(H  P !P!7YG?\ !6#_ ((4_M;_ /!7N'PK
MH?Q]_P""C_@_P[H7@VXN;C2-$\'? .XB22XG"JTT[W'B&9Y'"(%7:54!F^7)
MS7Z944 ?CM^P?_P;$?MC?\$U?'NK?$;]CW_@LT/#5_K^G+8ZW%<?L^6M];WL
M"OO0/%<ZLZ[E;)5U 898 X9@?H[XB_\ !.G_ (+8?$?PG=^#KG_@OY'H\%[$
M8Y[OPY^S%I=E=A",$1W$>I>9"?\ ;C96'9A7WW10!^<7_!&K_@@'JW_!)3XP
M_$?XYZC^V0_Q1\1>/]!6P^VZGX%>P>UE^T&XDN)6.HW#W1DDV%AN0G:3NR<C
M#^(7_!#?_@H!\3/^"BWAC_@IOXE_X*[:*WCWP4DEOX3TB/\ 9]/]C:98R0SP
MRV4=LVO%O*DCN9P[&0RDRD^8"%*_IS10!@?##3OBEI/@FSL/C/XQT#7_ !&F
M_P#M#5?"_AJ?2+&;+L4\NTGO+R2+";0<W#[B"PV@A1\E_P#!7#_@F)^T;_P5
M1^#FJ?LR3?M>^"_ GP[U#5['4(K6/X-W&J:S');*K!6OGUN*(JTV]\I:QL$9
M8RQP[2?:=% 'XD_LC?\ !HG\;?V'_P!H?PU^T_\ L\?\%;!I7BOPM>&:QFE^
M!WF0SHZ-'+;S1_VV/,ADC9T=<C*L<$$ C]HO!-GXUL/"6GV7Q&\0:7JVNQ6J
MKJNI:+H\FGVES-CYGBMI;BX>%">B--(1_>-:E% 'Q3_P56_X)I?M=_\ !3WX
M*:]^RW<?MS^#_ 'PWU[5;:ZN]-TOX+7%[JEQ#;S1SPV\]Y+KJQR*)XHY"T=O
M$28T' !#?&7[#7_!IO\ &O\ X)Z_M.^&_P!K+]GW_@J9IH\3>&7G%O;ZU\!C
M<6=U#-"\$T$T:ZZC,CQR,/E96!P592 1^T=% &#\-=/^)NE>#;6Q^,/B_0==
M\0(TGVW5/#7AR;2;.4%V*!+6>\NWC(3:I)G?<P+#:"%'C?[>O[,_[6_[6'PH
M\4_ CX*?M7^#_AKX9\9>%9]$UJYOOA1<:YJZ)<)+%<M;W/\ ;%K#$'A<( UN
M[(=S!\E=GT%10!^$'PI_X,L/&GP4^*/AOXR_#?\ X*N'3_$7A+7[/6M OQ\#
ME?[->VLZ3P2[6UHJVV2-6P00<<U^U/P/\/?M$^'/#\UE^T9\6?!_B[4MT8M+
M_P '^ KG0(U0+A_-BN-3O_,9FYRK1@#C:>M=M10 5\2?\%+/^"+OPE_X*,_M
M?_L_?M1>,[NRMQ\)_$#R>+]/N+<NWB/2$/VJVLCP00EZBY5L Q75SR6V@_;=
M% !1110!^:O_  5D_P""&W[6_P#P5[L/#'A7XY_\%&O"'AKPYX1OKB\TG0_"
M/P%N$$MQ*H3SKB2X\0RM(ZQ@HNW8H#L=N3QX]^PA_P &P7[8/_!-;XAZK\3?
MV/\ _@LP/#6HZYI@T_6H[C]GVVO;>]@#AU5XKC5W7<K#*N &&6 .&8']BZ*
M/SJ^.?\ P2Q_X+.?'[P;<> /$_\ P<&W^C:9>0M%>+X._9TL-(N)5/!_TJUU
M1+A."1\DB@YYS6Y_P0^_X(:V/_!&O_A9M_<_M+O\3=2^),VE&;4)?!_]DM9)
M9?:SMP;RY,ID:[9BV5^X.#U'WS10 4444 > _MU_LX_M=_M1_"_Q-\$O@=^U
M?X/^&GASQ=X6GT;5KN^^%%QKFKQ+.LD5Q);W(UBUABW1.$4-;NR$,P<DKL_)
MOX8?\&57B_X._$KP]\7?A]_P58^PZ_X5URTUC0[W_A1RO]GO+:9)H9-K:T0V
MV1%.""#CFOWBHH XGX'>'OVB?#?AZ:R_:-^+7@_Q?J6Z,6E_X0\!7.@1J@7#
M>;%/J=_YCLW.5:,#IM/6NVHHH ^&/^"KG_!O]^Q'_P %6IQ\0?'5I?>"?B3!
M:K!;_$'PM%&)[E%&$CO8'&R\11@ DI*H4*LJJ-M<-^SG^QK_ ,'!W[%OPSL?
M@'\)_P!N7]G[XJ^%M"M5L_#NK?&+P5K46J6=J@VQ0[K"Y_>*J\#S9)2H 4-M
M  _2"B@#\D?&'_!M;\:/V_?VD+3]IW_@LE^WI<_$673XE@T[P!\.=".D:79V
MROO^S1SN[.D+$_/LB29^IFW8(_4KX0?!_P"%_P  /AEHOP:^"W@73?#/A;P[
M8K::+H>DVXB@M85YPH'4DDLS'+,S,S$DDGI** "OS9_X*Q_\$0/VN_\ @KQH
MOAKP1\<?^"C7@_PSX9\*:E-?Z9H?A'X"W"":YD0QB:XEN/$,K2.D99%V;%^=
MB5)(Q^DU% 'Y.?\ !+K_ (-POVF_^"2OQAUCXO?LW_\ !37PWJ;>(M'&F:]H
M?BSX!RSV=W"L@DC;]SK\4B2(P)5E<#YF!# XK]5_#L'B"V\/V-MXLU.SO=5C
MLXEU.]TZQ>UM[BX" 2210O+*T*,V2L;22%00"[D;C<HH _-[_@J#_P $2_VS
MO^"G/QC\.>//%/\ P5*T_P %^&? 7B0ZS\/?!GA_X)M+#IMRLNZ"ZN9I=:S>
MW:(J(92B1_?*0Q"1U/W'^S_X6_:7\)>&IM,_:9^-7@_QQJ2F-;+5/"7P\N/#
MPVA2',T4VIWPD=C@Y0Q*.1L.1COJ* /!?V_/V9?VC_VN_@AXJ_9W^%'[0O@O
MP+X;\<>$+[0/$LVO_"VXU^^,5W$\,KVTBZM:0Q'RG*@20RX;YL] /R+\(_\
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
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 >3?ME_MK_ ']@_X1K\8?V@/$-W!:WFJ0:5H&C:/8/>:GKNISDB
M"PLK:/YI[B0@X48  +,54$CY.\/?\%@/VM]%^./Q7B^*/_!+WXIGP)X%TCP_
MJ$NG^'+K1+_Q'H-M>V]U*]Q>64.HL;D.(0XBMC))"L;AU)( \7_X.K?#7[1'
MPS@_9E_X**_!WP3-XET']G;XH2:_XNT>,,T8+SZ=-:W$X4'9"'L9(&EQ^[-V
MO3=7LO\ P1L_;_\ V>_^"CG[6?[0G[2'[/\ K5Q_9^M^&? ?G:/JT/D7UA/#
M:ZE'<0R1Y.[RY"%\Q"T;9!#'- 'V7^RI^U'\&/VTOV?O#7[3W[/?B2;5O!_B
MRUEGT>^N;"6UD<13R02JT4RJZLDL4B'(P2N5)4@FA^UQ^V=^S7^PS\*G^,?[
M3OQ/M/#>D-<K:Z?$\;SWFJ7;?<M;2VB#2W,S=DC4D %CA02&?!#X1?"K]A#]
MG#4/"-EKD5AX.\,:AXC\127$T(BATNRN]3O=6DB"KD"*W6Y:-3U*1 D9.*_%
MW_@GU^W]^S!^V[^WAX]_X+._\%0?CKH7AKPAX U>;P]^S5\.M>N6N'TI459K
MC48K"$/++/# UL7N%C9?.N6;*^1"$ /V)_9W_:8_:!_:"U.P\17O[$WB;X>^
M"KZ)Y8]4^(^OV=GK+1^6QB<:5:FX:+>VT%+B6&1%8ED!&PQ_MP?M_P#P1_81
M\->'9_B+:ZQK_BKQSK::+\._A[X4M%N=9\3ZDY4""VB9T4*I="\TC)'&&7<V
M616V?V2_VZ/V1/VZ_!MWX]_9'^/OA_QSIVGSK#J1TBX83V3L"46>WE59H-P!
M*[T7<%.,X-?EK\(?B7J/[;G_  >!>*K?Q!.;W0?V<_AG?VOA*S<[H[298+6U
MNIMOW?,-UJMP-W7"1#/R+@ ^]_!__!3N3PI\?_"'[,_[;O[,_B#X'^)/B.9$
M^'&H:UXAT_5M'UZZCV[M/6]LI66"^^=<02JHDR!&\A*@_3?BOQ7X9\">%]2\
M;^--?L]*T?1[":]U75-0N%A@L[:)"\LTCL0J(J*S%B<  DU^;W_!VA\.H/$G
M_!(+6OBM9RR6VL?#7QYX?\0:%J5LQ2>SN'O5L-\<B_,AQ>DY!'*J>H%?+W_!
M?'_@IKX]^(__  ;L? GQ+IVL-::_^T3::-'XRDMCY?F06]D;G443&"%>]C@4
MCH8V93PQ% 'WGH__  68U?X@_"/5?VNO@C^P)\4/&/P$T8W4DWQ,LKO3;:ZU
M&RMG9;G4;#2+B=+NZM(]CG<1'(P1BL;;2*^L?@/\=_A)^TY\'_#_ ,>_@3XY
MLO$GA+Q1IZWFBZS8.3'/&20000&1U8,CQL R.K*P#*0,[]F3X,:!\"_V7_ /
M[/\ IVCPQ:=X4\#Z9H:V31#;LM[2. JRD<YVG.>I)SUK\I?^#5KXH:Q\*_C]
M^UU_P31GOII/#_PM^*EY>>#K:1V/V2(7]Y874:[ONIFUM'"CC<\AZL20#]F:
M*** "BO$M4_:E^,MAJ=S86W[%OC>ZC@G>..YBN;;;,H8@.,MT(&1]:O_  E_
M:DUSXE>-]4^'NM? [6_#NJZ5817<UGJ-Y \ACD8A3M0DJ#CJ>M 'KU%8_P#P
MDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_
M -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )
M+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2Z
MO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#P
MDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_
M -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )
M+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2Z
MO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#P
MDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_
M -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )
M+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2Z
MO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#P
MDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_
M -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )
M+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2Z
MO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#P
MDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_
M -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )
M+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2Z
MO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#P
MDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_
M -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )
M+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2Z
MO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#P
MDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )+J__ $*%[_WTM'_"2ZO_
M -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM &Q16/_P )
M+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2T ;%%8_P#PDNK_ /0H7O\ WTM'_"2Z
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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 %%%% !67IG@CP7HGBC5/&^C>$-+M-:UR
M.WCUO5[73XX[K4$MU98%GE50\HC#N$#$[ [ 8R:U** "BBB@ HHHH **** "
MBBB@ HHHH *\+\ _\I!/'_\ V(FE?^C&KW2O"_ /_*03Q_\ ]B)I7_HQJ /=
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 "O"_ /_ "D$\?\ _8B:5_Z,:O=*\+\ _P#*03Q__P!B)I7_ *,:@#W2BBB@
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@ HHK&T?XA^!O$'C+6OAYH?BRPN]=\.Q6LNNZ
M3!<JT]@ERKM;M*@Y02+&Y7/4(<=* -FBBB@ HHHH **** "BBB@ HHHH *\+
M\ _\I!/'_P#V(FE?^C&KW2O"_ /_ "D$\?\ _8B:5_Z,:@#W2BBB@ 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@#\Z?^"^?[>_Q7_9K\3?LX_L<_"/XHW'P\G_ &C/BA'X
M?\2?$NQ,8N_#VBQ75A!=O:O("D-P_P#:$>V<C]VL;D;20Z\I\*O^"37P!\6?
MMO\ [1_PY\%?%GXP^#]>\/>'?!,OASXB:'\8M=;7+6\N+/4&EN9YIKMUOM[Q
MH6CN%DCQE45 :^A/^"S/_!)'X8_\%=_V8HOA'XD\2-X;\7^&KU]2\ ^+4@\T
M:?=LFQX9D!!>WF4*'52&!2-QDIM;\FOV"/\ @J]^TQ_P1!_;S\:_LL?\%I-'
MU776\16/A_2KGXI:??C49-/L[**X6PN'*+OOK=X;DEG;%TJQC=&[@I0!^SW_
M  2RU7]I?4?V'O"MC^V'XUF\1_$G1-8\0Z%XIU^XL8[=M0ET[7;^PCG"1HB[
M6AMHBK@?.I#DL6+'XY_;1^#G[3O_  6E_;#\;?!C]DW_ (*6^(?@#X*_9YN(
MO#^I7G@@W$]WXH\1W$:SZB)4M=1LW6"R3[';@N7'GO<@8P:_3'P3XY\&?%CP
M'IOQ#^&?C&RUC0M?TV.\T77='N4G@NK>5 T<T3C<K@@@@\CVK\>?VI?^#0CP
M,-6U']H#]@;]N+XF^$?BR+V?5;34_&>LI<)=Z@[&1F^VV4,%S:N[L29OWQ!)
M.TT ?6?_  2M_P""0G[1O[ 'Q:\0_%;]HC_@J=\3_C^=2T(:;HFB>*YM0M['
M2BTJR2W'DW&IWB32L(T16PAC4R8SYG'G/_!1']L;XJ?M2_\ !5OX:_\ !$7]
MG/XH:QX-TB[TQ_$WQ^\8>%;YK;58M*2W>YCT>VN$Q):-.BQ>9-&0^+R#:P D
M5Z/_  ;U_P#!3W]JSX^^*?B1_P $V/\ @HUI,\'QS^".#=:I=HBW&L::)1"S
MS^7\DDL3O!BX3Y9XKF%_F.Z1_G;_ ()67UUX_P#^#NC]K7Q#XH=I[K2?!6NQ
M63MU1+?4M"LHAWZ0?+_G% 'NO_!4JPO?^"#FA?#W_@H%^Q--XEA\ 6?C2U\/
M?&KX4ZAXMU#4]-US2[I7V7\2WT\OV:_B>/8LZ%2[3IYF]0P;Z@_X*C?\%2_A
M[^P7_P $T]3_ &[_  7-9>()-<TFQ3X8V\K'R-7OM0BWV3'!!:)8BURZ@@M'
M"X!!(->3?\'4=KIUQ_P0W^,$UZ?WL%]X;>S^7.9/^$@T]3]/D9^?P[U^2?\
MP61^)'C'7?\ @W1_8(T#5[J7[-=6]P9HI'SN^P6AM+0_002,!QP&Q]0#]9?V
M9O\ @E+JWQ^_8=T+XX_M)_M#_$N?]I7Q]X1B\12?%>T\?:G97'A;5+N 7%O;
M65I;SI:P6MJ72)K=8O+E"/N&& 7J_P#@@=_P4W\=?\%&/V6-:T7]H*VMK;XP
M?"3Q&_A;XE16L:QK>3IN$-^(UXC\X1RJRC"^;;S%55"JC[?T31['P]HUIH&E
MQ>7;6-K';VZ?W8T4*H_("OQ#_P"#;[5[C1_^"X'[??@;07<Z)/XXUBXX^52U
MOXEOXX"5]=D\N/3F@#]QJ*** "O"_ /_ "D$\?\ _8B:5_Z,:I]4\"_MZ2ZG
M<RZ1\=_!$-HT[FUBE\+R,R1ECM4G=R0, FN&^ 6B_&_3OVV?'%G\1_&VC:CK
M"^"]/-S>:?IK0Q/&93Y8"$\$#=D]\B@#ZFHK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
M *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>
M-_\ H-V7_@,?\:/L7C?_ *#=E_X#'_&@#8HK'^Q>-_\ H-V7_@,?\:/L7C?_
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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 %%%% &-\1/'WACX
M6>!=7^(_C34!:Z5HFGRWE].>HC12Q '=CC '4D@#K7XQ^'=,^(__  4O_;?+
M:@TL,GB?5C/?.C;ETG2HL9"DC'[N%0BYQN<KGEJ^H/\ @MU^U=Y<6G_LE^#M
M2^9_*U+Q>T3]!]ZVM6^O$S ^D)[FO2_^"-_[*/\ PI[X)2?'3Q9IOE^(/',2
M268D7Y[;2P<Q+[>:?WI]5\KN*_H7A&$/#?P^K\2UE;%XM<E!/=1>TO1VYWT:
MC#^8_G7C"I/Q*\1*'#-!WPF$?M*[6SDMX^JOR+JG*?\ *?95%%%?ST?T4%%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %>%^ ?^4@GC_P#[$32O_1C5[I7A?@'_ )2">/\ _L1-*_\ 1C4 >Z4444 %
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 %<;^T%\:_"W[._P '->^,7B^0
M?9-%L6E2#?M:YG/RQ0*?[SR%5'INR> :[*OS$_X+@_M*7/B+XAZ1^S)X=U+_
M (E^@0IJ7B".-N)+Z53Y,;?]<X6WC_KX]A7V? '"T^,.**.7O^'\51]H1^+Y
MO2*?1R1\3XA<5PX-X5KY@OXGPTUWG+X?5+637519XE^R7\'_ !E_P4)_;-?5
M/B'+)=6EWJ,FN>-;P9"BV$@)A4_P[V*0H ?E4Y'"5^TEK:VMC:QV-E;1PPPQ
MA(88D"JB@8"@#@ #@"OFK_@E=^RQ#^SC^S79Z]KEB$\2^-(XM4UAF3#PPLN;
M:V/<;(V+$'H\KCL*^F:]_P 6>*Z?$?$?U;":87"KV=-+;324EY-I)?W8Q/ \
M(^$JG#?#?UK%ZXK%/VE1O?76,6^Z3;=]>:4@HHHK\M/U4**** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *\+\ _\I!/'
M_P#V(FE?^C&KW2O"_ /_ "D$\?\ _8B:5_Z,:@#W2BBB@ 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@#$^)/C_ ,/?"OX?:U\2O%=SY6FZ%IDU]>/D9*1H
M6*KGJQQ@#N2!WK\;_P!EOP%XC_;V_;OM]0\;VYN(-6UV;7_%0Y9([.-_,:+V
M1B8X%]-Z^E?8W_!;_P#:%_X0WX/:/^SYH=_MOO%MT+S5T1N5L+=@54^@DGVD
M'N('%/\ ^"(?[//_  A/P7U;]H#7+';?^,+K[-I3.O*:?;L5+#T\R;?D=Q"A
M[U_0'!O_ !@WACC>(I:5\4_94>Z6JNOGS2\U")_/7&G_ !GGBC@N'(ZX?"+V
MM;LWH[/Y<D/)SD?<*JJ*$10 !@ #I2T45_/Y_0H4444 %%%% !1110 4444
M%%%% !1110 4444 %%>3?ME_MK_ ']@_X1K\8?V@/$-W!:WFJ0:5H&C:/8/>
M:GKNISDB"PLK:/YI[B0@X48  +,54$CY.\/?\%@/VM]%^./Q7B^*/_!+WXIG
MP)X%TCP_J$NG^'+K1+_Q'H-M>V]U*]Q>64.HL;D.(0XBMC))"L;AU)(  /T*
MHKSW]E3]J/X,?MI?L_>&OVGOV>_$DVK>#_%EK+/H]]<V$MK(XBGD@E5HIE5U
M9)8I$.1@E<J2I!/7>-_&OA+X;>#=6^(?C[Q%::1H>A:=-?ZQJM_,(X+.UA0R
M2S2,>%545F)[ 4 :E%?*G_!*+_@J[\*_^"M/PY\=?%GX.?#S5]!T+P?X[G\/
M64^LW"-+JD20Q31W?EJ!Y =)5/EDL5.02:[K]N#]O_X(_L(^&O#L_P 1;76-
M?\5>.=;31?AW\/?"EHMSK/B?4G*@06T3.BA5+H7FD9(XPR[FRR*P![C17RIX
M/_X*=R>%/C_X0_9G_;=_9G\0? _Q)\1S(GPXU#6O$.GZMH^O74>W=IZWME*R
MP7WSKB"55$F0(WD)4'Z;\5^*_#/@3POJ7C?QIK]GI6CZ/837NJZIJ%PL,%G;
M1(7EFD=B%1%168L3@ $F@#0HKX@T?_@LQJ_Q!^$>J_M=?!']@3XH>,?@)HQN
MI)OB997>FVUUJ-E;.RW.HV&D7$Z7=U:1['.XB.1@C%8VVD5]8_ ?X[_"3]IS
MX/\ A_X]_ GQS9>)/"7BC3UO-%UFP<F.>,D@@@@,CJP9'C8!D=65@&4@ '74
M444 %>%^ ?\ E()X_P#^Q$TK_P!&-7NE>%^ ?^4@GC__ +$32O\ T8U 'NE%
M%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 444
M4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M 4444 %%%>5?MI_M&Z?^RS^SKK_Q6DDC.HQP?9/#]O)@^??R@K$,'[P7F1A_
M<C:NS+\!BLTQ]+!X:/-4J248KNV[+_@]CBS',,+E6 JXS$RY:=.+E)]DE=_\
M!=3J?AW\;?AQ\5/$_BOPAX)U]+N_\%ZPNF:[$O\ RRG,:OQSRN2\>>/GAD'\
M.3UE?C'_ ,$S_P!JW4/@1^UE:ZKXQUQWT?QM/_9WB:XNI2?WDTFZ*Z<GNLQ!
M9CT223UK]G*^T\1N!ZO V=0PJDY4IPC*,GU:24U\I7=ND7$^)\-N.J7'>23Q
M3BH583E&45T3;<'Z.-E?K)2"BBBOS\_0PHHHH **** "BBB@ HHHH **** "
MBBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "BBB@ HHHH **** "BBB@ HI&954LQ  &23VKY _;"_X*\_!KX$?:
MO!7P8%MXU\4Q[HWD@GSIMC)T_>2K_KF!_@C..""ZD8KV\AX<SKB;&K"9;1=2
M?6VT5WE)Z17FWZ:GAY_Q)DG"^!>+S.LJ<.E]Y/M&*UD_)+S>A]0_$KXI?#OX
M.^$KCQU\4/&%CH>DVH_>WM_,$4GLBCJ[G'"*"Q[ UPG[+W[:OP)_:[M]6/PE
MUNX-SHUT8[K3M2@$-PT.<)<JFXDQ-V/4'A@I(!_*2QTG]M3_ (*<?%=KDOJ'
MB.>&3#W,[>1I6BQL>G_/.$8'W5!D?;G#FF_$GX5_M,_\$Q/VA=,UJ+4A:ZA;
MCS]$UZQ5GLM5@P!+$0P&Y>=DD; $9!Z%&/[E0\%LCCA9Y77S&+S64>>,$URQ
MMK9JW,[_ ,VC2]Y1:3O^$XCQMSV6+AFE#+9+*HRY)3:?-*^G,G?E5OY=4W[K
MDG)6_;>BO'?V,/VROAY^V1\,D\6>&G2QUNQ58_$7A]YMTMC,>C#N\38)1\<\
M@X96 ]BK\ S++<=D^.J8/&4W"K!VE%]'^J>Z:T:U6A_0F69G@,YP%/&X*HIT
MJBO&2ZK]&MFGJGH]0I'=(U+NP55&22< "EKYT_X*C_M"_P##/_[)6MMI5]Y6
MM>*O^))I&UL.OG*WG2C'(VPB3#=G9/45MDF4XG/<WH9?A_CJR45Y7>K?DEJ_
M)&&>9MALAR>OF.(^"E%R?G9:)>;>B\V?F[^TMXW\1_M]_MXW%CX*G,\.M:]#
MH7A<_>2*RC?RTF]D(\R=O3>U?LI\._ OA_X8> ]&^'/A2V\G3=#TR"QLHSU$
M<2! 2>[$#)/<DFOS<_X(;_L\_P#"2?$?7OVD-=L=UIX<@.F:&[KPU[,F9G4^
MJ0D*?:Y]J_3ROUGQHS7#4\QPO#F"TH8*"C;^^TM^[45'7NY'Y'X)93B:N78K
MB3':U\;.4K_W$WMV3DY:=E$****_$C]Q"BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@#\C?^#JWPU^T1\,X/V9?^"BOP=\$S>)=!_9V^*$FO\ B[1XPS1@
MO/ITUK<3A0=D(>QD@:7'[LW:]-U>R_\ !&S]O_\ 9[_X*.?M9_M"?M(?L_ZU
M<?V?K?AGP'YVCZM#Y%]83PVNI1W$,D>3N\N0A?,0M&V00QS7Z":MIVD:YI]Q
MX?URQMKRUOK:2&ZL;N)9([B%AM='1LAT(;!!!!#8/6OP%_;(_P""+7QE^$?[
M?WQS_:C_ ."*'B=OACXN^"FF>'=>L_ .@,Z1ZM'J%K=SWD-IN9D )M>+%T,$
MJR&,! %1@#]P?V7?V<_!_P"RE\'XO@G\/Y<Z+:>(M<U/3H! L2VD>HZO>:D+
M9%7@)#]K,*GNL:DX)Q7S9^T&9/\ @IU^U7-^Q-H+M/\  _X3:K:WWQ]U&+)@
M\4:XFRXL?"2MT>&/]U=WX&>/L]N=IDD ^=_A[_P7J^.7[1?_  09UG]O#X-_
M K4M1^,-AKO_  @NI:3X4T6348K'6V6 OJD-L,M)"EM<QW2PL2!(1$SE09*X
M;]DS_@O5\$?V._@-H?P$^&?_  24_:YGM-+CDFU+6-2\ I)>ZUJ,SF6[U&[E
M,N9;FXG>261S_$^!A0  "?\ X,P42/\ 8M^-,<:A57XWW 50, #^SK.LSX0_
M$O4?VW/^#P+Q5;^()S>Z#^SG\,[^U\)6;G=':3+!:VMU-M^[YANM5N!NZX2(
M9^1<> ?\&G7_  4<TWX&6.M?LA3_ +,/Q-\03?$WXR^?%XUT#0EFT70O-M+>
M+;?3E@8F7R]S#!PK*>]>P_\ !,GP[>?"+_@[R_:M\*^+U:"Z\0> =7N]+#?\
MMDN[W0=1BQD\_N"3Q_=([< 'T?\ \':'PZ@\2?\ !(+6OBM9RR6VL?#7QYX?
M\0:%J5LQ2>SN'O5L-\<B_,AQ>DY!'*J>H%?+W_!?'_@IKX]^(_\ P;L? GQ+
MIVL-::_^T3::-'XRDMCY?F06]D;G443&"%>]C@4CH8V93PQ%?77_  =:>)K?
M0?\ @B%\4=*GN1&VMZSX<LH5./WC+K5G<;?^^;=CQ_=K\N/^"UO[/?C;X?\
M_!N;^PIKVIZ;+'!HT$8U)75MT$FKZ>U_ K@_=.V)P<]#QQTH _H@_9D^#&@?
M O\ 9?\  /[/^G:/#%IWA3P/IFAK9-$-NRWM(X"K*1SG:<YZDG/6ORE_X-6O
MBAK'PK^/W[77_!-&>^FD\/\ PM^*EY>>#K:1V/V2(7]Y874:[ONIFUM'"CC<
M\AZL2?V-\/Z[IOBC0+'Q+HTXEL]1LXKJUE!'SQR('4\>H(K\2?\ @V<T#4/B
M%_P5\_;S_:-L]TNE2>/-0M8[S&$FDOO$&H72X(X)V6V3CIO7U% '[A4444 >
M6W_[;'[*6EWT^F:A\<M#BN+:9HIXGE;*.I(93\O4$$5YO\$OC'\,/'_[<GCK
MQ7X-\:66H:=<>"=.CAN[=R4=TD(<#(ZC</SKW^7X:?#B>5IY_A_HCN[%G=]*
MA)8GJ2=O)KQGX8^'?#^D_M\^/;#2M"L[:!/ VEE(;>U1$4F1LD # S@?E0![
M?_PF/AC_ *#4'_?5'_"8^&/^@U!_WU5S^SM/_P"?&'_OT*/[.T__ )\8?^_0
MH I_\)CX8_Z#4'_?5'_"8^&/^@U!_P!]5<_L[3_^?&'_ +]"C^SM/_Y\8?\
MOT* *?\ PF/AC_H-0?\ ?5'_  F/AC_H-0?]]5<_L[3_ /GQA_[]"C^SM/\
M^?&'_OT* *?_  F/AC_H-0?]]4?\)CX8_P"@U!_WU5S^SM/_ .?&'_OT*/[.
MT_\ Y\8?^_0H I_\)CX8_P"@U!_WU1_PF/AC_H-0?]]5<_L[3_\ GQA_[]"C
M^SM/_P"?&'_OT* *?_"8^&/^@U!_WU1_PF/AC_H-0?\ ?57/[.T__GQA_P"_
M0H_L[3_^?&'_ +]"@"G_ ,)CX8_Z#4'_ 'U1_P )CX8_Z#4'_?57/[.T_P#Y
M\8?^_0H_L[3_ /GQA_[]"@"G_P )CX8_Z#4'_?5'_"8^&/\ H-0?]]5<_L[3
M_P#GQA_[]"C^SM/_ .?&'_OT* *?_"8^&/\ H-0?]]4?\)CX8_Z#4'_?57/[
M.T__ )\8?^_0H_L[3_\ GQA_[]"@"G_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U5
MS^SM/_Y\8?\ OT*/[.T__GQA_P"_0H I_P#"8^&/^@U!_P!]4?\ "8^&/^@U
M!_WU5S^SM/\ ^?&'_OT*/[.T_P#Y\8?^_0H I_\ "8^&/^@U!_WU1_PF/AC_
M *#4'_?57/[.T_\ Y\8?^_0H_L[3_P#GQA_[]"@"G_PF/AC_ *#4'_?5'_"8
M^&/^@U!_WU5S^SM/_P"?&'_OT*/[.T__ )\8?^_0H I_\)CX8_Z#4'_?5'_"
M8^&/^@U!_P!]5<_L[3_^?&'_ +]"C^SM/_Y\8?\ OT* *?\ PF/AC_H-0?\
M?5'_  F/AC_H-0?]]5<_L[3_ /GQA_[]"C^SM/\ ^?&'_OT* *?_  F/AC_H
M-0?]]4?\)CX8_P"@U!_WU5S^SM/_ .?&'_OT*/[.T_\ Y\8?^_0H I_\)CX8
M_P"@U!_WU1_PF/AC_H-0?]]5<_L[3_\ GQA_[]"C^SM/_P"?&'_OT* *?_"8
M^&/^@U!_WU1_PF/AC_H-0?\ ?57/[.T__GQA_P"_0H_L[3_^?&'_ +]"@"G_
M ,)CX8_Z#4'_ 'U1_P )CX8_Z#4'_?57/[.T_P#Y\8?^_0H_L[3_ /GQA_[]
M"@"G_P )CX8_Z#4'_?5'_"8^&/\ H-0?]]5<_L[3_P#GQA_[]"C^SM/_ .?&
M'_OT* *?_"8^&/\ H-0?]]4?\)CX8_Z#4'_?57/[.T__ )\8?^_0H_L[3_\
MGQA_[]"@"G_PF/AC_H-0?]]4?\)CX8_Z#4'_ 'U5S^SM/_Y\8?\ OT*/[.T_
M_GQA_P"_0H I_P#"8^&/^@U!_P!]4?\ "8^&/^@U!_WU5S^SM/\ ^?&'_OT*
M/[.T_P#Y\8?^_0H I_\ "8^&/^@U!_WU1_PF/AC_ *#4'_?57/[.T_\ Y\8?
M^_0H_L[3_P#GQA_[]"@"G_PF/AC_ *#4'_?5?E3_ ,%C/VI$^-7QUM?@KX,U
M$W&A>"MT4WD$E;G4Y /-/'7RQMB'<,)<?>K]#?VT_C[H'[+/[.NO_%:2UM3J
M,<'V3P_;R1*?/OY05B&#]X+S(P_N1M7YM_\ !*#]F^]_:3_:C;XG^.('O=&\
M'S+J^JSW(WB[U!W)MXV)^\3(&E.<@B(@_>K]T\(LLPF3X3&<89@OW6%BXTU_
M-4:UMYV:@NEY^1^#>,.9XO.<7@^#<N?[W%24JC_EIIW5_*Z<WUM#S.,_:^_8
MBU;]E_X;?#_QO)J9NWU_2-GB:+.1I^J$M+Y''\/E,$'7+6\AS@@5^DG_  3>
M_:VTG]H/]F+2+SQ7KJ?\)'X>4:3KPF?+RO$H\NX/<^9'M8GNXD':O0?VM/V<
M_#_[2_P \1?"2ZL[>.[OK,R:/=,@'V:^C^>"3(&0-X"MCJC,.]?E_P#\$P_C
MS>_LO?M;K\/OB)"UEI?B2Y.@Z_:7:@?8[U9"L$C@]"DV8R3PJRN>U>Y+'5_%
MKPYQ/M[2Q^"E*HK;RA*[LEV<;Q276$.YX4<!0\(O$G#>PO' 8V$:;N](SC:-
MV^ZE:3;Z3GV/U[_X3'PQ_P!!J#_OJC_A,?#'_0:@_P"^JN?V=I__ #XP_P#?
MH4?V=I__ #XP_P#?H5_-Y_2Q3_X3'PQ_T&H/^^J/^$Q\,?\ 0:@_[ZJY_9VG
M_P#/C#_WZ%']G:?_ ,^,/_?H4 4_^$Q\,?\ 0:@_[ZH_X3'PQ_T&H/\ OJKG
M]G:?_P ^,/\ WZ%']G:?_P ^,/\ WZ% %/\ X3'PQ_T&H/\ OJC_ (3'PQ_T
M&H/^^JN?V=I__/C#_P!^A1_9VG_\^,/_ 'Z% %/_ (3'PQ_T&H/^^J/^$Q\,
M?]!J#_OJKG]G:?\ \^,/_?H4?V=I_P#SXP_]^A0!3_X3'PQ_T&H/^^J/^$Q\
M,?\ 0:@_[ZJY_9VG_P#/C#_WZ%']G:?_ ,^,/_?H4 4_^$Q\,?\ 0:@_[ZH_
MX3'PQ_T&H/\ OJKG]G:?_P ^,/\ WZ%']G:?_P ^,/\ WZ% %/\ X3'PQ_T&
MH/\ OJC_ (3'PQ_T&H/^^JN?V=I__/C#_P!^A1_9VG_\^,/_ 'Z% %/_ (3'
MPQ_T&H/^^J/^$Q\,?]!J#_OJKG]G:?\ \^,/_?H4?V=I_P#SXP_]^A0!3_X3
M'PQ_T&H/^^J/^$Q\,?\ 0:@_[ZJY_9VG_P#/C#_WZ%']G:?_ ,^,/_?H4 4_
M^$Q\,?\ 0:@_[ZH_X3'PQ_T&H/\ OJKG]G:?_P ^,/\ WZ%']G:?_P ^,/\
MWZ% %/\ X3'PQ_T&H/\ OJC_ (3'PQ_T&H/^^JN?V=I__/C#_P!^A1_9VG_\
M^,/_ 'Z% %/_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJKG]G:?\ \^,/_?H4?V=I
M_P#SXP_]^A0!3_X3'PQ_T&H/^^J/^$Q\,?\ 0:@_[ZJY_9VG_P#/C#_WZ%']
MG:?_ ,^,/_?H4 4_^$Q\,?\ 0:@_[ZH_X3'PQ_T&H/\ OJKG]G:?_P ^,/\
MWZ%']G:?_P ^,/\ WZ% %/\ X3'PQ_T&H/\ OJC_ (3'PQ_T&H/^^JN?V=I_
M_/C#_P!^A1_9VG_\^,/_ 'Z% %/_ (3'PQ_T&H/^^J/^$Q\,?]!J#_OJKG]G
M:?\ \^,/_?H4?V=I_P#SXP_]^A0!3_X3'PQ_T&H/^^J/^$Q\,?\ 0:@_[ZJY
M_9VG_P#/C#_WZ%']G:?_ ,^,/_?H4 4_^$Q\,?\ 0:@_[ZH_X3'PQ_T&H/\
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
MDO;<J]G<1(,#;&Z("@*[HR\>0&->\44 ?GM^SW\>?^"HG[.'[%>D?L9^(O\
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
M()X__P"Q$TK_ -&-7NE>%^ ?^4@GC_\ [$32O_1C4 >Z4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
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
M1%2I3HP<ZC22W;T2^9JU5UK6]%\-Z3<:]XBU>UL+&TC,EU>WMPL44*#JSNQ
M4>Y-?&?[3_\ P6E^"WPS^T>&?V?])_X3;6$RG]IR%H=,@;UW</<8/9 JD=)*
M^(M>\>?MT?\ !2;QS_8D7]M>*/+F#II&FQ_9]+TT'HS#(BB]/,D.X]-Q-?K7
M#?@]Q!FE#Z[FLE@L,M7*II*W=1;5O6;CY7/R'B7QEX>RJO\ 4<IB\;B7HHTM
M8W[.23OZ04NSL?IEX*_X*5?LT?$[]HS2_P!G'X9ZY<ZU>ZF+@#7+>'98++%$
M\OE([X:5B$;#*NP\88YKZ!K\*-3\)_$O]@S]K#2;3QK'"-;\':OI^I3"PF+Q
M3QD1SE%<A=P9&*'C&=P[5^Z&EZG8:UIEMK.EW*S6MW DUM,AXDC90RL/8@@U
MAXG\$Y3PH\#7RJ;J8>O3NIMWYI)W<KI)6<91LDNC.CPMXXS?BU8^AFT%3Q%"
MI9P2Y>6+5E&S;=XRC*[;ZKR)Z***_*3]9"BBB@ HHHH **** "BBHX+RSNI9
MH+:ZCD>WD$=PB2 F)RH8*P'W3M93@]F![TTFQ-I$E%%%(84444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 =.M?GQ\3_^"Q,'A3]MRWT'0)8[
MSX6Z0SZ1K,T$8=[J9G'F7\3#DK$RA449#H'(YD4KZ)_P5P_;5_X4)\+/^%)>
M -6\OQ=XOM&6>:!\/ING'*O+D<J\F&C0]@)&!!5<_ 'PX_8+^-OQ._9;U_\
M:F\.Z=NTW1KK%KIIA8SZC;1AOM5Q%ZK$=HQCYMLN"#'AOZ \,> \BGDT\YXE
MM&C7_<T5+2[F^7G7G?2#Z6E)Z69_/7BCQ]G\,ZADO#-Y5J'[ZLXZV4%S<C[Q
MMK-=;QBM;H_;G1M8TKQ#I%KK^A:C#>6-];I<6=W;R!XYHG4,CJPX*D$$$=0:
MLU^;7_!'3]NS^RKR#]D;XK:S_HUS(Q\$:A<R?ZJ4G+6!)[,<M'_M;DYW(!^D
MM?E7&?">/X-SVIE^)U2UA+I.#VDOR:Z-->9^L\%<78#C3(:>8X;1O2<>L)K>
M+\NJ?6+3\@HHHKY0^L"BBB@ I&944N[  #))/ %+7C_[?'Q:_P"%*?LA>.O'
M%O=>5=G17L-.<'YA<71%O&R^I4R;_HA/:N[+,!6S3,:."H_%5G&"]9-)?F<.
M:8^CE66UL;6^"E"4WZ13;_(X'X^?\%;?V1O@KYVEZ!XHE\:ZO'D"R\,!98%;
MMON6(BQ[H7(_NU\4?'3_ (+&?M7?&&=] ^%\=KX(T^X?RXH-$0W%_("<!3<.
M,ANF#$D9KF_^":O[#&@?MH^.M=7QWKVI:?X>\-VL$EX^EA%EN)IG81Q!W5@@
M*QR$G:3P!QG-?J9\"_V.?V;/V<($/PF^%&FV-ZJ[6UBXC-Q>OQSF>7<X![JI
M"^PK^@<TAX6^%N,>#EA98W&P2;]I;DBVDU>ZY5HTU:$VNY_/&53\5O%7!+&1
MQ<<#@IMI>SOSR2;3M9\SU33O."?8_,#X(?\ !,W]LS]J;Q1#XP^)6G:GH&FW
M\ROJ'B7QE*YNY4[LL,C>=*Q'0MM4Y'S"OU$_9F_93^#O[)_@9?!7PI\/B-Y0
MIU35[G#W>HR ??EDP,CDX085<G &3GTBBOS+C+Q*XAXR@L/6:I8>.U*%U'3;
MFUO)KILET2/U#@SPRX<X+F\113JXB6]6I9RUWY=+13Z[R>SDPHHHK\]/T4**
M** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHH
MH **** "L;1_B'X&\0>,M:^'FA^++"[UWP[%:RZ[I,%RK3V"7*NUNTJ#E!(L
M;E<]0AQTKX"_X+Y_M[_%?]FOQ-^SC^QS\(_BC<?#R?\ :,^*$?A_Q)\2[$QB
M[\/:+%=6$%V]J\@*0W#_ -H1[9R/W:QN1M)#KRGPJ_X)-? 'Q9^V_P#M'_#G
MP5\6?C#X/U[P]X=\$R^'/B)H?QBUUM<M;RXL]0:6YGFFNW6^WO&A:.X62/&5
M14!H _4&BOF;_@G=XL_:^L?^"<VG7_[1UQ<?$+XQ>%W\4Z3J;2BWTY_$-]IF
MLZC96RABL<4:S);0A9F !5A(Q;)8_+'[2?\ P;V_&S]LGPKJ/Q>_:!_X*G?&
M&/XVWL+W6EOX7UL67@WP_=$92SL],6,3+:QG">:)UFDVB1OG9@0#]0**_,O_
M (-<?VQ?VMOVH_V,_&W@']K[7[_Q%KOPF^(D_A6S\7:G.T]S?Q1P1NT$\[9-
MQ+ [$&4DLR21;LD;F=_P41_;&^*G[4O_  5;^&O_  1%_9S^*&L>#=(N],?Q
M-\?O&'A6^:VU6+2DMWN8]'MKA,26C3HL7F31D/B\@VL )%< _3*BORK_ ."I
M5A>_\$'-"^'O_!0+]B:;Q+#X L_&EKX>^-7PIU#Q;J&IZ;KFEW2OLOXEOIY?
MLU_$\>Q9T*EVG3S-ZA@WU!_P5&_X*E_#W]@O_@FGJ?[=_@N:R\02:YI-BGPQ
MMY6/D:O?:A%OLF.""T2Q%KEU!!:.%P""0: /K2BOSK_9F_X)2ZM\?OV'="^.
M/[2?[0_Q+G_:5\?>$8O$4GQ7M/'VIV5QX6U2[@%Q;VUE:6\Z6L%K:ETB:W6+
MRY0C[AA@%ZO_ (('?\%-_'7_  48_98UK1?V@K:VMOC!\)/$;^%OB5%:QK&M
MY.FX0WXC7B/SA'*K*,+YMO,554*J #[IHHHH *\+\ _\I!/'_P#V(FE?^C&K
MW2O"_ /_ "D$\?\ _8B:5_Z,:@#W2BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ HHHH **** .$_:6^/'AC]FGX)Z]\8_%)5XM*M";2T+X:[NF^6&
M!?=G*@D=!EN@-?DG^QW\"?%W_!0C]KJXU+XDW5Q=6$UY)K?C?4$8INB+Y\E6
M'W#(Y$:@'*IN(^Y7I7_!9+]K!_B]\8X/V>O!>H&70O!EP1J/D-E;O52-KCCK
MY*DQCN':7VK[8_X)J_LG)^RM^SK9V6OZ<(O%7B39J7B5F7YXG*_NK4^T2'!'
M]]I".#7]$95_QJWPWEF4O=Q^/TI]X0M=/RLGSO\ O2@FM#^<LV_XVKXEQRR/
MO9?E[O4[3G>S7G=KD7]V,VGJ;G@K_@G9^Q+X!V'0_P!G'P[.R=&UF%]1.?7_
M $II*]7\->#?"'@RT^P>#_"FFZ5!@#R--L8X$Q]$ %:5%?A&.SC-\S=\9B)U
M?\<Y2_-L_>\#DV3Y6K8/#TZ7^"$8_DD%%%%><>D%%%% !1110 4444 %%%%
M'R3_ ,%3?V"_%G[6OAS0_''PAMK%_%OA[S()+:[N1#]OLGRPC5V&W>D@RH8J
MN)9,L#@'X&\"_M#_ +=7_!/;Q0O@JYN=;T*&)RQ\+>)[1IK"=<\M$CG 4GK)
M RY_O&OVOK$\?_#;X?\ Q5\.2^$?B5X,TW7=,F^_9:I9I,F?[P# [6'9A@CL
M:_6N$O%*6391')<VPD,5@U>T9+WHW;>E[Q=FVTFDUTDC\AXO\*H9UG$L[RC&
M3PF,=KRB_=E9):VM)722;3:?6+=SX^_9Q_X+9_!+Q^8/#_Q^\.3^#-2?"G4[
M;==:=(W3)*CS8<GL5=0.2XK[*\)>,O"/C[08/%/@;Q/I^L:9=+NM[_3+Q)X9
M![.A(-?$'[27_!$#X:^)X[GQ'^S5XOG\.7VUG30-7=KFQD;LB2G,L/U;S![
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
M%"]_[Z6C_A)=7_Z%"]_[Z6MBB@#'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\
MOI:V** ,?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6MBB@#'_P"$EU?_ *%"]_[Z
M6C_A)=7_ .A0O?\ OI:V** ,?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6MBB@#'
M_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI:V** ,?_A)=7_Z%"]_[Z6C_A)=
M7_Z%"]_[Z6MBB@#'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI:V** ,?_A)
M=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6MBB@#'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0
MO?\ OI:V** ,?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6MBB@#'_P"$EU?_ *%"
M]_[Z6C_A)=7_ .A0O?\ OI:V** ,?_A)=7_Z%"]_[Z6O&/V[_P!L&?\ 9;_9
M_P!3\70:-);:]J:G3_#"3NIS=NI_>E>ZQJ#(>Q*JIQN%>^S30VT+W%Q*L<<:
MEG=VP% Y))/05^-?_!0O]H_7/VW?VJX/"7PP\W4]%TR\71/!MI;<B]F>0*]P
MH]99, 'CY$CSCFOTGPNX07%G$D?K"_V:A[]5O:RVBW_>:U_NJ3Z'YGXJ<9/A
M'AJ7U9_[57_=TDM[O>26_NIZ?WG%=37_ ."5/[-&I_'G]H!OC/XST*ZU70O"
M%VM[=-+\PO=28EX49F^_M8&5NOW4!X>OUG_X275_^A0O?^^EKB_V0OV<M!_9
M7^ >B?"+2!%)=6T/GZW>QK_Q^7T@!FE]2,X1<\A$0=J],KE\2>+Y<8\35,13
M?[BG[E)?W5]JW>3][TLNAU>&?!T>#.%Z>'J+]_4]^J_[[7PW[17N]KW?4Q_^
M$EU?_H4+W_OI:/\ A)=7_P"A0O?^^EK8HKX _0C'_P"$EU?_ *%"]_[Z6C_A
M)=7_ .A0O?\ OI:V** ,?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6MBB@#'_P"$
MEU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI:V** ,?_A)=7_Z%"]_[Z6C_A)=7_Z%
M"]_[Z6MBB@#'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI:V** ,?_A)=7_Z
M%"]_[Z6C_A)=7_Z%"]_[Z6MBB@#'_P"$EU?_ *%"]_[Z6OSR_P""QW[(U[J4
MH_:V\">#+FUVK';^-8E0$-T2&\P/^ QN?^N9_O&OTEJGXB\/:)XMT"]\+>)=
M+AO=.U*TDMKZSN$W)/"ZE71AW!!(_&OJ>#>*<9P=G]+,:&J6DX_S0?Q1_5=I
M)/H?*<:<*8/C+AZKEM?1O6$OY)KX9?H^\6UU/B#_ ()$?MPWGQ"^'R_LU>-U
MEO=?\,VN[09C* ]WIJX CY^\\.0OO&5X^1C7VG_PDNK_ /0H7O\ WTM?C9^T
ME\'?B7_P3<_:\MM3\#:C/%#8WHU7P9JS@E;FT+$>3(1@,5!:&1>-P.< .*_6
MW]F7]H+P?^T]\&-'^,/@UPD6H0[;ZR,@9[&[7 E@?W5NAP-RE6QAA7W?BQPM
M@\/7I<293[V#QGO:;1F]6O+FU=NDE*.EDCX'PCXKQN(H5>&<W]W&8/W==Y4U
MHGY\NBOUBXRUNV=-_P )+J__ $*%[_WTM'_"2ZO_ -"A>_\ ?2UL45^-G[28
M_P#PDNK_ /0H7O\ WTM'_"2ZO_T*%[_WTM;%% 'S9_P4A_:HU']G[]EW6KRP
MTVXL-;\1H='T*5Y5#))*I\R48Y!2(.P/0/L!ZU\>?\$6?@)=>)?BWJ?[1.K>
M&9[VP\*0M9Z054;3J$R89LG@F.%CQV,R'M7._P#!7K]H2Z^._P"U./A5X4F>
MZTOP3G2K6"#+>?J,C+]I90.K!PD./6$XZU^DO[%O[/EK^S%^S=X:^%!A0:A!
M:?:==E3!\V_F^>8Y'W@K'RU/]V-:_H+%_P#&OO".&'^'%YD[R[JG9:?^ -)K
MHZDNQ_/&#_XV'XP3Q+]["98K1[.K=Z^O.FT^JIQ[G=_\)+J__0H7O_?2T?\
M"2ZO_P!"A>_]]+6Q17\^G]#F/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM;%%
M ',^))6\6^';_P *ZYX'O)K+4[*6TO(BR_/%(A1U_%217X\?L?\ B?6OV1/^
M"@6C:1XA5T;3/%-QX=UB)CL#I*SVI8]L!F23T^0&OVMK\@O^"Q_PIF^&/[9,
M_C?2XFAMO%VEVVJ0R1<!+E!Y$H!_O9B60^\M?N?@CBJ.-QF8</XA_N\71:^<
M4UIY\LY/_MU'X/XYX6M@L'E_$.'7[S"5D_E)IZ^7-"*_[>9^LO\ PDNK_P#0
MH7O_ 'TM'_"2ZO\ ]"A>_P#?2US_ .S3\58OCA\ /"'Q7256DUO0+>XN]O1;
MG8%G7_@,JNOX5W%?BF+PM;!8JIAZJM.$G%KLXNS_ !1^X83%4<=A*>)HN\)Q
M4D^ZDKK\&8__  DNK_\ 0H7O_?2T?\)+J_\ T*%[_P!]+6Q17.=!C_\ "2ZO
M_P!"A>_]]+1_PDNK_P#0H7O_ 'TM;%% &/\ \)+J_P#T*%[_ -]+7-?&+X\:
M=\$OA?KGQ6\9>&KJ'3M#L'N9BTJ+YC#A(P?[SN50>["N]K\W_P#@N'^U!]JU
M#2/V4_"VH_);;-6\5>6_60@_9K=OHI,I!X.^(]J^NX%X8J\7<34,NC\#?--]
MH1UD_5_"O[S1\?QYQ32X/X7KYB_C2Y8+O4EI%>B^)_W4SYO_ &:?AUXS_;[_
M &T3K'CBSGU&'4-5DUWQ>8,X6T60%H5)/RJQ,<"_W0PQ]VOV5M]>U"U@2UM?
M!-U'%&@2../8%50,  #H .U?,_\ P2"_9@_X4=^SBGQ*\1Z=Y?B#QYY=_+YB
MX>"P /V6/VW*S2G_ *ZJ#]VOK.OJ/%WB>EGO$OU/"66&PB]E!+:ZTFUY72BN
MG+%/J?+>#W"U7(>&/KN+UQ.+?M9M[V>L$_.S<G?7FDT]C'_X275_^A0O?^^E
MKSOXR?LY? C]H&]BU3XP_LY6NMWD,7E1WTR^5<!/[OFQ,KD#L"<#)QC)KURB
MOS/!XW&Y?75;"U94YK:49.+7S33/T_&8'!9C0=#%4HU(/>,HJ2?R::/D+Q+_
M ,$E_P!B_7MQTSX+^)=&+=],\2S-CZ>>TM?+G[?W_!,KPA^S5\)%^,/PDN/%
M5Q9VFIQ0ZU;^()[>86\,N5216ABCP!*43!!_U@YXY_6"N;^,7PQT'XS_  L\
M0?"GQ,@-EK^DS64S[<F(NI"R+_M(VUQ[J*_0N&O%'BW*<WH5<5C:E6BI+GC.
M3G>%_>^*[O:]M=['YUQ/X5\(9OD^(I83!4Z5=Q?)*$5"T[>[\-E:]KZ;7/D#
M_@C!^TG>^+O@'?? ^_LIKV_\&7I:SV2#=]@N&9T'/)VRB4>@#(/2OLO_ (27
M5_\ H4+W_OI:_';]@[XG:]^QK^W59>'_ !TYL86U:?POXKB9L)&'E\K>2?X4
MG2.3/]U#ZU^T-=OC+P_#)^+Y8NA_!Q2]K%K:[^.W_;WO>DD<7@MQ#4SG@Z.$
MK_QL(_923WLO@NO\/N^L68__  DNK_\ 0H7O_?2T?\)+J_\ T*%[_P!]+6Q7
MDO[;G[2VG?LI_L[:W\47DB;53']B\.6TF#Y]_*"(N#]Y4PTC#NL;=\5^9Y=E
M^*S7'TL'AH\U2I)1BO-NR^7=]%J?I^99AA,IR^KC<5+EITXN4GY)7?S[+J]#
MLM!^)UCXI6[?PUIQOQI]_+8WWV2ZCD^SW,1Q)"^#\KJ>JGD9%:'_  DNK_\
M0H7O_?2U^+/[&W[='Q._9/\ B]/XZ^W76LZ/KMUO\7:1/.2;_<Q+3J6Z3J69
M@_?)4\$U^S?PF^+'@+XW_#_3?B=\--?BU+2-4@$EO/&>4/\ %&Z]4=3E64\@
M@BON?$'PYS/@3%0<G[3#S^&HE;WK:QDNCWM_,M5JFE\'X>>).5\>X6:BO9XB
M'Q4V[OEOI*+ZK9/^5Z/1INW_ ,)+J_\ T*%[_P!]+1_PDNK_ /0H7O\ WTM;
M%%?G)^DF/_PDNK_]"A>_]]+1_P )+J__ $*%[_WTM;%?+'_!1C_@HQX>_9,\
M/2?#WX>W%MJ/Q!U&VS;VYP\6D1,.+B<=W(Y2,]?O-\N WL9%D69\29G3P& I
M\]2?W)=92?2*ZO\ 6R/'S[/LKX:RNIF&85.2G#[V^D8KK)]%^EV1?MW?\%--
M _9/L?\ A"?"_AJ'4_'-U"'ATZ[N,PZ?&P^6:X"'<<\%8P5+#G*C&?ST\-^
M_P!LS_@I;\4Y_$<S:EXAFC?9=ZS?9BT[2HS@^6N!LB&.1%&-S<G!Y-=5^P]^
MP]\3OV]OB=>?%+XI:OJ*>%4U%IO$?B.Y<FXU2X)W-!"S?><Y^9^1&#W)53^N
MW@/P#X,^&'A.R\"_#[PU::1I&G0B*SL;*((B*._JS'J6.2Q)))))K]WQ^<\.
M>#F%_L[*81Q&9M?O*LM53;Z+]()K2SFV[(_ L!DO$OC/BO[2S:I+#Y8G^[I1
MT=1+J^C\YM/6Z@DKL^</V./^">OPC_9.AM_$\_@>[\3^,54%_$>I0H!;-CD6
ML62(1_M99SD_, =H]Z\7:=H?Q T63PYX[^$<.M:?+_K;'5;.&XA;ZI("/TKK
M**_!\TS[.<ZS%X_&UY3JO[3>J[*-K**71*R70_?<JX?R7),M6 P5",**^REH
M^[E>[DWU<KM]3XT^-7_!)']E[XG>=J'@?P'K_@G4),LKZ)=K+:ECW:"8L /]
MF-HQ7+?L8_\ !*S4OV</CXWQ:^)-W%XHM=&B#^%8H+0PLMT20;B:-BRJ8U^X
M S?,V[(*#/WI17T,/$GC:.4U<MEC9SI5(\KYK2E9[I3=Y*ZTWM9L^<GX9\#R
MS>EF4<%"%6G+F7+>,6ULW!6B[/7:]T8__"2ZO_T*%[_WTM'_  DNK_\ 0H7O
M_?2UL45\.?=F/_PDNK_]"A>_]]+7S=_P4Q_9<O\ ]J_X'M>>'/ MV/%WA827
MF@RJ%+7$9 \ZT..3O505_P!M$Z M7U317JY)G&-X?S:CF.$E:I3DFO/NGY25
MT_)L\G/<EP/$.45LNQD;TZL6GW79KSB[-/ND?D]_P2'_ &S+OX)?$J7]GKQK
M*[Z#XLO%_LM9)-OV+5#A% ST$P"QD?WUCZ9:OU)_X275_P#H4+W_ +Z6ORR_
MX*]?L?2_ KXP1_'[X?Z>T'AOQ?>-)<BV7:NGZKR[J,?=$N#*O^T) , "OMS_
M ()J?M@0_M8? 2!O$>H*_B_PR(['Q)&6^>?Y?W5WCTE53G_;208QBOV+Q3R;
M!<0970XTRF/[NLDJT5]B>UW\_<D]KJ+UYKGXUX4YSCN'LUQ'!&;R_>T&W1D_
MMPWLO*WOQ6]G):<MCW'_ (275_\ H4+W_OI:/^$EU?\ Z%"]_P"^EK8HK\(/
MWLX[XA?%D_#?P%K7Q!U[PK=I9:'I5Q?W3-(H'EQ1M(WZ+7Y'_P#!.OPGK?Q]
M_;RT7Q?KUC+J4ECJ=SXHU@QC):2-C(KG/_3R\/7UK[W_ ."Q?Q:'PW_8UU#P
MS:7.R\\8:I;Z5%M/S"(,9YC]"D.P_P#74>M>/_\ !!SX2_9O#OCCXY7MMS=W
M<&B:=(1@A8U$\^/4$R6_XH:_>^"/^,9\*<VSIZ5*[]C#O;X;KYSD_P#MP_G_
M (Y_XR?Q9RC)%K3PZ]M/M?XK/Y0BO^W_ #/O+_A)=7_Z%"]_[Z6C_A)=7_Z%
M"]_[Z6MBBOP0_H Q_P#A)=7_ .A0O?\ OI:/^$EU?_H4+W_OI:V** ,?_A)=
M7_Z%"]_[Z6C_ (275_\ H4+W_OI:V** ,?\ X275_P#H4+W_ +Z6C_A)=7_Z
M%"]_[Z6MBB@#'_X275_^A0O?^^EH_P"$EU?_ *%"]_[Z6MBB@#'_ .$EU?\
MZ%"]_P"^EH_X275_^A0O?^^EK8HH Q_^$EU?_H4+W_OI:/\ A)=7_P"A0O?^
M^EK8HH Q_P#A)=7_ .A0O?\ OI:/^$EU?_H4+W_OI:V** ,?_A)=7_Z%"]_[
MZ6C_ (275_\ H4+W_OI:V*"0.IH 2-B\:NR%25!*GJ/:EHHH **** "BBB@
MHHHH **** "BBB@ HHHH \6_;(_X)Z?LA?M]:;X?L_VI?A*FOW/A*[ENO"6L
MVFK7>G:CHEQ(8F>6UNK.6*:)BT$+'#8)B3(.T5\V^$?^"$/PGU?X^_$?7_VD
M?BO\1?B-\-_$UIX=71O"?BGXNZS=G49+".X$BZRNZ/[?$DDD1@2:290-^Y1P
M#]]T4 <1\0OV;?@5\4?V?]2_97\9_##2IOAYJOAXZ%=>$[2#[+:+IWEB,6\2
MP%# JJ $\LJ4VJ5*D CY+^!W_!NM_P $Y?V>X[_0_AP_Q7M?#6J2F34_!</Q
MDUNVTB])&,3V]K<1"X7& 5E+A@,,".*^ZZ* ,3X<?#;X>_![P+I?PQ^%'@C2
MO#?AS1+1;;2-#T2PCMK2SA'1(XHP%09)/ Y))ZFN2_:D_9'_ &>OVS_AH/A/
M^T=\.H/$&DPW\6H:;(+F6VN]+OHCF*\M+J!DFM;A"3MEB=6 )&2"0?2** /!
M/@?_ ,$W_P!F[X)_%R']H2YD\6^._B#9::VG:1XW^*'C*]\0:CI5FPPT%FUW
M(R6BL"V]H51Y-S;V;)KWF:&&YA>WN(EDCD4JZ.N0P/!!!ZBG44 ?)=Q_P11_
M81>TU/P7I>@^-=*^'FMZJ^I:S\'M%^(VJV?A"\NG?S'9M+BG6)8V<!FMTVP,
M5&Z,CBOJ?PWX:\.^#?#UCX1\(:#9:5I.EV<=IIFF:=:I!;VEO&H2.**- %C1
M5 554    "KM% !1110 5X7X!_Y2">/_ /L1-*_]&-7NE>%^ ?\ E()X_P#^
MQ$TK_P!&-0![I1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%%
M!1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%?)7[>?_!4KP!^S
M)%=_#;X5&T\1^.PICEBW[[/2&]9RI^>0?\\5((_B*\!O:R'A_-^)LQC@LNI.
M<W]R7>3V27=^BULCQ,_XBR?AC+I8[,JJITU][?\ +%;MOLO5Z)L]@_:L_;$^
M#?[(?@O_ (2;XE:QYM_<HW]C^'[-@UW?N/[JG[J _>D;"CW)"G"_8O\ V]?A
M'^V5X:8^'W&C^)[.+?JWA:[N \T2YQYL38'G19(&X %20&5<C/YD? G]FG]J
M+_@I3\7;WQMKFN7<]O+=#_A(/&NLJ6@MAU\J)1@.X4_+#'A5!&=BG-6OVI_V
M-/V@O^">'Q+LOB)X1\07TNC17H?P[XUTI3$T,G.(9P"?*DQD8.4D7.,_,J_O
M,/"C@B%#^P*N8+^UI+F3N^5.W\/EVL][-^T:]Y)1]T_ 9^+7',Z_^L%++G_9
M$7RM-+F:O_$YM[K:Z7LTWRMN7O'[/T5\@?\ !/O_ (*D>$OVDXK/X4_&6:TT
M3QV%$=K,"([76SCK%GB.8]XNC'E.NQ?2OV_?VRM"_8[^#,OB"WDAN/%6L![;
MPKILG.^; W3N/^>40(8^I*KQNR/QC%<$\2X/B.&1U:#6(F[1722?VE+9QM=N
M71)WLTT?MF$XXX9QO#4\]I5T\/!7D^L6OLN.ZG>R4>K:M=--_/7_  6'_;L_
MX0[19_V3OA5K&-5U.W!\97UO)S:6KC(LP1T>12"_I&0O/F'&5_P1Q_86?3X8
M/VO/BGI)6::-E\$6%POW(V!5[Y@>[ E8\]BSXY1J^?O^"?/[(?BK]N;X]7GQ
M ^*5Q=W?AG3=0^W^+=4N'._4[EV+BU#]2TARSD?=3/(+)7[%V-C9:990Z;IM
MG%;VUO$L5O;P1A$B11A551P    !P *_5^.<TP/A[PU'@_*)WK35\346[YEK
M'RYEI;I3LM7)L_).!,JQ_B+Q/+C+.(6H0=L-3>RY7I+SY7K?[52[T44B6BBB
MOY\/Z("BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH \-_X* ?LBZ9
M^U[\"+OPK9P1)XFTC?>^%;U\#;<A?F@9CTCE V'L#L;G8!7Y0_"S]H+]L/\
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
M^(&DVI%E<,0B:K"H)%K,>@;^Y(?NDX/RG*Y<'^)E/,:E?)^+'[7"8J3?,_\
MEU*3OIU4+ZJWP.S6ES;C+POJ9;3H9SPDO98O"Q2Y5_R]C%6UZ.=M'?\ B*Z>
MMCZ+^'WQ \'?%3P7IWQ"^'^OP:GH^K6RSV-[;ME9$/J#RK Y!4@%2"" 015C
MQ1XO\)>"-)?7O&GBC3M(L8_]9>ZI>QV\2_5Y" /SK\._AM^T?^U_^SA:ZO\
M ?X;^-M?\.O<:H5U'08;-3<17:Y1E0.ADA<XPWEE2=HSG KLO"_[!_\ P4+_
M &H]63Q+XF\#^)9C-][6O'NI/ P4_P 7^E-YS ]?E5J]#%^"&!RS%3K9AFU*
MCA6[PD[<\H]+W<8WZ7BY7W2UL>=@_'3'YGA84<ORBK6Q5K3BK\D9=;64I6ZV
MDHVV;TN?;/[9W_!7/X,_"[P/=>'_ -F_Q?8^*O%]UNAM[JTC:2RTT8YG:0C9
M.P_A1"P)Y;@8;X\_8>_8>^)W[>WQ.O/BE\4M7U%/"J:BTWB/Q'<N3<:I<$[F
M@A9OO.<_,_(C![DJI]T^#G_!!^XCNK;4_CU\:X6C216N-'\+V;$2#.2OVF;:
M5STXB[]17Z">"/!'A+X;>$K#P)X$T"VTO2-+ME@L+"T3:D2#L/4DY))R2222
M22:SQO&/"'A_DE3+^#YNMB:NDZ\EK%?W6XQ3_NI+E7Q-MFF!X,XQ\0\\IYCQ
ME35'#4M88>+TD_[R4I-?WFWS/X4HH/!'@CPE\-O"5AX$\":!;:7I&EVRP6%A
M:)M2)!V'J2<DDY))))))-:M%%?@=2I4K5'.;;DW=MZMM[MOJV?T#3ITZ--4Z
M:2BE9):));)+HD%%%%06%%%% !1110 4444 <=\?O@CX._:*^$6M_!_QS!FQ
MUBT,:SJ@+VLP^:*=,_Q(X5AV.,'@D5^0'P,^)7Q-_P"":W[9,UGXOLI5_LB_
M;3/%>G0D[;ZP<J?,CSC=E=D\9.,X7. 2*_;"OCW_ (*E_P#!/?7?VI-,T_XK
M_!JPM6\9Z/ ;>[LI9A#_ &K9\LJ!V^7S48G;N*@J[ M\JBOU_P *N+<ORVM7
MR+.6OJ.+34N9VC";5N:_126C?1J,KJS/QSQ8X0S#,J-#/LE3^O81IQY5>4X)
MWY;=7%ZI=4Y1L[I'UKX:\2:%XQ\.V/BSPQJD5[INIVD=U87D#92:&10R.I]"
M"#5VOQC_ &</V[_VJ/V#/%#_  R\3Z9>W>C6%P4U#P1XF22)K7G)\AF&^W)R
M2, QG=DHV<U^G/[*_P"W1\ /VM])4_#SQ*+36XX=]]X8U0K%>P8^\RKG$R#^
M^A(&1NVDXKRN-/##/N$F\3!>VPCUC5AJDGMSI?#Z_"^CZ'K<$^*60<7I86;]
MABUI*E/1N2WY&_BUZ?$NL>I\,_\ !=+XMCQ'\;_"_P ';&YW0>&=$>\NU5NE
MS=N/E(]1%#$P]I3ZU]O?\$[?A(/@Q^QOX'\+7%MY5Y>:2-4U$,,-YUV3.5;W
M576/_@ K\N?&,\_[</\ P47N(+:5KBS\7>/4M(94;)&F12")7_X#:Q;OPK]K
MX((;6!+:VB6..- L:(,!5 P !V%?8^*'_&.<$9-PW'22C[6HO[S7_P E.I]Q
M\9X6?\9)QSG7$LM8N7LJ;_NI_P#R$*?WCJ***_!#^@ HHHH **** "BBB@ H
MHHH **** "BBB@ HHJ.[N[2PM9+Z^N8X884+RS3.%5% R6)/  '<T 2$@#).
M .IKP;XV?%V;Q%K TCPYJ#1:?I\N[[1%(5\Z5?X\C^%>WY^F+OQ,_:-T+Q=I
M$V@_#6^:YM96:*XU>,$1RJ.&6$]74G(+]#CY<YR/$M3^'GQ5^/%^_P //A;I
MQBL%?9KOB"Y)2VA'>$-C+M_>5,GD X!-?RCXI<4YSXE<60\.^%JG+%.^+K1V
MA&+5X772+MS*_O3Y:=U[U_M<FP6'RG!/-<:M?L1[WZ_/IV5WV/MFBBBOZN/B
M@HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "
MBBB@ KPOP#_RD$\?_P#8B:5_Z,:O=*\+\ _\I!/'_P#V(FE?^C&H ]THHHH
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
M^@_LN? ;7?C!K1CDFLK?RM(LY&Q]LOI,K#%ZX+?,V.0BN>U?#?\ P1X_;O\
M^$?U"W_9)^+&LXL;R8_\(5J%S)Q!.QR;%B?X7))C]')3G>H'!?\ !8/]JF;X
MX_'>+X%^"KYKC0?!4[6\J6Y+"\U5OEE; ^]Y?^I4=0PEQPU<&5^$F8Q\1%DN
M+3>'A^\<]E*DGIZ.3]QKH[O5*YZ&:^+V6R\.7G6#:6(G^[C#=QK-:W7517OI
M]5RK1NQR/_!/7]GG7_VVOVM9/%WQ*:74M)TR].O>,KRX&1>2O*72!NV9I<Y'
M]Q),=!7[+@!0%48 Z 5X3_P3N_97A_92_9QTWPOJMDJ>)-9QJ7B>3 W+<NHV
MP9](DVIC.-P=A]ZO=J\#Q3XNAQ5Q+)89_P"S4/W=)+:RWDO\36G]U170^@\*
M>#Y<)\,1>)7^TU_WE5O>[^&+?]U/7^\Y/J%%%%?FI^FA1110 4444 (RJRE6
M ((P0>]?BG^TQX*\0?L%_MZ75]X+MS!#HGB&'7?#*_=22RD?S4A]T WP-Z[&
MK]K:^$/^"Y/[/_\ PD_PMT#]HG1;+==>&;K^SM9=%Y-E<-^Z=CZ)/A1[W!K]
M>\%\^I9;Q4\OQ.M'&1=*2>SEKR7]=8?]OGX[XV9!5S/A-9CAM*^#DJL6MU'3
MGMZ:3_[</E'_ (*!?M2:G^W1^TAINE?#&VN[O1+(0Z5X1TXH5DN;B9D\R3:>
MCR2E4'^S&GO7ZI?LA_L[Z+^RW\ =!^$.EB-[FTM_/UF[C'_'U?28::3/4C=\
MJYY"(H[5\"?\$4/V5O\ A.?B3??M->+-.W:7X5<VF@"1/EFU%T^>0=CY43?]
M]3(0<I7ZC5ZOC#G.!P"PW".5Z8?").7G-K2_=I-MOK*;NKH\KP:R7'9@\3Q?
MFNN(Q;:AY4T];=DVDHKI&"L[,****_##]W,VR\'>$=.U^Z\5Z?X6TV#5+[;]
MNU*&QC6XN-JA5WR ;GPH &2<  5I4454YSJ.\G?IKV6R^1$*<*::BDNNG=[O
MYA1114EA1110 4444 %%%% !1110 4444 %%%% 'F/[2O[('P(_:N\.?V)\6
MO"$<MW%$5T_7;+$5]99_YYRX.5SSL<,A/)4U^87[5W_!,G]HO]D749/B+X N
MKOQ'X:LI#-!XBT-7CN].4=&GB0[H\#_EHA9.,DKG%?L700",$5^A\&^)?$?!
MLE2I2]KA^M*>L;/?E>\'Z:/K%GYUQIX8\-\9Q=6K'V6(6U6&DK].9;37KJND
MD?E#_P $/_A)_P )A^TQJWQ3O+7?;>#]!?R)<?<N[HF)/SA%S7ZO5R_P^^"W
MPJ^%.K:WK7PV\":?HEQXBNDN=9_LZ'RTN944A7*#Y5."<[0,DDG))-=17'X@
M\7+C7B268P@X0Y81C%ZM)+5::?&Y->3V3.SP[X/?!'#4<MG-3GS3E*2NDVW9
M/77X%%/S6X4445\0?<A1110 4444 %%%% !17RI^V!^W;#X=-U\+_@CJBR:@
M-T6IZ_ V5M3T,<!Z-)V+]%[9;E? /A5^U%\?O@+<0&PUF[GTZZ47"Z5KB/)!
M.C'.]-Q#*"<G<A )ZYH _2JBO"/@G^W_ /!WXH>3I'BV;_A%]6?"^3J,P-M*
MW^Q/@ ?1POH,U[M')'-&LL4BLC*"K*<@@]"#0 M%%% $.HZA8:183ZKJEY%;
MVUM"TMQ<3.%2-%&69B>   237Q+\8?C1K_[7/Q&D\-^'KZZL_ .C2C>B.R'4
M6!X=QWW$?*I^XHSPQQ3_ -M_]JVZ^*&MM\#/A3>M+I,=T(M2N[9L_P!I7 ;
MB0CK$K=^C,,] "=3X*?"N73K+3? .C(K75PX-U,!P9#R[GV4#\E%?AWCGXB8
MW@W(*6791KF.-E[.BEK*-[*4TN]VHP_OR3U46CZ+AS*J>/Q+JU_X5-7EV?E^
MK\O4[[X)?"6+QE?H;BT\G1=/"I(L8VA\#Y8EQTXQG'0>A(KZ%T_3M/TFRBTW
M2K&&VMX4VPP01A$1?0 < 57\-^'M-\*Z);Z#I,(2&W3:..6/=CZDGDU>KV_"
M/PSP?AMPXJ$FIXNM:=>INY3_ )4WKRPNTN[O)V<K+GSS-ZF;8OF6D(Z179=_
M5_\  Z!1117ZL>*%%%% !1110 4444 %%%% !1110 4444 %%%% !1110 44
M44 %%%% !1110 4444 %>%^ ?^4@GC__ +$32O\ T8U>Z5X7X!_Y2">/_P#L
M1-*_]&-0![I1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1
M110 4444 %%%% !1110 4444 %%%?(O_  4__P""A%M^S)X3?X1?"S54?Q[K
M5J=T\3!O[$MF&//;_ILP_P!6IZ??/ 4/[7#V09EQ/FU/+\##FG-_**ZRD^D5
MU?R5VTCQ.(N(<LX7RBIF./GRTX+YR?2,5UDWM][LDV<__P %*O\ @I_8_ ^*
M^^!'P!U2*Z\9.C0ZQK41#Q:(",%$[/<^W2/OEOE'S!_P3[_X)T>-/VP/$Q^,
MGQFFO[7P2MZTUU>3RL+K7Y]V72-V^;86SYDW7.54EMQ2?_@FG_P3SU']J[Q.
M_P 9OC+#=+X(L+PL1*["77[H-EHP_P![R@?]9(#DD[%.=S)^M.C:-I/AW2;;
M0- TR"RL;*!(+.SM8A'%#$H"JB*O"J   !P *_<.(N(\H\+,LEP[PX^;%R7[
M^OU3MLO[RZ+:FN\VVOPOASAK./%;-(<1\2+EP<7^XH=&K[OO%]7O4?:"2</A
M;PKX;\$>';+PCX/T.UTS2].MU@L;"RA$<4$:CA54< 5?HHK^=YSG4FYS=V]6
MWNWW9_1L(0IP4(*R6B2V2[(****DH**** "BBB@ HHHH **** "BBB@ HHHH
M **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
MHHHH **** "BBB@ H(!&"*** /R5_P""JO[#-S^S;\15^._PFTY[?P?X@OM[
MQ68*C1=0)+>6,?<C<@O&1PI#)P F6?\ !(/]EBX^/'Q^E^-WC:T>YT'P5<+=
M^9<Y87FJL=T*DG[VSF9CG(81YX>OU0^)GPW\'?%_P%JOPT^(&CQW^CZS:-;W
MUM)W4]&4_P +*0&5ARK*".17-_LO_LY>"_V5O@YIWP>\#RR3P6;R37FH3QA9
M;VXD;+S.!QG[J@=E11VK]TCXQXV?A[4RJK=XS2FJG>DT[R;_ )TER=W=2NVF
M?@\O!C!0\1:>;4K+!ZU73[54U:*7\C;Y^RLXV2:/0:***_"S]X"BBB@ HHHH
M **** "N;^,7PQT'XS_"SQ!\*?$R V6OZ3-93/MR8BZD+(O^TC;7'NHKI**U
MH5ZN&KQK4G:46FFNC3NG\F95Z%'%4)T:L;QDFFGLTU9KYHXK]G7X(^&OV<_@
MOX?^#?A4!K?1;%8YKG9@W5PQ+33M[O(S-CMD#H!7:T456*Q6(QN*GB*\N:<V
MY2;W;;NW\V1A,+A\#A:>&H1Y802C%+9)*R7R04445@= 4444 %%%% !1110
M4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 45S7C3XL>#/
MX:'4M1$UT!Q96N'DS[]E_$BO)?&W[0_B[7DD@TF1=)M,'<8GS*5]3(<8_#'U
MK\AXZ\;^ > W*AB*_ML2M/8TK3FGVD[\L/-2:EVBSW,MX=S/,K2A'EA_-+1?
M+J_EIYGLGBOXB^#O!:XU_6HXY3]VWC^>0^^T<@>YP*^9_P!L+]H[XJ^*+"7P
M!\&?#NH0:1/%MU'6H,>?=*1S%&JDM&G8D@,W(X'WN#\3?'308=471?"\%SXB
MU>YEV0VVG@R>9(3P-P!W$_[(:O:? G[//Q.\1^$+?7?%5K9:)J-P-QTJ6X:5
MHE[;W5<*Q_N@''&3G('YC0\3/I"9PGF>6<.06#?PPJ-JJUW]ZI3D[]&J5NU]
MSV)91POA_P!S6Q;]IU:V_!-?B>6_L;_L26GBZ:#XD?&2*/[%&V^P\..X\R<@
M_?N%ZHGI&>6[X7AOKGQO\+?AY\2/#X\+>-_!]CJ%BB;889H0# ,8S&PPT9QQ
ME2#7C.H?L_?$_36WVNG076WG?:W:C\MVTTG@SXJ^-/AIK+Z7KBW%Q;I)MNK"
M[8[XSZJ3]T^W0_K79A?I$9IDN/I8?C+(JV IS?+[;WI0OWLZ<;I=>64VEK9D
M3X6HXBG*6 Q,:K6O+I?\W^*1Y]\;/^"9VH6OG:Y\"]?^TIRW]AZM*%D'M'-P
MK>P<+[L:\?\ #WQE_:E_9?NSX275=7T:.*3']DZQ9B2#C^XLJD 'KF,C/7-?
MHKX5\7:#XSTM=7T"]66,\.AX>-O[K#L?\BKFH:;IVK6CV&JV$-S XP\-Q$'1
MOJ",&OZ5P./P6:8.GB\)4C4I32<91:<9)[--:-'R-2G4HU'":LUNGN?%_@S_
M (*C>.['9#X]^&VF:BHX:;3+E[5\>I#^8"?8;1]*3]HO_@H=!\1?AU_PAGPH
MT?4](N-15H]8O+W8'CAQ@QPE&.=V2"QP0,@#G(^B/&?[&O[-GCC?)J/PML;.
M9ND^D%K0@^NV(JI/U4UY=KW_  3U^!OP]U*/X@7OB?5[G2=.D\Z?0[XQN+MO
MX(?,55(4MM!X)(R,CJ'CL=A,LP53%XJ:A3IQ<I2>RC%7;?DDKA3ISK5%""NV
M[)>;/#/@!\(+K38H/B)XGM3&]Q%OTBVD'S>6>//([;AD+GJ,MC!4G['_ &<_
M /\ 9&CMXSU&'%S?IMM0PY2'/7_@1&?H!ZUYUX!\,7OQ3\>A+Q0("_G7QC7:
ML<0P B@?='15 Z#Z5]'PPQ6\*6\$:HD:A411@*!P *_E;PHP6+\5?$/%^(>9
MP:P]%NEA(2Z6NN:W]U-M[KVDY--.!]GG=2&2Y7#*Z+]Z7O3?Z?/\DNXZBBBO
MZS/B0HHHH **** "BBB@ HHHH **** "BBB@ HHHH \F_;+_ &U_@#^P?\(U
M^,/[0'B&[@M;S5(-*T#1M'L'O-3UW4YR1!865M'\T]Q(0<*,  %F*J"1\G>'
MO^"P'[6^B_''XKQ?%'_@E[\4SX$\"Z1X?U"73_#EUHE_XCT&VO;>ZE>XO+*'
M46-R'$(<16QDDA6-PZDD >+_ /!U;X:_:(^&<'[,O_!17X.^"9O$N@_L[?%"
M37_%VCQAFC!>?3IK6XG"@[(0]C) TN/W9NUZ;J]E_P""-G[?_P"SW_P4<_:S
M_:$_:0_9_P!:N/[/UOPSX#\[1]6A\B^L)X;74H[B&2/)W>7(0OF(6C;((8YH
M ^R/V7/VJO@C^V1^SOX>_:H^ OBI]2\%>)[.:YTO4[RREM&VPS203!XYE5D*
M2PR(<C'R$@E2"?SS_:!_X.IOV?OAWKFL:E^SW^Q7\8?BW\/_  W>2VVM_%;P
M[HA@T F)MLCV]PZL)8U((WOY2G&5)4AC]O\ A_\ 82^'WA7]C'Q)^P_X:\2W
MVF>%?$D_B2-YM+06\UEI^LZI>7L]G 4/[L)%>R6R2 A@JJXPPQ7K7@_X?>!?
MA]X&T_X8^!O!^FZ3X=TG3DL--T/3[-(K6VM438L*1* JH%&-N,8H \1_X)O?
M\%/?V4O^"IOP4F^-'[+WB>\D73;E;7Q)X;UNV6WU/1+EE+)'<1*S+AU!*21L
M\;[6 8LCJNK^W!^W_P#!']A'PUX=G^(MKK&O^*O'.MIHOP[^'OA2T6YUGQ/J
M3E0(+:)G10JET+S2,D<89=S99%;\U?\ @@S^S=IWP;_X+I_MQG]GW3!IWPD\
M.WZZ(MA9#;90ZK->BX%K$H^7_1O+OH@@_P!4KJO 89@^$/Q+U']MS_@\"\56
M_B"<WN@_LY_#._M?"5FYW1VDRP6MK=3;?N^8;K5;@;NN$B&?D7 !][^#_P#@
MIW)X4^/_ (0_9G_;=_9G\0? _P 2?$<R)\.-0UKQ#I^K:/KUU'MW:>M[92LL
M%]\ZX@E51)D"-Y"5!^F_%?BOPSX$\+ZEXW\::_9Z5H^CV$U[JNJ:A<+#!9VT
M2%Y9I'8A4145F+$X !)K\WO^#M#X=0>)/^"06M?%:SEDMM8^&OCSP_X@T+4K
M9BD]G</>K8;XY%^9#B])R".54]0*^7O^"^/_  4U\>_$?_@W8^!/B73M8:TU
M_P#:)M-&C\926Q\OS(+>R-SJ*)C!"O>QP*1T,;,IX8B@#[ST?_@LQJ_Q!^$>
MJ_M=?!']@3XH>,?@)HQNI)OB997>FVUUJ-E;.RW.HV&D7$Z7=U:1['.XB.1@
MC%8VVD5]8_ ?X[_"3]ISX/\ A_X]_ GQS9>)/"7BC3UO-%UFP<F.>,D@@@@,
MCJP9'C8!D=65@&4@9W[,GP8T#X%_LO\ @']G_3M'ABT[PIX'TS0ULFB&W9;V
MD<!5E(YSM.<]23GK7Y2_\&K7Q0UCX5_'[]KK_@FC/?32>'_A;\5+R\\'6TCL
M?LD0O[RPNHUW?=3-K:.%'&YY#U8D@'[,T444 %>%^ ?^4@GC_P#[$32O_1C5
M[I7A?@'_ )2">/\ _L1-*_\ 1C4 >Z4444 %%%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%?.W[5/_!3;]FW]F!;G
M0)-=_P"$G\41!E7P]H4JN89!VN)N4@YZCYG'78:]/*<ES7/L8L+E]&56H^D5
M>WFWLEYMI+N>7F^=Y3D&#>*S&M&E3763M?R2W;\DFWV+_P"WU^V[X6_8V^%S
M7T#07WB_6(WC\-:,[9!8<&YE Y$*9'N[848R67\W/V-/V4/BA_P4.^/6H>-/
MB)K5])H<>H?;/&?B64_O)W<[OLT1(QYKC@8&V-!G'"JV3X+\(_M!?\%1/VJY
MKK4[\O>:A()M6U(QL;30]/5L!47/"J#M1,Y=CR<EFK]A?@7\$/A]^SM\,=,^
M$_PSTD6NF:;%@NV#+<RG[\\K #?(YY)Z=    !^^9ABL#X,\-_V=@Y*>:XB-
MZDUK[*+[>GV5]IWG+11B?S]EV%Q_C5Q+_:.-BX93AI6IP>GM9+OZ_;?V5:$=
M7*1N>#_!_ACX?^%K#P3X,T2#3=*TNU2VL+&V3:D,2C 4?U)Y)R3DFM*BBOYS
MJ3G5FYS;;;NV]6V]VWW/Z2ITX4H*$$E%*R2T22V278****@L**** "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 **** "BH[J[M+& W
M-[<QPQK]Z25PJC\37%>+OC_X&\-AH-,G.J7(Z):,/+!]Y.GY9KYOB/B_ACA'
M"O$9QBX4(_WI>\_\,5>4GY139UX3 XS'3Y*$')^7ZO9?,[FLR7QGX4@UI/#L
MOB&T%](2%MO.&[/H?0^QY->%>)/C%\1O'MS_ &7ITLEO'*=J66F(VY_8D?,W
MTZ>U07?P4^(]AH1\0SZ(0JG<UND@:95Z[MH[>W4>E?SMFGTD<QS2M-\'9-5Q
ME&CK5JRC)1Y5K*R@I.-UM*;36[IM'U-'A.E1BOK^(C3E+9)K?Y[_ "^\^CZ*
M\/\ AI^T#J.A&/1?&IDN[0?*EWUEA'^U_?'Z_7I7M&EZKINMV,>IZ3>QW%O*
MN8Y8FR#_ /7]J_9_#WQ1X4\2<O\ ;995M5BO?I2LJD/5?:C?:<;I[.SNEX&:
M9-C<IJ\M9>Z]I+9_\'R98HHHK]&/*"BBB@ HHHH **1F55+,P  R23TKRKXI
M_M PV7F:!X#G62;E9M1'*I[1_P!X_P"UT],]1\;QOQ[PUX?90\PS>MRK7E@M
M9U'_ "PCU?=Z1CO)I'?EV6XO-*_LJ$;]WT7FW_3['9>-OBMX.\"!H-4O_-NP
M,K96PW2>V>R_B1[9KQ_QU^T#XM\1QRPV-PNDV(4EQ!)ARO<M)QC\,#US7C'Q
M,^.?A[P9<RP7$LFJ:JYW26Z3<JQ/61SG:>IQ@GIP <UY?8?\+Q_:6\0CPUX8
MTBZU E@38V">7;0#LTC$X R.&D8^@/:OYUH/QJ\<J?MHU/[)RF>UK^UJ0[Z6
MG)-=;TJ<ELI'U4EP_P .OE:]O77_ ("G^2_%KR.[\=?M&>%]!:2S\.#^UKO)
MS(CX@4^[_P ?_ >#ZBL[X9_"+]H7]KC4!+%,UAX?67$^HS(T=G'@\JBCF=QZ
M9..[+G->Y? ?_@F]X1\+^3XA^-=^FMWRX9=(M69;.(^CMPTQ_P"^5Z@AA7TS
M8:?8:591:;I=E#;6T$82"WMXPB1J!@*JC@ >@K]EX$\%^ ^ 5&K@\/[7$+_E
M]5M.=^\=.6'_ &XD[;MG@9EG^99G>-25H_RK1?/J_F>?? ;]ESX6_L_Z>&\,
MZ9]KU9X]MUKEZH:>3/4+VC3_ &5]LEB,UZ/117ZN>*%<S\1/A=X>^(=GB\3R
M+V-<6]]&OS+[-_>7V_+%=-17DYYD64<2994R[,Z,:M&HK2C)77JNJ:W4DTT]
M4TS?#XFOA*RJT9.,EU1\VW5GX^^"7B@2*[02?P2IEH;I,]/]H>QY'MQ7JWA;
M]H+P/JVD"Z\07HTVZ3 F@=&<$^J%0<C]1^IZ[Q#X<T7Q5IDFCZ[8)<02?PL.
M5/\ >4]0?<5Y9=?LM7+:C)]B\61I:%OW7F6Q:0#T." ?KW]J_EW_ %#\6_![
M-9+@6V.R^LW^XK-?NI/J[SI_^!QDN;:<;J,G]C_:61Y[17]H_NZL?M1ZK[G]
MS6G1[HZ>]_:)^&EKGR+V[N<?\\;1AG_OO;7FWQA^+:?$62VT[1;>X@L(/G,<
MX :24\9(4D8 Z<]S77V7[+6B1X_M'Q9=2^ODVZQ_S+5NZ#^S_P" - U"#4T6
M\N9;>021_:IP5W Y!(50#S6.?\._23\1LLEE6;0PV$PU5Q]HHR5^5-.WNSJM
MK2]E)<UK-V96&Q7"655E7H.<YQO:ZZ_-+\BS\&? (\#>$T%Y#MO[W$MX2.5X
M^6/_ ("#^9-==117]1\-\/Y=PKD6'RG 1Y:5&*C'N[;M]Y2=Y2?5ML^-Q>*J
MXW$RKU7>4G?^O39!1117MG.%%%% !1110 4444 %%%% !1110 4444 %%%%
M%;5M.TC7-/N/#^N6-M>6M];20W5C=Q+)'<0L-KHZ-D.A#8((((;!ZU^ O[9'
M_!%KXR_"/]O[XY_M1_\ !%#Q.WPQ\7?!33/#NO6?@'0&=(]6CU"UNY[R&TW,
MR $VO%BZ&"59#& @"HWZA_\ !133?V^?AY^U)\#OVMOV+/@):_%#1O!NC^*M
M!^*'@=/$]KIFH7NF:H^CRQ2V3W;)"TL4NF>9AF!;:(Q_K"R_.O@S]MK]K7Q#
M^V)^TU/^R=_P3M^*$WQ(\5>%_!=IHVF^/X]+TFP\,7,=GJ*+=ZK.;UU,(,GF
M)';><\PB91LSN !]%_\ !#O_ (*:W7_!5S]@S2OVCO$OA>WT?Q5I.M7'ASQK
M96&?LIU.VB@E::#=DK'+#<02A"24,C)N;;N;T7]N?]JGQ?\ !3PYIOP9_9S\
M/6WB;XW?$19K/X;>&9F_<6[* )]9U C)ATZS#K)*Y^^QC@3,DR"O$/\ @GW^
MPC\6O^"+/_!*NZ^#WP$^&+_&OXLM<W&OZKHFEZW::7;:UK]V(8F"7-_)$D5K
M#%% AD<^8Z6Y98][B,?&WP&\5?\ !T_\%/'OB[XSZG_P2/\ AGXM\>^-[S=K
MOC+Q#\2M(:Y2Q1V-KI=LL>N*EK8VX8A(4 W,SRR&261Y" ?J#_P3T_8;\#?\
M$_\ ]G&S^"WAG7+C7M<U#4;C7/'WC*_3%WXFU^[827FHS=<%WP%7)V1HBY8J
M6/Y8?\$R?#MY\(O^#O+]JWPKXO5H+KQ!X!U>[TL-_P MDN[W0=1BQD\_N"3Q
M_=([<?6?["GQ!_X. ?VB/VMM$O?^"BO[,W@WX)?"CPII=YJ3VO@KQ'9WL_B?
M5&C^SV]E<M#J5W(L"":2YP%C4O;H&9P0M:/_  48_P""?7QJTO\ ;T^%7_!8
M#]B#P7!XC^(?P^@DT3XA_#TZC%92>,O#DL<L3K;S3%85O84GE*"5E63;$-X,
M*JX!A_\ !UIXFM]!_P""(7Q1TJ>Y$;:WK/ARRA4X_>,NM6=QM_[YMV/']VOR
MX_X+6_L]^-OA_P#\&YO["FO:GILL<&C01C4E=6W02:OI[7\"N#]T[8G!ST/'
M'2OTZ_;F_9O_ &A_^"Y/B/X<?L]^,_V<_&7P@_9_\)^+H/%/Q*U/XAO9VNL^
M*+B"-TATBQL[2YG>.+$TOFW,S(N65HPYB&_ZM_X*$_L"?";_ (*"?L3>*OV+
MO&D,6D:9K.E1Q^'[^SM5_P"))>VY5[.XB08&V-T0% 5W1EX\@,: /;/#^NZ;
MXHT"Q\2Z-.);/4;.*ZM901\\<B!U/'J"*_$G_@V<T#4/B%_P5\_;S_:-L]TN
ME2>/-0M8[S&$FDOO$&H72X(X)V6V3CIO7U%?7/[/?QY_X*B?LX?L5Z1^QGXB
M_P""?_BKQ1\;_!GAM/"_ACQUINLZ6W@S5X[>+[/9ZS<7TUTDT2")(Y)K=X//
M=T*JG[SY?6_^"./_  3'T+_@EA^R%;_!.Z\3P^(_&NOZK+KWQ&\511L%U+5I
ME4.(RXWF&)%6--V"V&D*JTC* #ZNHHHH \2U3]@CX-:OJ=SJUSXJ\;K)=3O-
M(L7B^Y50S,6( !X&3P.U<-\ O@=X1^&_[;/CCP=H6IZS-:VW@O3Y8Y-0U:2>
M4F24ELNW)'RC [<U]35X7X!_Y2">/_\ L1-*_P#1C4 >N?\ "#Z1_P _-[_X
M%M1_P@^D?\_-[_X%M6Q10!C_ /"#Z1_S\WO_ (%M1_P@^D?\_-[_ .!;5L44
M 8__  @^D?\ /S>_^!;4?\(/I'_/S>_^!;5L44 8_P#P@^D?\_-[_P"!;4?\
M(/I'_/S>_P#@6U;%% &/_P (/I'_ #\WO_@6U'_"#Z1_S\WO_@6U;%% &/\
M\(/I'_/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__  @^
MD?\ /S>_^!;4?\(/I'_/S>_^!;5L44 8_P#P@^D?\_-[_P"!;4?\(/I'_/S>
M_P#@6U;%% &/_P (/I'_ #\WO_@6U'_"#Z1_S\WO_@6U;%% &/\ \(/I'_/S
M>_\ @6U'_"#Z1_S\WO\ X%M6Q7D/[5_[;GP,_8]T2"[^)VKSW&J7\3/I?A_2
MXQ)=W*CC?@D+''GC>Y ."!N((KMR[+<?F^,AA,%2=2I+:,5=O_@+=O9+5G#F
M69Y?D^"GB\;5C3I1WE)V2_X+V2W;T1Z-_P (/I'_ #\WO_@6U>(?M-_MH_LH
M_LL13Z;XT\>7>IZ_&IV>&="N_M%WN["3Y@D Z?ZQE..0&Z5\$?M&_P#!5_\
M:E_:3U!O!'PM2?P?I%[)Y-OI7AMWDU"[W' 1[A0')/3;$$!S@AJV?V9/^"-G
MQ]^,$D/BSXZ7[>!]&F82/;W4?G:I< \G]UG$.>>93N!Y\LU^UX#PGRGAW"QQ
M_&>-C0ANJ4'><O*ZO?S4%+_$C\0Q_BYF_$>*EE_!6"E7GLZLU:$?.SM;R<W'
M_"SC/V@?^"CG[27[3FM'P-\-8=0\.:1?R^1:>'_#UQ-/>WN[@)),H#R$\C9&
MJ*0<%6ZUZ-^RQ_P1:^+7Q)-OXL_:-U>3P=H\F'&CV^V35)U/9LY2WS_M;V'0
MH*^__P!G#]C']GG]E;3!;?";P)#%J#Q[+K7[\B>_N!WW3$?*IP,H@5.^VO4Z
MQS;Q=P^5X-Y;P?A8X6C_ #M)U)>?6S_O2<Y>:9ME'@]B,UQBS/C+%RQ=;_GV
MFU3CY7T;7]V*A'RDCS3X*?LD? S]GKPR?"OPE\+/I4$I5KR9+EFGNW4$!Y9#
M\SGDXR<#)  '%=G_ ,(/I'_/S>_^!;5L45^*XO%XK'8B6(Q,W.<G=RDVVWYM
MZL_;\)A,+@,-'#X:FH4XJRC%))+LDM$8_P#P@^D?\_-[_P"!;4?\(/I'_/S>
M_P#@6U;%%<YT&/\ \(/I'_/S>_\ @6U'_"#Z1_S\WO\ X%M6Q10!C_\ "#Z1
M_P _-[_X%M1_P@^D?\_-[_X%M6Q10!C_ /"#Z1_S\WO_ (%M1_P@^D?\_-[_
M .!;5L44 8__  @^D?\ /S>_^!;4?\(/I'_/S>_^!;5L44 8_P#P@^D?\_-[
M_P"!;4?\(/I'_/S>_P#@6U;%% &/_P (/I'_ #\WO_@6U'_"#Z1_S\WO_@6U
M;%% &/\ \(/I'_/S>_\ @6U'_"#Z1_S\WO\ X%M6Q10!C_\ "#Z1_P _-[_X
M%M1_P@^D?\_-[_X%M6Q10!C_ /"#Z1_S\WO_ (%M1_P@^D?\_-[_ .!;5L44
M 8__  @^D?\ /S>_^!;4?\(/I'_/S>_^!;5L44 8_P#P@^D?\_-[_P"!;4?\
M(/I'_/S>_P#@6U;%% &/_P (/I'_ #\WO_@6U'_"#Z1_S\WO_@6U;%% &/\
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
MZYR!V5?TS2JTJ]*-2G)2C)733NFGLTUHT^Y\A*,HMIJS,?\ X0?2/^?F]_\
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
M;RQ=2-."ZWO_ )+[V>SZI\;/AII-ZMA/XECD8MAGMHVE1/<LH(_+-;VB^)-
M\1P?:="UBWNTQD^1*&*_4=1^->1:3^R]KMQ9-+K'B2WMIRO[N&&$R@'_ &FR
MN/PS6%K7P3^)WA"?[=IUF]R(SE;G2Y27'_ >'_(5YZ\5_'7(_P#A0SKAKGPD
MM4J7-[2"_O6E5:MN^>G#U2VU_L3AS$?NL/B[37\UK/TT7X-GT/17SWH7QV^)
M7A>;[%J=R+Q8SAX-1B.]?^!<-GZYK;_X:DU[_H5;/_O^]?19=]*#POQ6'YL7
M.KAZBT<)TI-I]=8<RMZV?=(Y:O!^<0G:"C)=TU^MCVFBO%O^&I->_P"A5L_^
M_P"]:GA[]J#3)Y!#XG\/2VX)XFM'\P#ZJ<$?@3]*]O ?2+\(\?BHT%C^1O9S
MIU(Q^<G&R]6TO,YZG"N>4H.7LK^C3?W7/5:*R?#GCKPCXL0'P_K]O<,1GR0^
MV0?5&PP_*K^I:GIVCV;ZAJM]%;0(/GEFD"J/Q-?KV%SC*<=@/KV&Q$)T;7YX
MSBX66[YD^6RZZGA3H5Z=7V<XM2[-._W$]%>6>-OVE=-L]]CX(L?M4G3[9<J5
MC'NJ\%OQQ^-< FL?%_QO=2:W87.LW;(<-)9!PB?[("8 ^@K\*XG^D?P=E.8+
M+\EI5,QK7U5!7BDM[3L^=K?W%*-MY(^CP?"F/KTO:XB2I1_O;_=T^>OD?25%
M?.)\8_&O0/\ CZU/7(=O7[9$[?\ HP&BX^.?Q/N;"33I_$9Q(NUI$MXTD ]F
M500??K7@/Z5O!^&C*.-R[%4JB3M%QA9OM=SBUZ\IU?ZEXZ;O3JP:]7_D_P S
MU3XH?&[1_!*OI&C;+W5,8*!LQP'U<CJ?]D<^N._E/A[PKXZ^,_B&34+BXDD!
M8?:M0N!^[B']T#IGT4?H.:YC0O&OP-TR\:_^*/Q6L+*"&0^996KO<7,K \J5
MA5RG/7//MWKI=5_X*-_L[^#--&D>!?#.LZ@D*8MX[>S2WA/U:1@PR>^PGO7B
MY9P=QWX]8^GG'%SEA,JB^:EA8MJ4UTD]G9K>I)<S3?LXPC)2.BMC\MX:I.A@
M;3K/24WLOZ[+3NVSVOP3\)/!O@=4FL=/%Q=J.;VY 9\_[/9/PY]S4OQ ^+/P
MU^%=A_:7Q"\:6&E1E28TN9QYD@_V(QEW_P" @U\0_$[_ (*$?'GXC2MI'@PP
M^&K29MD<.E*9+I\] 9F&<^Z*AK/^'_[%7[2OQIO_ /A(O$>G3Z7#=-OFU7Q/
M.XFE]]AS*QQT+  ^M?U1DF09+PW@(X+*\/"C2CM&"27J[;M]6[M]6?&8C$XC
M%U74K2<I/JSZDM_^"A'[+L[E9?&5[" <;I-&N"#[_*A-:EG^W'^RQ?$"'XLP
M+G_GMIMW'_Z%$*\B'_!*W1S:1JWQHN5GV#S6&AJ4+=\#S00/QK/O/^"5>IH#
M]@^-L$GIYWA]D_E.U>N8'T':_%3X!?'RVE\">'_B'I>I7,\1DAMX9\3*5'WT
M5@"2/;MG/&:\OAE\5?!+QZ0P_>0-AUY$=U"3_(_H1ZBO /C9^Q=\9OV?+>+Q
MQI=]_:VGVK"635=&#I+8NIR'=?O(.AW@D ]2.,]/\._VRK;Q]H,'@+X^RA;V
MW&W2?%J1\J?[ETJCE3P/,49!P2#RU?A'C3X88KBO"TL^R%^SS7!^]3E'1U%%
M\W(W_,GK!O2[<7I)M?2</YQ#!3>&Q.M&IHT^E^OIW^_H?;7A?Q-I7B_1(->T
M>;?#,O*G[R-W5AV(J76M?T7P[9F_US5(+6$?QS2 9/H/4^PKYJ\(?$;Q3X(@
MN(O#.J1K%>("6&V5/42(>5.1T/((/?BM+1O /Q-^*5Z-5GCN)4DZZAJ,A"8_
MV2>2/90:_.LN^DSFV;950R_+,GJXC-K<M2"35.,D[.5E>=NKBU!0O9STN>K5
MX1H4*TJM:NHT.CZM=NWSUOV.[\5?M-Z59R_9O".CM>8;YKFZ)C0C_97[Q^IQ
M]#7<>!?'VA>/])&I:1-MD7 N;5S\\+>A]1Z'H?S%<;HW[,GAJWTR2+6]8N+B
M[DCPDL.$2%O4+R6_$\^@KSO5=(\;_!/Q8EQ%,8W!)M[I 3%<IW!'?W4\C\C6
M-7Q!\</#G,*6><:8:-7+Z]HSA246\/KIK&]I:[2G.,_A<U*UJCE?#N:TGALO
MFU5CJG*_O??^B5M[6/I&BN7^&GQ2T;XB:?B(K;W\2YN;-FY'^TO]Y?Y=^V>H
M) &2:_JK(<_R?B;*:6999656C45XR7XIK=-;.+LT]&KGQ>)PU?!UW1K1M)=
MJ.\O+33[5[V^N8X88EW22RN%51ZDGI7(>,OCIX(\)[K:VNO[1NUX\BS8%0?]
MI^@_#)]J\C\0^,?'WQBUI-,@@DD5FS;Z=:@^6G^TWK[LW3V%?D?'WCSPGPDW
M@<L?U['R?+&E2?,E)Z)3E%-)WTY(\TV]++=>YEG#6-QW[RM^[IK5REIIY)_F
M[(Z_XC_M%L_F:/X R!RKZE(G)_ZYJ>G^\?P'>N/T#X3_ !%\=V[Z_!9,R3-N
M^TWTVTS$]6&[EOKTKK-)\#?"CX/VT?B'XT^-='M[G;OBM;Z]1(U^BL<RM]!C
MV/6LOQ3_ ,%%OV;O#;O;Z5?ZMK)3@'3-,*H3]9C'Q[C/XU^>Y=X.<:>*F)6<
M^(V*G3B[NEA:34?9I][\T8/NO>F].>::Y3U*N?9?DL/895!-]9RUO^3?X+LB
MM_PSI\2O^?:S_P# L?X4J?LY?$EW"M#9*">6:[X'Y"N&\2?\%3[%"T7A#X/R
MR?W9]2U4)CZHB'_T*O.?&?\ P4=_:%\3VSV.A_V1H2/P)=.L2\P'INF9QGW"
M@^E?0KZ*GA@G?GQ'_@R/_P K.7_73..T?N?^9](77P$\/^$-,.N_$WXEV&EV
MB?ZR1G6-![>9*0,_A7FWC?\ :2_8Z\$JVB^'[/7/%,[,$DOK-S&D0S\S*S[
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
M^%'PO\';3X4^'6AZ:R]'LM*BC;/KN502?>N@HH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@#F?BE\'
MOAU\9= /AWXA>&H+Z( ^1,1MFMV/\4<@^9#TZ<'&"".*S_@W^SU\*O@5IALO
M /AQ8[B1-MSJET1)=7'^])@8'^RH5?:NVHH **** "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 _.G_ (+Y_M[_ !7_ &:_$W[./['/
MPC^*-Q\/)_VC/BA'X?\ $GQ+L3&+OP]HL5U807;VKR I#</_ &A'MG(_=K&Y
M&TD.O*?"K_@DU\ ?%G[;_P"T?\.?!7Q9^,/@_7O#WAWP3+X<^(FA_&+76URU
MO+BSU!I;F>::[=;[>\:%H[A9(\95%0&OH3_@LS_P21^&/_!7?]F*+X1^)/$C
M>&_%_AJ]?4O /BU(/-&GW;)L>&9 07MYE"AU4A@4C<9*;6_)K]@C_@J]^TQ_
MP1!_;S\:_LL?\%I-'U776\16/A_2KGXI:??C49-/L[**X6PN'*+OOK=X;DEG
M;%TJQC=&[@I0!^SW_!++5?VE]1_8>\*V/[8?C6;Q'\2=$UCQ#H7BG7[BQCMV
MU"73M=O[".<)&B+M:&VB*N!\ZD.2Q8L?SM_X.Y?%O[<GP$_9"T/XN_#7]M77
M- \(>(OB'#X8U'P+X1TE=+\VWGL;RY22>_21KF8@V;HZ!TAD$J_N@5);]?\
MP%X]\$_%/P3I7Q(^&_BNPUW0-=L(K[1]8TNZ6:WO+:10R2QNI(964@@BORH_
MX//?^44'A?\ [+AI'_ILU:@#]7_"K,_A?37=B2;"$DD\D[!7YN?\%$?VQOBI
M^U+_ ,%6_AK_ ,$1?V<_BAK'@W2+O3'\3?'[QAX5OFMM5BTI+=[F/1[:X3$E
MHTZ+%YDT9#XO(-K "17_ $B\)?\ (JZ9_P!@^'_T 5^(W_!*R^NO'_\ P=T?
MM:^(?%#M/=:3X*UV*R=NJ);ZEH5E$._2#Y?\XH ]U_X*E6%[_P $'-"^'O\
MP4"_8FF\2P^ +/QI:^'OC5\*=0\6ZAJ>FZYI=TK[+^);Z>7[-?Q/'L6="I=I
MT\S>H8-]0?\ !4;_ (*E_#W]@O\ X)IZG^W?X+FLO$$FN:38I\,;>5CY&KWV
MH1;[)C@@M$L1:Y=006CA< @D&O)O^#J.UTZX_P""&_Q@FO3^]@OO#;V?RYS)
M_P )!IZGZ?(S\_AWK\D_^"R/Q(\8Z[_P;H_L$:!J]U+]FNK>X,T4CYW?8+0V
MEH?H()& XX#8^H!^LO[,W_!*75OC]^P[H7QQ_:3_ &A_B7/^TKX^\(Q>(I/B
MO:>/M3LKCPMJEW +BWMK*TMYTM8+6U+I$UNL7ERA'W## +U?_! [_@IOXZ_X
M*,?LL:UHO[05M;6WQ@^$GB-_"WQ*BM8UC6\G3<(;\1KQ'YPCE5E&%\VWF*JJ
M%5'V_HFCV/A[1K30-+B\NVL;6.WMT_NQHH51^0%?B'_P;?:O<:/_ ,%P/V^_
M V@NYT2?QQK%QQ\JEK?Q+?QP$KZ[)Y<>G- '[C4444 %>%^ ?^4@GC__ +$3
M2O\ T8U3ZI^U+\9;#4[FPMOV+?&]U'!.\<=S%<VVV90Q <9;H0,CZUX=)XR\
M8^/OVGO&/C35_!VO^#+V+0=+C;2[B\,=RBD3J)?,@8%0<X&#_%ZXKYKC#B?!
M\&<-XC.L7"4Z=%)N,%>3O)15EHMVKMM)*[;LCJP6$JX_%0P]-I.7?1'V]17R
M#=_%#]J;PD/M7PW^+5MJ4<8^31O&.F+=1$#L)XC'/D^KR-]:X[XG_P#!4;]J
M7X>^%;K1+[]E?34\1.NRQUBWUF2:Q![O]G*!WQZ"4CGD\8*\.>->"_%1PI\/
MYC1=:6]&K-4*L?6-5Q4K=72E47FSR^(:V-X6IRJ9CA:J@OM4X.K&5NWL^9J_
M3GC#Y'V-\7_C9\*_@)X/F\=_%SQM9:)IL60LMU)\\SXSY<48R\KD?PH"?:OS
M:_:U_P""SWQ2^(UY+X0_9CM9_">BA]IUNXC1]2O!_LCYDMU/HNY^GS+DK7@^
MIZ!^U+^VG\7!?_%+Q9NU";.[5/%FI1V-E91$\K$KE551_P \XE)/7'4U][_L
M:?L9?LH?LU);>+[Z]TOQIXNB <:[?ZA:F&T?KFVAWLL9''SL6?N&4'%?U+2R
MSPS\,,)'&9S7ACL8U>-.+3IQ];Z6_O3UZQIZ'X%B,W\2_$[%2PF449Y?@D[2
MJS3C4DO+9W_NPLNDJEG8^)_#G[%O_!0[]K'4HO$WB#P5XKU 3?,NM>.-1>!0
MC?Q*;M@[+T_U:MQTKZ"^$_\ P0;\07'EWOQP^.5K:C@RZ=X7L6F8CT\^?:%/
M_;)A7W%J?[2'@W36:);*XN74C*VC*X.>X;(4_@:YO6_VH]8F!C\.^%[:##G$
MMY,TNY?]U=NT_B:_%>-_IL9%D5.6'AF.'PZCHH8>/MIKR=E-1?JH?(^VX?\
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
M%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\
MOI: -BBL?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z
M6C_A)=7_ .A0O?\ OI: -BBL?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK'
M_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI: -BBL?_A)=7_Z%"]_[Z6C_A)=
M7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI: -BBL?_A)
M=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0
MO?\ OI: -BBL?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"
M]_[Z6C_A)=7_ .A0O?\ OI: -BBL?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@#
M8HK'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI: -BBL?_A)=7_Z%"]_[Z6C
M_A)=7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI: -BBL
M?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z6C_A)=7_
M .A0O?\ OI: -BBL?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK'_P"$EU?_
M *%"]_[Z6C_A)=7_ .A0O?\ OI: -BBL?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[
MZ6@#8HK'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI: -BBL?_A)=7_Z%"]_
M[Z6C_A)=7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI:
M-BBL?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z6C_A
M)=7_ .A0O?\ OI: -BBL?_A)=7_Z%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK'_P"$
MEU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI: -BBL?_A)=7_Z%"]_[Z6C_A)=7_Z%
M"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\ OI: -BBL?_A)=7_Z
M%"]_[Z6C_A)=7_Z%"]_[Z6@#8HK'_P"$EU?_ *%"]_[Z6C_A)=7_ .A0O?\
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
M^MD@ "@*HP!T HHHK]9V/$"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 *\+\ _\I!/'_P#V(FE?
M^C&KW2O"_ /_ "D$\?\ _8B:5_Z,:@#W2BBB@ 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@ KPOP#_ ,I!/'__ &(FE?\ HQJ]
MTKPOP#_RD$\?_P#8B:5_Z,:@#W2BBB@ 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 **** "BBN+^.W[1WP!_9@\%'XC?M%_&;PSX(T/SA"FI^*-9ALHI92,B*,RL
M/,D.#A%RQ[ T =I17S%^QI_P6 _8$_;=L-/L?AA^T-X9L/%.HSW,=OX%US7K
M:WUAUBN98%=+=GW2K((Q(ICW?+(N<'('T[0 45X%XP_X*F?\$[/ 'Q4N?@MX
MR_;%\"Z?XBL=133]2MI]:7R-/O&.%MKFY'[BVF)X\J617SQC->^1R1S1K+%(
MK(R@JRG((/0@T +1110 5X7X!_Y2">/_ /L1-*_]&-7NE>%^ ?\ E()X_P#^
MQ$TK_P!&-0![I1110 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 %%%% !7XT>-OV
MJ/AYX0_X.W-1\%?MVZI:6GAK2OA79:3^SU<^)0JZ?INJWEOI]R]S$9/W<<TT
MHU.V$_#%UCBSG;C]EZ^0O^"M7_!&+]E;_@KE\,;;0OB[;S>'O&VAV\B>$/B'
MH\"M>Z;N.XPRH2%NK8M\QA8@@EBCQLQ8@'@'AK_@GKX!_P""B_\ P0GA^$VH
M^!-*U#QI8WOBW4/AOJ]W'''<:=K,/B34Y;<1W##,*2NBPR<[3'(V0<"NW_X.
M7?\ @H1XU_X)]?\ !,S6-:^$6O3:7XW^(FLP^$O#>J6LFV?31/%++=7<9'*N
MMM#*B.""DDT;#E:_-/\ X)@?\%8_VUO^"(NC^"O@7_P4!^']_P")/V7_ !7K
M6IV/@'XCV-D))-%:'4KF"Y>-X\F:,3QSR26<O^D*K>9$67"2>O\ _!Z[JL/B
M_P#9/_9[\;^$]32_\/WWBS49[?4+.7?;W"S6$,EO(K X8-&)&4\Y&2#Z@'Z9
M_L0?\$^?@5\*O^"6G@_]ACQ1\/+"\\/ZO\.8;3QW93VX/]K7U[:JVH7,I(R9
M))I)&#')3" $;%Q\E?\ !KI^UY\3?&/PN^+O_!.7XY^+;G6_$?[-/CB30-'U
M2_D+33:*9[FWA@)))?R)K.= <_+') @P$%?JA:FU-K&;$Q^3Y8\GRL;=N.,8
MXQCIBOPZ_P"#<!+[6?\ @N3^WQXITB+9H[>-=:#I$,HLDOB:]> 9_P!Q)<>H
MSZ4 ?N31110 5X7X!_Y2">/_ /L1-*_]&-4^J?L$?!K5]3N=6N?%7C=9+J=Y
MI%B\7W*J&9BQ  / R>!VKY_UG_@GC\%/C#^U?XG^#WB;Q?XX@TK0_#=AJ-G-
M8^*9%N6EE+*P>1U8LN.@[4 ?=M%?'/\ PY"_9-_Z*-\4_P#PMC_\:H_X<A?L
MF_\ 11OBG_X6Q_\ C5 'V-17QS_PY"_9-_Z*-\4__"V/_P :H_X<A?LF_P#1
M1OBG_P"%L?\ XU0!]C45\<_\.0OV3?\ HHWQ3_\ "V/_ ,:H_P"'(7[)O_11
MOBG_ .%L?_C5 'V-17QS_P .0OV3?^BC?%/_ ,+8_P#QJC_AR%^R;_T4;XI_
M^%L?_C5 'V-17QS_ ,.0OV3?^BC?%/\ \+8__&J/^'(7[)O_ $4;XI_^%L?_
M (U0!]C45\<_\.0OV3?^BC?%/_PMC_\ &J/^'(7[)O\ T4;XI_\ A;'_ .-4
M ?8U%?'/_#D+]DW_ **-\4__  MC_P#&J/\ AR%^R;_T4;XI_P#A;'_XU0!]
MC45\<_\ #D+]DW_HHWQ3_P#"V/\ \:H_X<A?LF_]%&^*?_A;'_XU0!]C45\<
M_P##D+]DW_HHWQ3_ /"V/_QJC_AR%^R;_P!%&^*?_A;'_P"-4 ?8U%?'/_#D
M+]DW_HHWQ3_\+8__ !JC_AR%^R;_ -%&^*?_ (6Q_P#C5 'V-17QS_PY"_9-
M_P"BC?%/_P +8_\ QJC_ (<A?LF_]%&^*?\ X6Q_^-4 ?8U%?'/_  Y"_9-_
MZ*-\4_\ PMC_ /&J/^'(7[)O_11OBG_X6Q_^-4 ?8U%?'/\ PY"_9-_Z*-\4
M_P#PMC_\:KA?VFO^"0G[-/PH^ GBGXB^&O'_ ,29+_2-+:>U2]\8L\3,& ^9
M1&"1SZB@#] **^)O!/\ P18_96U[P9I&N7OQ$^*"S7NF6\\JQ>-"%#/&K' \
MK@9-:?\ 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;'_XU1_PY"_9-_Z*-\4__"V/_P :H ^QJ*^.
M?^'(7[)O_11OBG_X6Q_^-4?\.0OV3?\ HHWQ3_\ "V/_ ,:H ^QJ*^.?^'(7
M[)O_ $4;XI_^%L?_ (U1_P .0OV3?^BC?%/_ ,+8_P#QJ@#[&HKXY_X<A?LF
M_P#11OBG_P"%L?\ XU1_PY"_9-_Z*-\4_P#PMC_\:H ^QJ*_.OPM_P $FOV<
MM7_:N\5?!VZ\>_$8:5H_ABQO[65/%["=I978,&?R\%>.!@8KT[_AR%^R;_T4
M;XI_^%L?_C5 'V-17QS_ ,.0OV3?^BC?%/\ \+8__&J/^'(7[)O_ $4;XI_^
M%L?_ (U0!]C45\<_\.0OV3?^BC?%/_PMC_\ &J/^'(7[)O\ T4;XI_\ A;'_
M .-4 ?8U%?'/_#D+]DW_ **-\4__  MC_P#&J/\ AR%^R;_T4;XI_P#A;'_X
MU0!]C45\<_\ #D+]DW_HHWQ3_P#"V/\ \:H_X<A?LF_]%&^*?_A;'_XU0!]C
M45\<_P##D+]DW_HHWQ3_ /"V/_QJC_AR%^R;_P!%&^*?_A;'_P"-4 ?8U%?'
M/_#D+]DW_HHWQ3_\+8__ !JC_AR%^R;_ -%&^*?_ (6Q_P#C5 'V-17QS_PY
M"_9-_P"BC?%/_P +8_\ QJC_ (<A?LF_]%&^*?\ X6Q_^-4 ?8U%?'/_  Y"
M_9-_Z*-\4_\ PMC_ /&J/^'(7[)O_11OBG_X6Q_^-4 ?8U%?'/\ PY"_9-_Z
M*-\4_P#PMC_\:H_X<A?LF_\ 11OBG_X6Q_\ C5 'V-17QS_PY"_9-_Z*-\4_
M_"V/_P :H_X<A?LF_P#11OBG_P"%L?\ XU0!]C45\<_\.0OV3?\ HHWQ3_\
M"V/_ ,:H_P"'(7[)O_11OBG_ .%L?_C5 'V-17QS_P .0OV3?^BC?%/_ ,+8
M_P#QJC_AR%^R;_T4;XI_^%L?_C5 'V-17Y__ +37_!(3]FGX4? 3Q3\1?#7C
M_P"),E_I&EM/:I>^,6>)F# ?,HC!(Y]173^"?^"+'[*VO>#-(UR]^(GQ06:]
MTRWGE6+QH0H9XU8X'E<#)H ^V:*^.?\ 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*^.?\ AR%^R;_T4;XI_P#A;'_XU1_PY"_9-_Z*-\4__"V/_P :
MH ^QJ*^.?^'(7[)O_11OBG_X6Q_^-4?\.0OV3?\ HHWQ3_\ "V/_ ,:H ^QJ
M*^.?^'(7[)O_ $4;XI_^%L?_ (U1_P .0OV3?^BC?%/_ ,+8_P#QJ@#[&HKX
MY_X<A?LF_P#11OBG_P"%L?\ XU1_PY"_9-_Z*-\4_P#PMC_\:H ^QJ*^.?\
MAR%^R;_T4;XI_P#A;'_XU1_PY"_9-_Z*-\4__"V/_P :H ^QJ*^.?^'(7[)O
M_11OBG_X6Q_^-4?\.0OV3?\ HHWQ3_\ "V/_ ,:H ^QJ*^.?^'(7[)O_ $4;
MXI_^%L?_ (U1_P .0OV3?^BC?%/_ ,+8_P#QJ@#[&HKXY_X<A?LF_P#11OBG
M_P"%L?\ XU1_PY"_9-_Z*-\4_P#PMC_\:H ^QJ*^.?\ AR%^R;_T4;XI_P#A
M;'_XU7F/A;_@DU^SEJ_[5WBKX.W7CWXC#2M'\,6-_:RIXO83M+*[!@S^7@KQ
MP,#% 'Z*45\<_P##D+]DW_HHWQ3_ /"V/_QJC_AR%^R;_P!%&^*?_A;'_P"-
M4 ?8U%?'/_#D+]DW_HHWQ3_\+8__ !JC_AR%^R;_ -%&^*?_ (6Q_P#C5 'V
M-17QS_PY"_9-_P"BC?%/_P +8_\ QJC_ (<A?LF_]%&^*?\ X6Q_^-4 ?8U%
M?'/_  Y"_9-_Z*-\4_\ PMC_ /&J/^'(7[)O_11OBG_X6Q_^-4 ?8U%?'/\
MPY"_9-_Z*-\4_P#PMC_\:H_X<A?LF_\ 11OBG_X6Q_\ C5 'V-17QS_PY"_9
M-_Z*-\4__"V/_P :H_X<A?LF_P#11OBG_P"%L?\ XU0!]C45\<_\.0OV3?\
MHHWQ3_\ "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?%/\
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%>$?\$[$N+7]G^YTJ?4[N[33_%NJ6EO+>W+2R"*
M*;8@+-R< "O=Z "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *^)
M?#__  5R^#'P8_X*.?&S]A_]M'XI6?P_%CK6C:E\']>\:*FF:5K&E7'A_3&N
MK6WO952&22+4/M;'>^YC<[$)\HJOVU6;XK\&^$/'>D/X?\<>%--UFPD(,EEJ
MMC'<0L1T)20%3^5 'X7_ +4OQ@^$/[6O_!#KPQ_P3"_9RAT[XJ?';XB?$"_?
MPMX/\+3QW]SX=CB\7WEU)J]ZT9*Z?;_9=\8FE*!ENLC,8D(^T/\ @IS_ ,$>
M/$_[5'_!#SPM^P3X3U2WU;X@_"'P7X??P5?.^R/4M5TC3ELWCW/C;]IA-Q&I
M8@*\R,V IK[#_9(_9$^#'[%7P@M?@O\ !/13!IMM>7ER]Y<VULMU<O<7<UT1
M*\$42N$:=D3Y?EC5%YQD^GT ? W[+/\ P6M_91\/_P#!.+0?BC^T)\3['0_B
M?X+\+0:)XX^$NI7(@\4OXGM81!)IT6F/_I+S7$Z9B C(*R@D@*Y7 _X-O_\
M@G3\7/V,?V:/&7Q__:A\./I/Q9^/7BIO$_BK2)TVS:7:;I7M+29>JS!KBYF=
M2<H;@1L T;5]_P _PZ^'UUXPB^(5SX%T:37X8O*AUR32XC>1QXQL68KO"X)&
M <<ULT %%%% !7GWASX,ZGHG[27B3XXRZU ]IKGAZSTZ*Q6-A)$T+$ER>A!S
M7H-% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4
M444 %%%% !7'?M!?#.^^,OP7\1?"_3-3BLKC6].:VBNIT+)&20<D#DCBNQHH
M S_"6C2^'/"FF>'IYED>PT^&W>1!@.4C521['%:%%% !1110 4444 %%%% !
M1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% 'GWASX,ZGHG[2
M7B3XXRZU ]IKGAZSTZ*Q6-A)$T+$ER>A!S7H-%% !1110 4444 %%%% !111
M0 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% ''?M!?#.^^,OP7\1
M?"_3-3BLKC6].:VBNIT+)&20<D#DCBNA\):-+X<\*:9X>GF61[#3X;=Y$& Y
M2-5)'L<5H44 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M%%%% !1110 4444 %>?>'/@SJ>B?M)>)/CC+K4#VFN>'K/3HK%8V$D30L27)
MZ$'->@T4 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% 'GW[-?P9U/X&> KWPAJNM07\EUXAOM16:WC9559Y2X
M3![@'!KT&BB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@
M HHHH Y;XQ>+OB/X+\#W&L?";X22^-=>+>78:(-;M].A9RK$//<3D^5$" "R
M)*X+#$;#)'P9_P $'O\ @JU^U?\ \%,_BY^TAHG[3WP[\/>#O^%6>(](T?1_
M"6@HTATR5GU..[2>Y=F-S)OM$!<!4^3Y47)S^CE?CC_P:Z?\GH?\%!O^RX0?
M^G'Q!0!^GG[9O[4>A_L<_L[ZY\=-4\&ZIXGO;-K>R\.>$="C+WWB#5KN=+:R
MT^W4 DR33RQID [5+.00IK\POVDOVD/^#M?X,^!M2_;!G^!?P2C\*Z/;-J>I
M_"?0D&IW]A8H"[B9A*)+AT09?[-<$G!*(!P/U[\2>"?"?C"[TB^\4:!;7\N@
MZH-2T=KF/=]ENQ%+"LRCIO"32 $]-V1R 1!\2OB!X,^$_P .]>^*7Q&UJ#3?
M#_AO1KG5-<U"Y.([:T@B:6:1O945B?I0!\V?\$<O^"IW@#_@K9^R%;?M"^&O
M#!\/>(-*U-]&\;^&3<>:NGZC'&DA,3D R021R)(C$ C<R'+1L:] _P""CW[2
MFL?LD?L1_$/XY>$K7[3XEL-#^P^"[(*&-WKU[(EEID(4_>W7EQ;@CT)KXI_X
M-0OV3O%7P)_8$\1_'WQ=X8ET$?&WQW<>)_#6A2IL-IH818K(E>WF8ED4]&B>
M%AUKZ'_;+D'[17_!1#]GK]C6V03Z3X0N+SXQ>/HAT6+3/]"T2)NQ$FIW1N .
M_P#9A(Z$@ ]W\+VWQD^"W[,WAW0[^RU'XH>.M$\-:?8ZG<?VC;6DNMZBL4<<
M]W)+,8XXD:3?*Y4$A<A(V.U#\1_\$AO^"KW[8?[>'_!0O]H[]FW]I?X4^&?
MEC\'1!IUCX4T&Y:]DM[Q;VY@G>:^;'VHGRAADCB3;@A 22?TBK\@?^")X _X
M+^_\%!L#_F8+;_TMN* /U^K\TOV]?^"@/_!:#Q1^U-XD^#O_  1@_9#\#?$K
MPI\-C!H_Q&\4>,-0M84C\1R1+=/86S3ZI9"00VTUMYFT.5DE9&VE0#^B_CT>
M-SX&UD?#/^S/^$D.E7'_  C_ /;3R+9_;?*;R//,:LXB\S;OV@MMS@$U^"US
M\&_^#H7_ ((<^&];^,?A#QEX+^.'PU&NZAXF\<:)HUJ-2WS74SW%[?7$<EM;
M:@K,[.[O;O(J#YG&Q. #]-_^"4'Q&_X+3?$YO&6L?\%:_@3\._AU!:"TA\%:
M/X,DBN+B^=O,:XGFE@U.\C2- (E5#M9B[DX"C=]D5\O_ /!)C_@J;\%?^"L_
M[+D'Q_\ A;ITNB:OIUV-.\:^$+RX$L^BZ@$5R@< >= ZD/%,%7>N055T=%^H
M* "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ K\N_^"_?_!8?]O;_ ()J
M^&_#3_ K]F#0],T'Q;XE?0[3XD>*]9AOI5N%&_\ <Z=;OB,/&LCQR32,2$8/
M A !_42OQQ_X/._^3+_@K_V7"W_]-UY0!^QU? G[;?[8?_!4_P",GQY\2?LH
M?\$?O@IX.<^ S!;?$;XP_$NX9=*L-3F@2X32K&-<FXN$AEA>5]DJ1^:$94;#
M'[[K+\)^"?"?@6TN['PAH%MI\5_JEUJ5ZMM'CS[NYE::>9SU9W=V))]@,
M _'_ /9M_P""WW_!2W]BW_@H+X5_X)Y_\%OO@[X8M(OB#=P6O@WXE^$+<10O
M-<2^3!*S1L89[9IBL3D)#+ 7W2 KQ7[*5^4'_!=SX'6W[>'_  4__8M_8P\
M62W7B'P]XCU'QWXXO85R^A>%X+BQWS2-_ +B2UDBCSP98T7^(5^HWQ%\?>%O
MA3\/M=^*/CG4TLM$\-Z-=:KK%[)]VWM;>)II9#[*B,?PH \!^&'QG^)OQJ_X
M*A_$OP'X=\6W$/PW^#/P_P!*T;5])C5?)U'Q7JK_ -H/(S ;B;73H[10NX '
M46R"0"/GC_@X"_X*O_MN_P#!,7]GW_A9?[/'[,&BRZ5?>((=!7XA^+-<AG2V
MN9K>29'@TR!_,D7$<BB2:2/;)'@PNC*S>]?\$?/ OBG3/V,+'X\_$K26LO&/
MQR\0ZC\3?%=N_P!Z"76)?/M+8YY'V?3Q8VV#R/L^..@^5/\ @\+ /_!'Z3(Z
M?%#1/_0+J@#]+OA%XBU3Q?\ "CPQXLUN57O=4\/65W>.B!0TLD".Y ' &YCQ
M6;^T)^T)\&OV5/@WKW[0'[0/CZQ\,^$?#5D;K5]8OV.R)<A5154%I)'8JB1H
M"[NRJH)(%2?L]_\ ) _ _P#V)^F?^DL=?B?_ ,%^?VA=5_;6_P""S?P6_P""
M43^%?%GBCX;^!;RQ\2_$?P7X)TQ[N_\ $%Z\+7AMO*#*N!8B*-)9&CCB^WS2
M2.B+O4 _0']EC]IK_@H=_P %,=&C^/GPHT71OV?_ ((:H?-\%:CXH\._VQXQ
M\56>?DOU@>9+/2[>0'=&)$NG< ,/D96;[/\ "NE:KH7ANQT;7?$]SK5Y;6R1
MW6KWL$,4MXX&#*Z0(D:LQY(154=@*_/#]H'_ (+N^+/^">WQ$\)>&/V^/^"8
MOCGX0?"[Q+>1Z9H'Q"L?%.E:W:V3!?EBN+736=;?8@W&))7?9&YB24)7Z(>&
M/$WAWQKX:T[QEX0UNUU/2=7L8;W2]2LIA)#=V\J!XY8W7AD9&5@PX((- %ZB
MBB@ HHHH **** "BBB@ HHHH **** "BBB@ KEOC%XN^(_@OP/<:Q\)OA)+X
MUUXMY=AH@UNWTZ%G*L0\]Q.3Y40( +(DK@L,1L,D=310!^<?_!![_@JU^U?_
M ,%,_BY^TAHG[3WP[\/>#O\ A5GB/2-'T?PEH*-(=,E9]3CNTGN79C<R;[1
M7 5/D^5%R<_97[9O[4>A_L<_L[ZY\=-4\&ZIXGO;-K>R\.>$="C+WWB#5KN=
M+:RT^W4 DR33RQID [5+.00IK\P_^#73_D]#_@H-_P!EP@_]./B"OUZ\2>"?
M"?C"[TB^\4:!;7\N@ZH-2T=KF/=]ENQ%+"LRCIO"32 $]-V1R 0 ?D)^TE^T
MA_P=K_!GP-J7[8,_P+^"4?A71[9M3U/X3Z$@U._L+% 7<3,)1)<.B#+_ &:X
M)."40#@?</\ P1R_X*G> /\ @K9^R%;?M"^&O#!\/>(-*U-]&\;^&3<>:NGZ
MC'&DA,3D R021R)(C$ C<R'+1L:^D_B5\0/!GPG^'>O?%+XC:U!IOA_PWHUS
MJFN:A<G$=M:01-+-(WLJ*Q/TK\UO^#4+]D[Q5\"?V!/$?Q]\7>&)=!'QM\=W
M'B?PUH4J;#::&$6*R)7MYF)9%/1HGA8=: /M;_@H]^TIK'[)'[$?Q#^.7A*U
M^T^);#0_L/@NR"AC=Z]>R)9:9"%/WMUY<6X(]":ZCPO;?&3X+?LS>'=#O[+4
M?BAXZT3PUI]CJ=Q_:-M:2ZWJ*Q1QSW<DLQCCB1I-\KE02%R$C8[4/A'[9<@_
M:*_X*(?L]?L:VR"?2?"%Q>?&+Q]$.BQ:9_H6B1-V(DU.Z-P!W_LPD="1]>T
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
M/CCHOPV8+I&L>!/(\0I:/^[)&A:-/,7 X)^VQKG/\1/TK]P* "BBB@ HHHH
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
M.-;_ &U?#G@#PCX4\2MK>CV.G_"*:_OVN?):%//NI-9C1PJO)@)#'DMSG H
M^^:\K_:T_:L\*?LK>!+/59_#]YXG\7>)+\:3\/O &C2+_:/B?574E+6 -PB*
M 9)KA_W=O"CRN0J\]9\(-&^,N@^#8]-^.WQ#\.>*->23Y]6\+^$I]%MI(]B@
M VTU]>,'W!V+"7&& "C;EOSC_:A_X(1?\%$_VDOVO]7_ &Q;#_@N3XB\$:Y<
M6LVF^';#PC\*9+:+0-(>17^P6[+K8(0E(S(_#3.@9\X  !]?_L-?L:ZW\"+[
MQ7^T=^T%K]EXE^-_Q3N(;SXA>)+-&%I80Q+BUT33@_S1Z?:(=B$_/,^^:3YG
M"IP?_!6;Q79?&OX"_#W]C+X=:_%?2?M->/-,\,&]TF[$@;PN%.IZU>1.A*O$
M=+M9X@P.#]K3!YS7RIX@_P"#=S_@I;\0M,?P=\6?^#C7XQ:[X9OV6+7M#7PO
M>6XU"T)Q+;EQKC !TW*=RNO/*L.#]Y6W['$__#<'A#]HJ>]TJ'P5\,OA)<>%
M/AQX2MHWWZ9?7ES";V\Y 11]CL[.VC )(7SLX#"@#W6QL;+2[&'3--LXK>VM
MXEBM[>",*D2*,*JJ.     .@%?EM_P 'A?\ RA^E_P"RH:)_Z!=5^IU?$_\
MP6._X)5_'#_@K5\'H/V<?^&O?#WP\\#0>(;766MH/A9/JFI3SP0R1JDET=7@
MB,6Z5WVK K9"#<=I+ 'U3^SW_P D#\#_ /8GZ9_Z2QU^/?@SPP_P8_X/2_$E
M_P#$:(P)\3/AK]L\#W$^5%SC0+:)]I/7!TV^C_[9U^M7[*OPO^./P9^#VC?#
M#XX_&/P]XWO-!TBSTZRUO0O!4^B--%!"(O,GCEU"\#RN%5BR-&N=V% ( \A_
MX*3_ /!+OP;^WQ<>!_BYX/\ B9>_#7XR?"K65U3X9_$_2-/2ZETZ4.KM;7-N
M[*MW:.5!:)F7G.#M>1) #SK_ (.6/AMX-^)/_!%CXU+XOMX"VA:98:QI%U,O
MS6UY!J%N49#@[6=6>'W69AWKL?\ @@EHWC[0?^".G[/FG_$I;@:E_P *^@EA
M6YSO6QDEDDLASR +1H !V&*H_&G]@/\ :M_;X\*:'\&/^"A?QP\"O\,K#5+3
M4?%G@GX5^&[ZS;QK-;2+-##>W5Y=2-;60E1)&MH4+N57]^NT5]AZ;ING:-IU
MOI&D6$-I:6D*0VMK;1"..&-0%5$50 J@   < #% $U%%% !1110 4444 %%%
M% !1110 4444 %%%% !116%\1=/^)>I^%YK3X2^+="T36F8?9]0\1>'9M4M4
M'<-;PW=H['I@B9<>AH _([_@UT_Y/0_X*#?]EP@_]./B"OV.K\^O^"7O_!&G
M]I#_ ()I?'KXH_&33_VZO"WC:T^,WB:#6_'ND7_P6GLI#/'<W4[&RGCUQA;%
MOMLZ_O(YE'R':=I#?0W_  4B_94_:/\ VT/V<KW]GW]G;]L5_@H^N.8?$GB>
MP\'MJM_<V!4AK6W<7MJ;3>3AY%+.5RJ[<DD \K^,MDW_  5T\>W7[.GA:^F7
M]FWPAKPC^*7B6SF*K\1=4M90W_".V,BGG3H9E'VVY0XEDC^RQGY;AE^P[*Y\
M*^'[FP\"Z=<:?93#3W?3-&A>.)OLD!BC=HH1@^5&984)4;5\R,'&Y<_DWX&_
MX-UO^"GGPQ\&Z9\._AS_ ,'&?Q/T+0=%L8[/2-&TGX?W%O;65O&H5(HHTUP*
MB*     *^@_V(_\ @DO^U%^QCX4^,OQ \8_\%#]?^./QH^('A#^Q?!?C[XAV
M%U;Q^&$CBN&AB1'O+Q_)-U,DTBQE0?(0!0<L0#M/^":;K\?_ (W_ +0'_!0&
M[02VGC;X@-X+^']R?F1O#/AHRV"RPL>0D^IMJL^!P0T9[#'U[7G/[(?[.OAK
M]D?]EWP#^S-X2=9;+P1X4LM)%T%P;N6*)1-<M_MRR^9*Q[M(379>-+3QK?>&
M+NT^'?B#2]*UIT46-_K6CR7]K"VX9,EO%<6[R KN  E3!(.3C! /R5_X(G_\
MI_?^"@W_ &,%K_Z6W%?K]7YY?L4?\$9OVK/V,_VZ?BK^W/8?\% /"/B75/C-
M>RW'C;P]?_ ^Y@M%+71N%%HR:^7A,>6C0OYH",=P8_-7Z&T ?#G_  <(?&/Q
MAX-_X)ZWG[.OPFNMOCS]H3Q7I?PN\'Q*QRTNK3>7<D@<[/L:W*ENBF1<]>?K
M?X#_  <\'_L[_!'PA\!/A_:^3H?@OPS8Z'I,94 _9[6!(4)Q_$50$GN237B7
M[1?[#7C;]HW_ (*(_ O]J/Q5XUTL?#_X):;K5]I_A,QR&ZOO$5]$+>.Z?CR_
M*@A4,ASN$A.!@DU],T %%%% !1110 4444 %%%% !1110 4444 %%%% !111
M0!^./_!YW_R9?\%?^RX6_P#Z;KROV.KX&_X+(?\ !'+X[?\ !7G0/#GPXUO]
MM7PYX \(^%/$K:WH]CI_PBFO[]KGR6A3S[J368T<*KR8"0QY+<YP*^T?A!HW
MQET'P;'IOQV^(?ASQ1KR2?/JWA?PE/HMM)'L4 &VFOKQ@^X.Q82XPP 4;<L
M<G^UI^U9X4_96\"6>JS^'[SQ/XN\27XTGX?> -&D7^T?$^JNI*6L ;A$4 R3
M7#_N[>%'E<A5YX[]AK]C76_@1?>*_P!H[]H+7[+Q+\;_ (IW$-Y\0O$EFC"T
ML(8EQ:Z)IP?YH]/M$.Q"?GF??-)\SA4^0/VH?^"$7_!1/]I+]K_5_P!L6P_X
M+D^(O!&N7%K-IOAVP\(_"F2VBT#2'D5_L%NRZV"$)2,R/PTSH&?. !R_B#_@
MW<_X*6_$+3'\'?%G_@XU^,6N^&;]EBU[0U\+WEN-0M"<2VY<:XP =-RG<KKS
MRK#@@'U7_P %9O%=E\:_@+\/?V,OAUK\5])^TUX\TSPP;W2;L2!O"X4ZGK5Y
M$Z$J\1TNUGB# X/VM,'G-?7EC8V6EV,.F:;9Q6]M;Q+%;V\$85(D48554<
M   = *\*MOV.)_\ AN#PA^T5/>Z5#X*^&7PDN/"GPX\)6T;[],OKRYA-[><@
M(H^QV=G;1@$D+YV<!A7O5 'Y8_\ !X7_ ,H?I?\ LJ&B?^@75?H_^SW_ ,D#
M\#_]B?IG_I+'7RM_P6._X)5_'#_@K5\'H/V<?^&O?#WP\\#0>(;766MH/A9/
MJFI3SP0R1JDET=7@B,6Z5WVK K9"#<=I+?1_[*OPO^./P9^#VC?##XX_&/P]
MXWO-!TBSTZRUO0O!4^B--%!"(O,GCEU"\#RN%5BR-&N=V% (  /@W]M/XM:_
M^VE_P7>^%_\ P2@\=O)#\'?"7@5_B'XZ\..2L7C:_C,AL[2Z'2>R@D6"4P',
M<KK()%;8FWPK_@XC_P""3&G_ ++<,G_!;C_@G)JW_"M/B-\.M6MM5\;:=H 6
MWM=322=(3J$42C8L^Z4"XB(\NYB>0LN_?YWZ"?MS?\$R(?VE?V@/A]^W!^S_
M /%YOAE\=?A?%+:^'?&#:*-2L-5TV3S/-TO4K3S(FN+9A+,%*2QO'Y\C*22,
M4/CS^Q#^UM^WIX A^ 7[;GQI\"Z9\,;J]M;CQIX7^%>@WT-YXKC@E29+.6^O
M+EC96C2QH9(XHFE=5VB= 6W 'O/[)/QGU#]H_P#93^&7[0^K:$-+N_'OP]T7
MQ%<Z8,XM)+VQAN6AYY^4RE>>>*]"JKHFB:/X:T:T\.>'M+M['3]/M8[:QLK2
M(1Q6\**%2-%7 554  #@  5:H **** "BBB@ HHHH **** "BBB@ HHHH **
M** "OQQ_X-=/^3T/^"@W_9<(/_3CX@K]<?B+I_Q+U/PO-:?"7Q;H6B:TS#[/
MJ'B+P[-JEJ@[AK>&[M'8],$3+CT-?"__  2]_P""-/[2'_!-+X]?%'XR:?\
MMU>%O&UI\9O$T&M^/=(O_@M/92&>.YNIV-E/'KC"V+?;9U_>1S*/D.T[2& /
MT%KXL^,MDW_!73Q[=?LZ>%KZ9?V;?"&O"/XI>);.8JOQ%U2UE#?\([8R*>=.
MAF4?;;E#B62/[+&?EN&7U3_@I%^RI^T?^VA^SE>_L^_L[?MBO\%'UQS#XD\3
MV'@]M5O[FP*D-:V[B]M3:;R</(I9RN57;DD_!7@;_@W6_P""GGPQ\&Z9\._A
MS_P<9_$_0M!T6QCL](T;2?A_<6]M96\:A4BBC37 J(H     H _62RN?"OA^
MYL/ NG7&GV4PT]WTS1H7CB;[) 8HW:*$8/E1F6%"5&U?,C!QN7/RE_P33=?C
M_P#&_P#: _X* W:"6T\;?$!O!?P_N3\R-X9\-&6P66%CR$GU-M5GP."&C/88
MXO\ 8C_X)+_M1?L8^%/C+\0/&/\ P4/U_P"./QH^('A#^Q?!?C[XAV%U;Q^&
M$CBN&AB1'O+Q_)-U,DTBQE0?(0!0<L?JO]D/]G7PU^R/^R[X!_9F\).LMEX(
M\*66DBZ"X-W+%$HFN6_VY9?,E8]VD)H ]&K\@?\ @B?_ ,I_?^"@W_8P6O\
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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@
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 **** "OE']I3_@KQ\ ?@O\
M'T?L=_!;P#XO^-OQH\CSKKX;_"ZPBN9M(BXQ+J5W/)%:Z?'\R9,LF]=Z$H Z
MDN_X+8_MRZW_ ,$[_P#@FI\2?VE/!<\<?BFVT^+2O![2H&":G>S);0S;6X;R
M1(]QM/#" @YSBOF[_@U%_96TKX6?\$U;?]K'Q2LFH_$#XZ^(=0\0>*/$6HN9
M;VXMXKR>VMHI)6RS@F.:YR227NW))[ 'T;J/_!0/]K/X6:0?''[2?_!*SXCZ
M#X5@B\W5-8\#^+=&\57.EQCEI)["TG6YD10"6-LEPP ^Z:[7_@GU_P %%_V>
M_P#@I?\ #[QA\8/V8-1O-1\(^%_'D_A>TUN\LI;;^U)(;"QNY+A(9D26),WO
ME@.H8^5NP-P ][KPW]D/]BOPC^QY\1_C-J_PSM;"P\-?%/XAKXQM]$L4*"PO
MYM/M;>^ 7: %EFMC. "0#,P 4 "@#W*BOEG4/^"GMC\1?B-XN^&'[$/[,'C3
MX[77P_U-],\:Z]X5U/2M-T33=210SZ<E]J5W EU=H&7?' )%CW 2.AXJQ^P9
M_P %8_V:_P!O3QKXK^"/AW1_$W@/XJ^ IFC\:?"GXA::EEK.G!7"-,JH\D=Q
M!O*CS(G; >,L$\Q-P!]/45X7^V3_ ,%!O@A^Q=JW@SX?^+=/UKQ1X_\ B5K'
M]E_#OX<>$;:*?5M>N05WL@FDBA@@CW*TEQ/)'&BG);/%>+?M"_\ !;[X6_L-
M_$S0/AG_ ,% OV:?B+\,#XPMY)/!FOV5K;^(M.U>:-XTDLT;3)))DNE,L?[H
MPX(<$,<C(!]NT5\??&W_ (+>_L9? ;]DZ3]L?Q=X6^+4OA9+J6V6VC^$&LV]
MT)$DCB_>_:X(8;17DE1$>YEB21FVHS$$#S_Q-_P<%_!G_AF_PU\<_@I^R-\9
M/BKJFL^%+?Q#XB\*_#7PF^J'P=9S0^>G]K7D?^CVLAA(D$09I-A#E51E<@'Z
M T5X)_P3?_X*,_L]?\%0_P!FJT_::_9SN=1BTYM0ETW6=%UJ!([[2+^)49[:
M=8W=,[)(Y%9696213P<J,OXI_P#!0X6OQ0\3? K]DS]FCQE\<O&'@H(GC.W\
M(7^F6&F:#<.GF)9W.HZE=00F[*%6^SP^=(@8&18P1D ^CZ*^3/V!?^"PO[._
M[>WCWQK\ M'\"^+_  #\7?AWYO\ PEOPG\>6$-KJL*QN(VE@*RM%/$'9%+AU
MVF2,L%5T9N(UK_@OE^S[X2_;ET7_ ()T>/OV4/CAX=^*?B#4(;72=)UO1M#A
MM;E959HYX[O^UC!+"51\/&[;F1D ,@V4 ?=5%?-OQD_X*5^$_A%^VIHO[!FG
M_LP?%;QCXW\0>&QX@TZ?PA8Z/-8+I8D,4EW/-<:E"UI$DJM&6G2/<XVQ^867
M/TE0 5\D_'W_ (+!_ KX>?M"S_L;?LX_#+QC\>/C%9Q%]7\#_"^UMY8]!4$#
M=JFH7,L5I8*&(4AY"ZLRAD7<N<K_ (+Y?MY^)O\ @G;_ ,$Q_'?QO^'.H&T\
M8ZL8/#?@R[&,VNH7I*?:5S_'# MQ.G!!>%01@FO+/^#6[]DGP[^S[_P2Q\,?
M&J^L_M'C;XSW5QXK\7ZY<DR7-VKSRQV<;2MEF58%63!/^LN)FZL20#VO6O\
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
M!U%%% !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 %?F]_P4V^/?
M[:_P]_:FN_#GP,\5^,+/0%T6SDCAT6Q>2 2LIWD$1D9SC/-?I#17U/"'$6&X
M8S5XROA(8F/*X\D[6U:=]8RU5NW4^5XPX<Q/%.4K!T,7/#24E+GA>]DFN724
M='?OT/Q;_P"&L_\ @IQ_T/\ \1O_  52?_&J/^&L_P#@IQ_T/_Q&_P#!5)_\
M:K]I**_3?^(QY+_T(,/_ .2__*C\N_X@QG?_ $4&(_\ )O\ Y:?BW_PUG_P4
MX_Z'_P"(W_@JD_\ C5'_  UG_P %./\ H?\ XC?^"J3_ .-5^TE%'_$8\E_Z
M$&'_ /)?_E0?\08SO_HH,1_Y-_\ +3\6_P#AK/\ X*<?]#_\1O\ P52?_&J/
M^&L_^"G'_0__ !&_\%4G_P :K]I**/\ B,>2_P#0@P__ )+_ /*@_P"(,9W_
M -%!B/\ R;_Y:?BW_P -9_\ !3C_ *'_ .(W_@JD_P#C5'_#6?\ P4X_Z'_X
MC?\ @JD_^-5^TE%'_$8\E_Z$&'_\E_\ E0?\08SO_HH,1_Y-_P#+3\6_^&L_
M^"G'_0__ !&_\%4G_P :K](?^"9/CCXQ?$+]EFT\1_'/5-6O-?;6KR.2;6H#
M'.8E8; 05!QC..*^@Z*^7XO\0<NXGRI8.AE=+#24E+GA:^B:MI".COWZ'U7!
MWAWF7"V;/&5\UJXF+BX\D[VNVGS:SEJK=NI^:G_!V9\+/%/Q*_X(T>+=6\+V
M4EP/"/BS1=<U**%"S?95N#;2/@=D^TJ['LJ,3P,CT3_@VR^)7AOXF?\ !%CX
M(W7AZYA9]&T>]T;4H(L9@N;;4+F-E<#HS*$D]Q*I[U]G_$/X?^"_BQX"UOX7
M?$?PY:ZQX?\ $>E7&F:YI-ZFZ&\M)XVBEA<=U9&93]:_(?\ 9V_85_X*J_\
M!O\ ?&SQ58?L-?"5?VDOV9O&.L'4IO B>(8-/\1^'9B GFQ>>0DLHC$<;-&'
M%PL2%D@(##\Q/U$_9"O /^"J?QG\;?L]_P#!-SXY?&7X9WCVWB+P[\,-7NM&
MNX3\]G<_9G6.X7'>-CY@[92O/?!O_!23]K/XU6B:!\'/^"0OQMT7Q!(FV2]^
M+]WH_AS0[)B/OR7*7ES<RQ@]1#:NY'1?3U3X<_L>V=_\'O'/A']J/Q!;^._$
MGQ;TR>R^)VIQ6K6UI<VDMO);KIEE"S,UM800RRI%&69BTDLSLTL\C, ?*G_!
MJ;:>%X/^")'PROM"5/M][KGB.?Q#(,%I+S^VKQ%9SU+?9TMAD\X ]J^7/^"N
M>E:K^S7_ ,'0/['_ ,?_ (*PM9ZS\3&TG0O%T=F-OV^W?4'TVYEE ^__ *#<
MJO.<"UC(Y4&O1?\ @F/\#O\ @H-_P02\:>.?V1/%W[+GC3XZ?L_:_P")9-:^
M'?CKX7_8[S4]*GD5(W@O+">>&1%>..$N5_=I(CLAD$K%/=_A9^Q-\;?VT_\
M@J;H?_!5/]K?X17'P[\.?##PDVA?!7X::UJ%M=:O)<2F9I]:U,6LDMO;N5N'
M2.W261E*1NQ1H\. ?.?_  5YLO%O[('_  <'_LL?\%//C+:W!^"%EH#>#]8\
M3S0L]CX9O[A=5MM]TP!6W0_VG#,)7QN\F7&?*H_X.@V\-?\ !0+X>? +]B#]
MC7Q'I?CKXN^)?BQ!K.CVWA35([Q]*T=+*Y@GO[B2 M]EMA+<6S^<Y5<0N03L
M..Z_X+9^)_\ @I-8?\%%?@4O[%?P>\)?&W0_#O@_5M>U#X(:O?JO^F!GM6UF
M]C>6*/RDCGABM))&;;.+@(A8Y' ?#_\ X*9_\%L/V>C=2Z?_ ,&U=EIEE)*)
M=3M_A]>K:R7*Y)/_ !ZP3>8^2QSM8\]* /KC_@X.L)(?^"(WQWT_4[G[9+#X
M*MA+/*@!ED2^M3YA'8[AN]C6W_P00\,^'/"__!'C]GZV\-:#9Z?'=_#VTO;M
M+*V6(37,VYY9G"@;I'<EF8\L3DFO%_VV?C[\8?\ @L'_ ,$2_$NE_L2?L@>,
M]:\5?%"QET*_\-:OJND:5)X3U*RU2.*_M;]M1O+=@\9MY@GEHY8A-PCW';ZY
M_P $H+#]JG]E[_@F;\/_ (%?'K]BGQMIWC7X;>%+?2;G0].\1^&KK^V&CD=5
M>TF75O*QY>QF\]X<%B%W8H ^,O\ @U.N8_AW\,?VPK;P]8K]C\/?&B]?3M/'
M$:B*&8*@ Z B-%X[ >E)_P &T?AS]JC]I?\ X)V:E\7/AQ^W[<>&-0U;XK>(
M+OQIIL?P[TO4I9-8GDBN);B:XN 9'DECE@?YN@*@<"O0?^#=3]D[_@H!^Q#X
MM^-WAK]L3]BG6O"5C\4_'Y\3:/K]KXR\/:E:689;@R07*VVHO.#\T00QQ2!B
MS;M@&3\YS_L#_P#!9[_@@K^V9XV^)/\ P2H^#MO\9/@/\1-4:]F\!.XE.GY=
MFC@EMQ+'/%- '>..YAWH\83S5R B@'W+\(/^"']M\,O^"IUG_P %7OB%^VIX
M@\2_$"[AEL]6TMO"]AIMEK*'2&T]8W2W(Y2)(Y?E&2UN&/0UP_\ P<]?L2^
M/CS^R'H?[37A7Q)+X<^-OPR\36'_  J'4](AD;4M<U&XNHUBT6W6!3++/+*%
ME@" F.6+=E$,S5ZC^P9H7_!3?]J[XGZ1^V!_P4Q^$WA_X7:?X*M+H_"_X->&
MKT7-S_:-S ]O-K&HSM*Z^<+66>V@A#*$2[G,BJVTFU\!/"G[77[2_P#P4?UG
M]H#]M7]C+Q-X'\$?#O2OLO[/EIJ7BGP_?VEM<3K(FHZM>Q6&HSRKJ4L9CAAV
MHT<%NTR[P\CLP!YG_P &VO[27PY_;1^ ?CO]JCQMXKFUK]HC7/%'V/XXRZK:
M);W.F_9]\>F6-M O^HT]+=28U ^:<W9;+[L?I-7XZ?M ?L-_\%(?V.O^"Y=S
M_P %!/\ @EC^Q#K6O?#[QCI\4?QG\/3^./#FF6'B6XEE8W<MG%/J*2QN0(;A
M7EC0BZ$IPT<K _KMX'\0ZOXL\)V/B+7O FJ^&;R[AWW&@ZY-:27=DV2-DK6<
M\\!;C/[N5UY'.<B@#\P_^#PWX3^*?B1_P2&7Q3X=MII+?P-\4M&UW61""=MJ
MT-YI^Y@/X1+?P_3@]J^C_P#@@'\2O#OQ4_X(X_L_Z_X:NXY8K#P%!HUR$;)C
MN;"22SF5AV.^!C@]B#T(KZ>^,'PC^'?Q\^%?B'X*?%OPO;ZUX8\5:/<:7KNE
M70.RYMID*.N1RIP<A@0RD @@@&OR4_9:_8^_X*T_\&_/Q,\3> ?V6?@N_P"T
M]^S'XEUI]4L_#NG:_;V/B;PU,X5#(L<VU9I-BHKK$KQS>6CXMF9P0#]CZ^7/
M^"UOQQ\=_LZ?\$I_CK\6OA?>3VWB#3O 5Q!IUY:MB:S:Z=+0W*$'*M$LS2*W
M8QY[5A^$_P#@HK^U]\<K-?#_ ,#?^"2GQA\/:[,NR35?C9>Z3X=T/3F/'FR2
M07EU=W"*3DI!;,[8Q\N2P]*T']AWPSXI_9O\??!3]I?Q/+XYU?XO:;=P?%'Q
M&+<6OVTW%L;?R;.++_8[6WB(CMH@6,>SS&:29Y99 #Y__P"#8[3_  K8_P#!
M$'X(R>%(852YM=:EOWB',EU_;=^LI<]2P9=O/95'0"OCO]OG0M3_ &8_^#N+
M]G/XI_!=&LKGXN>%+*W\:V]J"%U .U_IUP\JKPX%M!:N,]'ME?JH(],_X)9_
M#7_@H?\ \$+F\6_L/_&']D_QQ\;_ (,3^))]6^%WQ'^$T5G>7-F)R!+;7EA/
M<PR0*VU)#@E8Y6EVM*C[T]S_ &>OV&/C1^T]_P %39?^"O?[8OPN/@1?"7@Q
M?"GP0^&6HW]O>:GIUJQN&FU74GM9)+>*YD%W<JD$4DFQ)\.VZ-<@'S/_ ,%'
M_!7A+QM_P=M?L>:7XM\/6FHVX^%DEWY-U"'7SK5O$=S;/@]XYXTD7T90:_4K
M]J_1M(7]F7XIZBNE6PN+SX=ZM%=SB!=\Z+8S[5=L98#<V >!N/J:_-?]M/\
M9R_X*3?$K_@OG\$?^"CGPG_X)U>+-4^'7PG\+C0-6:Y\>>%+>^U%9CJB7%Q;
M0/JX^5(]14HLC1L[1$'8"#7Z2_M(ZE>:S^Q[X_U;4?#]WI-Q<_#?5I9M,U!X
M6GM&:PE)BD,$DD1=3P2CNN1PQ'- 'Y[?\&?/@7P;HG_!):+QSI/ABRM]9UWQ
M[JR:QJL=NHN+Q('584DD^\R(&;:N=JEW( +L3X/\?OA'IO[)_P#P>1?!W6?@
M3I:Z>OQ@\%OKOBW3;!?+AG>XM-9L[MV08!W'3DNF_O2@N?F)-:7_  :Q?M1?
M&WX _P#!,_\ L'Q1^R!\0/&G@J_\<:K=>%/%?PVMK?5'CF_=1W%A>6;SQS0,
M)$\Q)E5X768AFC,9W?7?['_[#GQU^//_  4^\3?\%BOVSOAFW@:^M?"J>$O@
MA\-+^_M[O4=#T@"3S=0U"2V>2&.ZF\ZXQ!'(XB6[E1V+ &@#YH_X(M_%O4/C
MW_P<8?MT^.?B;=&?Q'H$UUX8\.+,^3;:-I^L&Q$<8/W4*VEFS8X+,6.2V3ZM
M_P '=7P8\*_$3_@C]K?Q.U6RB_M7X=>,]%U;1;S;B6)KB[33Y45AR%9+O<5Z
M$QH>JKCG_P!KC_@G!^V-^PS_ ,%<(_\ @L?_ ,$W?A.OQ&T;QE:/8?&WX266
MJPV6H744RQBXN;(SLJ2[VA@N?+W;Q<19PZ2MY??_ +>7PZ_:?_X+>_"SPY^Q
MQHG[*_Q!^"WPJU'Q/I^K?%GQK\5(["RU"6QM9/.72]-L+:ZN))9WE$;&XEV0
MQ^4,&0G% '@G_!7/XF^/?C;_ ,&DO@[XM?%>::Y\1Z[X*\ WNJWMWS+=SO<V
M6;EB?XI1^\)[^8?6OTB_X)K_  X\!>%O^"=/P$\,Z!X/TZVL+'X6^'KVTM4M
M5*Q74FGQ2R3C(/[UI)9':3[S-(S$DL2?FC_@OQ^R9^TA^T5_P30?_@GW^PC^
MR%J_BE[LZ'#IMU8^)-$TW3-%L=/N(W6!CJ%_#,SA+>-%5(V7#@E\J17TI_P3
M,?X]:)^Q9\.?A7^TC^SKKGPZ\6^"/ NCZ!J]GJNM:3?P7UQ:6B6\D]M+IMY<
M#RF,6\"01L/, P<$T ?,O@_7OV3OV>O^"F7QL\.?\$S?@%J7Q2_:+\?BUO\
MXR7%QXL:S\+>#N6*?;[YHY?L\DLC-(;6VAN)V96^6-5./F[]@.Q^,-C_ ,'<
MGQY'Q\U3PO>>+9?@';2ZM-X.TVXM=/7-OX;\N.-;B665RD7EH968>8R%PD88
M1K8_8_\ V>O^"O\ _P $E?\ @I9^T2_PJ_8+3XZ_#OX]^-7U_2O%T7C^RT@6
M<AN[RXADNIYA(Z;5O98YT:(L60/$6'RR3>%/V,/^"TWP=_X. /$W[<.G_ /P
M)XKM_B;\-X-&U/QK::X;#PWX9#VUC$=T+N][?&T>QC7R@L37?#@VH<^4 ;G_
M  4E_P"5J[]BS_LG]]_Z#K=?;/\ P6YL[>__ ."17[1D%RFY5^$NL2 9_B2W
M9U/YJ*^4?^"SG[&_[?EO_P %._V;?^"H?[%?[/<?Q</PPT^31_$O@VWUZUTV
MX9&EG^</<,%5)([R9?,4/Y31JS*5.:]U_;ZT3_@H/^T#_P $J/B)\(V_9+&M
M_%7XL^%]1TRV\%^$?%NE?8?",-RJ11P76H:A=6@NY$B9Y'E@C96E#HJA CL
M> ?L(?&;QQ^SU_P:36OQI^&EU);^(?#WP1\47.BWD).^TN?MNH+'<+CO&S"0
M>Z5Z+_P:F6?A:#_@B1\,K[043[??:YXCG\12#&Z2\_MJ[16<]2WV=+89/. /
M:NK_ ."-O[+?QJ\&_P#!)?1/^"=G[>G[*6K^$Y],\+:OX=\2PWWB#1[^PUJQ
MOKJ[++!)I]].XS;W(5O,2/#;MI88-?.W_!,?X&_\%!O^""7C7QS^R+XN_9<\
M:?'3]G[7_$LFM?#OQU\+_L=YJ>E3R*D;P7FGSSPNBO''"7*_NTD1V0R"5B@!
MYU_P5TTO5?V:_P#@Z!_8^^/_ ,%8&L]9^);:3H7BZ.R&W[?;OJ+Z;<RS ??_
M -!N57G.!:QG@J#76_\ !73PIX7\6_\ !S)^P_I/BKPY8ZE:RZ'.\MM?VB31
MNT-Q?2Q$JP()215=<_=8 CFOH[X6?L2_&W]M3_@J;H?_  53_:Y^$%Q\._#G
MPO\ "3:%\%/AIK>H6UUJ\EQ*TS3ZUJ8M9)K>W<K<.D5NDLC*5C=RC1X?QK_@
MHC^S+_P43^-/_!;_ /9\_;@^#G[ GBG5_AU\&;866N:A)XU\+6]UJ0DN;KSI
MK2WEU96*+#,C()?*=FW JN 2 ;O_  > :/INI_\ !'>^O;ZT2273OB3H=Q9.
MRY,4I,\18>AV2R+]&-?H7^RM<3W?[,'PXNKJ9I))/ 6CO)([9+,;*$DD]R37
MPQ_P<4?L_?MK?\% ?V!+7]EK]E#]C#Q1KNO:WXATK5]1NM0\5>'+"VTJ&#S7
M>"1IM4#27 ?RUQ$KQ89B)3C!^S/V(+WXJ-^RUX(\/?&GX'ZU\/\ Q+H/A?3M
M+U?0M9U/3;P_:(+2*.62&73[NYC>$N&"EF5R%RR+D4 >L4444 %%%% !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!^57Q[_9M_X+6?L,?\%-_BG_ ,% /V)/AYX2_:'\
M$_%^STVWUWP)KWB"+2M6T6WL8RL%O;2SR1QI'&7EVF,R;Q*V^'>!(?8/AI^V
M)_P74_:/;_A$;#_@DYX-^!'GCRY?'WQ+^,T&O6UD/XI(]+TZWBGN' R51I(D
M8X!D R:^]:* /._V6?V=/#G[+'P8L?A+H&O7NLW OK[5?$'B+4U07>MZO?7<
MM[?ZA,$ 423W,\TA50%0,$7"J!7HE%% !1110 4444 %%%% !1110 4444 %
M%%% !7C?[>?B[X@:!^S!XR\/?"WX$^*?B!K_ (B\*ZGIFD:/X76T#"YFM9(X
MC,]U<0I'%O<98$D '"DX!]DHH _-3_@V=^#7[6/[&G[%'_#'7[6G[)WB_P $
M:UIOBK4]4L];O)]/N--NK6?RG5?,M[N2190_F#:8P,!2&.3C]*Z** "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 **** "BBL_4?%OA71[DV6K^)M/M9@ 3#<WL:, >
MAPQ!H T**R/^%@^ O^AWT?\ \&47_P 51_PL'P%_T.^C_P#@RB_^*H UZ*R/
M^%@^ O\ H=]'_P#!E%_\51_PL'P%_P!#OH__ (,HO_BJ ->BLC_A8/@+_H=]
M'_\ !E%_\51_PL'P%_T.^C_^#*+_ .*H UZ*R/\ A8/@+_H=]'_\&47_ ,51
M_P +!\!?]#OH_P#X,HO_ (J@#7HK(_X6#X"_Z'?1_P#P91?_ !5:&G:KIFL6
MPO=(U&"ZA+$"6VF5UR.HRI(H \E_:\T#]NK4/!5UJ_[#GQ0^'&D^(+33W:TT
M3XC>#;N_M=2N1DJANK:^@:U5AA=WE2X/.#GCX*_X(.?\'#NL_P#!0[XG>)/V
M//VUO#WACP=\9=*O;F3P_#X=22"PUVWAR+BVC66:8BZ@*.Y42$21990/*<U^
MJU?SL^(O^"-/C/\ :8_X))_#7_@I'^PC#>:-^T)\+_%WC._/_"/YCN_$EI:>
M,M9DC\O:,M?V^T&$_>D0&$[B(0H!_0AXZT_QKJOA2[L/AWXHL-%UF14^Q:GJ
M>D-?P0$.I8M LT)DRH91B1<$@\XP?B[_ ()\?M _\%,?VB/VE_C=\.OCQ\5O
MA'!X8^"_Q-B\+H?#'PUOXKOQ"AMX;QI2\VKNMD3;SPKC9-AW;DA/GA_X(/?\
M%E/!G_!6+]FO;XOEM-)^,/@J"*U^(GAJ/$8G/W4U.V3_ )X3$'*CF&3=&>/+
M=][_ ():_P#)U7[:_P#V<?'_ .HYI% 'V?7YV?\ !0?_ (+C^%?V+_\ @K7\
M /V")+K3VT#QCN'Q1U"90SZ8VH-]FT<*^<0[;A3+-N_Y8R(W .:^^?B1\0O"
M'PD^'FO?%7X@ZS%IV@^&=&NM5UO4)ON6UI;Q---*WLJ(Q_"OPD_X*!_\$R_&
MO[;/_!%;Q[_P53\9>$9X?C;XO\:R_&.")TS=Z?X1\E;:TT</U\J#1XX+O'WO
M,B*T ?OK7@O_  4N_;^^&7_!,S]COQ1^UM\3]*GU2'15BMM&T&UF$<NKZC.^
MRWM5<@B,%LL[X;9&DC!6*A3Q/_!$?]NZ/_@HG_P38^'7[0.JZJMSXGM]._L+
MQT-V776;(+%/(_H9E\NY [+<K6'_ ,%ZO^"=OCO_ (*;?\$Y?$G[/OPEOK>/
MQEINJ6GB'PE;7DXBAOKVUWC[*[M@)YL,LR*S$*LC(6(4$@ P_A3\./\ @NQ\
M9OA;IOQX\8_MH?"3X;^(]:L8]2M/A);?!J35-,TZ.1-\=G=Z@^H)<O+M95E>
M( *X;8'&*=_P38_;O_;Q^/\ ^VW\9OV1_P!N3X%>%_ FK?"7PMH4D<?A.[FN
MK'79;R:])U2UFF <6TL4402(EF0HZN0X95_/[_@FC_P=!>.?V1]2LOV"/^"U
M'PD\2>%=>\')%I"?$!M'E^V6\<:A(_[4LMOF/A "+JW#F5=K&-B3*W[)_!2T
M_9Q^-WCC_ANKX#_$+3O%*>+_  38Z##KV@:G#<V%W86EU=W,.UHP3YB2WEPK
M M\N2I56!H _._\ X+O_ /!4_P#X*@_\$F_'/PQ/PH\3?!WQ;X?^*>JZA864
M6O?#W4+>YTB>WDMMBR21:J5G5DNE^8(A!A;Y?F 'TP/"G_!P+I/AUM3@^-?[
M)&L:L(<_V-=_#[Q+:VSOW47::D[*.VXP-_NU\&_\'F7_ #:A_P!E U?_ -QE
M?M]0!^9'P(_X.#?%'PS_ &R+3_@GM_P5R_99'P*^(.J2Q1>'/%NG:W]N\-:V
M97*0R)*RAH(I7&Q)-TJ!P5E:%E8#]-Z_([_@\>_9F\&?$S_@FEI7[1\VDPKX
MD^&7C:R^Q:F$'F_8+]OLMQ;9_NM*;23V, ]3G["_X(;?M(^+OVM/^"3/P/\
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
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH *
M*** "BBB@ KY,_;!_8^^,_QH^,\_C?P19:>]@^GV\*M<WXC;<@(/!'O7UG10
M!^?7_#N;]I;_ *!FC_\ @V7_  H_X=S?M+?] S1__!LO^%?H+10!^?7_  [F
M_:6_Z!FC_P#@V7_"C_AW-^TM_P! S1__  ;+_A7Z"T4 ?GU_P[F_:6_Z!FC_
M /@V7_"C_AW-^TM_T#-'_P#!LO\ A7Z"T4 ?GU_P[F_:6_Z!FC_^#9?\*/\
MAW-^TM_T#-'_ /!LO^%?H+10!^?7_#N;]I;_ *!FC_\ @V7_  KZT_8^^$_B
M_P""_P &(/ _C>&"._CU"XF9;:<2+M=@1R*]1HH *^,/^#?;_E%+X%_['#QS
M_P"ICK5?4WQ>T;XS:]X1DT_X%?$/PYX8UMV(75/$_A&?6K=%*,!BWAOK,[@Q
M5LF4C"D;><CY[_X):?L#_M(?\$Z?@A8_LW^-OVNO#OQ+\)Z;JNIW]E*?A?-I
M&II)?74MW,IN!JUQ$4^TSRR8\@'YR,]" #\X/^"X/_!/GXY_\$L?VK[/_@O%
M_P $P--^PI9:D9_C)X-LX2;4K,X%Q=O"F-]E<_=N4&#%*5N%()9XOJG_ (-U
MOVKO"7[<EK^TU^UIX'T"\TK3?'/QPM]1BTO4&5IK.3_A'=*26%F7A]DB.H<8
MW !L#.!^C&O:#HGBG0[WPQXFT>UU#3=1M)+74-/O8%EAN8)%*212(P*NC*2I
M4@@@D&OF'_@F9_P2Y\ ?\$NM)^+?@#X$>) ?"?CSXA2>)O"NDWD#R-H$<EE;
MPFR9BX,\:2Q,4.0WEE59BP+L <!_P6I;Q;^T[I?PZ_X),?";Q8^CZ[^T#K<S
M>,=9M[<3-HG@[2PMUJ5RR;AS-)]EM$5B%D^T2)GK757'["?_  42N_"\G@BY
M_P""M$KZ/+8&QDTL_L_^'/(:V*>68=F-NS9\NW&,<5SGPX_X)H?MS>$?^"CF
MM?\ !1KQA_P4(\#^(]6UOP:GA$^$KGX#W,-AI>B+=177V>Q=?$!E@<RQEVD=
MI0S2.60_(%^X: /P<_X( :EXN_X)&?\ !8WXT_\ !%7XP^*9+O0_%;_VM\/-
M3N8?)2_NH+?[3!,B9*JUSIKL9 &;$MBL8)(-?LW^TC^TIX3_ &9[/P7JWC2V
M0V/C#XAZ5X26[DNA$MI<:@[Q6\ARIW@SB*/;E?\ 6YS\N#\"_M\?\&_7[2G[
M<G[?OAO_ (*&6O\ P4ET7X>>+_!%M86W@U/"OP1D;[''9W<]U \\DVN'[3+O
MG=78JJ.@5/+"C!^D/V]/^"<?Q$_X*,_L9:/^R?\ M$?M!65MJ"^+M.U;Q#XR
M\!^&)-(9XK1G=?LEM<75YY,Q8I\S2NH^9@!@+0!V7[>__!,']BG_ (*5^ #X
M&_:O^#5EK%Q!;M'HWBBR MM8T@G)S;7:C>H#'<8FW1,0-Z-TK\@_^".OP>_:
M#_X(V_\ !PKKO_!*72?B?>^*_AAX\\,7>K0B?*Q^2EA)>6>H/"I*PW2&![.1
MAA9 ^<8\L+^EOAWX ?\ !;/X%>%[?X;?"W]MKX,?$_2K. 0V'B7XR_#C4X==
MAC5=JK/+I=^L-ZR@#,K1QNY!+EB2U:'[ O\ P2J_X9E_: \:_MT?M-?'"?XM
M_'WXAVR6>M^-)M'33['2-.7R]NG:;9JS^1"!%$I9G+.(4X7+[@#X _X/,O\
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
M7M>LH9HY6AB@N;E[73Y93$N^9?.4;FV1+QCNOV[?^"<OB7]IW]@4_P#!.O\
M9W^-&A_"CP//X7L_#EQ+<>!IM<N8-+M3;B"WMC_:-JL7R0"-FD$I96.-I&Z@
M#'_X($?\H;?V>_\ LG\/_HZ6OD#_ (,S?^3!?B]_V<!J7_IJTROO;_@F+^QG
M\6_V /V4O#?[)GQ _:!T7XB:3X-L?L7AK5K'P)+HMVMN9I9=ESNU"[28KY@1
M2BQ85!D,237RQ^PG_P $#/C-^PA\=O&>G_#'_@H?KMM^S_XN\8+XCOOA-IOA
M2WAO;V5'W1VDVIL[RQ0A5CBE:W$;7,2!&V"@#YD_X)6?#O\ 93^.'_!:C]N?
M]ES]M+P'9ZGXWO\ XMZAX@\ PZIJ5S;R76F)?7@DCC$<J!RMM+82*O),9=A\
MJ$U^A?Q4_P""8O\ P2*^#%QH7QP^)G[*_AE+[2/$NE6OAK4[QKN[N8M3N;^"
M"RCMPTK,9&NI(0JJ.O., UXK_P %=?\ @WC\,_M_?'C2_P!MK]E[]H34?@O\
M;M*2 3^)],@D,.J- H2"9V@DCFM[F- L8N(V8F-%0H=JL.F_X)_?\$@OVI_A
ME\5M#_:%_P""FO\ P4*\3?'[Q)X-=Y? 'AFX>:+0M O&C:)M1,3O_I=X(W=(
MY713$'8C<Q5D /T#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 **** ,KQOX%\$_$WPCJ'@#XC^#]+\0:%JULUOJFBZU81W5I
M>0MUCEBE5DD4]U8$5\W_  6_X)3?"3]D#Q!J6L_L&?%7QC\(M+UB\-WJG@'3
M;V+5/#%S<G&Z;[!J"2M:L0!DV<UOD*H.5 6OJ6B@"'3HKZ#3X(=4NX[BY2%5
MN)XH?+620 ;F";FV@G)"Y.,XR>M3444 %%%% !1110 4444 %%%% '._%.W^
M+5UX.G@^"6K^';'Q S#[+<^*M.GN[-!SDM%!-"['IP'7ZU\(_P#!'[_@D'^U
MG_P2T^(7Q"UC5?VJ? OCK0?BEXDBUOQ5:'P'=6-Y!=*TY9K647KHH;SSE71P
M-JX(YW?HA10 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 %%07&JZ7:7UOIEUJ5O%<W>_[);R3*KS;!EMBDY; Y..@J>@
M HHHH **** "BD>2.(!I)%4%@ 6.,DG %+0 4444 %%%% !1110 4444 %%%
M% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444
M %%%% !1110 4444 %%%% !1110 4444 %%%% !1110 4444 %%%% !1110
M445!=ZIIEA<6]I?:C!#+=R&.UBEF56F<*6*H"<L=H)P.P)H GHHHH **** "
MBD$D9D,0D4NJ@LN>0#G!Q^!_(TM !1110 4444 %%%% !14%YJFF:=+;P:AJ
M,$$EW-Y-JDTRJ9I-I;8@)^9MJL<#G"D]JGH **** "BBB@ HHHH **** "BB
MB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M "BBB@ HHHH **** "BBB@ HHKE_%?Q?\&>#-7;1-<GN%G6-7(CMRPP>G->1
MG?$&2<-X/ZWFN(A0I74>:<E%7=[*[ZNS^XWP^%Q&+J<E&#D][)7.HHKA?^&B
M_AK_ ,_5Y_X"&C_AHOX:_P#/U>?^ AKY+_B+GAA_T.,/_P"#8_YG=_8><?\
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
M49=9MM'@C63[*-1,CWD8F>7=)+')]H\FVD6-AR*Z[5?V'_ WB+QO\"_VJ_\
M@FG^TCXPN_ MG\2-/N_'/AS0OC!J6M>'/$FC%)%-R8KF\FC\Z"4P.3&1N7?O
M5F5"H!][UR/Q\^.?PS_9E^"OBC]H'XR>(H]*\+^#]%GU36[YQDI!$A8A5ZO(
MQPJ(.7=E49)%==7X^?\ !Y5\>?%?A']A'X>_LQ>#[QX9/BM\1HX]35&.+FSL
M(Q,(& Z@W4MG)T/,(XH ^O\ _@FO:?$7]MSP7H?_  4Q_:NTB2*_\8!]5^#?
MP^GDWV/@?P]*&6SN%C^[-J=U;MYTMZP+K'<"&+RH]Z/\R_$?XU:__P %5_\
M@N7X[_X)?>//CAXD\&_!KX)>#(]3U;P=X.\23Z/??$'5'%F94NKFW=)_L<(O
M-IAB=<F(.3\^4_43X;^!=$^%WP[T#X9^&81'IOAW1;73-/C5=H6"WA6*, =L
M*@XK\F?^"Y__  0>_::^,'[3%O\ \%4_^"6'Q&N?#_QITV&WDU[0+7518SZM
M+;0K!%=65P2$2X,")#)!*1%,BCD'<LH![#^W=_P2$\3? ?\ 9D\:?%C_ ()'
M?M$?%'X0>/\ 0_#=W>Q^&K#XA:EJNC^)4BA9I+:2TU*:X6*Y9%989XBA20C/
M4L/J']E3X<>'?CI_P3E^#'AKXC7VNRP7GPH\-7%S<Z1XHO\ 3+MY3I4&6^U6
M4\4X)+$G#\GD\@5^5_[ O_!UWX[^%GQ"3]D'_@MA\#-3\$>*=.G2PO\ QY;Z
M!+:-#)P-VJ:8RAH@1\QFMP4.X8@5?FK]L_AK/\.[KX=:!<?"%]';PF^BVI\,
M'P\(O[/.G^4OV?[-Y/[OR/*V;-GR[=N.,4 ?AE_P0Y\"_$GX\_\ !8O]JK]G
M;X]_M9_&[Q?X*^"^NZYI/A'0=5^-'B!8AY6NRV4,TIBO%:5D@A*@,2I,A8@L
M%(_0O_@N'_P5YT/_ (),?LXZ5J'@OPM#XH^*GCR\DTOX:>%+@N\<LR!!)>3J
MA#O#$9(AL4AY9)8T!4,SI\/?\&\__*?/_@H-_P!E \0_^I3>UYA_P63U:]^-
M'_!UU^S7\(?&\RRZ!X;U+P7'8V$S?N7#:G)?297&"9'(0_W@B G X /T6_9?
M_P""/^N_%3P%I?QB_P""MOQT\>?&'XJZW:QWVL:#+XWOM,\->&)I%#&QL-.T
MV:"W(CSL:5E;S&4L H(%><_\%;/^":O[0WP&_8-^)7B__@E+^T]\2? _V/PG
M>2>*OA==>+;G6M,UG2%B8WB6']I-<3Z7=B$.RM:21^9M,>T,X<?I[39X(+J!
M[:YA22.1"LD<B@JRD8((/4$4 8_PX\2CQG\/-!\8!]PU;1;6\#>OFPJ^>@_O
M>@K'_:"O_C9I_P '=<;]G+0M,O\ QO<6Z6OAP:W.([&TN)I$B^V7/(9X;=7:
MX>-/WDBPE$^=EKJ],TS3=$TVWT;1M/@M+.T@2&TM+6)8XH8D4*J(J@!5
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
M['/_  6H^!UQX!\4V\O]E:KXR_L&6VMA*PV%-6TR5=]IN!^:2,-&=^3%$@+
M _8C]E>XN+S]F'X<7=W.\LLO@+1WEED8LSL;*$DDGDDGO7>5G>#W\)R^$M+D
M\ MIS:$VG0'13I'E_9#:>6OD^1Y?R>5LV[=OR[<8XK1H *_,;_@J=_P56_:+
M\0?MU>#?^"+G_!,?6=/TWXN>,#')X]^(]]9K=Q>"-.> W+F*%OD>Y6T5KABX
M(5&B5 9)0T7Z<U_/A_P;CZQ>?'K_ (.*/VJ?CQ\1&>XUN/3/%,UK'=#YK4S>
M(K2(!03E?+A7R0.RMCTH _4WX?\ _!$']C/2=$2X^.&M_$SXL>+YHP=6\>^/
MOBQKDNHW<O4N@@NXHK4!L[5A1-HP,G&:\3^.'[,'[9'[&G_!07]E_6OAE^UU
M\0O%O[.-[\4+C3]9\!^,]7_M2Z\/:G<Z/J%O:'^TIE:]N[%A(Z+%<S2"&41\
ML9$\O]+JJZKHFC:]!%;:YI%K>QPW45S#'=VZR+'-$XDBE4,#AT=596'*LH(P
M10!:HK\X?VO_ -L?XG?M8?\ !8/PG_P1D^!/Q8UKP1X:T/PG)XM^.WBCPE?F
MTUFX@\I);;1[2Z3]Y9!Q-:/+/$5E*70".FUM_ _\%DOV4_B[_P $Q/V=F_X*
M1_\ !+[XX_$#PKJ_PUU"TN/'?@37O'^K:_H?BC29)T@D:XM=3N9P98VD1BZ,
MK>69F!$@5P ?JY17YI?MK_MA_%#]MG_@@5>?\%)OV2?VD_&/PCO5^&EUK]QI
M_A-K,M+>V\RPW=E)=2V[7$:Q30742R6TD#DE78D#8?/O^"6_[$WQO_X*:_\
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
M!7[2NH_LK_M@>./VB?B!XLO=/G^$^D^*86NK[P^AN3%>W2?:IY5N;LV]PTA
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
M>U^&^D?#^\U'XBZ+I<[/::"MY8*W]FLV2 OV]K*9(B<H&"@8B./T<7_@B/\
MLH>$[670OV>?BY\<_@]H$[N\_A/X4_&S6=*TDNV=[):F9XX"V3GR1&.^,\U[
M%^QS^P5^RI^P3X+U#P5^S#\*X-"&M7OVWQ'K%S=S7NIZW='),]Y>7#O-</EG
M(W,54NVT+N(H _)__@\TN;=+G]DZS:91*_CW672,GEE4Z6&('H"R_F*_<$D
M9)KY2_:D_P"")7_!-O\ ;8\9VOC_ /:M^#/B7QSJE@LBZ9+KGQ=\4/'8+(^]
MUMX5U(1VZLP!*QJH^51C"C%:Y_X(=?\ !-^_\,CP3JOPW\?WVA!-C:#J/Q\\
M9W-@Z8QL:VEU=HF7!^Z5(]J /SE_X.)/VL=:_P""L?QD\#?\$4/^";?E^/M<
M7Q9'K/Q-\0:))YVF:0T"O#'!/<QAD$4'G/-<.,A'2&,%I-\8_5SX3^"O@?\
M\$JO^">FD>#M;\2K:^"/@K\.A_:NLW"JC7$=I;E[BY*YQYLT@D?8.KR[1U K
MK?V;/V/_ -EO]CKPC)X&_9;^ 7A7P)IDY5KR'PWH\5N]XRY"O/(H\R=P"0&D
M9FP>M8G[8W[!?[,/[?7@>'X9?M6>$==\1^&XGWR^'['Q[K6DV5VP='4W,&G7
M<"715T5D\X/L(RNTDT ?'W_!//\ X)3_ +-O[6_[/4/[=G[>7P-M_$GQ3^/6
MIS^/-9FN=:O8_P"S+"_(?2],C$,R#R[>P%K& PW*V\$UY!_P7\_X(.?L=1?\
M$S?'7QF_92^!UMX9\:_#.V_X2F*\M]6O9S<Z;;*QU"!A/-(H46QDGR #OMD&
M0":_4#]FO]ESX/\ [)'P[MOA-\#;3Q%9^';&"*#3M,U[QSJ^MI8P1)LC@MSJ
M=U<-;Q*H"B.,J@ '' I/VF?V6?@S^U_\,KSX-?'K3==U#PSJ4,D&J:3HWC35
M=&2_@D4I)!<-IMS T\+*2#%(60@G*\T ?.O_  0/_;]M?^"B'_!,_P !_%+6
MM?6]\8^&K,>&/'ZO+NF_M.S14\^3WN(3!<YZ9G('W37YR_!+X<7/_! [_@XY
MUW6/BW#_ &1\"/VF4U*S\)>,KGY--TZYO+N*]BMII3\L3V]TAMOF/$-S',V%
M)*_J1^Q__P $;?\ @GA^P-XSG\>?L@_!W7_ ]]=[?[0@T[XI>));._V!@GVF
MSGU![>YV[VV^;&VTL2,$U[;\>OV>O@=^U'\,=0^#/[1'PJT3QEX7U-1]LT77
M[!+B%F&=LB[AF.1<DK(A#H>58'F@#L@01D&OQ"_X+P^#=;_X+5_\%0_@Y_P2
MA_9IOGU#2?A=)=:U\</%>FXEM?#:73P(T4KCY1<Q6\#A8\_-+>)&<%7VU?\
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
M*K>9%H&FNTXS$C?O)[C"M=3EI"%18HX_3_VUO^"/W_!/+_@HIXYTSXC?ME?
MN^\::KHNG&QT@R^/=<LK>S@+EV$=M9WL4*,S$%G";WVH&8A% \7_ .(7'_@A
M1_T8S_YDWQ/_ /+.@#V#XLZ]\ ?^"P7["OQN^!_[/GQ L_$&@ZWIFJ^#;/QC
M9,LNEW&J_8HY$GM9T)6ZAAGFA#2IE"\4BJ6VDU\U_P#!J9X_U6V_X)HWG[)'
MQ TN?1_&WP+^)&N^&?%7AR_&VYL));R2^!=.RF2YG0'H6@DQG%?>O[,'[+WP
M'_8R^!^B?LX?LT?#Z'POX+\.B<:1HL-[/<^29IY)Y29;B2261FEE=BSNQ^;&
M<  ><?&7_@F3^S-\7OC/J'[1>E77C3X?^.]<TY-/\3^*OA9XXOO#UUK]J@Q'
M%??9)%2Y*#A)67S4  5U & #\^/!/PDOOV]/^#LGQ1^T/X<A-[X&_9>\%VNC
MZGK,:[K:76Y+&>-+$./^6L<]_=N1_"UBP/49]O\ VK?^#8+]@3]L+]HKQ;^T
MW\3/B_\ &BPU[QGJS:AJEGX?\864%E%*552(8WL79%PHX+-]:^WOV:_V6_@%
M^R!\,8?@]^SE\-+'PQH,5S)=36]JSRS7EU)CS+JYGE9IKJ=\#=-*[R-@98X%
M=_0!\T_L%?L%_LN?\$=/V9?$?PV^'OQ7UZ/P9+XDN?%&M^(?B;XDM7-E+):V
MMLY:X$4$<4 2TB/S#AF<EN0!]#^&O%?A?QGX=M/&'@_Q)8:MI-_ )['5-,O$
MGMKB(])(Y$)5U/J"17,_M%_L[_!S]K'X)^(OV=?V@/!</B'P?XJL1::YI$T\
MD0GC#K(I#Q,KQNKHCJZL&5D4@@BOD[X&_P#!O#_P3H^ &E7?@_P<OQ3G\)7\
MS27W@.\^+^M)H5TS=1/96]Q%'<J1P5F#JP&&# G(!XU_P0C_ &>- '_!0W]M
M?]N#X.V<,7PI\=?$I=&\!7UB@%IK-Q:S7$NJ7=L1\LEL+N4I'*F48F0*?D-5
M/A'K_B#Q%_P=J?$W1OVBYBJ^'_V?;=?@+:ZB2(?L<HTYKZ:S#<-,97U)79?F
MVK.O*ID?J'X,\%^#_ASX3T[P'\/O"NG:'H>D6B6NE:/I%DEM:V<"#:D4448"
MQHH& J@ 5YA^U3^P7^S%^V3>^'O$?QI\#7/_  DO@ZZ:Y\&^-O#FLW6DZYH,
MS?>:UO[.2.>,-QNCW%&P-RG H _.+_@['_8;^&'B+]GGPK^WW\*]/ET3X\>$
M_'>AZ/X3U;0/W=_K[7%T$M[,!/FFN(I-L\+#+H(I%'#<?I-\?OVLOA=^Q3^R
M^_[0_P"UYXTL]#M-(TJW&KF$AI+S47C ^R6D>09II)<JB+UZDA0S##\"_P#!
M/'X"^&?B=H?QI\>ZUXT^(_BOPLSMX4U?XE^,;O5UT.1UVO-9VTC"V@G*_*;A
M8A-MXWXXJC^V_P#\$LOV%_\ @H]<Z#<?MG_!V]\9IX925=#M#XVUG3[:U,I!
MD<06-Y#&TC;5!D92^%"YP,4 >&_LO?';]D_X@?& _M[?MG_MA?!FW^(MSITM
MC\/_  ,OQ6TBYM/AOHLV"]K&ZS[)M3N $-Y=KD':L$1\F/,GU)^SK^V9^SE^
MUKKGBS3OV;?B5I_C33O!=[;6.L>)_#MU'=Z2U]+&TK6D%U&Q2>6*/RGDV95/
MM$8W%MZI\H_\0N/_  0H_P"C&?\ S)OB?_Y9U]3_ +)/[$'[,?[!_P $Y/V>
MOV0_ALO@CPM)?W-_]CM-3N;R47<ZJLDYFO9)I'?"(!O9@ B@#  H POVX-(_
MX)]_#/X;:K^UQ^W-\*?AQ>Z7X(TTW#^)O&7A.QO[FV5<E(;=IXVD:5W(6.*,
M[G=@%!)KX1_X(J_L5_&7]I[]N#QY_P %Y?VP_AM<>$KWQM VG? GP%J4'EW&
MA>'_ "4MH;QX^/*9K.-(8P N]9;B7;MFC)^XG_X)I_LW>+/B/I/Q<_: G\4?
M%O7_  ]="Z\.R?$_Q%)J5AI-P!@7%MIBB/3X9QU$RVXD7 PPQ7T#0 5\>?\
M!?S]GWQW^T__ ,$?/CC\'_AGHMQJ6N3>'+75;'3[2,O-=?V=J-KJ+Q1J,EW9
M+1U51RQ( Y(K[#HH _/;_@U__:4\ _'W_@CU\-/"WASQ':W&N_#R&[\.>*M+
MCF4S6$L=W.]OO7J%DMGAD5L8.6 )*MCZ8_X*._M7?#']C;]C;QW\9/B3XA@M
MGC\/7=GX;TPOFYUK5IH72TL+:(?---+*54*H. 2QPJL1Y+\2O^"$'[ 7B_XT
M:G^T5\*=-\=_!SQQK;LVM^(O@E\0;_PU+?LS;G,D=K((@68EF*(I8DELGFND
M^!7_  1V_8T^"_Q>TW]H;Q-%XX^*?Q!T,DZ!XT^,_C_4/$][I)X.ZU%Y(T4#
M@@$2)&)!CAA0!UW_  2Y^ /B;]EO_@G1\%?@!XXL&M-=\,_#C2[;7K-\9MK\
MVZR7,61P=DSR+GOMS78? ;]L3]EG]J+7O%7A?]G;X^>%_&>H^"-2%AXLL_#^
MK1W$FF7!+JJRA3P"T<@##*L8W )*G'I-?.?[#O\ P2I_8L_X)V>-_B#\0OV6
M?AS=:-J?Q*U)+OQ%)=ZO-=*BH\LB6]NLA(AA5YI6"C).X L0J!0#&_8F_P""
M@/AGX]?M8?M#?L<>,?'%D?&_PG^(ACTK1)/*BGG\/3V5I+!/&JA3*L<[W$3M
M\Q7]T7/[Q,^#_P#!S=^Q?^R%\<_^"9OQ$_:#^-_A[2-+\9_#OP_]N\$^-O+2
M*^2[$JB+3C+P9H;AW\GR6RH:4.H#J&'O'Q0_X(R?\$\?B_\ $;7OC9XR^"4T
M?C_7_$,FMR_$30O$5[I.O6=VT*0J;>_L989HD1(U"Q[BGWL@[CG @_X(@?L>
M^)?&.C^+_P!HWQU\7?C:GAV^6]T#0?C3\5M2\0:58W*YQ,+*:00RM@D?OED!
M!Y!H P/^" MQX^^#W_!#SX,Z]^U-K8T4Z-X+OM3N;_Q!<"!=/T$7EW<64DTD
MA CB33S P)P$B"YZ&OJK]G?]IGX ?M:_#:+XP?LU?%S0_&OAF:[EM4UC0+T3
M1">,@/$V.4=<J2K '#*<8()U?BU\)?A_\<?A+XC^!WQ-\/IJ/A?Q9H%UHNNZ
M9YC1BXLKF%H98@R$,F8W8!E(*]000#7G/[!'_!/W]F?_ ()K_ @_L[?LK>%;
MS2_#\NM7&KWK:CJ+W5S>7LRQH\TDC]3Y<,,8   6)>,Y) /:J_G\^(6B7O\
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
M0TS2_%L:^3-IM\;YM&O;J&=!L-VEK9R",[6A:]C.0T9%?EM_P5@_X(U^*_\
M@AEH%_\ \%9_^"1W[2'B3P)IOA;5[#_A+?A_J6IO<6_V:YO(K:)(G8YO+;SI
MHD>UNA*=KLXE^0+7[1?MC?L-?LQ?M\_">S^!G[5?PZ;Q+X3L=:AU6+1HM6NK
M%3<Q0S11,9+22.0!1.Y # 9"YSC%>;Z=_P $B_V8;O\ X1_1_BMXV^*'Q)\,
M^$]0@OO#?@CXE?$F_P!8T:SN8?\ 42/;3/\ Z88NB+=&94[ '!H ]V^ 7C_7
M?BQ\"?!7Q3\4>'3H^I^)?"6FZKJ.D$,#8SW%K'-)!\W/R,Y7GGY>:_'K_@D_
MX0N?BK_P=2?MD?'71[<R:+X0T>^T6ZN48E4U"2[T^V5"1QDBPO.#WC/IFOUM
M_:L_:4\#_LE? O7/C=XYAN+Q=.A$.C:%I\9DO==U.4^7::9:1*"TMS<3%(HT
M4$Y?)P 2/G/_ ((B?\$]?&W[#O[.?B'X@?M"16TOQI^-GBVZ\;?%FY@8.+:^
MNI'ECT\."0ZP"63)!(\V:<JS*5- 'VC7XH?\'N,B#]C'X-Q%QN/Q/N"%SR0-
M.FR?U'YU^U]?+W[6O_!&K_@GE^W;XCMO%'[7/PD\2^.;BQN+B;3;?5_BSXF%
MI8/.P:7[-:QZBL%L&(4;8D4!410 JJ  >^_!RZM;[X1>%;VRN8YH9O#=B\,T
M3AE=3;H0P(X((Y!%>??&/]K[PCX'_:8^'/['_@O5=,U/Q_XXO)[Z_P!',WF2
M:-X?M())KK49XT8-&KNL5K"6QNFN58!UBD \9T7_ (( ?\$KO#FC0^'/#WP3
M\:6&GV\(B@L++XZ^,HH8XP,!%1=7"A0., 8Q7<?L??\ !(C_ ()Y_L%_%G6/
MCK^RO\ )/#OB_7]';2]7UZ]\8:QJL]Q:-+%*T>=0NYPN7AB)90&.P#..* /A
M_P#9'^/UG_P68_X*V_M)_L\_MC>*Y/\ A77P ULZ-X"^ ;7[6^G>(S!?W=I=
MZMJD"LIU/RWM83Y$V^WC^W(/+)&YO.O@9\3/V;M)_P"#M3QAJWPP\:^#K'P5
MX;^ <U@UUHUY;0:5IYL[.V-S"K1D0QB 1R[P#B/RI V-C8^\/VBO^"!W_!+;
M]J;]I>;]K/XN_L[R3>,+^19-<ETGQ)?:?;:Q(%V;[F"VF1'9E #D;?,'^LWY
M.=OQ[_P1%_X)A?$O]I3PK^U5XN_94T.;Q+X+TJST_P /V,$DL&D0PVF?LN[3
MHV6VD,0.%#(5P%R#L7 !\+?\%&-5TV;_ (.R?V,]4COXOLUQ\+B8)RX"OYC^
M(0F">NXLH'J2!7VA_P %^OC+X,^#/_!(KXVR^++N+[3XK\'7'A7P]IY^:;4-
M2U(?98(84'S22 R-)M4$A8G;HI->E_MM?\$Q_P!B3_@H79:;_P -3?!&SUK5
MM#Q_PC_BJPNYM/UC2B'WKY%[;.DRJ'^<1EC'NY*DUB_"#_@E-^R_\,O'WA_X
MJ>-M=^(7Q5\2>$&9O!NK?&3XA:AXD/A]C@&2SANI#!#-@*//$?G#:/GH R/^
M"'_[*WCS]BO_ ()3_!C]G/XHV$EGXCTCPY/?:WI\PQ)8W6H7MQJ,EJX[/$UV
M8F_VHSR>M?5;,J*7=@ !DDG@"EKB_C]\ /AM^TW\,[[X/_%R/7I?#^I@KJ-K
MX?\ &&IZ)+=1E&1H9)]-N()GB978-$7*.#\RG H ^"/V7_V7/V;?^"R?[1OQ
MA_X*(_M(>!X/&G@>'Q%_PKWX$0OJES##'H>CO(E[J436TJ;UO-1EN64MR$MT
M&/7N?VL_^#>?_@G+\;?V:O&_PN^&/[/EAX=\4ZOX<NH?"VOC7=1D_L[4O+)M
M9RLEPZLJS!"P*G*[AQG-?0/[&_\ P3D_9(_8 T27PK^R7X+\1>%M$E\T_P#"
M/3?$?7M2TR-Y&5I)([._O9H(I&*#,B('///)SZQ\0? FA_$WP=?>!?$E[K-M
M8ZC&J7$WA_Q%>Z3>* P8>7=V,T-Q"<J,F.121E3D$@@'Y._\&AO[<&H?$_\
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
MU%%% !1110 4444 %%%% !17,_&CQUKWPO\ @[XL^)?A7X?ZAXLU3P[X9O\
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
M/37U&+PW9(FDZ+%-Y;ZKJ,SK#:VH;!V!Y77>X#;(U=\';@_GS\/?^"5OCO\
MX+:?\$T-2_:P_;^^*MWK?Q@^,?A!]8^$UJEW-;^'OAM;R,)]-BL;)&VYE5(3
M<W$@>=XI#'N)#/( >M?$%O%G_!97]I3X)_'GX=> ?$&A_LS_  (\7Q?$:Q\;
MZYHEQ:ZA\1-;MHRVGKI&GN@N38QY+FXE1?M'F;(D;&\^V_LY_P#!;/\ 8 _:
MT^,M[^S_ /L^>+?'7B/Q;I-[]EU[2K;X1>(H_P"Q9!-Y#?;GDL52R59 49IF
M0*5()&#7YD?\$"_^"UH_8;^"?Q#_ ."9W_!1&SUC3O''P4FNH?A[H3PM-J6M
M,+CR?^$;MT&3-=B[D1;95)#Q3X7$< )_43_@D[^P]J'['_P/\0>.OBGH5A!\
M7/C1XRU#Q]\7KBQPR1ZOJ-Q)<_8(W_BAM5E\E<':7\V0 >:: /J:BB@D 9)H
M ^&_^"Q8O?VJ-?\ A/\ \$E/"FJW<#?'+Q$VH_$ZZTZ;9-I_@?2&2ZU [QDP
MO<S_ &6TC8@AC+(,$ BOB3_@V*^)OC3]A']MG]H/_@AS\==9<WGAKQ%<Z_X$
MEN/E%V(O+CN&C!YQ<6C6-Y&@QA5F;&2:]P_9)^.7[:/QS_;,^,?_  4Z^!?[
M",'Q4\'^,)5\"?!_Q-=_%2QT5;?PQHUW/%.]O%-#([QWFH+-<ES@$)& /ER?
MB[_@N'XA_;8_9%_X*&_!+_@M]XL_8D_X5:?#VMV.@^)_[-^(=GKB:ZT8G;RI
M#;QQF%I]/-U:EFR"D: $$<@']"'BOQ/I/@OPS?\ B[71=&RTVTDN;H6.GS7<
MWEHI9MD,"/+*V!PB*S,> ">*^$OAC_P<;?L+?%3XX_$KX+Z/X2^(UC+\-+$+
M='5_!T\&I:[JK77V9-)T[22#?S7;-N_=20QNNQRR*J,X^X_AO\0O"'Q;^'F@
M_%7X?:S%J.@^)M&M=5T34(?N7-I<1+-#*OLR.I_&OQ^_X)(>&_#U[_P<[_MN
M:Y>:#9RWNG6#G3[R6U1I;8RW5H)#&Q&4WCAL$;AUS0!]5?LB_P#!?3X%_M)_
MMI)^P5\5?V8?BY\$?B'JMA)>^$M)^+7AM-.?6841Y,!!(S12-'%*Z@@HWE.H
MD+@*WN7[;_\ P4;^!O[#&H^"/ ?C'1M?\5^/OB;K8TGX=?#GP=;0S:KKESN1
M69?/EBA@A0R1[YII$10W4X(K\^O^"TVGV=G_ ,'"G[ &OVENL=[<ZM-;7%RG
M#R0I?1E4)[J/.EX_VV]:^F/^"I<?_!.[X;_M;? 3]I#X^^"O%/C7X]:%J=Q9
M? OX=>![LOJ.OW4A!):W9TB6"%SYAN)GCBCY+,V E &U=?\ !9CPQ\(/VM/
M/[''[;G[*7COX,^(OBI.+;X=ZYK&HZ7JNC:O<F5(A:FZL+F0Q3&26&/8R8#3
M)N*JZLU+_@Y"_P"4)7Q\_P"Q?T__ -.UE7P!_P '"VN?MD:Y^T?^Q)X^_::\
M(^ _"$4OQM5O#/A#PM?7&JWVF$7FDL[7NHR"*&9SB,>5#;A$9&_?3 @C[_\
M^#D+_E"5\?/^Q?T__P!.UE0!E_\ !-;]H:/]E;_@@C\#_CM?_!WQGXWT[P]\
M)K&[UC2O =G:7.H06D<+R2W*PW-S!YJ(J<I&SR'(VHP#$>H?\$R?^"L/P1_X
M*O>"M;^*/[-GPA^(6F^%-"U232KOQ'XPLM,M8)-0CCMYFM$C@OYIRXBN8I-Y
MB$>"1OW#;5/_ ((7@-_P1]_9W5@"#\+M.R#_ +AKX/\ V$7/_!%7_@OQ\0/^
M"=FJJ=.^#/[3*CQ1\)-YV6FG:H?-9;2//RI\RW-D%!WMY5CG[PH _1CXX_\
M!1/PS\#?VOO!/[%=W^S7\3_$?BGXA65U>^%]0\,6ND2Z=-:VJQM=SRR3ZC%)
M;1P^:@9IHTW,0L?F$@'\Y/VLO^"KW[3&O?\ !PI^S[^SKJ?['_Q(L/!7@"+Q
M!K^B^";&"QDU[QG<7'A_6+%=42![M((X(E%SY:/,KB,3NPW.L2_9W[ R_P##
M6O[>/QU_X**7P,^@:)>?\*A^$,I.4?2]*G,FL7T1'RNESJK/&KCDIIZCD8KY
M%_:O_P"5S;]F3_LA]_\ ^FOQ90!^LWP9^)&H_%SX;:;\0M6^%?BCP3<:AYWF
M>&/&=M;PZE9>7,\0\Y+:>>(;P@D7;(V4D0G!)4=1110!Q7[2?QLT']FK]G?Q
MY^T3XHMFGTWP'X.U/Q!?6Z/M::*SM9+AHU/]YA'M'N17Y ?\&F'ASQ3^V#\2
M_P!H;_@K?^T??CQ#\1/%GB]/#=CJ]TNXZ=$(8[NZAMP<^7$4FL8D0<)';*@X
M)%?J)_P4Q^#WB3]H'_@G?\</@KX,M)+C6O$OPJUVQT6UA7+3WCV,WD1 ?[4F
MQ?\ @5?F=_P9+_$?1M2_8/\ BU\'XKB/^TM"^+O]L7<.?G2&^TNS@B8CL"VG
M3 >ZGTH _:&OP0^.OQ%N_P#@C?\ \'5FAI\+I3I?PY_::BT:;QIX:MCLLWDU
M6ZGL&NM@^4/'J,+W>[&X+/,@PLA%?O?7\_7_  7E\'7W[4W_  <Z_LN_L_\
MPYC>[U+3='\*KK1M_F:TBCUN_P!1N7*]O*LAYYSV/XD _3C]I3_@N?\ L9?L
MR_M@>"OV(_%NF^-)O&'C'Q%#IAOKCPM/INDZ9&TYADO);R_$*3P1LKYDMO.3
MY6!88./!?BY_P=>_L0_!KXLZ;X?\5?LY_&E/AWJ]X;?2?BY-X-^SZ3JB X-W
M9I.Z2W5L 0V]5WE>1&W /DO_  <$>"_"7Q%_X+@_L"^!?'GARSU?1M6\3&UU
M32]0@$L%Y VJ68>*5&X=&!(92"&!((()%??O_!:+]FKX<_M._P#!+/XU_#;Q
MWH%I<)IGP[U37/#\LL(S8:EI]I)=6D\9QE")(@I*X)C=TZ,00"O_ ,%%O^"C
M.O\ [,W_  3\U/\ ;+_9,^#M]\78[SP?-KGAW5-#FA.D6=B+7[0-4O96D1OL
MJ1'S-D0:23;L 3)=?G7_ (-MOVS_ (I_%C_@GU\*/!GQ#_9U^*VJ7_B35_%^
MJ:W\8+G3]./AZ[N[CQ!K%]-*TWVW[3EI7:$_Z-_KSC[GSUX#_P $PO&'BWQ7
M_P &?OQ8M?%-Y-/%HWPU^(FGZ.\V21:+%=R*H)ZJLDLJCT "CA:^M?\ @UQ_
MY04? S_N9O\ U)]6H ^_Z*** /AO_@X(\%>&/B3^Q!X7^'?C;28[_1M>^/?@
M+3M6L92=MQ;3Z]:Q2QG'.&1V4X]:^%_^#>7Q_P"+_P#@ES_P5&^.'_!"WXVZ
M[,^EW^LW&O?"R\O3M%Y+' LH9!TW76F"&=@.%:R=>I-??O\ P7/_ .35? '_
M &<?\.O_ %([.OBW_@ZY_9G^('P5U[X/_P#!:?\ 9KM_LOC'X.^);'3_ !1=
M0H<-9_:O.T^>8# ,27+26S@\NM\BGY5H _6K]I7]H#X??LJ?L_>,OVD?BKJ'
MV;P]X)\.W6KZHX8!WCAC+B),_>D=@(T7JSNH')K^;SXM? CXE?##_@M5^PW\
M:_V@;:2+XI?'/QKH/Q&^(L$K$_8+O4?$[FVT]0W*):V4=K;;.BM$^,9Q7ZG?
M%W]IKX?_ /!:/QI^S+^RS\&IQ=_#SQEH=G\9?C=;!Q*D&AV$X6QT*YQ\K-/K
M$9BECX8#3I",C-?+O_!>#_E98_86_P"PAX6_]2B:@#]J_B]\7OAG\ _ACKGQ
MG^,OC6Q\.^%O#6G27VN:UJ4NR&T@09+$\DGH J@LS$*H)(!^//C]_P %IO$O
M[.?PJB_:D\??\$R_CK%\%CY4EW\0&BT=+JVM9658[R72#??;;>!MP.ZX2%U!
M7>B%@*\5_P"#K/XM:KX%_9K^!'@&?Q7_ &'X:\5?M%:"OC#5'MDFA2QM1+<;
M98I/DEC614G,;_*QMESQFOIKXT?L!_M@_M!_!SQ5\"_B;_P4NU*^\->-/#E[
MHFNVL7PDT2-IK.Z@>"55=1E&*.V&'(.".10!ZOH/[>G[)/B3]C@?M^Z7\:=+
M?X2_\([)K<GBY@XCBM4)616CV^8)ED5HC!M\SS1Y>W?\M?-?BO\ X+B7WAC]
MEN+]OD?\$Y/C)=? J6W2^7QQ'>Z$+TZ8\@C341I9U#[0+=B0P9MK>61(553D
M8GP[_P""3?[#7_!/[_@D#\5?V(/VL/VD]5U[X*SZI<:YXL\1:]=)I\VBQ-]A
MF2",V^XAA<6\4R(%9I)+@*$?>%;RW]HCXG?&3XJ_\$./B)H'[%'[..G?#C]G
M#P[^SWJMGX8\1_%FYN+C7_$NA6^E2+'+8Z9 P-LDT2;H[R\N/,.]9?LCJ1D
M_1KX0?M9? 'XX_LOZ7^V3X"^(5K)\.M5\,/K\?B*\!@CM[&.-GF>8/@Q&()(
M)%;E#&P/2O 6_P""LWB2[^!;_M@^&/\ @GG\9-;^##:4VKV/C32VT8W][I 3
M>NJ1:1+?I=FU=/WJY43&(B3R0#7@7_!#3X#Q?M;?\&P/A/\ 9HU7Q-/I:>/_
M  +XX\.'5HE+O9BYUS6;=9=N1O";@=F0&"[3P:^5_@A_P50_X*>_\&^.A^'O
MV,?^"KW[(EWXZ^#>@+'H?@SXK>#VW^7I\8VPP1S,!!=JD2A8[:?[-<*B_,2%
M H _4;XB?\%3_A_\,OV!/#'_  4<U7]G?XCZS\/M>\"V/BO4W\,0Z7<76A6-
MU%%(AN8;B^@=R!,NXP"4*%9B0HS7>?LV?MM>"_VN_P!C7P_^VK^SY\+?&&O:
M+XHL)+K0_"YCT^UU>X5+M[9UQ<7D=JC!HW?YK@ JO!+$*?ES]N'QI^S)X_\
M^#;CXA>)/V--;@O_ (7?\*%GM?!,L#/^ZLH(A L#!_G22(QF)T?#(\;*PR#7
M5_\ !M[_ ,H2O@'_ -B_J'_IVO: .S_8%_X+!?LT?\%#U^*Z?"KP%\0O#ES\
M%[N*U\<:?XQ\.PQW,,S_ &O='##97%R\SH;*9611N+;0H8FO*M _X..OV(?%
M7[0WQ&_9[T#X=?%.34/AKX:EU"_2Z\"W%MJ.LZ@+RVM8M(T_2I@M]-=R-<@A
M)88=H1F;"*SK\Y?\&NG_ ">A_P %!O\ LN$'_IQ\05%^PQX)\):K_P '?O[5
MNM:GX?M;B[T/X6VMYH]Q-&&:SN);3P[%)+&3]UVCFF0L.=LKKT8@@'TQ^R[_
M ,'$/[('[1W[)GC[]KC4_A%\5_"^E?#?6YM-\2Z/+X$NM4NXFCMS<&3_ (EZ
MS)%&L8;S'G:)(2OSLH*LWM/[#7_!3KX,?MU?L7/^W5X)\$>+=&\(_P!JZA:P
M:=<Z'+J&JR):W!@WK9Z<+B21W."(HA(W..:[C]M70=#M/V)_C1:6FCVL,=]\
M-/$<MZD,"H)Y'TV<.[X'S,PZD\FOBO\ X-)_^4+?@[_L</$'_I<] '5? S_@
MY _8?_: U_XI:-X&^'WQ,>7X;7NGZ;8:+_PB#RZ]XNU2Z:]'V'3-)B9KIY4^
MQ2%A*L10;FD$2HS5T/[!G_!=?X%_MI_M6:U^P_XT_9Y^)OP9^*FF:<^H67A#
MXIZ&EC<:C;*@D;RU#EEE$3"7RV4!H\NC.%;'R/\ \&Z/AOP]-_P60_X*0>(Y
MM!LVU#3_ (RW=K87S6J&:V@E\0:^TL4;XW(CF&$LH(#&),YVC&O^W5I]GIO_
M  =]?LCZMI]NL%S>_!V^6[FB^4S 6WB=1NQU^4[<]Q@= * /T;_;;_;V^ '[
M _@/1O%WQJOM3O-2\5:]!H7@CP;X:L?MFL>)M4F8+'9V5ON4.Y+*"SLD:[E#
M."R@^(?M.?\ !:;PC^P+=>&]4_X*$?LG?$/X7^%?%LCV^C>,[:6PU^QAO5C,
MALKL:=/)+!.4#%0J2(^QRKD(Y7Y9_P"#CGPE\2_@Q^W=^QU_P4FUCPWJ>K?"
M/X1^.XD^(-SI]J]POAU'U"TE:]DC4$JKQ1N ^ -]M&A8%XP=K_@YM^+7P9_:
M_P#^"=?A;]E_]F;Q=HGQ.^(WQ/\ B%HTGPU\->"M3AU*[O GF22WJ+"S;(%@
M9E:9L(HF&6 )- 'Z(_LF_MA_"+]L_P $:A\0/@YIWBVVL-,U0V%RGB_P5J.A
MSM*(DDRD5]#$\B;9%^=05SD9R*]3KAOV8/A]XO\ A+^S3\._A5\0M;&IZ_X9
M\#:1I.N:BLA<7=Y;V<4,TNX\G=(C-GOFNYH *^4?$?\ P55\,>*OVG/&G[('
M['7[._B[XU^-?AM!$_Q%E\-ZEIFG:3X=FE+"*TFO=0N85DN6*./*B63:8Y Q
M5HW5?JZOSA^!&N?LO_L__MZ?M!_#;_@DE\ ;WXE?&3QWXICUKX^>)=:\726G
MA'PEJ+374BP7-X8YG$QGN;R3[':0S2;C*CM$(L1@'OG_  3\_P""KOP-_;^\
M=>/_ (':1X!\6> /B=\+-0^Q^//AWXXM(([VQ;S&C\V*2WEEBN(=Z%=Z-W4D
M!71F\V\9?\'"'[#?@O\ ;KT;]A+7-*\;:3JEWIVHZCKOB[Q=X6GT+2M(L[33
M+K4#*1J"Q7-P)%M2D;1PF-RZE'?@'X]_X)$Q?%?3/^#HW]K?2OC/K?A^^\22
M?"^.;7)O"NES6>GM-YN@E1#%/--( JOM+,Y+D,^U-P1=']LGPUX=\1_\'E7[
M,FG>(=!LK^W_ .%-W%WY%Y:I*GVB"P\42PR[6!&^.2*-T;JK1JP(*@@ ^B+S
M_@X__9S\'?M/^$?@+\=?V1_CM\,/#GQ U5=.\$?$SXD> GTC3-5E9T1)A'<,
MLR6Y:2/]X5W()4:1(U)(^\/B_P#%[X9? +X8:[\:/C+XUL?#OA;PUITE]KFM
M:E+LAM($&2QQDD] %4%F8A5!) /Y/?\ !ZKI]FO_  3,^''B-( M_9_'G3HK
M6[7AXD?1M89PIZC+11GZH/2HO^#O#XQZO8> /V;_ -D^_P!3DM?!_P 4/BN9
M_&P2?RQ=6EA)9*L$A'6/=?&4@\;H(VZJ* /KE_\ @K]XC;X-+^UU9_\ !.CX
MTR_ _P"R'4'^()CTE;P:2!N_M<:,;W[<;+9F;?Y8E\D>:(BM?*7_  94_P#*
M++Q]_P!G :K_ .F/0Z_7*;P_H4^@-X5ET>V.F/9FT;3Q HA\@IL\K8!C9M^7
M;C&.*_(W_@RI_P"467C[_LX#5?\ TQZ'0!^OU?@MI_CZ3_@M)_P=.S?";XD3
M'5?A+^S!_:L^C>%)OGM)[K2IH;6:YD0Y20R:K+"Q8C#PV\49R!D_O37\]G_!
M#"UE_9>_X.D?VE?@1\30+75?$UOXRM-"^TC$EV7UFTU:!ESR1)8Q//CG( /:
M@#^A.O#OVP/V+/"/[3_C7X1_%U;2QM_&'P?^)6G^(_#NL7*$.MIO$6HVF]58
M[9;9G(7&#+# 25 W#W&D9E499@!D#)/>@#QW]K[]N?X'_L7:=X;M?B0=7UGQ
M1XXU?^RO /@'PGIXO=;\2WV 6AM8"R+M0$%YI7CAC# O(NY<^#_%O_@M1X=_
M9#\>>&/#W_!0W]CKXD?!#PWXSOUL=!^(FLWFDZQH<5V5W"WO;C2[N<V<F 3\
MRE<([;MB,X^1+#XM7_Q7_P"#S.\^'_Q)O#):?#'X2MIOP]M96^2&6XT.WOIY
M$4\;V%_> L.2J $X4 ?:O_!?;X+>$_CG_P $?/CWX=\6Z?#,NB^ ;OQ'ITLB
M9:WN]-'VZ)T/56)@*$CJKLIX8T >G_MO_P#!0O\ 9Z_8"^!<G[0WQKB\5ZGX
M>%DUU#+X)\(W>L"2(&,!WF@0V]JC&:(++<RPQL7 #DG%?.%G_P '!WP2\9_L
MP^%OCW\!OV2OC-\4=?\ $VD3:M<_#OX;>$FU>_\ #E@MS/#'/JLT!,%EYJP,
MZ1[GD8$$(5^>OF3]C[XF^/OC%_P9R^+]4^)TT][/I'P?\7Z/I=[=DLT]C8W%
MW#:X)[1)&L"^@MQZ5]7_ /!M)X9\.>'?^"*'P1N- T&SLI-3TS4KS4I+2V6-
MKNX;5+M#-(5 +N51%W-D[449P * /4?^"=?_  5:_9U_X*:?LMZO^TW^SSH7
MB1F\.3W%IXC\%7UE$-8L[V*$2BW6-)"DIE0J8G5]K[MI*LKJOYZ_LH?\%;?V
MJ/C#_P %W?C#-\6/V(/BI+:^ OA2WASPU\*O"<&FW>J:';2ZA8W37U]YU[#
M);@&$OY4C[1Y,8WB,R'H/^#873+/P[^VO_P4*\)Z/%Y.GZ;\>$AL;5.$A1=2
MU] % X'RHHX[*/2K'_!-K_E:N_;3_P"R?V/_ *#HE 'U#^V3_P %X?V6OV*O
MB)\/?@Q\2OA+\4/^$O\ B-JEA8Z;IEUX.EL;2QDN)($E$U_<E;6<VYN$$HLY
M+D(^%)&<U3^!_P#P7U_9<^/W_!1G3?\ @G;X)^$/Q(BO?$.FW-[X1\>ZGX<^
MSZ/KT,%M+<FZMM["9[*2."7RKO9Y<I4;?E97/RO_ ,'9G@[P[XT^(?[%^B^*
M=-CO;"_^-LFGW]C.N8KBWGFTU98W'<%5Q]":_4;]JSQ<_P "_P!F'XA_'+P5
MX8LY=;\#?#;6M1T%%LT+*UM8R3I G'",\,8V#@X'I0!YAXU_X*6^']5^.7BC
M]FC]D3]G_P 7_&_QEX%*)X]'A&\TZQTGPW.X8I9W6HZC<P0F[.T_Z/#YKKAO
M,$>TXSOV-O\ @KG^S_\ M8_'WQ+^QUXH\#>+/A5\:_""&36_A=\1;."&]DA"
MJYN+.:WEE@O(=CHX:-\E&$@4I\]?*?\ P9\:C9>)?^"7/B;QU=ZBU_XAUSXV
M:Y=^*]3GD,EQ=7S6UBQ>5SRS&-HVY_OY[FO'?^#EW0]4_9[_ ."KO[#O[9_P
M;C:T\::GXN?0KV>T!62]@M-1T\Q0/MY=9(]3NX6'=)-O0@4 =Q_P>:6\+?L&
M_!^Z:,&1/C[IZ*_<*VEZD2/QVC\J_3+]MW_DR_XO?]DOU_\ ]-T]?FA_P>9?
M\F"_"'_LX#3?_35J=?I?^V[_ ,F7_%[_ +)?K_\ Z;IZ /@;_@TIUBP\._\
M!%*P\0:HTHM;'QMXAN+DP6[S.(TD5FVQQAG<X!PJ@L3P 2<5]#?LF?\ !:G]
MF;]M+]OOQ?\ \$__ (,^ /'MOKW@;P?=Z[K^M>+O#$NC1*8+RRM3;):W>R\5
MR;U'S-#%@+T.01X'_P &AW_*&S1/^R@:]_Z.2O.?V*K*WL/^#Q_]K*"V3:K?
M 6QD(S_$]MX.=C^;&@#ZO_:-_P""[G['7[-O[9?@_P#8?\7>'?'">)_%.L?9
M;G7-7\+S:/HFEVRO(DUZ]YJ A%Q ABD_>VRRQ'8_[P;37FOQR_X.6OV8_P!G
MKXE:#;_$[]DKX\Z1\*_$6KIIVD_'#6/A[-8:!?.X)$]M]I*37%OL!DW*@D9$
M9DC< 9\0_P""Z7A3POXO_P""]/[ 6A^*_#ECJ=E=Z[.EW9W]HDT4ZI?V[JKJ
MX(8!N0#D9KV;_@[/T?3=3_X(J^.KV^M$DET[Q3X>N+)V7)BE.HQ1%AZ'9+(O
MT8T ?H?XF^(G@/P;\/[[XK>*O&&G6'AG3-(DU34->N;M5M(+*.(RO<-+G:(Q
M&"^[.,#-?)NE?\%>[GXA?LY:M^VG\!?V&?BGXV^#VDPW=U%XLLI=+M+W6;"U
M=EN+_3],NKI+B>!1'(5$@AED$9VQG(SP?[7?[/\ \:OVM_\ @VUB^"/P)2ZO
M?&6O?L^>%I]-M+>3]_J36]OI]W-:IG[SSQ02P@'[QE [UD?\$4?^"B/['_AS
M_@C=X)A^,7Q<\->#;_X.>$9/#OQ,\,^);Z*SOM(N=/+Q.LUK*1(6F1%=5VDN
MTA0 N&4 'M/[%'_!:W]AO_@H'XOTCP7^S5>^/=2N-8CG,%]??#35;;3H9(83
M-+#+?-!]ECD501@RX+$*I)9<_6M?E5_P:0?LP_&[]G_]@'Q=XW^*WA#4_#.D
M?$CXBSZ_X(\-ZO$T<\6F?98(4NS&P!03&/"Y WI"CC*NI/ZJT ?BC_P>X@?\
M,7_!ML#(^*%Q@_\ <.FK]8/C1^TA\-OV3?V>5^,_Q4L_$4VC:7I2//%X6\)W
MVL76$MVE)\BRAE=$"1N6E<+$@&7=1S7Y/_\ ![A_R9=\'/\ LJ$__INFK]??
M&")+^S]JD<B!E;P=.&5AD$?9&XH ^)_@C_P<9_LL_M'?L[:C\<_@9^SU\7/&
M&LGQ;?Z-X8^%WA'PJ-5\3:M#:P6LLFI/;6LCQV=F#=*AEFD RI"[G^2O4?\
M@EW_ ,%C/V>_^"H[^-/!_@;P%XM\!^//AW?+;>,OA_X[T]+;4;'<[H) %8[E
M$D;QNK!9(W7:Z*&0M\>_\&77A_0;/_@EYXR\36FB6D6I7WQHU&"]U".V43W$
M46FZ88HW<#<RH99"JDX4R/C&XYJ_\$];"ST7_@[<_;&TS2;=;>WE^%-G<R0Q
M<*TTB>')'<CNQ>1VSZN?6@#[[^(__!0#R/VAO$/[*_[,_P"SOXH^+?C/P3IU
MG>^/TT'4].T[3_#:W:-):6]Q=7]Q$K74T:F1((E<A/F<Q@C-#]EO_@I=X?\
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
M@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH ****
M"BBB@ HHHH **** "BBB@ HHHH **** "BBB@ HHHH **** /DG_ (+=?\$[
M/$G_  4__P"">_BC]F/P%XFM-*\4B]M-9\*7&HNRVLE]:N66"<J"522-I(]X
M!V,ZOA@I4_"__!*S]J[_ (+E?L$_L_Z-^P/\=O\ @C+XT^(=QX*1M.\&^*M'
M\86%A;&SWDQ6US=/YEJR1[BJSK*,1A%*$J6;]GJ* /Q&_P""BO\ P;__ /!1
M?]N+7;C_ (*=Z7\2/!?@3]IRTO["]\/_  ^\"2FVL+.TLE_T:-M8<+)<ZNI$
M9^UN$@/EK$-D:I(OI_[*?[7?_!R;^TQX>@_9&^-W[!>D_#'59H!IGBO]H;5+
MX6JZ;9D>7-?6EC&[)=:ALW-$87\CSBC,B1@@?K510!':6ZV=I%:++(XBC5 \
MTA9VP,99CR3ZD]:^4O\ @K]XK_;]N?V3O%7P3_X)W?LM:YXT\=>-= FTRV\5
MP>*=$TRQ\/13[HIYB;Z^@G>Y$18Q".-D#,K%P4V'ZQHH \5_X)Z^%=5^&O[(
M/@/X-ZI^S9K_ ,+/^$*\+:?H<?AKQ!J>E7DG^CVL:/*DVF7=S%(K.&.]V21V
MRS(-U>1_\%VOV>?B;^U[_P $Y?''[+?P@_9AUOXE>)/%UI%_8"Z7K6CV$.CW
M]O<0SP74\VI7MN57*L/W(D9@'1@H?)^QJ* /S?\ ^"!VD_\ !47]D7]CS3?V
M-?V\_P!A?Q/:'P/'>#P7XMT?QOX9OX;C3MLEQ%I\Z)JOFI,)2T$+!3%M>(.T
M2QLY\R_X)N?LM_\ !1'X#?\ !:W]HC]MSXR_\$__ !9I/P_^,_G6^@7UOXX\
M+7-SIRK>0/#)=P1ZL6"M%&S,(C*RMA0K@[A^MM% 'Y.?\%6?V9/^"B/[0_\
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
M/@GX*SZ#+?0ZQ\0_"5K>ZL;35Y+^X$,8U=E0&-PB%V!+@D@+@G]J** /C?\
MX*P?\$]9/^"QG_!/75/@-XA\,:C\._%\&I1:YX)_X2N6SF;3M6MUD2/[0=/G
MN8_)EBFFB8QR.RK+OVDH%/P?^QQ^TO\ \'5/[*_A#3/V(O%?_!.70?B-=>'H
M5TOPW\2/%.M(EM#:(-D3W5[!=K%=QQH%P?DG95PVZ0U^W%% 'YK_ /!1O_@D
MI^U+^TA_P1I\:?LS:1\3[3QA\=/%7B:V\<>+]4+K8V7B76DEB,EC#O*K!;QV
MT,-K:B3 "V5MYA7+..'\#VW_  6U_;$_X)3>)OV$O'W[!7AKX1:M9?!F\\)7
M?B[Q7XO@NW\4/'ICVL-M8:=;E1:27&(T>YGG\F#S&=$FQL7]8** /R,_X)H?
MLS?\%8/A9_P0B\<_L7?$+]FVS\ ZYX;^%_C#2_AQ91>)8KC7_$.M:A<W=[;7
M.(V$&FQ127+0JKR2/,Q60F!8P)?=/&7[3/[6'[0W[#GB']F/]KG_ ()$_$?4
M/BEXC\&SZ)JOANT71KWPMJVH/"8UNTU07I@M;?S=LQ,F)8<?()616;[_ **
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
M1_[))*H7=1,ORD@@?K510!^3O_!5G]F#_@HA^T-_P5V_9J_:M^ G[!OB?7?
M?P(UP3:_JLGC3PQ:S:M&VH(\SV4$^JJY7R(@R><(6+/M94P37J?_  <#?!;]
MLK]N_P#X)RW_ .RI^RU^QAXKUWQ)XOO])OKN2_\ %'ARQM]&CMKSSY(9WFU0
M%YOW" "$21XF!\S*LH_0^B@#X;USQ#^UY\*_^"%FJZ!)X<'P(^*W@#X&6NCI
MJ_C?Q#I<EG97UIIT4$MU!=:?=72*IV.('DVN)&B+)U%?!7[.'QZ_X+B?L]?!
M7X?^'=?_ .#=;P1XJO/#/A^T2S\6R&W_ +7O"45S=W#---.EY+(QFF9\.9GD
M9E5L@?H9_P %Q_V#_P!J;]OW]DO1_A_^R)\8=.\,^+/"7CO3O%=MI>N C3_$
M#V6]XK2X8*^T+,8YD#JT;20H' XD3R+X=?\ !13_ (.%M"AM_ GQ>_X(+:3X
MB\01XCN/$?AOX]Z5I6ES'H9ECF%T44_>VF8L.F,\4 =G_P $Z_\ @L'^T)^T
M3^T7%^Q]^WE_P3N\8? #Q[JVAW>J>#+G59I;G2_$D5H8_M<<$KP1[98UE1]J
MF5=N260E%?[WKYH_9J^ 7[47Q%^,NF_MC?M[CPGIGBW0]"O-*^'_ ,.O UU-
M=Z=X5MKUH'O)[B]F5&O[^46\$1D2..**-&2-6\UY&^EZ /R"_P"#F_\ 8U_X
M*,?\%// O@+X"_LB?L,>(]4L?!_BN^U35?$^L>-/#-C;7?[HV\'V:.35//96
M5I)"98XB 4!7<6"_?2?&']ICQ!^QUJ-YJG[!GCRQ\>?\(J+%? LGB?PPSW%\
M]I(C&*Z35C;BW650"[NDFV12(R0P7Z#HH _+W_@VI_99_;C_ ."</[&WBO\
M9C_:V_8P\3:%JDOCG4?$VEZII_BWPY?VE[%+I]G$MJ/(U,R1SF2T91O01?O$
M+2*-Q7F?V1/V:?\ @HK\,?\ @X,^-?\ P45\>_\ !/OQ;8?"_P"*WA)?#NFW
M"^./"LU]8&)=)2*[G@35B?+8:;(2D9=U\Y.#M(K]:** /@[X4_'S]OS]E3]K
M?XX>'OC3^PU\0?&?P7\2_$&76/AGXX\"3Z?J5W8J]G;)<6TVG?:EN1;-+&\D
M<BH6#O(-I5@5YC_@GE_P3U\<0?\ !7#XU_\ !6OQ#\"9_A'X=\>>%8O#OA+P
M%J36J:GJ+LUE+>ZS?06DDD5HTLMDI6(NTCF1Y)51S\WZ,44 ?D%I7[)__!4C
M]@[_ (+N?&C]K']F?]BW2_BWX"^/6D10V6N77CZVT:VT&=C:R/+>,ZR3!8I8
M9=T:0L98W0QL7#1U+_P7)_9"_P""F_[7WQW_ &6?$OP&_8NU7QW)\ O$W]O>
M,?% \6^'-&L?$%T9M+E86,%SJAGB1FL93^^12@D0?/@FOUXHH Q?A[XHUWQG
MX0L_$OB7X<:SX2O;I"9_#WB"XLI;NT(8C;(UC<7$!) R-DKC!&<'('XY_LK?
M!G_@JE_P1F_X**_M#:+\%?\ @G/J'QX^&GQV\:'Q!X4U[0O&-II:::QN;J:)
M+F>=7$.U;QHI1*J<PJ\9920W[344 ?C5XN_8R_X+$R_\'!7P[_X*!1_ ;PMX
MOMM'^&<=MXHE/B0:+X;T?[5#J5L=+MKQH9KN[:W$\<K3"VD:60L?+@C>..+K
M_P#@L9^S!_P4=_:G_P""C'[*/[0/P%_8)U[7?#7[/GC./6_%6HIX[\-VZ:L&
MU'3IYHK!+G4HI6 BL6V//' 295RBX('ZS44 ?"?_  7&^'7[67[:'_!,+QE^
MRY^S?^QEXOUOQ=\0[33D2UO?$WARRBT7[/JMO<N+J275 K,8[8E1!YRDR("R
MG=M[+_@F"G[3?[-W_!-+X??!GXT?L4^.--\:?#/P3INAW/ANT\1^&KI]:EA0
MQ&2SG35?("!45V^T20$>8 H<@U]=44 ?E/\ \&Z7[)G_  4!_8A\4_&WPK^V
M3^Q3K7A6R^*GCT^)M*\06OC'P]J-G:!EN#+!<I;:B\X/S1A#'%("6;=L R?G
M0?L$_P#!9W_@@?\ MC>-?'__  2I^#5O\9O@+\0M3:]?P([B4Z?EF,4$D FC
MGBG@5VC2YAWI)&J>:N0$7]XZ* /AS]@_0O\ @IO^U1\2]+_;%_X*7_"?0?AE
M9>"[*Z/PN^"WA>^%S<_VA<V[P3ZOJ,[2LGGBVDFMH(MRA$NYS(JM@GYU^&'[
M./\ P4<\-_\ !Q+XZ_X*::]_P3N\8I\+?$W@5?"^G&+QQX2;4X1'96$8N9+?
M^V-NUIK-_E#E@DBDC(*C];:* /R>_P"#@W]DK_@H%^VY\=_V>M2_9._8>\0^
M*-+^#'CR;Q#K>M7?C7PWIUOJ2^?8.D5JEQJ2S$D6LF6ECCQE<!LG;ZG_ ,'
MW[$'[1W_  5*_P""6"^ ?@9\)+_3?'FD>+['Q-9>!?$FJ:?%>SBW6ZMI+?SK
M>ZFM!*8KEI5_?E2 %+!C@?H=10!\S_\ !-CXC_M]_%CX6:=XB_;2_9BTGX.)
MI?AVTTNP\))XECU;4=3NXU43:C,\2K'9PD*JQ6V9)/FD,C#$8/TQ110 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>XML
<SEQUENCE>14
<FILENAME>cgnx-20201231_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/20201231"
  xmlns:country="http://xbrl.sec.gov/country/2020-01-31"
  xmlns:currency="http://xbrl.sec.gov/currency/2020-01-31"
  xmlns:dei="http://xbrl.sec.gov/dei/2020-01-31"
  xmlns:iso4217="http://www.xbrl.org/2003/iso4217"
  xmlns:link="http://www.xbrl.org/2003/linkbase"
  xmlns:srt="http://fasb.org/srt/2020-01-31"
  xmlns:us-gaap="http://fasb.org/us-gaap/2020-01-31"
  xmlns:xbrldi="http://xbrl.org/2006/xbrldi"
  xmlns:xhtml="http://www.w3.org/1999/xhtml"
  xmlns:xlink="http://www.w3.org/1999/xlink"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <link:schemaRef xlink:href="cgnx-20201231.xsd" xlink:type="simple"/>
    <context id="ie28d7d4d82cf4926b2eb2f5b46e79f89_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="i1e5c63c6777548228466750a07807abe_I20200628">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2020-06-28</instant>
        </period>
    </context>
    <context id="i339b13469197477d94eadc65702c8699_I20210131">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2021-01-31</instant>
        </period>
    </context>
    <context id="if37f3b9e731b4d1e91e114764a70d4e3_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i2929afbc60be4803907a61e4c5f55328_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i9fff755b6c964c4bb8475318c4c49aa3_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="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="ia5e209f0702b4c21aa1c9a42a15a02af_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="i75e8b9e5dee441478b9993822d16dbea_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="ib740d5d51df04ae39bc1007f04b7006f_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i4c1657bbb1e14689bca7759ab900536a_I20171231">
        <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>2017-12-31</instant>
        </period>
    </context>
    <context id="i196202ba57cc46579609aed9942d10f2_I20171231">
        <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>2017-12-31</instant>
        </period>
    </context>
    <context id="i3ca99dcef7da4e51a06a7b5b68dff825_I20171231">
        <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>2017-12-31</instant>
        </period>
    </context>
    <context id="if2f71f53722e4bff8659e08cb2a42c5a_I20171231">
        <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>2017-12-31</instant>
        </period>
    </context>
    <context id="ibf40038bb52a4f1181e2f742f8d40d87_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="ia1e13233ac8647048845e2ac09a72110_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="ieb56650aacb54d5db569f14310bf4ebc_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="iedffb70ace1a4bad959695c50169dcfb_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:RetainedEarningsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="i220fc0bd47034127b63419a5a59121cf_I20171231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:CumulativeEffectPeriodOfAdoptionAxis">srt:CumulativeEffectPeriodOfAdoptionAdjustmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-12-31</instant>
        </period>
    </context>
    <context id="ia4775eba0847484d8a60d2898aa44e7d_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="ic56795ffbed44cb0a764c893a61f362c_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="ia62e59cca4464221bd523e2d6a7fa886_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="i834d53a969284896ab357f2b0c3ce657_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="i3b2f6aa05d494335a02b2ec5ac168e04_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="ia5a7f0963d0a41e48eca3667ebc4158c_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="i68c7c78a53c24716aad2cceea35dacec_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="i7008e007f58a4b5899374ec64dccc60a_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="i71c39cc633c0412297a724a3b198be69_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="ibdc0572db597422ca189e88018b0643f_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="i9d842e36605b43ed998c954d642af881_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="ide1cceaa5ce0486d98bb6affeac5ae3e_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="ib07c07bbfb5544c0bb97b2d16c24b634_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="i614c651180bc4855b70dad93f31f1adb_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="i9331cd59f3404613b09d551f5497228b_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="ib93dfd73638e4f62aa3d14c2f68e837e_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="iaac1bff8fed84c9892e20cf9f3b4cd94_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="i7128fd43290d4ce6ae12cf03ea620b76_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="i24a0b5b69e504b0a896f227f2e9fbeb6_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="i4fc0936b019746c399fb17074b41e6c6_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="ieeb8bb7dd2d740d5859437f51890dfc9_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i48348e745c5148028dcaf82df7d0d8a0_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i4117606912f54ef5b9e2782948d44c65_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="idcbb75f3495b46c795238fd12b0aa33d_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="if36850dcbd1740589493383b1e09703b_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i68fc84ecbb8a43adb8e29a1f59702ea0_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i9bce38372afb46f1aa436c4c366ee94c_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="id295a98d84ed4145b2fde7a52e5db2ee_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i182946fdfefd4286be6379d3fb85519d_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie90785a53db34fff861b69bab7968858_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0bac989307494e9480022581cd700e24_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i34092537a9cf4f458b524cfe7470dcf1_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i0f77d4a1ec5f45e88a15ed192e49d2f7_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i4cb9bac3005844c5b3ae926944c6a28e_D20200101-20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i7e7e0780689c440b8357752ce62fbac1_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="id38d793df24e43ae9d8398d2c1445363_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i66c410db46994afdbd8eab3a179f9761_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i552f23c3101048d4ad40b89158a2b96a_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ic8ac339cd888416e99fef2280bcb1383_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i3105dceca27c41bea714c34ef0d49b64_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i50d1c612bfe54d33a636415a8399e08a_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="ib80d5a29b52141d2acf74afd3a3894ce_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i4fb853a9f1a949509cbf8fc704fad5a9_D20190101-20191231">
        <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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i99a19abb27ee4bb487e56611ad25d4e8_D20190101-20191231">
        <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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i127ae93373df4175b0d7362a4868665b_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="i47edaa0105b14a2abb0d25130a7122bc_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="i57ab937996f3463d94ec12d192aa0658_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="ib6e966fb06894826a5f17d7c75db01e1_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i763bb4fb2d5f4ff196fee6ca401674d9_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i07177f365f7c4768b8d6f79d1941bd9b_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="i90fc7fe205754f009adf7ecf46482ca0_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="i41bf1923baf84302b5799a45b6d13a02_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="i7c8798724232442baaef89052ef86b4f_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i43cb724ca92b4d529471388e4c6aa1c1_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="id84753405a3f4ea0ada1581e69e5e83b_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="ic699385aee064f088395dd1a1145c14f_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="i6f32895aae07493ba2be1294738fc07c_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="ife6d3b1743a642a3ab1be80d73ca9b4c_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="i500374dc2fa943ee973d4e8eb7768bf5_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i2c24ca74f8564fd39926e7a3f5ef51a6_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="i7c1b53d9a7ee4f3e840dee641c3d7e70_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i86d4d2ca8e2343a6b857331595592807_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="i1ccb72574960407e9799ead9ecf20985_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="if5707525027143bbab21055ba6ecb30a_I20201231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="ifc5414a3304845e5bda45a454f655774_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FinancialInstrumentAxis">us-gaap:CertificatesOfDepositMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="i324afc1a28ff430a9a4489d8845df9d3_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="ie8277ff2013144aa872677ea05263934_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i5ea119f35960478b80c8c23a7bfa29f4_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="ic6dbb15ae5b740ab9bdd27fbbc2efda0_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="ic4d8f4817c754d62ae932c2959592db4_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="id5fb5c3c941c482980cbee5c7db0d507_I20201231">
        <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">us-gaap:ShortTermInvestmentsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2020-12-31</instant>
        </period>
    </context>
    <context id="i1408636db4ac405b9c208760e205a9a3_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i202533b994e74b5c833a5628cd152023_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i55d96b4194b247fcbe5346f132d94964_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i2efefbc6cef645aa8b0601e7585c8b93_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="icff2afc806564b9bb491036d05dd55e5_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i71022fedb4fb4f8ba4f38fce1d72eca6_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i0eaceaa1dcd04d4e83c5dc04e5c35116_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="id71e8694ba5f492184d2c743f99ad454_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="ibcc3f33ed9014cb08b2e1293011a9151_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="i48b62d90851749ac9c03fc1cb1c1ebbc_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i218148f2a7544001b13f07777e27f0fc_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="i3b0c04aa43fb48cda5ae8bfd82141d82_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i3b0ec7f8d69d49c18cf9da3008df7d44_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="ie12dbe3e996e42e9b339bcf6aed23d6f_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i8d4ad474693841178fd01634beadc2cb_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="i2c7f1534acdc41b6b83fef288833ab1f_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i0e5e7ce331ec483fbd7ebf4d80540114_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="i8732058db3184ba59c6e2cc6cccf3974_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i799593d8b62b419ea601b7af8f7a1e5f_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="i87982faadf4f416eb7ec7c3a6c8216c5_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i3e3040ff593242ae84a0a31f6baccf93_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="i3dfc489296454de1a7b79e56d536e5c7_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="ia0c071df8b2c4479a45a92ebc539394b_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="i011aed5572fd480ab06c7ea32ab87210_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="i09e30511c6b84ebeb0e0ab61e3e3dafa_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="i39a995f9a76945dcb35a1f3f5dab89b0_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="iaa79f869e70d44c48285a931a374a8e3_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="ic0f9eb803c134de98161f8b3dbc1ce95_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="i6ee9ee02e4bf4822b6c259421cc22dd9_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i308f31c5d8ba450ba20913a309267fb4_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="i1eac7832e000472982f73ab5c4639a3e_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="ib499337978d64c0996f876ba7e3c08b8_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="id65d8c0bdbf74398a35cfe8104c30b2d_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="ib24b605f63cf45cba1a5241a4474e599_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InProcessResearchAndDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="if5088b63841d443ea2181e2aac05f114_I20191231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:InProcessResearchAndDevelopmentMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-12-31</instant>
        </period>
    </context>
    <context id="ie17bd31409ec49ada21e79d6bc9f4905_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="ifa6e76ebd0604c6fb7f2534a1457c766_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i6e84999093c84481a74e39726977d099_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="i2ec5ea0b1ca4492e80d0a8603b4039d2_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="ib4a1793dd0e94c0b9920e9fa24b518b4_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="if86e7b3ca23041ce8ac0f7a210ea1142_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="i5dc07c358d534713bc54541683dc51e8_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="if0dc89428d034c9082662b3998a327f0_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="id125001a88314a6cb3e00cd9cfaebd63_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="i4503ad3ffbcb438ab03343baa505dad7_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i3dda9084cd3d41309db2a7e221067614_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="i27e1097059694622a8c3700d3d84510d_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i256cacfc43da44b1a64b0b147f385a07_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="i1c105ea70aa24e3c81daeb00339a62e9_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="ie18106478531477d9cf2a90de218a21c_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="i4728f332e46840d7aea525c9eaa35aaf_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i9f6d19bc81a2447cb20b33ed5d4e72e8_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="i82422d1a11ca4a77b1f16cb2de6e0881_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i27e2ae5199ff4981a2777a3ba46d555a_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="id2b1b3d989764ca4a14ee11ef0312f70_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i98836da978c546fda0472b613300f607_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="i63ab6dd878f44d6391ba8aa3d6ade87b_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="ic0e8d638d38640898e535a75e7cbcba0_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="ic91b735b9c514594bf98f5c8c01a0479_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="ie26e559fd2fc4181af7adeae0db48039_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="ib69a426c887140268968b1645cfc6863_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="id2536238c18941b1b330f426e3f204c1_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="i3e64074e131b49e786d6d237d108eea8_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="ia35a06653c644fd3919ff12db60fe22d_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="id668c42d5d03462d90e84f0641b25f23_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="iab20f4d47e244a76ace9b260b5743e28_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="ib5afb25330124ebcae58b0e8d3dc05a2_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="i322fd20d156f460fb46528a0407d0f6d_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i45bf844ee822481abb812259f0c55cf5_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="i28319ee35cab4f669cc68e5c779ce9a2_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="i005b7b838db94fae896c3e37497e3a38_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:AmericasMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="ibfe6673ddcfd4beda048b11f578ced24_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="i2455679b0dc24386ae718a31db1121f5_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="i0f9a6d89f1af40dab151c1916512c5a3_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="ib9cc7499227e47a1bce0663b99b3a27a_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="i3c0cc26b301d41ec94472b653c04964d_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="iee1584fb047e4cd0aadbe377ee63edb0_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i0b7584e39a7e4678a6ed685684989018_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="id39fbd1324fc4c9e9dea6a121e2ad1b7_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="i1693f4a03a22420681a119048a5f80d4_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherAsiaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i7ef1b2f387074286a1f393195b0d6023_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="i7871153220d1465d8b9175beda208c9a_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="i7cc61298d56c4c5a8ea7c807f888fb48_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:StandardProductandServicesMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i2d31200b11d44782a5477bfdc49ea925_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="i8302b4fda4d440c28ff639b7e1be6c18_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="ia9f2c2eca7cf407d99a3940e46c8337b_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">cgnx:ApplicationofCustomerSpecificSolutionsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i68be99e07a8140f985fd37cc10ad792c_I20160427">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2016-04-27</instant>
        </period>
    </context>
    <context id="id6b1384256a24d76b0b52d56219d0b4e_I20180425">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2018-04-25</instant>
        </period>
    </context>
    <context id="ia5190f5ec7d04c8eb5bff1a85d304050_I20160428">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2016-04-28</instant>
        </period>
    </context>
    <context id="i189ffbc258f445c5a5406966389b4ac6_I20170412">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramApril2017Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2017-04-12</instant>
        </period>
    </context>
    <context id="i680260920a244ceea6d6b45594dda05e_D20180101-20180401">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramApril2017Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-04-01</endDate>
        </period>
    </context>
    <context id="i4fabd548970d4d4a8f0d64285da4ee5c_D20180101-20180401">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramApril2017Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-04-01</endDate>
        </period>
    </context>
    <context id="i82791ebbdb2d4f73853570e7517f3d7d_I20180201">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramFebruary2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-02-01</instant>
        </period>
    </context>
    <context id="i84808d8bcf3b40a8bf77cc46b34bcf52_D20180201-20180228">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramFebruary2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-02-01</startDate>
            <endDate>2018-02-28</endDate>
        </period>
    </context>
    <context id="ifae0eb830ac74cccafe0924a206f022e_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="i473e7a64a83447199f7bf33c5a6abd76_D20181001-20181231">
        <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>2018-10-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i4e62174a29dc4fc7b8238d08ab0deeec_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="us-gaap:ShareRepurchaseProgramAxis">cgnx:RepurchaseProgramFebruary2018Member</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i8f883d77d8a34a5d99abb929376f85dd_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i1661c3b621a94e96a52ae601c8ee5e7b_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="iab80bdfd853640dc95144e692cb58029_D20200101-20200329">
        <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-03-29</endDate>
        </period>
    </context>
    <context id="iba2e5e421b5b4a57b2a259c12b514f1e_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="ic6c4df4e7a9a402fbdd4bbc4286660dd_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="ic2a942828c2a44139ac97717f4ba97b7_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="if71679ad1ab44c19930e3c255a129572_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="i651cdc8b58564e339fa15af8d913fa7b_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i7f525d4341784263bb99a14dc9cf941a_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ibc99913a4dd04ed587dd18819f2860b9_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i368f9eb389bf44adbc815e7aa2868e04_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="i38980c90881940f69c5ee24c245a2ff9_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ida6e37838d504208943572dbc92ab92b_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="i809038d6962540f18bd0b417106a9f55_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="id2ec20935d9d4d07b547537940241758_I20191231">
        <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>2019-12-31</instant>
        </period>
    </context>
    <context id="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ib541eff2ba94440dbea39fc8fbf7e5de_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="i779443a03a8044f2ad85a8a7ef9d1010_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="i0100324df77340559da96b293701bf79_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i4a55c180e4c04a52b6246037f9445c54_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="if426f384a9bb46cbacd084e8d71c197a_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="i3f22b7eff3054cdc99db890d8f600218_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="i4bb46d4ab7b349518f7b7d7470bab716_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i1db9dd2158be4fd2a250c3e922e31be2_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="ifa6acb19879149b1ae589acfec1446b0_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="ieed8f593cfe7487bb17f454efb335bdd_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i462c024635b94c3bb4a833b35d0998ca_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="icd5ea7b2dba043e39df4b54b2bfa446f_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="i2903f39accda4c9fbc44e47302e41e23_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="ic34831677ded4373b4d68ec0ccb0a15b_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ifbdf0ae819594cb49f4c1e2f90ad10af_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="idc4d65f03e5f4807a2e320e83cb6f52c_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="ie91c97a2dae54d89aca19258376342cd_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="i9585a4990b0841d78d4b36d1b378c43b_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="ic48912cbc17b4251b7d020048b72df79_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="ia73f3fc2b64c4e2582288e0adf3c57b1_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="i5a515bc5bae6415eab49241663c963be_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="i6190f02336a543c295b3b8bcc1483263_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="ide172e3d496d43dd8c49b008179d1944_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="i646f28e36e1549a997f83f579e5fcc4e_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="iac4b14509e984788854e67cef6971927_D20200101-20201231">
        <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>2020-01-01</startDate>
            <endDate>2020-12-31</endDate>
        </period>
    </context>
    <context id="ie355c14ef9d34a27b2d42fbc0aa3a07d_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="id6f2d6204d6d4481aa38f21288abe631_I20201231">
        <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>2020-12-31</instant>
        </period>
    </context>
    <context id="i7d5054231975477bbc455390b1195587_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="ib6eaadfb2aab4fa68a92113aa083ed66_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="i77bd997d9cd240a0a39403e13f7fa372_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i4d22de0a070640c0969df0023f0d5bd4_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="i91547104c6e54802adc08015c4e816c4_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="i0c04c5967faf43108a2b44e1eb1467ba_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="i3c10e6816b864f37a86cb0f6bb0735a9_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="iacfa50daa2fe4c539ad33435ea3b8a08_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="i5df31456d9734b238cf6d82c794debfd_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="i00ca102b165c4c3db45dab357f1bec1a_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="i648bad067bdc4d4489358d8b681752f7_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="i746a867e03db40d2ba017800c468fef6_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="i5fdf4bf4bded45cbbbb2b5fe9674984d_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="ib2628019e5884269a64b6816274d0949_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="i3a5907b6d38040178c89577a865ccdd9_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="id26bbc6a4fce4ee4b4844c551ffbcd52_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="i1f2df605085e4c16b8cb6bae2c82dc17_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="i52bc079d60364e258cd8c95018302d13_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i3e5a7c3891874475803e5cc3eff8e278_D20180101-20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="ifafb1a8d25934dc08c31868b6bcbe384_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="iab0087b78f23431ca5626d7b81c5b2e7_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">srt:EuropeMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="ibc01324d910d4a5f891ff127e62379a9_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:GreaterChinaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="iba687ef314c646918abb65b1eeb24670_I20181231">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
            <segment>
                <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">cgnx:OtherGeographicAreaMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2018-12-31</instant>
        </period>
    </context>
    <context id="i34d8f3c69efc42209391814f2a19744e_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="i5fa2c3db08364cf9bd07608173af36a1_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="ibffce964090a497c887ee131bacc1fd5_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="i65add4e3d5b64520a77634d4325ac6ae_D20190101-20191231">
        <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>2019-01-01</startDate>
            <endDate>2019-12-31</endDate>
        </period>
    </context>
    <context id="i026f4bd009c043c0862c4af3db857458_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i3181f39a9ece4d42a19fcf211f42e203_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="ief4089b8c7b34be5b00f1b2f4403ceed_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="i9f1cef1658d7425f8fb46c98ade30cb0_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="ib3b9e3e754784b8a883740beb69647f9_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="i53c699b5269249168914134a4dba2402_I20191016">
        <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:CompletedTechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-10-16</instant>
        </period>
    </context>
    <context id="if17d8ab6bbd442cebb0469b4030f8993_I20191016">
        <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:InprocessTechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-10-16</instant>
        </period>
    </context>
    <context id="iab276190f0f64ca79a123e6fbc3e0f84_I20191016">
        <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:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-10-16</instant>
        </period>
    </context>
    <context id="i3feb9908ffcc411ca51ca9428c2087d7_I20191016">
        <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:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-10-16</instant>
        </period>
    </context>
    <context id="i90630e79dfaa43649fce5b15a9b58931_I20191016">
        <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:TrademarksMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <instant>2019-10-16</instant>
        </period>
    </context>
    <context id="i49224b955c854388a485ddf240f6b6c2_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>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:CompletedTechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-10-16</startDate>
            <endDate>2019-10-16</endDate>
        </period>
    </context>
    <context id="i9323aa33b7ba4726a2ca36589f0a5e3e_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>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:CustomerRelationshipsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-10-16</startDate>
            <endDate>2019-10-16</endDate>
        </period>
    </context>
    <context id="i9f4951f283f745dd9d4fdca84cb3d759_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>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:TrademarksMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-10-16</startDate>
            <endDate>2019-10-16</endDate>
        </period>
    </context>
    <context id="i2821a398bffd46768fe52ad96d602eeb_D20191016-20191016">
        <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:SualabCo.Ltd.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-10-16</startDate>
            <endDate>2019-10-16</endDate>
        </period>
    </context>
    <context id="i1ef9b43f5b59456bb824e0eda27daf6e_D20191016-20191016">
        <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:SualabCo.Ltd.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:IndefiniteLivedIntangibleAssetsByMajorClassAxis">cgnx:InprocessTechnologyMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2019-10-16</startDate>
            <endDate>2019-10-16</endDate>
        </period>
    </context>
    <context id="i0edb3f43f00449ceb40a0bed0beafa85_D20170412-20170412">
        <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:SualabCo.Ltd.Member</xbrldi:explicitMember>
                <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:NoncompeteAgreementsMember</xbrldi:explicitMember>
            </segment>
        </entity>
        <period>
            <startDate>2017-04-12</startDate>
            <endDate>2017-04-12</endDate>
        </period>
    </context>
    <context id="ib391e5eb31594e308bef2a25810dbf65_I20200526">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <instant>2020-05-26</instant>
        </period>
    </context>
    <context id="i3dd19d64ad784899a5163158c879090b_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="ibf69a777edc9439f8408d65906e118f2_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="i1014d0429e234545a0da021351ef7a26_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="ib2ec5da1c598442e83cb678d4c0703a7_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="i58b0269806a34ecf901f561c702ca253_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="i74ff1e1493a0418daa710e42429847e6_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="i15e487b1cb144371b2d581e8b6c32c6c_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="i697b402587d640b29a6131eec6eee921_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="ie03bd6caf6c04201a1251cc3ccce7ef5_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="i4cf92bf23f0c48f9933406a00f53bbf9_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="i910901a831a74c5a94efe291993cb6db_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="i0f3836fb4ff448cb8224c36be297098e_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="icc6eade4fc96482cbe1fda703ab9bec1_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="i1c3a59091e4241499f1eb919fa67a6c9_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="iacfefc04f8504b0784f70c45f9371633_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="ibe2a9b71d2a34641867e257f72e7ac89_I20210211">
        <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>2021-02-11</instant>
        </period>
    </context>
    <context id="iea3807e5f96a4f27a97d05dbb4f0c9dd_D20210211-20210211">
        <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>2021-02-11</startDate>
            <endDate>2021-02-11</endDate>
        </period>
    </context>
    <context id="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2020-01-01</startDate>
            <endDate>2020-03-29</endDate>
        </period>
    </context>
    <context id="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2020-06-29</startDate>
            <endDate>2020-09-27</endDate>
        </period>
    </context>
    <context id="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2019-01-01</startDate>
            <endDate>2019-03-31</endDate>
        </period>
    </context>
    <context id="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2019-04-01</startDate>
            <endDate>2019-06-30</endDate>
        </period>
    </context>
    <context id="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929">
        <entity>
            <identifier scheme="http://www.sec.gov/CIK">0000851205</identifier>
        </entity>
        <period>
            <startDate>2019-07-01</startDate>
            <endDate>2019-09-29</endDate>
        </period>
    </context>
    <context id="i461ae862bded4902a73b0e4183842825_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="i8e972664ec3c438389db17b50d0ad10f_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="i37775b2adc474d559a494eed1d8f6ac5_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="ie492a4ee7d994b01bc240511c5f5ca36_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="ie90ec26745b74b1890b61791666978fb_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="ibb41123b05be4a27ad6c96526002ec57_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="ie9684df3af564d50a07cfe28f4f69336_I20171231">
        <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>2017-12-31</instant>
        </period>
    </context>
    <context id="ic78dc423d96c4e29987c28f52c27bc95_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="i54b2ed2f00304fdfa3f801687140ae81_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="i199f3e5533e043ac9c6f62f8fc1ed886_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="ie4b7cc11c49c4137b5953a249b30e99c_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="i840c3d1abc6941068b772313fe40c779_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="ibee2fce1153a48d38797395e471767dc_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="iba36066cec554376853522d4c65c284f_I20171231">
        <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>2017-12-31</instant>
        </period>
    </context>
    <context id="i496f14a2f40e4f87b27a64cd626ba072_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-12-31</endDate>
        </period>
    </context>
    <context id="iff0b1f4df45343c4b855bba0c1cb0a1e_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="i62f1344296954ca19a69714d6e44cdba_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="ib63ab0f617af4d9fb37d199aca629b2c_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="if2e1eff52c264d429b1146b698c8ad14_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="i6a93ce3bf60c414c9a02243f3e5fe615_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>
    <context id="i759f2e339dc54f62882a481da1682c75_I20171231">
        <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>2017-12-31</instant>
        </period>
    </context>
    <context id="i48c9b3bfd9b84764b06ddf508e993169_D20180101-20181231">
        <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>2018-01-01</startDate>
            <endDate>2018-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="mxn">
        <measure>iso4217:MXN</measure>
    </unit>
    <unit id="krw">
        <measure>iso4217:KRW</measure>
    </unit>
    <unit id="jpy">
        <measure>iso4217:JPY</measure>
    </unit>
    <unit id="huf">
        <measure>iso4217:HUF</measure>
    </unit>
    <unit id="gbp">
        <measure>iso4217:GBP</measure>
    </unit>
    <unit id="twd">
        <measure>iso4217:TWD</measure>
    </unit>
    <unit id="sgd">
        <measure>iso4217:SGD</measure>
    </unit>
    <unit id="cad">
        <measure>iso4217:CAD</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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF8yLTEtMS0xLTA_049d0dd0-b08b-44e9-9299-dd255b91bb0c">false</dei:AmendmentFlag>
    <dei:DocumentFiscalYearFocus
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF80LTEtMS0xLTA_77daac8c-37b5-448e-9b7e-289ac2e5db29">2020</dei:DocumentFiscalYearFocus>
    <dei:DocumentFiscalPeriodFocus
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF81LTEtMS0xLTA_24d8985e-4019-417c-aee3-3cd32280dfaa">FY</dei:DocumentFiscalPeriodFocus>
    <dei:EntityCentralIndexKey
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF84LTEtMS0xLTA_4e1f7e9b-80ce-425a-a772-b5b6859c35a2">0000851205</dei:EntityCentralIndexKey>
    <dei:CurrentFiscalYearEndDate
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF85LTEtMS0xLTA_b7b20165-eab2-40ea-bd1a-62c751611237">--12-31</dei:CurrentFiscalYearEndDate>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="i339b13469197477d94eadc65702c8699_I20210131"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF8xNy0yLTEtMS0w_7f626ba7-73ed-4201-a6c2-959e4bd166aa"
      unitRef="shares">176028184</dei:EntityCommonStockSharesOutstanding>
    <dei:EntityPublicFloat
      contextRef="i1e5c63c6777548228466750a07807abe_I20200628"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml80L2ZyYWc6NGRjZDk0MGM1ZjFiNDg4ZmI2NDBkMmExOGNkNWFlOGIvdGFibGU6YjM1ZDAwY2JjNGU1NGNiOWJlM2MyZjcyMjIwYzE0MWQvdGFibGVyYW5nZTpiMzVkMDBjYmM0ZTU0Y2I5YmUzYzJmNzIyMjBjMTQxZF8xOC0zLTEtMS0w_377ce1a4-4606-4958-8c25-295b68f23f1c"
      unitRef="usd">9792441959</dei:EntityPublicFloat>
    <us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMS0xLTEtMS0w_4cfd1d40-5b79-4261-b32d-1cfe4f080f60"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax>
    <us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMS0yLTEtMS0w_209c0f18-436d-43cc-ade3-79df510fe9fc"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax>
    <us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMS0zLTEtMS0w_6749c586-9077-40b6-b736-3c224db8097f"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMi0xLTEtMS0w_8e8ccadc-a8a8-43cd-bf25-d569baf562cd"
      unitRef="usd">981000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMi0yLTEtMS0w_902c69d0-c0cb-4ade-beac-7a92b32f9d13"
      unitRef="usd">515000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMi0zLTEtMS0w_cec1392c-5191-4d16-b9d0-822345e1069c"
      unitRef="usd">-188000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMy0xLTEtMS0w_e7936057-2167-4a99-806b-021cbe133aba"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMy0yLTEtMS0w_837c3cd8-d2b3-4e78-8bd9-e1ffdc3b1e4a"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83Ni9mcmFnOjU1ZmQ5M2Q3ODdjODRlOTViMThlMGEyYmE3NGVmNzljL3RhYmxlOjA5MGY5MDhhOWJkOTRiMWJhMjdhZWZjZDk3Y2Y4YWVmL3RhYmxlcmFuZ2U6MDkwZjkwOGE5YmQ5NGIxYmEyN2FlZmNkOTdjZjhhZWZfMy0zLTEtMS0w_472a82fb-15e9-46bf-8728-c0e3b8b5045d"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMS0xLTEtMS0w_bbcc1240-5030-4e5d-b1a1-032a0ce32aca"
      unitRef="usd">831000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMS0yLTEtMS0w_e9bfccf2-e344-4be0-aaeb-f9860fd88aa2"
      unitRef="usd">530000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMi0xLTEtMS0w_ec5636a0-79a6-4a90-b863-04622d3663f1"
      unitRef="usdPerShare">0.01</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMi0yLTEtMS0w_98616528-de19-40b5-a2b5-5c0b59b8f048"
      unitRef="usdPerShare">0.01</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMy0xLTEtMS0w_5a54da6d-9014-426f-84f2-b6fa4c19dcb6"
      unitRef="shares">400000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesAuthorized
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfMy0yLTEtMS0w_da714c2d-70b8-4290-b952-0a626daef343"
      unitRef="shares">400000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNC0xLTEtMS0w_4049b6b8-48af-4a8b-a4ac-37c2e05676e9"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesIssued
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNC0yLTEtMS0w_6b9e254c-7f01-4a1f-8719-079b11a44bf1"
      unitRef="shares">0</us-gaap:PreferredStockSharesIssued>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNS0xLTEtMS0w_35a1d101-847d-4fc4-9852-b950a20533f1"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:PreferredStockSharesOutstanding
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNS0yLTEtMS0w_db60ae97-52d6-489b-9e5f-8173deb71728"
      unitRef="shares">0</us-gaap:PreferredStockSharesOutstanding>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNi0xLTEtMS0w_10362c69-265a-49e9-9b3e-16a19dd8151d"
      unitRef="usdPerShare">0.002</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNi0yLTEtMS0w_b8595c3b-7996-4f12-a566-d3bdc3262005"
      unitRef="usdPerShare">0.002</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNy0xLTEtMS0w_5a976a41-e5c2-48eb-bbc2-a0f15330fc94"
      unitRef="shares">300000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfNy0yLTEtMS0w_2996478d-0c8a-48ab-b36b-541cf94ab95f"
      unitRef="shares">300000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesIssued
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfOC0xLTEtMS0w_c172acba-9e1d-482b-b7c8-92ba1de4559b"
      unitRef="shares">175790000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesIssued
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfOC0yLTEtMS0w_28dd0399-4017-4411-a545-6b587ffe94d3"
      unitRef="shares">172440000</us-gaap:CommonStockSharesIssued>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfOS0xLTEtMS0w_bcc8c8b2-fb34-4758-973c-54b476286f0b"
      unitRef="shares">175790000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:CommonStockSharesOutstanding
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84Mi9mcmFnOmFiNWJmZGI5ZmRhNjQxYTc4ZWVkZTI1YTFhYWY1MzY5L3RhYmxlOjc4ZjlkMTQwZjhiMzQxYmE5MGM2MGJjYjMyODVlNjk0L3RhYmxlcmFuZ2U6NzhmOWQxNDBmOGIzNDFiYTkwYzYwYmNiMzI4NWU2OTRfOS0yLTEtMS0w_15e8d9fb-4b19-455c-bd1d-d36bd2cbb997"
      unitRef="shares">172440000</us-gaap:CommonStockSharesOutstanding>
    <us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMS0xLTEtMS0w_41ccee45-806c-433d-bfcf-81586bce79dc"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax>
    <us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMS0yLTEtMS0w_aade9a64-be27-407f-913b-08ea4dd4ad1f"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax>
    <us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMS0zLTEtMS0w_48c119fa-1670-4480-8345-a9e44c89e682"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMi0xLTEtMS0w_d6498411-6385-41c9-a852-8b71c5fd8d10"
      unitRef="usd">981000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMi0yLTEtMS0w_a7e75e90-169d-44ae-95e7-df92ede43805"
      unitRef="usd">515000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMi0zLTEtMS0w_b53b0f3c-7098-45e0-ae28-d4859a2c52ff"
      unitRef="usd">-188000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMy0xLTEtMS0w_56535b3b-2056-4028-ad58-cfb6a34d1cf8"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMy0yLTEtMS0w_2c61268d-cdac-43b9-a21a-f2e4fccabb0a"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RhYmxlOjEwMDQxOTBjOTkwZTRlMDQ5ODZiM2Q3MjlkMTBkN2VmL3RhYmxlcmFuZ2U6MTAwNDE5MGM5OTBlNGUwNDk4NmIzZDcyOWQxMGQ3ZWZfMy0zLTEtMS0w_9b7a2ba8-1665-4477-ab9c-c6aa0ac14bab"
      unitRef="usd">0</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="idcbb75f3495b46c795238fd12b0aa33d_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2MTY_1993dea7-2551-4816-80cd-4137c69069dd">P11Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i68fc84ecbb8a43adb8e29a1f59702ea0_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2NTc_a4acc09f-a1f8-4829-97e1-5e2e1d62e3a6">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="id295a98d84ed4145b2fde7a52e5db2ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2OTg_1ba8638a-e4db-4203-9056-3c3066dac80d">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="ie90785a53db34fff861b69bab7968858_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3Mzk_2ef3c53a-ab25-4b57-bc54-77289ccd63fa">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <cgnx:ProductWarrantyPeriod
      contextRef="i0f77d4a1ec5f45e88a15ed192e49d2f7_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTc4NTM_da3b6d83-8fe8-41be-be75-64b34b1da43f">P1Y</cgnx:ProductWarrantyPeriod>
    <us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzEtMS0xLTEtMA_8475946e-ad85-4f67-a075-a159b4ce6409"
      unitRef="usd">1271000</us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax>
    <us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzEtMi0xLTEtMA_a7da17d9-0e9f-4890-9db5-91eded3e0b67"
      unitRef="usd">1271000</us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i7e7e0780689c440b8357752ce62fbac1_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzMtMS0xLTEtMA_9bc00107-3e2c-42d5-b4b4-32943a316b04">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="id38d793df24e43ae9d8398d2c1445363_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzMtMi0xLTEtMA_feffe1c0-b7e0-4532-9a64-0e0655cfd365">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i66c410db46994afdbd8eab3a179f9761_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzQtMS0xLTEtMA_04b2657f-3707-4b29-b512-310d772f071c">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i552f23c3101048d4ad40b89158a2b96a_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzYtMS0xLTEtMA_3fc7e247-4087-41d8-9d0d-6b7425ee53b3">P2Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="ic8ac339cd888416e99fef2280bcb1383_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzctMS0xLTEtMA_5ca351ba-1d05-4ebf-ba0b-a67a6f76767f">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <cgnx:MaximumInvestmentOfCompanyInPartnership
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplNDI0Y2RkNDA4ZjE0NmI1OGNkMDkwNmFiNjZkMTJhMi90YWJsZXJhbmdlOmU0MjRjZGQ0MDhmMTQ2YjU4Y2QwOTA2YWI2NmQxMmEyXzgtMS0xLTEtMA_7e6223e8-b342-43d1-a612-a12f52dcc510"
      unitRef="number">0.05</cgnx:MaximumInvestmentOfCompanyInPartnership>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="idcbb75f3495b46c795238fd12b0aa33d_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTpkYTQxOGVmYjcxNzc0NTkzYjM5MTgzM2E1ZDVjMzViYS90YWJsZXJhbmdlOmRhNDE4ZWZiNzE3NzQ1OTNiMzkxODMzYTVkNWMzNWJhXzEtMS0xLTEtMA_5baf5446-9b2d-47ce-b861-92883002e602">P11Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="id295a98d84ed4145b2fde7a52e5db2ee_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTpkYTQxOGVmYjcxNzc0NTkzYjM5MTgzM2E1ZDVjMzViYS90YWJsZXJhbmdlOmRhNDE4ZWZiNzE3NzQ1OTNiMzkxODMzYTVkNWMzNWJhXzItMS0xLTEtMA_c20915d9-8f62-471c-8243-fd442eaa0c83">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i68fc84ecbb8a43adb8e29a1f59702ea0_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTpkYTQxOGVmYjcxNzc0NTkzYjM5MTgzM2E1ZDVjMzViYS90YWJsZXJhbmdlOmRhNDE4ZWZiNzE3NzQ1OTNiMzkxODMzYTVkNWMzNWJhXzMtMS0xLTEtMA_cab6dfa3-3f17-4ca4-8567-a6c17537c33a">P5Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="ie90785a53db34fff861b69bab7968858_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTpkYTQxOGVmYjcxNzc0NTkzYjM5MTgzM2E1ZDVjMzViYS90YWJsZXJhbmdlOmRhNDE4ZWZiNzE3NzQ1OTNiMzkxODMzYTVkNWMzNWJhXzQtMS0xLTEtMA_817ec49e-b4c0-46f5-ac92-e3e4ad2bd964">P3Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <cgnx:ProductWarrantyPeriod
      contextRef="i0f77d4a1ec5f45e88a15ed192e49d2f7_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTplMGEwZTg4ZmE5Nzk0MGExYTQyZGU3ZmZmZTZkNmVmMi90YWJsZXJhbmdlOmUwYTBlODhmYTk3OTQwYTFhNDJkZTdmZmZlNmQ2ZWYyXzEtMS0xLTEtMA_e1644270-2350-42be-a54e-9852ca80d185">P1Y</cgnx:ProductWarrantyPeriod>
    <cgnx:RevenuePaymentTerms
      contextRef="i0f77d4a1ec5f45e88a15ed192e49d2f7_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDAvZnJhZzpiZTc2OGFkN2ZmNzk0OWI1OWYyOGI5NTgyODY5ZTg0MS90YWJsZTo4NGYyZDZjZDI3ZDM0ZDA5ODdhZjgxOTY0NjY3MmRhMC90YWJsZXJhbmdlOjg0ZjJkNmNkMjdkMzRkMDk4N2FmODE5NjQ2NjcyZGEwXzEtMS0xLTEtMA_bdea20ec-62da-4dfc-b96e-272e5b9fdec8">P30D</cgnx:RevenuePaymentTerms>
    <us-gaap:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet
      contextRef="i90fc7fe205754f009adf7ecf46482ca0_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzEtMS0xLTEtMA_0dd8be4e-7581-4620-abc4-318edc3bbb81"
      unitRef="usd">0</us-gaap:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet>
    <us-gaap:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet
      contextRef="i41bf1923baf84302b5799a45b6d13a02_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzEtMi0xLTEtMA_6f570a8a-bfd7-456d-8d78-3df78edc3356"
      unitRef="usd">0</us-gaap:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet>
    <us-gaap:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet
      contextRef="i7c8798724232442baaef89052ef86b4f_D20180101-20181231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzEtMy0xLTEtMA_49a992be-f0ce-4ab3-9a34-b0a6d73dd60b"
      unitRef="usd">0</us-gaap:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet>
    <cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent
      contextRef="i90fc7fe205754f009adf7ecf46482ca0_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzItMS0xLTEtMA_fa44b201-f020-4c4f-8bdc-53ca6f0e535a"
      unitRef="usd">0</cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent>
    <cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent
      contextRef="i41bf1923baf84302b5799a45b6d13a02_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzItMi0xLTEtMA_b02482b5-6aec-41e8-94f3-f4a228fe0b6c"
      unitRef="usd">0</cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent>
    <cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent
      contextRef="i7c8798724232442baaef89052ef86b4f_D20180101-20181231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTIvZnJhZzowODFjNTg1ZDk5NGY0OWYyODU1NjVlYWE3YjAwNDNmNi90YWJsZTo4OTljY2NlYmUwZDU0MWY5OTNlMzVhNTg2ZTM3MjAwOC90YWJsZXJhbmdlOjg5OWNjY2ViZTBkNTQxZjk5M2UzNWE1ODZlMzcyMDA4XzItMy0xLTEtMA_4f2d91d2-8f6c-4b93-9c1d-66c69ceb225d"
      unitRef="usd">0</cgnx:OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNetnoncurrent>
    <us-gaap:PropertySubjectToOrAvailableForOperatingLeaseGross
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjQvZnJhZzo2NmVmZGIxOTA5Y2E0YjhjYTU5NDJhN2E5NGM0ODU2MC90YWJsZTo5NmMyNDQ3Y2IzNmQ0NDBkOGE0MmRlZDljNzJkMDc1Zi90YWJsZXJhbmdlOjk2YzI0NDdjYjM2ZDQ0MGQ4YTQyZGVkOWM3MmQwNzVmXzEtMi0xLTEtMA_3447703c-f938-4ac9-89d9-af1dbd28ab5b"
      unitRef="usd">800000</us-gaap:PropertySubjectToOrAvailableForOperatingLeaseGross>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i7f525d4341784263bb99a14dc9cf941a_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzQwMA_385ebae8-1c19-44f1-862e-1dcc62372ed6">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i7f525d4341784263bb99a14dc9cf941a_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzItMS0xLTEtMA_29726baf-4dca-4850-89c0-007041a84844">P4Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzQtMS0xLTEtMA_2d819fab-9128-43f8-973f-11b8718f6bb7"
      xsi:nil="true"/>
    <cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzUtMS0xLTEtMA_6a907aab-5a45-4859-94c7-dc88e81c8c96"
      unitRef="usd">0</cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount>
    <cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzUtMi0xLTEtMA_73104e66-07f4-4e3e-8224-2e6fbc6a4247"
      unitRef="usd">0</cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount>
    <cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount
      contextRef="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzUtMy0xLTEtMA_15a150af-5c6c-4703-b0fc-e732be01b829"
      unitRef="usd">0</cgnx:EmployeeServiceShareBasedCompensationRecognizedPeriodCostsCapitalizedAmount>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ic34831677ded4373b4d68ec0ccb0a15b_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjMvZnJhZzpjNDlmMGEyNmYyN2M0MjRmYjhkOTI2NDIyYmY1NzRiYy90YWJsZTpjY2ZlMjBiNTVhODc0YmFiYmRlYWZhN2U4OTNiOTNlYy90YWJsZXJhbmdlOmNjZmUyMGI1NWE4NzRiYWJiZGVhZmE3ZTg5M2I5M2VjXzYtMS0xLTEtMA_ae165ff7-5c38-4f88-a422-985e49f641bc">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjkvZnJhZzo2ZTcwYTc0NDQxYmQ0ZGFmOGZkYjNmOTUwYmU0N2NhMi90YWJsZTo4YmQxNDM4MDJmOTU0NTE2OTBiZDJhMTg4YjEzY2I5Yy90YWJsZXJhbmdlOjhiZDE0MzgwMmY5NTQ1MTY5MGJkMmExODhiMTNjYjljXzEtMS0xLTEtMA_ba1eb775-9f76-48af-a4c0-d5fba96a90ab"
      unitRef="number">0.50</us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch>
    <us-gaap:NumberOfReportableSegments
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODQvZnJhZzpjOTFjOWQyM2RmZDc0MzUyOWIwYjljNGQ0M2U1ZjQzZC90ZXh0cmVnaW9uOmM5MWM5ZDIzZGZkNzQzNTI5YjBiOWM0ZDQzZTVmNDNkXzMw_5683dc4f-4fed-4377-bbd6-53719c30696d"
      unitRef="segment">1</us-gaap:NumberOfReportableSegments>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="i0edb3f43f00449ceb40a0bed0beafa85_D20170412-20170412"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTAvZnJhZzo3ZDc1N2VkZThjMDU0N2ZhYjA0NGU5OWQzYjJkYTIxMi90YWJsZTplY2IzZTI3NDJiNWY0OTFkYmRkZjhhM2U2NDFiM2UxOC90YWJsZXJhbmdlOmVjYjNlMjc0MmI1ZjQ5MWRiZGRmOGEzZTY0MWIzZTE4XzItMS0xLTEtMA_5142364d-04f1-42b4-b435-9cff51cf7909">P6Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <dei:DocumentType
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI0_bf5ac2d6-aeb4-4d0b-bb2e-738af7b32068">10-K</dei:DocumentType>
    <dei:DocumentAnnualReport
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI1_b9fc307f-cb42-42d7-a2a3-42e936cd6b4e">true</dei:DocumentAnnualReport>
    <dei:DocumentPeriodEndDate
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yMTQ_8b91a193-7788-4c05-9974-44e5ad8927d5">2020-12-31</dei:DocumentPeriodEndDate>
    <dei:DocumentTransitionReport
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI5_28998993-3c4d-4c49-9aea-2984729a0a4e">false</dei:DocumentTransitionReport>
    <dei:EntityFileNumber
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI2_12037397-e30f-4334-bacd-c304cb8050e8">001-34218</dei:EntityFileNumber>
    <dei:EntityRegistrantName
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI3_ae8958c6-01c1-456f-918d-330fd9817bee">COGNEX CORP</dei:EntityRegistrantName>
    <dei:EntityIncorporationStateCountryCode
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6MGJhM2E3ODRjMGVjNDA0ZWFhZGM5M2QzYzAzODcxNDAvdGFibGVyYW5nZTowYmEzYTc4NGMwZWM0MDRlYWFkYzkzZDNjMDM4NzE0MF8wLTEtMS0xLTA_85e7f8eb-8157-4983-b2a1-69433f41d5ec">MA</dei:EntityIncorporationStateCountryCode>
    <dei:EntityTaxIdentificationNumber
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6MGJhM2E3ODRjMGVjNDA0ZWFhZGM5M2QzYzAzODcxNDAvdGFibGVyYW5nZTowYmEzYTc4NGMwZWM0MDRlYWFkYzkzZDNjMDM4NzE0MF8wLTMtMS0xLTA_7e635f44-70ff-43ed-aa72-aa97bb268542">04-2713778</dei:EntityTaxIdentificationNumber>
    <dei:EntityAddressAddressLine1
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzI4_4043b89e-2212-466e-8ae5-19293f8df04a">One Vision Drive</dei:EntityAddressAddressLine1>
    <dei:EntityAddressCityOrTown
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzMw_36a432a6-d84a-469d-9253-e472f4716647">Natick</dei:EntityAddressCityOrTown>
    <dei:EntityAddressStateOrProvince
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzIx_f47405ba-2e17-45d4-b319-f0734ed2008a">MA</dei:EntityAddressStateOrProvince>
    <dei:EntityAddressPostalZipCode
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzIy_7b53a760-5f50-4798-a28d-bf2625fa547e">01760</dei:EntityAddressPostalZipCode>
    <dei:CityAreaCode
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzMx_f9852ec7-c1c8-4534-a63d-8508a0972ea2">508</dei:CityAreaCode>
    <dei:LocalPhoneNumber
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNzIz_68c554dd-1cdd-45db-8c83-bb57df55c6ff">650-3000</dei:LocalPhoneNumber>
    <dei:Security12bTitle
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6MzMzZjZjOGEyYWQ2NGU1OTg1OGM2YjI1ZDRjMjAwZDIvdGFibGVyYW5nZTozMzNmNmM4YTJhZDY0ZTU5ODU4YzZiMjVkNGMyMDBkMl8xLTAtMS0xLTA_abc3fd53-2180-4b35-98f1-3b965295511f">Common Stock, par value $.002 per share</dei:Security12bTitle>
    <dei:TradingSymbol
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6MzMzZjZjOGEyYWQ2NGU1OTg1OGM2YjI1ZDRjMjAwZDIvdGFibGVyYW5nZTozMzNmNmM4YTJhZDY0ZTU5ODU4YzZiMjVkNGMyMDBkMl8xLTEtMS0xLTA_6719c744-800b-4253-a4e1-e68444374b13">CGNX</dei:TradingSymbol>
    <dei:SecurityExchangeName
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6MzMzZjZjOGEyYWQ2NGU1OTg1OGM2YjI1ZDRjMjAwZDIvdGFibGVyYW5nZTozMzNmNmM4YTJhZDY0ZTU5ODU4YzZiMjVkNGMyMDBkMl8xLTItMS0xLTA_2b0393ce-7dd7-4ced-9f6e-8531ee03da55">NASDAQ</dei:SecurityExchangeName>
    <dei:EntityWellKnownSeasonedIssuer
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6NmI5ZjY1MTQyYWQzNDRkOGE2ZmIxZjVhM2I5NTViOTgvdGFibGVyYW5nZTo2YjlmNjUxNDJhZDM0NGQ4YTZmYjFmNWEzYjk1NWI5OF8wLTItMS0xLTA_50d343f2-c64c-4820-a4be-f6c678756f49">Yes</dei:EntityWellKnownSeasonedIssuer>
    <dei:EntityVoluntaryFilers
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6YWMyZGU1MzJkNDk0NDJjZWE4MjQ4MmQ4NDI5ZDM0ZjIvdGFibGVyYW5nZTphYzJkZTUzMmQ0OTQ0MmNlYTgyNDgyZDg0MjlkMzRmMl8wLTgtMS0xLTA_f1c45ef0-5f3a-4968-b7fd-a1c2ff7da416">No</dei:EntityVoluntaryFilers>
    <dei:EntityCurrentReportingStatus
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6YTVmMTEzYjg5N2FmNDYwNjllMGIzZmNkZDg4N2Q3ODYvdGFibGVyYW5nZTphNWYxMTNiODk3YWY0NjA2OWUwYjNmY2RkODg3ZDc4Nl8wLTItMS0xLTA_70130db6-3501-4ffe-9423-8ae4b7f178c5">Yes</dei:EntityCurrentReportingStatus>
    <dei:EntityInteractiveDataCurrent
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6OTc0ZGUyZjI0N2IyNDlhOTk3NGRlNTBlODI1NzBiMjUvdGFibGVyYW5nZTo5NzRkZTJmMjQ3YjI0OWE5OTc0ZGU1MGU4MjU3MGIyNV8wLTItMS0xLTA_89febf95-ba78-4160-a097-cb5c088ca945">Yes</dei:EntityInteractiveDataCurrent>
    <dei:EntityFilerCategory
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6NWU3ZDkyMWM3NjlhNGNhYmFkMmFlODAzNGJjMmIzYmMvdGFibGVyYW5nZTo1ZTdkOTIxYzc2OWE0Y2FiYWQyYWU4MDM0YmMyYjNiY18wLTEtMS0xLTA_7bc51882-6d20-48da-93c4-4581cf037873">Large Accelerated Filer</dei:EntityFilerCategory>
    <dei:EntitySmallBusiness
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6NWU3ZDkyMWM3NjlhNGNhYmFkMmFlODAzNGJjMmIzYmMvdGFibGVyYW5nZTo1ZTdkOTIxYzc2OWE0Y2FiYWQyYWU4MDM0YmMyYjNiY18xLTMtMS0xLTA_94e63dcc-5a96-4309-bdc3-985c45534906">false</dei:EntitySmallBusiness>
    <dei:EntityEmergingGrowthCompany
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6NWU3ZDkyMWM3NjlhNGNhYmFkMmFlODAzNGJjMmIzYmMvdGFibGVyYW5nZTo1ZTdkOTIxYzc2OWE0Y2FiYWQyYWU4MDM0YmMyYjNiY18yLTMtMS0xLTA_062b74ef-952b-4cb1-b27e-142061edcc56">false</dei:EntityEmergingGrowthCompany>
    <dei:IcfrAuditorAttestationFlag
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6ZTc2MWE2MTc4Yzk2NGE2MWJlODY5N2MxYTFlMmQ1ZTEvdGFibGVyYW5nZTplNzYxYTYxNzhjOTY0YTYxYmU4Njk3YzFhMWUyZDVlMV8wLTQtMS0xLTE0MTQz_8b22e0bb-ae51-43d2-aeb6-501bcf6bc245">true</dei:IcfrAuditorAttestationFlag>
    <dei:EntityShellCompany
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGFibGU6NGY5NmJhZWYzOTZkNDc2Y2E2ZmM1YjU2NDM1Y2VlYjQvdGFibGVyYW5nZTo0Zjk2YmFlZjM5NmQ0NzZjYTZmYzViNTY0MzVjZWViNF8wLTQtMS0xLTA_8bad4994-90e5-4649-bfcf-7ef49332e282">false</dei:EntityShellCompany>
    <dei:EntityPublicFloat
      contextRef="i1e5c63c6777548228466750a07807abe_I20200628"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yMzc1_377ce1a4-4606-4958-8c25-295b68f23f1c"
      unitRef="usd">9792441959</dei:EntityPublicFloat>
    <dei:EntityCommonStockSharesOutstanding
      contextRef="i339b13469197477d94eadc65702c8699_I20210131"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xL2ZyYWc6MTFiZDNhMjViZTU4NDE5MjhhN2FiMzQ4OGQxN2I2MDAvdGV4dHJlZ2lvbjoxMWJkM2EyNWJlNTg0MTkyOGE3YWIzNDg4ZDE3YjYwMF8yNDQy_7f626ba7-73ed-4201-a6c2-959e4bd166aa"
      unitRef="shares">176028184</dei:EntityCommonStockSharesOutstanding>
    <us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1
      contextRef="if37f3b9e731b4d1e91e114764a70d4e3_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml81OC9mcmFnOmJmMzI3OGVjYzVjMzQwY2Q4ZjU3ODQ5NThhMGQyYTcwL3RleHRyZWdpb246YmYzMjc4ZWNjNWMzNDBjZDhmNTc4NDk1OGEwZDJhNzBfMTUzNA_0f6b414c-70e3-4ee1-b064-94328cc2ceb4">P45D</us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml81OC9mcmFnOmJmMzI3OGVjYzVjMzQwY2Q4ZjU3ODQ5NThhMGQyYTcwL3RleHRyZWdpb246YmYzMjc4ZWNjNWMzNDBjZDhmNTc4NDk1OGEwZDJhNzBfNTA4OQ_b44ad6ad-ba6c-4fab-aa24-35e1f121ce63"
      unitRef="usd">492675000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNC0xLTEtMS0w_bcfec94d-3c6e-4800-a3b8-57e729908cf2"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNC0zLTEtMS0w_9de31e80-d0d5-4bac-bd9f-5bc90a5d0ce9"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNC01LTEtMS0w_344aca8e-ee46-402d-aae3-5160a7ce990e"
      unitRef="usd">806338000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNS0xLTEtMS0w_e5e51d75-f1e5-4ee3-9629-bd1f9ac572d7"
      unitRef="usd">206421000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNS0zLTEtMS0w_73db4f56-0b34-4b35-8fb6-c696ee220ce9"
      unitRef="usd">189754000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:CostOfGoodsAndServicesSold
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNS01LTEtMS0w_0cc886b1-9f02-4fa6-b261-39a68317cf32"
      unitRef="usd">206052000</us-gaap:CostOfGoodsAndServicesSold>
    <us-gaap:GrossProfit
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNi0xLTEtMS0w_c4957af6-e1c5-4ebb-bda1-b830de2da6dc"
      unitRef="usd">604599000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNi0zLTEtMS0w_84e52726-3a9b-4dda-8345-a81d36ce927b"
      unitRef="usd">535871000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNi01LTEtMS0w_bf3736e9-7f23-42b0-b991-1fe86a9e5f11"
      unitRef="usd">600286000</us-gaap:GrossProfit>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNy0xLTEtMS0w_0a0c2648-4829-42dd-b302-bd7e6da65c68"
      unitRef="usd">130982000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNy0zLTEtMS0w_a93c4a7d-e6d5-4699-8451-3fea0ac78374"
      unitRef="usd">119427000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:ResearchAndDevelopmentExpense
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfNy01LTEtMS0w_c1c0fb87-3ceb-4173-95ae-d18f806716e8"
      unitRef="usd">116445000</us-gaap:ResearchAndDevelopmentExpense>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOC0xLTEtMS0w_00e63229-fdfa-4a61-be81-70cd17caa8b1"
      unitRef="usd">267593000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOC0zLTEtMS0w_f2f333ae-6018-4ac2-8fb6-f1d510e053a2"
      unitRef="usd">273842000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:SellingGeneralAndAdministrativeExpense
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOC01LTEtMS0w_1fa3e8e9-b1d0-4d1b-9112-dfa868a88c8d"
      unitRef="usd">262699000</us-gaap:SellingGeneralAndAdministrativeExpense>
    <us-gaap:RestructuringCharges
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOS0xLTEtMS00OTI_a472724e-d54e-4f00-9783-17fbf12d4343"
      unitRef="usd">15924000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOS0zLTEtMS00OTQ_ab3ee65f-9ca6-4a71-8df9-7ae81a0f066f"
      unitRef="usd">0</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOS01LTEtMS00OTY_3b784fa9-0174-4771-ab10-d8f4e873ea24"
      unitRef="usd">0</us-gaap:RestructuringCharges>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfOS0xLTEtMS0w_714563cd-4b19-444a-ae23-234ec93f78c4"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTAtMy0xLTEtNTAw_504febd2-7697-441a-bdbf-686dc557e5af"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTAtNS0xLTEtNTAy_d57e2f5b-821b-45b9-a204-a1f4dcc7d818"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:OperatingIncomeLoss
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTAtMS0xLTEtMA_b8635c3a-0b5a-46a4-b78d-02bb4882643f"
      unitRef="usd">170529000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTAtMy0xLTEtMA_d543e2f9-7e47-4947-9977-2e70ccf75600"
      unitRef="usd">142602000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTAtNS0xLTEtMA_6ec66be1-df53-4a1a-8150-6d166011ff91"
      unitRef="usd">221142000</us-gaap:OperatingIncomeLoss>
    <us-gaap:ForeignCurrencyTransactionGainLossBeforeTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTEtMS0xLTEtMA_69cb8a48-8338-44ca-b1dc-4c8c22ac912e"
      unitRef="usd">3697000</us-gaap:ForeignCurrencyTransactionGainLossBeforeTax>
    <us-gaap:ForeignCurrencyTransactionGainLossBeforeTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTEtMy0xLTEtMA_649c1491-a5fe-41cc-9463-2e16daa6d781"
      unitRef="usd">-509000</us-gaap:ForeignCurrencyTransactionGainLossBeforeTax>
    <us-gaap:ForeignCurrencyTransactionGainLossBeforeTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTEtNS0xLTEtMA_6ec4900b-e7f7-4fb0-8d9c-bb073d94409a"
      unitRef="usd">-1064000</us-gaap:ForeignCurrencyTransactionGainLossBeforeTax>
    <us-gaap:InvestmentIncomeNonoperating
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTItMS0xLTEtMA_573032ca-389b-42e8-84a1-5c9ca5a4dd10"
      unitRef="usd">12994000</us-gaap:InvestmentIncomeNonoperating>
    <us-gaap:InvestmentIncomeNonoperating
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTItMy0xLTEtMA_dcc0e0db-eed2-4220-8088-690118c63e38"
      unitRef="usd">19689000</us-gaap:InvestmentIncomeNonoperating>
    <us-gaap:InvestmentIncomeNonoperating
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTItNS0xLTEtMA_3dd67a63-07cc-48df-b083-43e158212bf1"
      unitRef="usd">14715000</us-gaap:InvestmentIncomeNonoperating>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTMtMS0xLTEtMA_6432c0e0-e79c-437e-b914-72b6b6139f75"
      unitRef="usd">-309000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTMtMy0xLTEtMA_62e7fb61-13e3-4014-94de-f68da511c290"
      unitRef="usd">1212000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:OtherNonoperatingIncomeExpense
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTMtNS0xLTEtMA_b8b52575-baae-45bd-adda-d088e9564e8b"
      unitRef="usd">-219000</us-gaap:OtherNonoperatingIncomeExpense>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTQtMS0xLTEtMA_ec0d85f6-bbfd-40ea-9a87-58322b489cfa"
      unitRef="usd">186911000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTQtMy0xLTEtMA_db6916f8-c9ce-4244-9815-2648114c01bd"
      unitRef="usd">162994000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTQtNS0xLTEtMA_a9f8d639-4729-4244-8c2a-7e95aa2d1227"
      unitRef="usd">234574000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTUtMS0xLTEtMA_ebf74ce7-1b76-45fa-ba6f-0086fe11dfc2"
      unitRef="usd">10725000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTUtMy0xLTEtMA_73c05abc-6463-4310-b544-5ff5bd44428d"
      unitRef="usd">-40871000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTUtNS0xLTEtMA_2b64db3b-b751-43c7-86b8-915e793091c9"
      unitRef="usd">15307000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTgtMS0xLTEtMA_11aa6706-caed-4541-9945-c0a14d77517d"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTgtMy0xLTEtMA_455c6609-de8a-4815-ad19-7e9c88254d2e"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMTgtNS0xLTEtMA_16995e6e-544c-4228-9af4-70ba94c91c62"
      unitRef="usd">219267000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjMtMS0xLTEtMA_aeabd666-d929-4484-a0cc-e1aa24c4fc5f"
      unitRef="usdPerShare">1.02</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjMtMy0xLTEtMA_6b10d743-1153-413a-a87d-47bb7799412e"
      unitRef="usdPerShare">1.19</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjMtNS0xLTEtMA_04c0328e-0616-4082-ac20-e5a47450d3ae"
      unitRef="usdPerShare">1.27</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjYtMS0xLTEtMA_e7ca0f2d-d213-41ac-9a3f-b15a71640691"
      unitRef="usdPerShare">1.00</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjYtMy0xLTEtMA_2902af38-772a-47ec-9578-14b55291ad0c"
      unitRef="usdPerShare">1.16</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjYtNS0xLTEtMA_d0c4f9ad-65bf-478a-9c45-1a95b5936df4"
      unitRef="usdPerShare">1.24</us-gaap:EarningsPerShareDiluted>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjktMS0xLTEtMA_2ea5b0b6-aa35-415b-a499-c128070b0b72"
      unitRef="shares">173489000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjktMy0xLTEtMA_ae0a3430-54cc-4845-8807-cad965a4edab"
      unitRef="shares">171194000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMjktNS0xLTEtMA_f2875783-3960-4d57-b1cf-5f467ec8e2e6"
      unitRef="shares">172333000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzAtMS0xLTEtMA_bf59fef9-560d-45c3-afbe-a11bc39d5e51"
      unitRef="shares">176592000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzAtMy0xLTEtMA_f42d0c09-7897-4d15-a765-e19c63c9c167"
      unitRef="shares">175269000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzAtNS0xLTEtMA_f1b1f95b-4fc1-40c3-a158-d845bd1a8375"
      unitRef="shares">177406000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMS0xLTEtMA_3fcc5ff5-86e9-4ec4-b05d-ed578f6b733e"
      unitRef="usdPerShare">2.225</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMy0xLTEtMA_fcf9ac05-73e0-4b9a-9f42-051740b17006"
      unitRef="usdPerShare">0.205</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItNS0xLTEtMA_cf5434e1-c84e-40e6-ae37-abdc8b82c0fb"
      unitRef="usdPerShare">0.185</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:NetIncomeLoss
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMy0xLTEtMS0w_11aa6706-caed-4541-9945-c0a14d77517d"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMy0zLTEtMS0w_455c6609-de8a-4815-ad19-7e9c88254d2e"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMy01LTEtMS0w_16995e6e-544c-4228-9af4-70ba94c91c62"
      unitRef="usd">219267000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTEtMS0xLTEtMA_955ae86b-98fe-418c-acdf-2e0fea87d33c"
      unitRef="usd">6478000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTEtMS0xLTEtMA_f6a98b26-bc8b-44a9-b153-21e0f7aafddc"
      unitRef="usd">6478000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTEtMy0xLTEtMA_81878912-040a-4d33-bdee-f0ed812095d1"
      unitRef="usd">5219000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTEtNS0xLTEtMA_f106b624-d6ac-49c3-9514-c6bb31b430d6"
      unitRef="usd">-1185000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTItMS0xLTEtMA_4e778e54-9049-4ee9-8e0f-9ff809f1900b"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTItMS0xLTEtMA_d5f59fda-cc33-403c-b318-cf6f40c00546"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTItMy0xLTEtMA_cd8e33de-8890-43e0-ad72-df0cc7c917ad"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTItNS0xLTEtMA_0c50a539-deb4-4434-aef4-c24a7519987c"
      unitRef="usd">501000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTMtMS0xLTEtMA_5f48336b-e392-4fa3-a9ee-fb842c71314a"
      unitRef="usd">2359000</us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTMtMy0xLTEtMA_daebe760-cc61-444b-8ed5-55c2644e8ba7"
      unitRef="usd">3767000</us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTMtNS0xLTEtMA_46316288-fa44-4e86-a6fd-9d906b70c817"
      unitRef="usd">-1686000</us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTYtMS0xLTEtMA_49f98e2d-ffe6-48c7-a42b-f6d8b97e1e03"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTYtMS0xLTEtMA_ff2b6f3b-221e-4aa3-ad4a-18e2447d3c15"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTYtMy0xLTEtMA_a6beb986-f52e-4d49-b624-ab6d1810f4d0"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTYtNS0xLTEtMA_a3829297-3ffb-43c9-883f-2ad4ece6d097"
      unitRef="usd">-4216000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTctMS0xLTEtMA_cc490390-6681-4915-b47d-9209a2925ca7"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTctMy0xLTEtMA_4f76e184-c05c-4d89-a9f1-5446dd708a2c"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTctNS0xLTEtMA_dc52e555-1514-42f4-9879-a285cd5cd9d1"
      unitRef="usd">-4216000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTktMS0xLTEtMA_f6ddd67d-53dc-4fe2-a421-3e45f83c07aa"
      unitRef="usd">3474000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTktMy0xLTEtMA_fbc553e4-eba4-419b-abbb-0a87830d67be"
      unitRef="usd">3226000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMTktNS0xLTEtMA_9611ae84-f58f-4c9d-beea-a922574b20b1"
      unitRef="usd">-5902000</us-gaap:OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMjAtMS0xLTEtMA_522f4b9a-6a5c-4d14-877f-2b446b25af7c"
      unitRef="usd">179660000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMjAtMy0xLTEtMA_5a9f604a-50ce-4acd-ad62-bbb914629fb7"
      unitRef="usd">207091000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:ComprehensiveIncomeNetOfTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83My9mcmFnOjU3ZWNiYTk3N2YwOTQ5NGE4YjgxMjEwMDY4NmExMTMxL3RhYmxlOjc5NGQzNmMzZGZhMzRkNzQ5NjhhYTc2ZTgxNDk0MmY1L3RhYmxlcmFuZ2U6Nzk0ZDM2YzNkZmEzNGQ3NDk2OGFhNzZlODE0OTQyZjVfMjAtNS0xLTEtMA_4b410889-4468-4379-ae99-8becee8f236b"
      unitRef="usd">213365000</us-gaap:ComprehensiveIncomeNetOfTax>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNS0xLTEtMS0w_fe0565cd-a74b-4616-833e-8180cf339c99"
      unitRef="usd">269073000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNS0zLTEtMS0w_88a6af4c-67a1-449f-9819-c560da7b73ec"
      unitRef="usd">171431000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNi0xLTEtMS0w_c0b3845c-116e-4c9e-88e2-8b152d5acf93"
      unitRef="usd">103240000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNi0zLTEtMS0w_2447818e-260b-4339-95c1-e7baebe7ffd0"
      unitRef="usd">240470000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNy0xLTEtMS0w_2ccc0f90-973a-4210-bbbd-448ac73e9a86"
      unitRef="usd">125696000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:AccountsReceivableNetCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNy0zLTEtMS0w_81d240ba-20fc-4ced-bded-71a52c557f60"
      unitRef="usd">103447000</us-gaap:AccountsReceivableNetCurrent>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfOC0xLTEtMS0w_212214f0-1097-49ef-a3e0-9622fc2e3eff"
      unitRef="usd">5632000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:UnbilledReceivablesCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfOC0zLTEtMS0w_ad2dc6d2-c3b9-41ef-8f49-fcc61e8f8692"
      unitRef="usd">4782000</us-gaap:UnbilledReceivablesCurrent>
    <us-gaap:InventoryNet
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfOS0xLTEtMS0w_ee98a193-dfd0-4137-97bb-e440f5c9d8bf"
      unitRef="usd">60830000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfOS0zLTEtMS0w_e65da6c7-89b5-4910-9620-dba7f1c9283e"
      unitRef="usd">60261000</us-gaap:InventoryNet>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTAtMS0xLTEtMA_aad7a478-7bd9-407f-8155-47d6aa629a3c"
      unitRef="usd">37220000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:PrepaidExpenseAndOtherAssetsCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTAtMy0xLTEtMA_5e4521da-7b6c-4385-88c1-ea46efb5a065"
      unitRef="usd">26840000</us-gaap:PrepaidExpenseAndOtherAssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTEtMS0xLTEtMA_a8999371-2f40-49e4-bc83-657c09d0749b"
      unitRef="usd">601691000</us-gaap:AssetsCurrent>
    <us-gaap:AssetsCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTEtMy0xLTEtMA_2c018576-a65c-480b-a81e-e4237b9f4e59"
      unitRef="usd">607231000</us-gaap:AssetsCurrent>
    <us-gaap:LongTermInvestments
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTItMS0xLTEtMA_e46aada3-f49b-4293-b6af-33c2cb370f86"
      unitRef="usd">395125000</us-gaap:LongTermInvestments>
    <us-gaap:LongTermInvestments
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTItMy0xLTEtMA_73b33a41-0a46-458c-af34-63451b76bddb"
      unitRef="usd">433452000</us-gaap:LongTermInvestments>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTMtMS0xLTEtMA_a931812c-caaa-4233-947a-7095d3ad168c"
      unitRef="usd">79173000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTMtMy0xLTEtMA_b492cebd-8f11-4f10-9a0b-0d3237dfd11e"
      unitRef="usd">89443000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTQtMS0xLTEtMA_5dc35d92-ac61-4424-8869-fde48b03ebeb"
      unitRef="usd">22582000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:OperatingLeaseRightOfUseAsset
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTQtMy0xLTEtMA_cfc7ab7d-c844-4aa4-9449-5372931f8325"
      unitRef="usd">17522000</us-gaap:OperatingLeaseRightOfUseAsset>
    <us-gaap:Goodwill
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTUtMS0xLTEtMA_547d8f7c-40d5-4e78-ab77-02c9a96ecf53"
      unitRef="usd">244078000</us-gaap:Goodwill>
    <us-gaap:Goodwill
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTUtMy0xLTEtMA_511bd78b-31fe-4702-a768-1d9cfefd1543"
      unitRef="usd">243445000</us-gaap:Goodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTYtMS0xLTEtMA_49ca8d1c-2fd1-4e6c-a8f2-80bb3cd0c156"
      unitRef="usd">15555000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:IntangibleAssetsNetExcludingGoodwill
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTYtMy0xLTEtMA_b61bd854-3d3d-4d31-abb0-474476f82c23"
      unitRef="usd">39490000</us-gaap:IntangibleAssetsNetExcludingGoodwill>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTctMS0xLTEtMA_368c2ff6-a2dc-4fec-89e1-4447eb3289ac"
      unitRef="usd">434704000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:DeferredIncomeTaxAssetsNet
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTctMy0xLTEtMA_b6324859-df16-4d27-b475-3c9a31b7ceac"
      unitRef="usd">449519000</us-gaap:DeferredIncomeTaxAssetsNet>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTgtMS0xLTEtMA_97a02758-83f4-43b3-829d-0ccf596564d0"
      unitRef="usd">7794000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:OtherAssetsNoncurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTgtMy0xLTEtMA_b90d1fd9-39bb-4b95-aa52-d0100bca9898"
      unitRef="usd">5833000</us-gaap:OtherAssetsNoncurrent>
    <us-gaap:Assets
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTktMS0xLTEtMA_a36bfdaa-9f39-4297-b76b-afa57d1e3c97"
      unitRef="usd">1800702000</us-gaap:Assets>
    <us-gaap:Assets
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMTktMy0xLTEtMA_6598669d-7e29-4aed-8b59-5a951552fe63"
      unitRef="usd">1885935000</us-gaap:Assets>
    <us-gaap:AccountsPayableCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjMtMS0xLTEtMA_0993d050-cc9b-4295-a7b9-8b24c5e18708"
      unitRef="usd">16270000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccountsPayableCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjMtMy0xLTEtMA_8b10a02e-ca94-49e7-9bf3-518013e2dba6"
      unitRef="usd">17866000</us-gaap:AccountsPayableCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjQtMS0xLTEtMA_a8ebd6b3-977f-46c1-ad30-b2c658de0956"
      unitRef="usd">77264000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjQtMy0xLTEtMA_03f4f2a7-a683-46fc-b187-d7eb956e6650"
      unitRef="usd">52199000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjUtMS0xLTEtMA_743bd59c-aabf-4249-9b18-2e5a7656f7e9"
      unitRef="usd">9379000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:AccruedIncomeTaxesCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjUtMy0xLTEtMA_8361ab0b-d4fe-4487-b761-484f738682bc"
      unitRef="usd">30333000</us-gaap:AccruedIncomeTaxesCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjYtMS0xLTEtMA_77e152c2-4c75-4077-b8a9-ca67943aa2f3"
      unitRef="usd">21274000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjYtMy0xLTEtMA_2ea245f4-ed45-4322-afac-e3438faad979"
      unitRef="usd">14432000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjctMS0xLTEtMA_89b52185-e58b-4a36-a75d-a4d2608c68fb"
      unitRef="usd">8110000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:OperatingLeaseLiabilityCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjctMy0xLTEtMA_91795af8-c74e-49e5-9328-4e90d3ede96b"
      unitRef="usd">5647000</us-gaap:OperatingLeaseLiabilityCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjgtMS0xLTEtMA_7053ce9e-e4b9-41ae-9b8d-1736e00b89d9"
      unitRef="usd">132297000</us-gaap:LiabilitiesCurrent>
    <us-gaap:LiabilitiesCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjgtMy0xLTEtMA_35144688-a446-4ab6-8ed2-62a329aa09bb"
      unitRef="usd">120477000</us-gaap:LiabilitiesCurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjktMS0xLTEtMA_929ce51a-08cb-434c-ba96-9bc67f5fb9a4"
      unitRef="usd">18120000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:OperatingLeaseLiabilityNoncurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMjktMy0xLTEtMA_bbe84d44-c3fa-40a5-b3f8-c05ffa714d6f"
      unitRef="usd">12326000</us-gaap:OperatingLeaseLiabilityNoncurrent>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzAtMS0xLTEtMA_d1d06c22-09b6-4ec5-9b6c-ea44e4732a81"
      unitRef="usd">314952000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:DeferredIncomeTaxLiabilitiesNet
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzAtMy0xLTEtMA_bd77ecec-b92e-4d3d-a74c-b08e15d1e8d2"
      unitRef="usd">332344000</us-gaap:DeferredIncomeTaxLiabilitiesNet>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzEtMS0xLTEtMA_144fc7b7-926f-4d82-a7f2-ba4e0871851c"
      unitRef="usd">14257000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzEtMy0xLTEtMA_c9ef55e3-f556-41f4-9f88-a8a040c5e87d"
      unitRef="usd">11563000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <us-gaap:AccruedIncomeTaxesNoncurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzItMS0xLTEtMA_9e14e1f6-b35f-4ce8-8048-3b7f7040ab46"
      unitRef="usd">48915000</us-gaap:AccruedIncomeTaxesNoncurrent>
    <us-gaap:AccruedIncomeTaxesNoncurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzItMy0xLTEtMA_75ef53fc-47b5-4f6b-a05f-0cd41f09ae83"
      unitRef="usd">51113000</us-gaap:AccruedIncomeTaxesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzMtMS0xLTEtMA_dca2f395-542f-4e44-9545-722cf777fdb7"
      unitRef="usd">9959000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:OtherLiabilitiesNoncurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzMtMy0xLTEtMA_1cbed9b6-1493-4407-bf81-96492f1033a1"
      unitRef="usd">2402000</us-gaap:OtherLiabilitiesNoncurrent>
    <us-gaap:Liabilities
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzQtMS0xLTEtMA_fb2ab8d6-b00b-4f7a-9fb5-ba2711ec8606"
      unitRef="usd">538500000</us-gaap:Liabilities>
    <us-gaap:Liabilities
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzQtMy0xLTEtMA_9fe287d6-f24e-40ff-8960-cf7507013c0e"
      unitRef="usd">530225000</us-gaap:Liabilities>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzYtMS0xLTEtMA_79468ba4-1db2-4f23-91a9-f5b2bb9bb343"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:CommitmentsAndContingencies
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzYtMy0xLTEtMA_2a036cb1-4eff-40f1-af0d-1dc00f7527e7"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:PreferredStockValueOutstanding
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzgtMS0xLTEtMA_11069ba7-f687-4300-851f-81a7ab537cd5"
      unitRef="usd">0</us-gaap:PreferredStockValueOutstanding>
    <us-gaap:PreferredStockValueOutstanding
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzgtMy0xLTEtMA_10936429-e982-4fcf-b9c8-d4c3d129e895"
      unitRef="usd">0</us-gaap:PreferredStockValueOutstanding>
    <us-gaap:CommonStockValueOutstanding
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzktMS0xLTEtMA_c798e400-c13b-47cd-984b-48403b124b84"
      unitRef="usd">352000</us-gaap:CommonStockValueOutstanding>
    <us-gaap:CommonStockValueOutstanding
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfMzktMy0xLTEtMA_7e2fb5df-159a-44a7-96ec-fc932bdca150"
      unitRef="usd">345000</us-gaap:CommonStockValueOutstanding>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDAtMS0xLTEtMA_b3971dbb-ccb9-4e41-9c44-a632290ff87e"
      unitRef="usd">807739000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:AdditionalPaidInCapitalCommonStock
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDAtMy0xLTEtMA_96bbe295-1e04-43a7-9c11-e3d5359de7ae"
      unitRef="usd">639372000</us-gaap:AdditionalPaidInCapitalCommonStock>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDEtMS0xLTEtMA_985c7cf1-91ea-4eb2-bf3c-1bfa341367a4"
      unitRef="usd">487912000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDEtMy0xLTEtMA_fa165eaf-0aba-4098-b7a5-e8e5cf705ff6"
      unitRef="usd">753268000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDItMS0xLTEtMA_b245b4eb-5cd2-4719-97c1-2e68e33b9494"
      unitRef="usd">-33801000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDItMy0xLTEtMA_5c26d04a-840d-410d-9284-4423aeb895a3"
      unitRef="usd">-37275000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
    <us-gaap:StockholdersEquity
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDMtMS0xLTEtMA_63abd8a5-9db2-45e8-8a59-04af01632c48"
      unitRef="usd">1262202000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDMtMy0xLTEtMA_e4166259-c68c-4ee4-8543-4c8f3255ef45"
      unitRef="usd">1355710000</us-gaap:StockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDQtMS0xLTEtMA_80ba46f9-60d4-439f-aab3-31db43d88bb4"
      unitRef="usd">1800702000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:LiabilitiesAndStockholdersEquity
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83OS9mcmFnOjE2YzY1MDA4Y2I3YzQ1N2I5MmQyNWFkZWM4MTU3MDQzL3RhYmxlOjUxNzA5N2IxZmI5YzQ2YzNiNjEwM2YxZGU5OGYzY2VkL3RhYmxlcmFuZ2U6NTE3MDk3YjFmYjljNDZjM2I2MTAzZjFkZTk4ZjNjZWRfNDQtMy0xLTEtMA_8582e4f4-8117-445e-9c93-53642db9d948"
      unitRef="usd">1885935000</us-gaap:LiabilitiesAndStockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNC0xLTEtMS0w_11aa6706-caed-4541-9945-c0a14d77517d"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNC0zLTEtMS0w_455c6609-de8a-4815-ad19-7e9c88254d2e"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNC01LTEtMS0w_16995e6e-544c-4228-9af4-70ba94c91c62"
      unitRef="usd">219267000</us-gaap:NetIncomeLoss>
    <us-gaap:StockOptionPlanExpense
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNy0xLTEtMS0w_febfcd80-0bd8-4310-a195-81c8da010233"
      unitRef="usd">42661000</us-gaap:StockOptionPlanExpense>
    <us-gaap:StockOptionPlanExpense
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNy0zLTEtMS0w_e32153c8-6573-4c6a-9eba-5bf73aadb322"
      unitRef="usd">45589000</us-gaap:StockOptionPlanExpense>
    <us-gaap:StockOptionPlanExpense
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNy01LTEtMS0w_ce595452-48b5-43fd-b1b3-8bc5326adbe3"
      unitRef="usd">41090000</us-gaap:StockOptionPlanExpense>
    <us-gaap:Depreciation
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOC0xLTEtMS0w_b4c4413c-8ee6-4235-8d80-29f1892f5ebc"
      unitRef="usd">22139000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOC0zLTEtMS0w_dd1af000-4be7-4c16-ae0e-2ca216ae7a0d"
      unitRef="usd">21527000</us-gaap:Depreciation>
    <us-gaap:Depreciation
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOC01LTEtMS0w_4a83abbd-d85d-4ed9-afaf-1ebeb2b85251"
      unitRef="usd">18473000</us-gaap:Depreciation>
    <us-gaap:GainLossOnSaleOfPropertyPlantEquipment
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS0xLTEtMS0xMzU3NQ_d667a42c-3d85-41f4-a409-6267e5b27e6c"
      unitRef="usd">-1817000</us-gaap:GainLossOnSaleOfPropertyPlantEquipment>
    <us-gaap:GainLossOnSaleOfPropertyPlantEquipment
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS0zLTEtMS0xMzU3NQ_3b02e28b-4816-4783-acf4-34ebff4ffd13"
      unitRef="usd">-324000</us-gaap:GainLossOnSaleOfPropertyPlantEquipment>
    <us-gaap:GainLossOnSaleOfPropertyPlantEquipment
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS01LTEtMS0xMzU3NQ_6c08f90e-8610-4491-96d4-cd0b7e3d517a"
      unitRef="usd">0</us-gaap:GainLossOnSaleOfPropertyPlantEquipment>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS0xLTEtMS0w_6a827cf4-4c76-4ac9-a9e3-d846ee8e9eb0"
      unitRef="usd">4364000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS0zLTEtMS0w_29d22a96-1f73-4496-b276-13dc12ee9c6e"
      unitRef="usd">3373000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:AmortizationOfIntangibleAssets
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfOS01LTEtMS0w_ec7c33c6-ffd4-45ab-86bd-c323cd3b74ff"
      unitRef="usd">3076000</us-gaap:AmortizationOfIntangibleAssets>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTAtMS0xLTEtMA_01c0ee0d-86a3-43b1-bd3f-1ed0d6e02abb"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTAtMy0xLTEtMA_32a11ac7-a60e-434a-b82c-66cea443700f"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTAtNS0xLTEtMA_d1ec49af-3bd2-417b-a4ec-5657b7a08877"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtMS0xLTEtNjE4_28397b00-fa6b-46d7-bad5-b46a097ee059"
      unitRef="usd">9908000</cgnx:ExcessAndObsoleteInventoryCharges>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtMy0xLTEtNjIw_ada4b616-41bc-4c68-a3aa-7b6d8b2f5cc3"
      unitRef="usd">5296000</cgnx:ExcessAndObsoleteInventoryCharges>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtNS0xLTEtNjIy_7e1a7358-72d7-4565-a114-66f2b2e73107"
      unitRef="usd">2985000</cgnx:ExcessAndObsoleteInventoryCharges>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItMS0xLTEtNjMy_0b3ed26f-439a-433b-b53a-a6f3a230e520"
      unitRef="usd">3427000</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItMy0xLTEtNjM0_fe4f2faf-8c59-415a-8927-5ddb6a221311"
      unitRef="usd">0</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItNS0xLTEtNjM2_7c4cc996-e204-4fa9-8646-74a211f66cc8"
      unitRef="usd">0</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtMS0xLTEtMA_14f22c03-e3d9-4060-adcd-a3e084fbfd0b"
      unitRef="usd">-1274000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtMy0xLTEtMA_3b374e04-9866-4b3e-ade6-de1b0b8d58c1"
      unitRef="usd">618000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTEtNS0xLTEtMA_41ab254d-7b09-46c3-b51a-417af890c19b"
      unitRef="usd">-108000</us-gaap:AccretionAmortizationOfDiscountsAndPremiumsInvestments>
    <us-gaap:GainLossOnSaleOfInvestments
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItMS0xLTEtMA_eebc75c0-0823-4517-abce-3d9338cadb97"
      unitRef="usd">4119000</us-gaap:GainLossOnSaleOfInvestments>
    <us-gaap:GainLossOnSaleOfInvestments
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItMy0xLTEtMA_db55569a-994b-46b5-a969-fe598d17abc3"
      unitRef="usd">1452000</us-gaap:GainLossOnSaleOfInvestments>
    <us-gaap:GainLossOnSaleOfInvestments
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTItNS0xLTEtMA_3852e427-c0bc-4e62-876a-e13bd0cc832f"
      unitRef="usd">501000</us-gaap:GainLossOnSaleOfInvestments>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTMtMS0xLTEtMA_4f507b50-c40d-4d43-94d8-bde3380552a1"
      unitRef="usd">-114000</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTMtMy0xLTEtMA_dc026f61-befe-4e20-907e-9848308a68c5"
      unitRef="usd">-1401000</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTMtNS0xLTEtMA_82db810b-68bb-4d0d-89b1-f619d117ced3"
      unitRef="usd">-3000</us-gaap:BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1>
    <us-gaap:IncreaseDecreaseInDeferredIncomeTaxes
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTQtMS0xLTEtMA_11bd0038-50d2-4b6b-831d-362ca9809154"
      unitRef="usd">3353000</us-gaap:IncreaseDecreaseInDeferredIncomeTaxes>
    <us-gaap:IncreaseDecreaseInDeferredIncomeTaxes
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTQtMy0xLTEtMA_986a967a-aeb3-48c4-84ae-c018d97caae8"
      unitRef="usd">94866000</us-gaap:IncreaseDecreaseInDeferredIncomeTaxes>
    <us-gaap:IncreaseDecreaseInDeferredIncomeTaxes
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTQtNS0xLTEtMA_cc62f9a0-68c3-48f0-93d6-02745179073f"
      unitRef="usd">413000</us-gaap:IncreaseDecreaseInDeferredIncomeTaxes>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTYtMS0xLTEtMA_77e541b5-8dc3-41d3-9722-c977b002d781"
      unitRef="usd">21285000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTYtMy0xLTEtMA_f5f22bc4-adc3-465a-a1e7-66802644b679"
      unitRef="usd">-16807000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInAccountsReceivable
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTYtNS0xLTEtMA_9e60786e-d1b7-4783-9998-a2a2c11a30cc"
      unitRef="usd">1867000</us-gaap:IncreaseDecreaseInAccountsReceivable>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTctMS0xLTEtMA_2722e89f-c446-4fdd-bd9b-db9808d9ad29"
      unitRef="usd">848000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTctMy0xLTEtMA_5929aaf4-bbd7-49bb-be26-55acebd5315c"
      unitRef="usd">-3530000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInContractWithCustomerAsset
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTctNS0xLTEtMA_2dfefb37-3f72-472a-955e-e7ad56fd3a50"
      unitRef="usd">906000</us-gaap:IncreaseDecreaseInContractWithCustomerAsset>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTgtMS0xLTEtMA_7e05a263-aa35-48fa-834b-9734eaa93d52"
      unitRef="usd">10319000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTgtMy0xLTEtMA_fd5555b3-54b2-4726-bb36-5c5e7e12caa3"
      unitRef="usd">-17841000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInInventories
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTgtNS0xLTEtMA_293ac7d6-850e-4f45-9b5c-cd5df5a47254"
      unitRef="usd">19931000</us-gaap:IncreaseDecreaseInInventories>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTktMS0xLTEtMA_86399b07-db32-4513-8d57-2b64b785863f"
      unitRef="usd">9909000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTktMy0xLTEtMA_447ef32e-7d70-4ed5-8291-352b18082b23"
      unitRef="usd">-7405000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMTktNS0xLTEtMA_cf11709f-036c-4fed-b027-c97274a99fa3"
      unitRef="usd">9750000</us-gaap:IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjAtMS0xLTEtMA_28dc3e43-fa9d-4061-a9d0-a7946059b18f"
      unitRef="usd">-1688000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjAtMy0xLTEtMA_dc7942db-5321-4756-b846-4721702504c7"
      unitRef="usd">1633000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccountsPayable
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjAtNS0xLTEtMA_f70530af-56bc-4b80-ab6b-58ce61a8d164"
      unitRef="usd">-7247000</us-gaap:IncreaseDecreaseInAccountsPayable>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjEtMS0xLTEtMA_a0f9315f-971a-4d14-be7d-6b9a324dadee"
      unitRef="usd">24542000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjEtMy0xLTEtMA_9f524af2-4ee0-4a4e-b1e6-2f63da44089a"
      unitRef="usd">-8938000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedLiabilities
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjEtNS0xLTEtMA_059ea29b-fa10-4f78-af67-a47597a93e2d"
      unitRef="usd">380000</us-gaap:IncreaseDecreaseInAccruedLiabilities>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjItMS0xLTEtMA_50b475ac-d265-4aa7-9f28-c1a334c328ae"
      unitRef="usd">-22973000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjItMy0xLTEtMA_61e7cad1-ca83-4800-a682-50d80b693f3e"
      unitRef="usd">25266000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjItNS0xLTEtMA_d039863b-f067-4106-96ac-9dc5cfce2c1e"
      unitRef="usd">-21903000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjMtMS0xLTEtMA_c42183ac-5eb5-41cb-b7e3-6452fd5c91a6"
      unitRef="usd">6571000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjMtMy0xLTEtMA_ef3a2f1c-8323-4ad6-9677-b71594328461"
      unitRef="usd">3875000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInContractWithCustomerLiability
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjMtNS0xLTEtMA_36776d9a-28dc-4641-adeb-efdd5331873c"
      unitRef="usd">1434000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
    <us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjQtMS0xLTEtMA_88f3fd8d-2d86-48ed-be55-0d4380bd536e"
      unitRef="usd">-4548000</us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet>
    <us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjQtMy0xLTEtMA_839272f2-4096-4087-82c6-29e82be89986"
      unitRef="usd">-4255000</us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet>
    <us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjQtNS0xLTEtMA_84f44a43-c0db-4890-b631-a322ce9d041a"
      unitRef="usd">838000</us-gaap:IncreaseDecreaseInOtherOperatingCapitalNet>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjUtMS0xLTEtMA_89a91670-82e6-4216-89f8-45600f5855e5"
      unitRef="usd">242400000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjUtMy0xLTEtMA_724c2d5f-2a10-4df2-aeb3-d8666f78ed1d"
      unitRef="usd">253311000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:NetCashProvidedByUsedInOperatingActivities
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjUtNS0xLTEtMA_75d1aa8c-c865-4784-8fa9-d5ffcef3c98b"
      unitRef="usd">223454000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
    <us-gaap:PaymentsToAcquireInvestments
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjctMS0xLTEtMA_4a3ea356-624b-46e0-879e-d49027864b70"
      unitRef="usd">922867000</us-gaap:PaymentsToAcquireInvestments>
    <us-gaap:PaymentsToAcquireInvestments
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjctMy0xLTEtMA_3161f77b-11d3-4cc6-ac4a-43f43e5ed6ab"
      unitRef="usd">1031642000</us-gaap:PaymentsToAcquireInvestments>
    <us-gaap:PaymentsToAcquireInvestments
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjctNS0xLTEtMA_8321b00b-d327-410a-a06e-b2bedd9de5e6"
      unitRef="usd">782032000</us-gaap:PaymentsToAcquireInvestments>
    <us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjgtMS0xLTEtMA_30ca615f-88c3-4d0c-8563-5ab70a2da8b9"
      unitRef="usd">1104605000</us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments>
    <us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjgtMy0xLTEtMA_d4839612-83ba-49d0-af42-0b94b9bc4f34"
      unitRef="usd">1062962000</us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments>
    <us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjgtNS0xLTEtMA_e24c19e1-6a70-418e-aa78-8acc0e7017d3"
      unitRef="usd">812565000</us-gaap:ProceedsFromSaleMaturityAndCollectionsOfInvestments>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjktMS0xLTEtMA_445e3627-1214-42f3-af7f-ada38fd836dd"
      unitRef="usd">13303000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjktMy0xLTEtMA_0d767982-e0b8-4898-a017-bf50cca57bb5"
      unitRef="usd">21745000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMjktNS0xLTEtMA_8761101f-dd97-4dae-83d9-fe802873f9a5"
      unitRef="usd">37095000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzAtMS0xLTEtMA_fc449297-f8c7-4234-b160-458ddc44599a"
      unitRef="usd">-1004000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzAtMy0xLTEtMA_369a5783-0fb6-42ce-9180-8a51df788aef"
      unitRef="usd">166911000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzAtNS0xLTEtMA_7e65e56a-1ac7-489f-81f9-18f11024b946"
      unitRef="usd">4265000</us-gaap:PaymentsToAcquireBusinessesNetOfCashAcquired>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzMtMS0xLTEtMA_d51ca771-fdfa-4a7e-8c1a-1ef984f19bd2"
      unitRef="usd">169439000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzMtMy0xLTEtMA_e0f5fc63-75c5-48f2-9e0f-ad4a19bf9464"
      unitRef="usd">-157336000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:NetCashProvidedByUsedInInvestingActivities
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzMtNS0xLTEtMA_59ac6bbd-9798-40d6-ad5d-4f931012fc8e"
      unitRef="usd">-10827000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzUtMS0xLTEtMA_37fb8a81-a0c0-4467-827a-e12b26f19ded"
      unitRef="usd">125715000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzUtMy0xLTEtMA_2f129ee5-7d1b-4fcc-8ce3-6b39dda6d5a6"
      unitRef="usd">64581000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzUtNS0xLTEtMA_c221843c-0e79-4973-a365-20debe79c62e"
      unitRef="usd">26783000</us-gaap:ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzYtMS0xLTEtMA_88d93b20-b6c8-4665-81bf-b8a09b8cd7aa"
      unitRef="usd">51036000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzYtMy0xLTEtMA_3e2e0631-9dad-4701-b61c-23546515874e"
      unitRef="usd">61690000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsForRepurchaseOfCommonStock
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzYtNS0xLTEtMA_25a69f03-aa63-4ccf-a484-94ca5daadba5"
      unitRef="usd">203822000</us-gaap:PaymentsForRepurchaseOfCommonStock>
    <us-gaap:PaymentsOfDividendsCommonStock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzctMS0xLTEtMA_96f0847c-8c5d-424f-8394-b450143cbca2"
      unitRef="usd">390508000</us-gaap:PaymentsOfDividendsCommonStock>
    <us-gaap:PaymentsOfDividendsCommonStock
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzctMy0xLTEtMA_7e65db5e-a0d5-48b4-bea4-dcc05d5b41a2"
      unitRef="usd">35124000</us-gaap:PaymentsOfDividendsCommonStock>
    <us-gaap:PaymentsOfDividendsCommonStock
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzctNS0xLTEtMA_e10eab29-7237-4ec7-926f-19a2ecb1ccca"
      unitRef="usd">31865000</us-gaap:PaymentsOfDividendsCommonStock>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzgtMS0xLTEtMA_48872d19-9123-4982-b85a-1f48542f0b7e"
      unitRef="usd">1039000</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzgtMy0xLTEtMA_568396b2-995e-4fe5-9f8b-ffa7f2075c26"
      unitRef="usd">0</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzgtNS0xLTEtMA_fdf26343-a31d-434f-93c4-a995a3ecab69"
      unitRef="usd">1000000</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzktMS0xLTEtMA_c60bbe85-1e0d-4807-8ba1-853d3a0caaec"
      unitRef="usd">-316868000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzktMy0xLTEtMA_d117e75b-3566-4a5a-b462-46c27c2f2101"
      unitRef="usd">-32233000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:NetCashProvidedByUsedInFinancingActivities
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfMzktNS0xLTEtMA_f438f093-483a-4a69-9ccd-8dc2212f3d76"
      unitRef="usd">-209904000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDAtMS0xLTEtMA_c1853bce-806e-4a12-b946-9cdcefdc8e11"
      unitRef="usd">2671000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDAtMy0xLTEtMA_9a3df74b-4ec1-49a5-b115-d52a45fba25f"
      unitRef="usd">-523000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDAtNS0xLTEtMA_cbefc6c0-7a2f-4d3e-9f58-0820b53ffe8c"
      unitRef="usd">-1093000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDEtMS0xLTEtMA_b1b9976d-a275-4aa5-a640-2b8ac6cce65a"
      unitRef="usd">97642000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDEtMy0xLTEtMA_4c4761cd-7b03-41b8-8d7f-87e5bac6a292"
      unitRef="usd">63219000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDEtNS0xLTEtMA_e5c7678e-a678-4849-91e6-2ddf741b25be"
      unitRef="usd">1630000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDItMS0xLTEtMA_8de96eb7-7d9c-4670-810c-729c074ed417"
      unitRef="usd">171431000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDItMy0xLTEtMA_9607a325-aa36-4473-ad4f-e72156c1937a"
      unitRef="usd">108212000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="ib740d5d51df04ae39bc1007f04b7006f_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDItNS0xLTEtMA_2c1fb4e4-692d-4dae-9ece-2d81c583ce7b"
      unitRef="usd">106582000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDMtMS0xLTEtMA_87b8347f-3882-4b70-a0de-81a1c22e5078"
      unitRef="usd">269073000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDMtMy0xLTEtMA_8b31ad79-04e8-43f9-8ed7-b3dcd4c3b375"
      unitRef="usd">171431000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents
      contextRef="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84NS9mcmFnOjVmZjBlMGRlNDA2NzRkODU5YWI5YjQ1ODljZjMxMjAzL3RhYmxlOmRiZWMyNmM5M2Q2MzQ2OWRiMjEwZjhkYTA5NDY1NmEwL3RhYmxlcmFuZ2U6ZGJlYzI2YzkzZDYzNDY5ZGIyMTBmOGRhMDk0NjU2YTBfNDMtNS0xLTEtMA_3dd5d47d-2012-4c6f-b5de-0eaed8193526"
      unitRef="usd">108212000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
    <us-gaap:CommonStockSharesIssued
      contextRef="i4c1657bbb1e14689bca7759ab900536a_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi0yLTEtMS0w_5cdbaf78-2bf5-43cb-af9e-67554557063d"
      unitRef="shares">173507000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="i4c1657bbb1e14689bca7759ab900536a_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi00LTEtMS0w_e73dfbc5-c92b-45b2-86a3-6b2ce8ca339d"
      unitRef="usd">347000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i196202ba57cc46579609aed9942d10f2_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi02LTEtMS0w_36bb30b6-f359-4d6b-9e2d-d0d471f131f5"
      unitRef="usd">461338000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i3ca99dcef7da4e51a06a7b5b68dff825_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi04LTEtMS0w_452815a1-2492-4932-95b1-77aeae6e331c"
      unitRef="usd">668587000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="if2f71f53722e4bff8659e08cb2a42c5a_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi0xMC0xLTEtMA_f80d3df0-f1eb-4d6e-bc7c-17b6b38910c4"
      unitRef="usd">-34599000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ib740d5d51df04ae39bc1007f04b7006f_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi0xMi0xLTEtMA_e6d2880c-df30-41ea-9484-5e5bae5915e9"
      unitRef="usd">1095673000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="ibf40038bb52a4f1181e2f742f8d40d87_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy0yLTEtMS0w_7e137acc-b71e-4fcc-8be3-7d9be1b8df98"
      unitRef="shares">1493000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="ibf40038bb52a4f1181e2f742f8d40d87_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy00LTEtMS0w_cabb0072-09e1-4075-b53c-ea0a18e894b0"
      unitRef="usd">3000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="ia1e13233ac8647048845e2ac09a72110_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy02LTEtMS0w_7a8f4424-377c-47b0-8ed8-5678f90a66d7"
      unitRef="usd">26780000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy0xMi0xLTEtMA_ddf17e3e-e5d4-4a2f-b83b-b13f3d527982"
      unitRef="usd">26783000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="ibf40038bb52a4f1181e2f742f8d40d87_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC0yLTEtMS0w_c319c94c-9d08-4046-b823-681d92f5ae90"
      unitRef="shares">4180000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ibf40038bb52a4f1181e2f742f8d40d87_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC00LTEtMS0w_90389b71-c309-48c6-9c56-d09124fdb990"
      unitRef="usd">8000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ieb56650aacb54d5db569f14310bf4ebc_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC04LTEtMS0w_080ff9e1-117c-4112-9676-839dc83b6532"
      unitRef="usd">203814000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC0xMi0xLTEtMA_afc5d14d-5b07-4cf8-81af-9b42d83beaea"
      unitRef="usd">203822000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="ia1e13233ac8647048845e2ac09a72110_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNS02LTEtMS0w_6dc2f805-559c-4217-9e65-ee730488199d"
      unitRef="usd">41090000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNS0xMi0xLTEtMA_b206800c-c072-48f1-a545-8b372440d148"
      unitRef="usd">41090000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:DividendsCommonStockCash
      contextRef="ieb56650aacb54d5db569f14310bf4ebc_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNi04LTEtMS0w_3ea9afc7-0cfd-435d-b528-9f9c80ab70b9"
      unitRef="usd">31865000</us-gaap:DividendsCommonStockCash>
    <us-gaap:DividendsCommonStockCash
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNi0xMi0xLTEtMA_1cb2c196-2ca6-4823-9c49-524e8f72bc71"
      unitRef="usd">31865000</us-gaap:DividendsCommonStockCash>
    <us-gaap:StockholdersEquity
      contextRef="iedffb70ace1a4bad959695c50169dcfb_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy04LTEtMS02OTU_eb73cda0-4cb0-4f31-8927-60127c4ff39e"
      unitRef="usd">-5961000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i220fc0bd47034127b63419a5a59121cf_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy0xMi0xLTEtNzAw_766c3eca-dbfa-4a3c-9a68-37a4eaf1c79d"
      unitRef="usd">-5961000</us-gaap:StockholdersEquity>
    <us-gaap:NetIncomeLoss
      contextRef="ieb56650aacb54d5db569f14310bf4ebc_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy04LTEtMS0w_229f1c19-7a07-418f-befd-ff97f4674e2f"
      unitRef="usd">219267000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy0xMi0xLTEtMA_778650db-2e9c-4e14-8cf3-2a189bbad92d"
      unitRef="usd">219267000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ia4775eba0847484d8a60d2898aa44e7d_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTAtMTAtMS0xLTA_c72ef8f9-26aa-4ff4-bcef-549d9e009312"
      unitRef="usd">-1185000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTAtMTItMS0xLTA_a4c58c65-dfbc-4ca8-8e5d-02a829615962"
      unitRef="usd">-1185000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ia4775eba0847484d8a60d2898aa44e7d_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTEtMTAtMS0xLTA_cb7ebdc3-e465-4044-93b4-c164a34f1365"
      unitRef="usd">501000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTEtMTItMS0xLTA_c6e941b7-1d7d-45b0-8404-d90b78a3b18e"
      unitRef="usd">501000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ia4775eba0847484d8a60d2898aa44e7d_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTItMTAtMS0xLTA_08c97bef-6bf1-4564-be00-2be3a1b5a038"
      unitRef="usd">-4216000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTItMTItMS0xLTA_f2b970af-b1a0-4ddc-9583-c2fdf9bf9289"
      unitRef="usd">-4216000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:CommonStockSharesIssued
      contextRef="ic56795ffbed44cb0a764c893a61f362c_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtMi0xLTEtMA_f6b63f9c-710d-4bca-be6e-b95ac093b305"
      unitRef="shares">170820000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="ic56795ffbed44cb0a764c893a61f362c_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNC0xLTEtMA_acd85e5b-1f79-40a0-99d9-c2be23943359"
      unitRef="usd">342000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ia62e59cca4464221bd523e2d6a7fa886_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNi0xLTEtMA_eac98b88-4a0d-4608-8f13-ca18c1caba5e"
      unitRef="usd">529208000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i834d53a969284896ab357f2b0c3ce657_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtOC0xLTEtMA_f8467d93-a030-4341-95a4-4b3e376e1b2b"
      unitRef="usd">646214000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i3b2f6aa05d494335a02b2ec5ac168e04_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtMTAtMS0xLTA_9cbc3bc9-8d22-44d6-9c66-1e964f7b28a5"
      unitRef="usd">-40501000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtMTItMS0xLTA_be120ccf-250c-4802-b721-0cd060823b79"
      unitRef="usd">1135263000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="ia5a7f0963d0a41e48eca3667ebc4158c_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtMi0xLTEtMA_fbd83d7f-f0cd-42b8-ae99-fee6369b5000"
      unitRef="shares">3018000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="ia5a7f0963d0a41e48eca3667ebc4158c_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNC0xLTEtMA_d2213fd1-bdbf-41ca-89f3-4abbae7005e1"
      unitRef="usd">6000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i68c7c78a53c24716aad2cceea35dacec_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNi0xLTEtMA_86878b94-446c-4751-b747-53766ecc532e"
      unitRef="usd">64575000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtMTItMS0xLTA_43aaffc3-f007-42d5-9c04-ed65fa5be035"
      unitRef="usd">64581000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="ia5a7f0963d0a41e48eca3667ebc4158c_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtMi0xLTEtMA_14baac37-176a-46da-a9bd-1fc18e35b395"
      unitRef="shares">1398000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ia5a7f0963d0a41e48eca3667ebc4158c_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtNC0xLTEtMA_a751e0f1-753e-47fb-9d55-6d3a74ad1d63"
      unitRef="usd">3000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i7008e007f58a4b5899374ec64dccc60a_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtOC0xLTEtMA_5d60a2fd-a71d-4dd1-a5f1-fc8412f5fc24"
      unitRef="usd">61687000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtMTItMS0xLTA_de409294-3872-41e3-a310-ab93a7ff13ef"
      unitRef="usd">61690000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i68c7c78a53c24716aad2cceea35dacec_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTYtNi0xLTEtMA_bb353597-ac6e-4360-a250-05c0590c7a5e"
      unitRef="usd">45589000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTYtMTItMS0xLTA_5035b639-87e4-4d6e-846d-7cca74684f98"
      unitRef="usd">45589000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:DividendsCommonStockCash
      contextRef="i7008e007f58a4b5899374ec64dccc60a_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTctOC0xLTEtMA_b8a33808-ccdd-442f-a364-f30093273e58"
      unitRef="usd">35124000</us-gaap:DividendsCommonStockCash>
    <us-gaap:DividendsCommonStockCash
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTctMTItMS0xLTA_6411688a-9b12-4d95-b35e-b22ad0cd9e49"
      unitRef="usd">35124000</us-gaap:DividendsCommonStockCash>
    <us-gaap:NetIncomeLoss
      contextRef="i7008e007f58a4b5899374ec64dccc60a_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTktOC0xLTEtMA_2f630d93-31b9-4665-8ce3-c5897bea9348"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTktMTItMS0xLTA_21bbfbe9-4892-43d7-8d3c-cf5dd70de23d"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="i71c39cc633c0412297a724a3b198be69_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjItMTAtMS0xLTA_a883ff52-31c4-4a21-a097-1244aa7d4333"
      unitRef="usd">5219000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjItMTItMS0xLTA_24f20c3b-a286-491a-998e-bfcee6ef9dbb"
      unitRef="usd">5219000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i71c39cc633c0412297a724a3b198be69_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjMtMTAtMS0xLTA_2f4611ef-a898-4b77-b7d1-648f8e8dc416"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjMtMTItMS0xLTA_26d0f206-5ed3-48c6-8209-235dad6e3455"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i71c39cc633c0412297a724a3b198be69_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjQtMTAtMS0xLTA_fa1c2dba-4383-46ef-acd7-5e3ba515a941"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjQtMTItMS0xLTA_361ca3a3-5b8f-4371-bd47-12002f86c230"
      unitRef="usd">-541000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:CommonStockSharesIssued
      contextRef="ibdc0572db597422ca189e88018b0643f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtMi0xLTEtMA_0022d7be-0047-4a75-85db-40447966923d"
      unitRef="shares">172440000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="ibdc0572db597422ca189e88018b0643f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNC0xLTEtMA_3c7db71d-765a-4371-a27f-d97efe6c933b"
      unitRef="usd">345000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i9d842e36605b43ed998c954d642af881_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNi0xLTEtMA_c5131655-9e82-4715-b160-56721b0fc3b6"
      unitRef="usd">639372000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ide1cceaa5ce0486d98bb6affeac5ae3e_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtOC0xLTEtMA_0fb24a7b-2556-4979-a60f-9291ff96ee81"
      unitRef="usd">753268000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="ib07c07bbfb5544c0bb97b2d16c24b634_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtMTAtMS0xLTA_c735f875-02c3-435b-8e70-8c43d85ed382"
      unitRef="usd">-37275000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtMTItMS0xLTA_53ad2b58-b94f-4703-8cae-b91e6e43add5"
      unitRef="usd">1355710000</us-gaap:StockholdersEquity>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="i614c651180bc4855b70dad93f31f1adb_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtMi0xLTEtMA_d48391c5-c93c-4ca8-84f7-87c69ab6b519"
      unitRef="shares">4565000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i614c651180bc4855b70dad93f31f1adb_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNC0xLTEtMA_fd1403d8-b01a-49d8-af68-9ab0091a74df"
      unitRef="usd">9000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="i9331cd59f3404613b09d551f5497228b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNi0xLTEtMA_8149619e-d381-4bac-a976-5e8949ceaadd"
      unitRef="usd">125706000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtMTItMS0xLTA_febdebb6-98a0-4d0b-b6f9-533c386131c2"
      unitRef="usd">125715000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i614c651180bc4855b70dad93f31f1adb_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctMi0xLTEtMA_33cce827-38a3-449f-949c-d6ff313a061a"
      unitRef="shares">1215000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i614c651180bc4855b70dad93f31f1adb_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctNC0xLTEtMA_5e569250-0a3e-400c-94ab-ddb15f9ac54c"
      unitRef="usd">2000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ib93dfd73638e4f62aa3d14c2f68e837e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctOC0xLTEtMA_71d789d2-d005-43da-9967-b51be795e669"
      unitRef="usd">51034000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctMTItMS0xLTA_f05ed550-e81f-44a8-bb50-e5207524eed8"
      unitRef="usd">51036000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="i9331cd59f3404613b09d551f5497228b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjgtNi0xLTEtMA_dca86476-293c-4ad4-99cb-4b6675969150"
      unitRef="usd">42661000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjgtMTItMS0xLTA_6fac37d5-2bae-45f2-847c-20c34ffe8c8b"
      unitRef="usd">42661000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
    <us-gaap:DividendsCommonStockCash
      contextRef="ib93dfd73638e4f62aa3d14c2f68e837e_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjktOC0xLTEtMA_0ad125f1-e142-488e-97fc-3980b44ffb5a"
      unitRef="usd">390508000</us-gaap:DividendsCommonStockCash>
    <us-gaap:DividendsCommonStockCash
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjktMTItMS0xLTA_4e8ac6ee-0a04-44f8-a3b9-2201a4768c10"
      unitRef="usd">390508000</us-gaap:DividendsCommonStockCash>
    <us-gaap:NetIncomeLoss
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzAtMTItMS0xLTA_b88062de-1c8d-4f25-afa3-e79485c4d752"
      unitRef="usd">176186000</us-gaap:NetIncomeLoss>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzMtMTAtMS0xLTA_955ae86b-98fe-418c-acdf-2e0fea87d33c"
      unitRef="usd">6478000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzMtMTAtMS0xLTA_f6a98b26-bc8b-44a9-b153-21e0f7aafddc"
      unitRef="usd">6478000</us-gaap:OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzMtMTItMS0xLTA_9fd15cc4-5cac-46c3-b75d-9257cd239725"
      unitRef="usd">6478000</us-gaap:OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzQtMTAtMS0xLTA_4e778e54-9049-4ee9-8e0f-9ff809f1900b"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzQtMTAtMS0xLTA_d5f59fda-cc33-403c-b318-cf6f40c00546"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzQtMTItMS0xLTA_c9297acf-91cf-4cbf-be86-c728d37785b0"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzUtMTAtMS0xLTA_49f98e2d-ffe6-48c7-a42b-f6d8b97e1e03"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzUtMTAtMS0xLTA_ff2b6f3b-221e-4aa3-ad4a-18e2447d3c15"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzUtMTItMS0xLTA_cdfb12b6-5c8e-4caf-babd-85845e1840ea"
      unitRef="usd">1115000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
    <us-gaap:CommonStockSharesIssued
      contextRef="iaac1bff8fed84c9892e20cf9f3b4cd94_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtMi0xLTEtMA_a8456ff2-6c8e-4327-9767-95e0aab8bc6f"
      unitRef="shares">175790000</us-gaap:CommonStockSharesIssued>
    <us-gaap:StockholdersEquity
      contextRef="iaac1bff8fed84c9892e20cf9f3b4cd94_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNC0xLTEtMA_6390b954-bf90-4800-ab31-63f8cd1e2827"
      unitRef="usd">352000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i7128fd43290d4ce6ae12cf03ea620b76_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNi0xLTEtMA_fcb04f98-617c-43c6-9d4b-24816237d53a"
      unitRef="usd">807739000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i24a0b5b69e504b0a896f227f2e9fbeb6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtOC0xLTEtMA_f1fb524c-80ad-487e-bbbb-4a916c92385f"
      unitRef="usd">487912000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i4fc0936b019746c399fb17074b41e6c6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtMTAtMS0xLTA_638e2e30-8544-4632-a909-8cabb9e0ac4b"
      unitRef="usd">-33801000</us-gaap:StockholdersEquity>
    <us-gaap:StockholdersEquity
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtMTItMS0xLTA_1888b470-9401-4585-88f7-505afcc1ace8"
      unitRef="usd">1262202000</us-gaap:StockholdersEquity>
    <us-gaap:SignificantAccountingPoliciesTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2MDU_1ce26da3-eb69-4dbb-96db-15d7a9ec12d1">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 combinations, 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 other comprehensive income (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 certificates of deposit and debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Certificates of deposit and 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 other comprehensive income (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 &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;recoveries related to debt securities are included in &#x201c;Other income (expense)&#x201d; on the Consolidated Statements of Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts that project the 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, general economic and industry conditions, and reasonable forecasts about the future, 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 prices 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;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 market 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 would 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 two 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 entity'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 upon 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, &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;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. The Company determines whether a contract 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 macroeconomic conditions, industry and market considerations, overall financial performance (both current and projected), changes in management or 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 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 upon facts and circumstances. The useful lives of distribution networks range from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2MTY_1993dea7-2551-4816-80cd-4137c69069dd"&gt;eleven&lt;/span&gt; to twelve years, of completed technologies from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2NTc_a4acc09f-a1f8-4829-97e1-5e2e1d62e3a6"&gt;five&lt;/span&gt; to eight years, of customer relationships from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2OTg_1ba8638a-e4db-4203-9056-3c3066dac80d"&gt;five&lt;/span&gt; to eight years, of non-compete agreements from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3Mzk_2ef3c53a-ab25-4b57-bc54-77289ccd63fa"&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:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTc4NTM_da3b6d83-8fe8-41be-be75-64b34b1da43f"&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 collectibility 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 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 upon 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 &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;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 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, outside services, and prototyping materials. 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,443,000 in 2020, $1,385,000 in 2019, and $1,662,000 in 2018.&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. The fair value of RSUs is determined based on the market value of the Company's common stock on the grant date. &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 options and RSUs using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting 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 $36,912,000 and $38,027,000, as of December 31, 2020 and December 31, 2019, respectively; net unrealized gains on available-for-sale investments of $4,382,000 and $2,023,000 as of December 31, 2020 and December 31, 2019, respectively; 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 income (loss) to investment income on the Consolidated Statements of Operations were net realized gains of $4,119,000, $1,452,000, and $501,000 for 2020, 2019, and 2018, 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;The Company has two large customers that each represented a significant portion of revenue in 2020 and accounts receivable as of December 31, 2020. 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 product is manufactured by a third-party contractor located in Indonesia. This contractor has agreed to provide Cognex with termination notification periods and last-time-buy rights, if and when that may be applicable. We rely upon this contractor to provide quality product and meet delivery schedules. 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.&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;Certain components are presently sourced from a single vendor that is selected based on price and performance considerations. In the event of a supply disruption from a single-source vendor, these components may be purchased from alternative vendors, which may result in manufacturing delays based on the lead time of the new vendor and higher costs. Certain key electronic and mechanical components that are purchased from strategic suppliers, such as processors or imagers, are fundamental to the design of Cognex products. A disruption in the supply of these key components, such as a last-time-buy announcement, natural disaster, financial bankruptcy, or other event, may require us to purchase a significant amount of inventory at unfavorable prices resulting in lower gross margins and higher risk of carrying excess inventory. If we are unable to secure adequate supply from alternative sources, we may have to redesign our products, which may lead to a delay in manufacturing and a 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 typically associated with restructuring activities 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3NDI_06d051c8-bb1b-4fd9-be7f-726a8b5c9fc7">&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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3Nzc_3874cd2d-7ff4-4b81-b42c-9fd14427d5c0">&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 combinations, and restructuring charges.&lt;/span&gt;&lt;/div&gt;</us-gaap:UseOfEstimates>
    <us-gaap:ConsolidationPolicyTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3Mzk_599ffdfc-6050-4b26-91d5-7f91a9ab8cad">&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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2Njg_8d057ce6-2f10-4fad-88f4-ac0d1488ec9e">&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 other comprehensive income (loss).&lt;/span&gt;&lt;/div&gt;</us-gaap:ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock>
    <us-gaap:FairValueOfFinancialInstrumentsPolicy
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MjU_6cec1d6e-6587-402d-807f-a393d8dc118d">&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:CashAndCashEquivalentsPolicyTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2ODE_1eb61242-e838-4e2a-9dab-7770a995f96b">&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 certificates of deposit and debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Certificates of deposit and 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 other comprehensive income (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 &lt;/span&gt;&lt;/div&gt;recoveries related to debt securities are included in &#x201c;Other income (expense)&#x201d; on the Consolidated Statements of Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts that project the expected future cash flows.</us-gaap:CashAndCashEquivalentsPolicyTextBlock>
    <us-gaap:InvestmentPolicyTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2ODE_91771768-ab67-43ff-92da-7136cc15a834">&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 certificates of deposit and debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Certificates of deposit and 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 other comprehensive income (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 &lt;/span&gt;&lt;/div&gt;recoveries related to debt securities are included in &#x201c;Other income (expense)&#x201d; on the Consolidated Statements of Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts that project the expected future cash flows.</us-gaap:InvestmentPolicyTextBlock>
    <cgnx:AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzY1Nw_1df595ff-6f78-4364-ab9f-9ede47eb0c7e">P10Y</cgnx:AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum>
    <us-gaap:TradeAndOtherAccountsReceivablePolicy
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTA5OTUxMTczNzk1Ng_1dbdc447-1036-47ef-9614-e4cd960b73b0">&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, general economic and industry conditions, and reasonable forecasts about the future, 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MzI_050cd4ee-8911-4022-b229-434a3fb4ca54">&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 prices 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;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 market 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 would 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3ODQ_25c692ea-8097-4af0-820e-18a5f81e77cd">&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 two 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="ieeb8bb7dd2d740d5859437f51890dfc9_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfODcwNQ_af867205-83df-405d-9ff1-c80b4840c2a8">P39Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i48348e745c5148028dcaf82df7d0d8a0_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfODc0OQ_75b43c32-51b0-4005-bfbf-8de76eef7f2d">P10Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:PropertyPlantAndEquipmentUsefulLife
      contextRef="i4117606912f54ef5b9e2782948d44c65_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfODg4Mw_f159af16-0b79-4d46-8833-6872c9c5a14b">P10Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
    <us-gaap:InternalUseSoftwarePolicy
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTA5OTUxMTcyMzIyMQ_93c79a72-036d-40c4-bb50-b558028cb781">&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 entity'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 upon 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, &lt;/span&gt;&lt;/div&gt;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTA5OTUxMTY4MDA1Nw_80c9bd92-5da8-41f1-9e08-90365bb5c840">&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. The Company determines whether a contract 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2MTU_3c8b683d-728d-47c2-a98f-b05b0e648519">GoodwillGoodwill 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 macroeconomic conditions, industry and market considerations, overall financial performance (both current and projected), changes in management or 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 similar businesses, to support the conclusions based on the income approach.</us-gaap:GoodwillAndIntangibleAssetsGoodwillPolicy>
    <us-gaap:IntangibleAssetsFiniteLivedPolicy
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MDE_c63591b9-856e-406b-a9ed-9727db284bc3">&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 upon facts and circumstances. The useful lives of distribution networks range from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2MTY_1993dea7-2551-4816-80cd-4137c69069dd"&gt;eleven&lt;/span&gt; to twelve years, of completed technologies from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2NTc_a4acc09f-a1f8-4829-97e1-5e2e1d62e3a6"&gt;five&lt;/span&gt; to eight years, of customer relationships from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2OTg_1ba8638a-e4db-4203-9056-3c3066dac80d"&gt;five&lt;/span&gt; to eight years, of non-compete agreements from &lt;span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3Mzk_2ef3c53a-ab25-4b57-bc54-77289ccd63fa"&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="if36850dcbd1740589493383b1e09703b_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2MjI_9b238a56-f3f2-41c7-84ac-396760dc50ff">P12Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i9bce38372afb46f1aa436c4c366ee94c_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2NjM_d609c663-41ff-48c6-a0e8-06d697c6fba0">P8Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i182946fdfefd4286be6379d3fb85519d_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3MDQ_401a511c-7db3-490b-b0d3-aeb44ce74683">P8Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i0bac989307494e9480022581cd700e24_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3NDU_38d6fad4-09f5-4902-9175-6d137fb44fd2">P7Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:FiniteLivedIntangibleAssetUsefulLife
      contextRef="i34092537a9cf4f458b524cfe7470dcf1_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3NjQ_993b1c92-ed61-4956-9085-ef06163079e7">P2Y</us-gaap:FiniteLivedIntangibleAssetUsefulLife>
    <us-gaap:StandardProductWarrantyPolicy
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MDk_2f331ec4-70a6-453a-a977-136f4972603f">&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:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTc4NTM_da3b6d83-8fe8-41be-be75-64b34b1da43f"&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="i4cb9bac3005844c5b3ae926944c6a28e_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTc4NTk_1668c73d-f7bc-4fc8-9262-a725e8a05166">P3Y</cgnx:ProductWarrantyPeriod>
    <us-gaap:CommitmentsAndContingenciesPolicyTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MjM_9803a34e-f27e-4a03-8e06-df7d72f4df59">&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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTA5OTUxMTczNjQ1OQ_a172a8ef-9ed6-4e57-87b2-57652d654d09">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2Mzc_46d7017e-d5a6-40ca-9d5a-e2ece1dbd2d1">&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 collectibility 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 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 upon 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 &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;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 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="i0f77d4a1ec5f45e88a15ed192e49d2f7_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMjQ3NzA_987cb08e-7747-4a6e-bed4-40b8f0b4321c">P30D</cgnx:RevenuePaymentTerms>
    <cgnx:RevenuePaymentTerms
      contextRef="i4cb9bac3005844c5b3ae926944c6a28e_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMjQ3NzY_cffeca41-5b95-4911-ad6d-1ef3ff3d48e2">P90D</cgnx:RevenuePaymentTerms>
    <us-gaap:ResearchDevelopmentAndComputerSoftwarePolicyTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3MzU_059a311a-2bc7-4229-b065-cd05cfe5cffe">Research and DevelopmentResearch and development costs primarily include personnel-related costs, outside services, and prototyping materials. 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3NTQ_89ad89d4-aee7-4301-8a76-2525ea1a18f8">&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,443,000 in 2020, $1,385,000 in 2019, and $1,662,000 in 2018.&lt;/span&gt;&lt;/div&gt;</us-gaap:AdvertisingCostsPolicyTextBlock>
    <us-gaap:AdvertisingExpense
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMjY3OTY_adeb0f5a-0de9-45c4-af19-483f56a1013e"
      unitRef="usd">1443000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMjY4MDY_3aa23201-7787-4eb0-ab9a-921782a1fdc1"
      unitRef="usd">1385000</us-gaap:AdvertisingExpense>
    <us-gaap:AdvertisingExpense
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMjY4MjA_8d5bbea2-a2ba-4f5f-8f56-f9d892c19d47"
      unitRef="usd">1662000</us-gaap:AdvertisingExpense>
    <us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3NjA_83e782cb-982f-45a3-8b89-ecefca292337">&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. The fair value of RSUs is determined based on the market value of the Company's common stock on the grant date. &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 options and RSUs using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting 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;</us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy>
    <us-gaap:IncomeTaxPolicyTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2MDQ_14f5c013-303f-4b2b-b691-7df25033de3e">&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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3Mzg_1ac27a2e-19c4-451c-b6eb-3cfdb39483f3">&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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI2ODY_cc7df711-7153-45a7-ba2d-4df34ca4f521">&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 $36,912,000 and $38,027,000, as of December 31, 2020 and December 31, 2019, respectively; net unrealized gains on available-for-sale investments of $4,382,000 and $2,023,000 as of December 31, 2020 and December 31, 2019, respectively; 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 income (loss) to investment income on the Consolidated Statements of Operations were net realized gains of $4,119,000, $1,452,000, and $501,000 for 2020, 2019, and 2018, respectively.&lt;/span&gt;&lt;/div&gt;</us-gaap:ComprehensiveIncomePolicyPolicyTextBlock>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzI3ODk_9d93c40e-9918-4a0b-9f26-b725df0555c1"
      unitRef="usd">36912000</us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzI3OTY_f981fa93-0046-4327-98ca-156e209853d5"
      unitRef="usd">38027000</us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzI5MTU_a8b6ff4a-d564-4557-b805-7e552e507d88"
      unitRef="usd">4382000</us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzMwMDU_4c8ec613-b111-447b-80f7-193cce273461"
      unitRef="usd">2023000</us-gaap:AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax>
    <us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzMxMTE_ef1659d8-ddd6-4b10-96e2-0f3422c9fd00"
      unitRef="usd">1271000</us-gaap:AdjustmentForLongTermIntercompanyTransactionsNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ia5e209f0702b4c21aa1c9a42a15a02af_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzMyOTc_414bb058-5275-4887-9a8b-c75c68c700fc"
      unitRef="usd">4119000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="i71c39cc633c0412297a724a3b198be69_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzMzMDE_3359a01b-c0ca-402c-ab66-fda5ec0d4ddd"
      unitRef="usd">1452000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax
      contextRef="ia4775eba0847484d8a60d2898aa44e7d_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMzMzMDk_59ab81b0-8b1c-4542-9614-0054af83ab31"
      unitRef="usd">501000</us-gaap:OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax>
    <cgnx:ConcentrationsOfRiskPolicyPolicyTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3NjU_cc052d34-0d4e-46ce-a36d-a370002b49ce">&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;The Company has two large customers that each represented a significant portion of revenue in 2020 and accounts receivable as of December 31, 2020. 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 product is manufactured by a third-party contractor located in Indonesia. This contractor has agreed to provide Cognex with termination notification periods and last-time-buy rights, if and when that may be applicable. We rely upon this contractor to provide quality product and meet delivery schedules. 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.&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;Certain components are presently sourced from a single vendor that is selected based on price and performance considerations. In the event of a supply disruption from a single-source vendor, these components may be purchased from alternative vendors, which may result in manufacturing delays based on the lead time of the new vendor and higher costs. Certain key electronic and mechanical components that are purchased from strategic suppliers, such as processors or imagers, are fundamental to the design of Cognex products. A disruption in the supply of these key components, such as a last-time-buy announcement, natural disaster, financial bankruptcy, or other event, may require us to purchase a significant amount of inventory at unfavorable prices resulting in lower gross margins and higher risk of carrying excess inventory. If we are unable to secure adequate supply from alternative sources, we may have to redesign our products, which may lead to a delay in manufacturing and a possible loss of sales.&lt;/span&gt;&lt;/div&gt;</cgnx:ConcentrationsOfRiskPolicyPolicyTextBlock>
    <us-gaap:BusinessCombinationsPolicy
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfNDI3NjY_1e82b6d5-ed50-4c42-b7a7-b461b6b27db5">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTA5OTUxMTcxNzkzMw_eb06b9f6-f620-43e7-8e24-e26ad4f82937">&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 typically associated with restructuring activities 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDMvZnJhZzowODAxY2M3MDYyZmI0Y2M1YjhiZGU5Mjc1OTJjZTA5MS90ZXh0cmVnaW9uOjA4MDFjYzcwNjJmYjRjYzViOGJkZTkyNzU5MmNlMDkxXzEwOTk1MTE2MzQwMTA_385e3896-1d63-46be-845f-dc6a5cc373bf">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: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;ASU 2019-12 applies to all entities within the scope of Topic 740, Income Taxes. The amendments in this ASU simplify the accounting for income taxes by removing the following exceptions: (1) exception to the incremental approach for intraperiod tax allocation when there is a loss from continuing operations and income or a gain from other items; (2) exception to the requirement to recognize a deferred tax liability for equity method investments when a foreign subsidiary becomes an equity method investment; (3) exception to the ability not to recognize a deferred tax liability for a foreign subsidiary when a foreign equity method investment becomes a subsidiary; and (4) exception to the general methodology for calculating income taxes in an interim period when a year-to-date loss exceeds the anticipated loss for the year. The amendments in this ASU also simplify the accounting for income taxes by doing the following: (1) requiring that an entity recognize a franchise tax that is partially based on income as an income-based tax and account for any incremental amount incurred as a non-income-based tax; (2) requiring that an entity evaluate when a step up in the tax basis of goodwill should be considered part of the business combination in which the book goodwill was originally recognized and when it should be considered a separate transaction; (3) specifying that an entity is not required to allocate the consolidated amount of current and deferred tax expense to a legal entity that is not subject to tax in its separate financial statements; and (4) requiring that an entity reflect the effect of an enacted change in tax laws or rates in the annual effective tax rate computation in the interim period that included the enacted date. The amendments in this ASU are effective for public companies for annual periods, and interim periods within those annual periods, beginning after December 15, 2020. Early adoption is permitted; however, an entity that elects to early adopt the amendments must adopt all the amendments in the same period. The amendments in this ASU related to separate financial statements of legal entities that are not subject to tax should be applied on a retrospective basis for all periods presented. The amendments related to changes in ownership of foreign equity method investments or foreign subsidiaries should be applied on a modified retrospective basis through a cumulative-effect adjustment to retained earnings as of the beginning of the fiscal year of adoption. The amendments related to franchise taxes that are partially based on income should be applied on either a retrospective basis for all periods presented or a modified retrospective basis through a cumulative-effect adjustment to retained earnings as of the beginning of the fiscal year of adoption. All other amendments should be applied on a prospective basis. Management does not expect ASU 2019-12 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: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)"&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 amendments in this ASU 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. The amendments in this ASU 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 this ASU are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 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: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: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 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 amendments in this ASU are effective for fiscal years, and interim periods within those fiscal years, beginning after December 15, 2020. Early application is not permitted. The amendments in this ASU should be applied on a prospective basis as of the beginning of the period of adoption for existing or newly purchased callable debt securities. Management does not expect ASU 2020-08 to have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
    <us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDMvZnJhZzowODAxY2M3MDYyZmI0Y2M1YjhiZGU5Mjc1OTJjZTA5MS90ZXh0cmVnaW9uOjA4MDFjYzcwNjJmYjRjYzViOGJkZTkyNzU5MmNlMDkxXzYyMzA_87bb1887-40a7-4c98-b306-fee57fd43137">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: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;ASU 2019-12 applies to all entities within the scope of Topic 740, Income Taxes. The amendments in this ASU simplify the accounting for income taxes by removing the following exceptions: (1) exception to the incremental approach for intraperiod tax allocation when there is a loss from continuing operations and income or a gain from other items; (2) exception to the requirement to recognize a deferred tax liability for equity method investments when a foreign subsidiary becomes an equity method investment; (3) exception to the ability not to recognize a deferred tax liability for a foreign subsidiary when a foreign equity method investment becomes a subsidiary; and (4) exception to the general methodology for calculating income taxes in an interim period when a year-to-date loss exceeds the anticipated loss for the year. The amendments in this ASU also simplify the accounting for income taxes by doing the following: (1) requiring that an entity recognize a franchise tax that is partially based on income as an income-based tax and account for any incremental amount incurred as a non-income-based tax; (2) requiring that an entity evaluate when a step up in the tax basis of goodwill should be considered part of the business combination in which the book goodwill was originally recognized and when it should be considered a separate transaction; (3) specifying that an entity is not required to allocate the consolidated amount of current and deferred tax expense to a legal entity that is not subject to tax in its separate financial statements; and (4) requiring that an entity reflect the effect of an enacted change in tax laws or rates in the annual effective tax rate computation in the interim period that included the enacted date. The amendments in this ASU are effective for public companies for annual periods, and interim periods within those annual periods, beginning after December 15, 2020. Early adoption is permitted; however, an entity that elects to early adopt the amendments must adopt all the amendments in the same period. The amendments in this ASU related to separate financial statements of legal entities that are not subject to tax should be applied on a retrospective basis for all periods presented. The amendments related to changes in ownership of foreign equity method investments or foreign subsidiaries should be applied on a modified retrospective basis through a cumulative-effect adjustment to retained earnings as of the beginning of the fiscal year of adoption. The amendments related to franchise taxes that are partially based on income should be applied on either a retrospective basis for all periods presented or a modified retrospective basis through a cumulative-effect adjustment to retained earnings as of the beginning of the fiscal year of adoption. All other amendments should be applied on a prospective basis. Management does not expect ASU 2019-12 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: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)"&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 amendments in this ASU 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. The amendments in this ASU 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 this ASU are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 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: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: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 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 amendments in this ASU are effective for fiscal years, and interim periods within those fiscal years, beginning after December 15, 2020. Early application is not permitted. The amendments in this ASU should be applied on a prospective basis as of the beginning of the period of adoption for existing or newly purchased callable debt securities. Management does not expect ASU 2020-08 to have a material impact on the Company's consolidated financial statements and disclosures.&lt;/span&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock>
    <us-gaap:FairValueDisclosuresTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzM1OTk_1ca8f8de-8c6a-46de-b684-0fa03c7218d6">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, 2020 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;236,142&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"&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;131,861&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"&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;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;&#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;92,218&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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 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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;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: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;12,100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;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: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,038&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 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&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;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="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;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;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;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&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&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 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-bottom:5pt;margin-top:11pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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;2,554&#160;&lt;/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 GVi 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;(1,646)&lt;/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;Fair value adjustment to 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;245&#160;&lt;/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, 2019&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;1,153&#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="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;Fair value adjustment to 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;(114)&lt;/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;Payment of 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;(1,039)&lt;/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 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: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 fair value of the contingent consideration liability related to the Company's acquisition of GVi Ventures, Inc. in 2017 was written down to zero as of December 31, 2019, resulting from a lower level of revenue in the Americas' automotive industry, and the balance remains at zero as of December 31, 2020. The undiscounted potential outcomes related to future contingent consideration range from $0 to $2,500,000 based on certain revenue levels over the next two 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%;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. Our business has been adversely and materially impacted by deteriorating global economic conditions resulting from the COVID-19 pandemic. These conditions 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 are included in "Restructuring charges" on the Consolidated Statements of Operations, and intangible asset impairment charges of $19,571,000 (refer to Note 9). These fair value measurements are based on the present values of future cash flows using significant inputs that are not observable in the market, and are therefore classified as Level 3. The Company did not record impairment charges related to non-financial assets in 2019 and 2018.</us-gaap:FairValueDisclosuresTextBlock>
    <us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzM1ODg_df363fda-c648-4991-a8d9-fcd6b4110e87">&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, 2020 (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:10pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;236,142&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;Treasury bills&lt;/span&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"&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;131,861&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"&gt;&lt;/td&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"&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;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;&#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;92,218&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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 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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;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: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;12,100&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;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: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,038&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 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&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;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="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;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;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;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="i3105dceca27c41bea714c34ef0d49b64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzMtMS0xLTEtMA_dfeecfe1-2c63-4015-8f7a-e7fba0480dde"
      unitRef="usd">2464000</cgnx:MoneyMarketInstrumentsFairValueDisclosure>
    <cgnx:MoneyMarketInstrumentsFairValueDisclosure
      contextRef="i50d1c612bfe54d33a636415a8399e08a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzMtMy0xLTEtMA_70e17307-da42-4f03-8bf4-877b925db08b"
      unitRef="usd">0</cgnx:MoneyMarketInstrumentsFairValueDisclosure>
    <cgnx:MoneyMarketInstrumentsFairValueDisclosure
      contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzMtNS0xLTEtMTQxNTQ_7d15d945-4b4b-4d14-844f-511b0422e164"
      unitRef="usd">0</cgnx:MoneyMarketInstrumentsFairValueDisclosure>
    <cgnx:CorporateBondsFairValueDisclosure
      contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzUtMS0xLTEtMA_6efc3b03-6576-4340-a568-390d1aa98e50"
      unitRef="usd">0</cgnx:CorporateBondsFairValueDisclosure>
    <cgnx:CorporateBondsFairValueDisclosure
      contextRef="i50d1c612bfe54d33a636415a8399e08a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzUtMy0xLTEtMA_00b4575f-cbea-4a05-88b1-1e19b605cd27"
      unitRef="usd">236142000</cgnx:CorporateBondsFairValueDisclosure>
    <cgnx:CorporateBondsFairValueDisclosure
      contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzQtNS0xLTEtMTQxNTQ_2af6cbc4-5b8c-40e6-8904-47a560a7606a"
      unitRef="usd">0</cgnx:CorporateBondsFairValueDisclosure>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtMS0xLTEtNjUwMw_92766df4-deff-4040-aab1-c57f9a3ed9ed"
      unitRef="usd"
      xsi:nil="true"/>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="i50d1c612bfe54d33a636415a8399e08a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtMy0xLTEtNjUwMw_0717b76c-7eae-4420-8206-d2cee7594f55"
      unitRef="usd">131861000</cgnx:TreasuryBillsFairValueDisclosure>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtNC0xLTEtNjUwMw_875e1c56-510e-4903-a633-3a4c4806e115"
      unitRef="usd"
      xsi:nil="true"/>
    <cgnx:TreasuryBillsFairValueDisclosure
      contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzUtNS0xLTEtMTQxNTQ_48cba5c4-0535-4352-aa90-1251d01d4bb3"
      unitRef="usd"
      xsi:nil="true"/>
    <cgnx:AssetBackedSecuritiesFairValueDisclosure
      contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtMS0xLTEtMA_a735552d-10d0-4f31-a38c-a9bb3416014e"
      unitRef="usd">0</cgnx:AssetBackedSecuritiesFairValueDisclosure>
    <cgnx:AssetBackedSecuritiesFairValueDisclosure
      contextRef="i50d1c612bfe54d33a636415a8399e08a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtMy0xLTEtMA_90bb7207-500e-479f-9e2c-dc67e109c9de"
      unitRef="usd">92218000</cgnx:AssetBackedSecuritiesFairValueDisclosure>
    <cgnx:AssetBackedSecuritiesFairValueDisclosure
      contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzYtNS0xLTEtMTQxNTQ_7a3ff5e3-4437-4fec-9717-a0119dd226c2"
      unitRef="usd">0</cgnx:AssetBackedSecuritiesFairValueDisclosure>
    <cgnx:AgencyBondsFairValueDisclosure
      contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzgtMS0xLTEtNjUxMg_c689edfc-f02d-4e18-acf6-6294f91e7b20"
      unitRef="usd">0</cgnx:AgencyBondsFairValueDisclosure>
    <cgnx:AgencyBondsFairValueDisclosure
      contextRef="i50d1c612bfe54d33a636415a8399e08a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzgtMy0xLTEtNjUxMg_7bbb9450-1ed3-4449-9de1-68d9c4f4ddc4"
      unitRef="usd">19006000</cgnx:AgencyBondsFairValueDisclosure>
    <cgnx:AgencyBondsFairValueDisclosure
      contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzgtNS0xLTEtMTQxNTQ_afbf48c9-7887-4691-84bf-d141e1e54b76"
      unitRef="usd">0</cgnx:AgencyBondsFairValueDisclosure>
    <cgnx:SovereignBondsFairValueDisclosure
      contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzgtMS0xLTEtMA_124d711d-5a46-4e87-997c-6824bcd8a207"
      unitRef="usd">0</cgnx:SovereignBondsFairValueDisclosure>
    <cgnx:SovereignBondsFairValueDisclosure
      contextRef="i50d1c612bfe54d33a636415a8399e08a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzgtMy0xLTEtMA_910fb124-84fd-4827-9f6b-ade2ffc1571f"
      unitRef="usd">12100000</cgnx:SovereignBondsFairValueDisclosure>
    <cgnx:SovereignBondsFairValueDisclosure
      contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzktNS0xLTEtMTQxNTQ_3631d7c1-0f0e-4aec-8860-17442d5aedf2"
      unitRef="usd">0</cgnx:SovereignBondsFairValueDisclosure>
    <cgnx:MunicipalBondsFairValueDisclosure
      contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzktMS0xLTEtMA_e68d0dfe-9ea6-47cf-8fa4-6955822d34ef"
      unitRef="usd">0</cgnx:MunicipalBondsFairValueDisclosure>
    <cgnx:MunicipalBondsFairValueDisclosure
      contextRef="i50d1c612bfe54d33a636415a8399e08a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzktMy0xLTEtMA_3d5a0ed5-c231-4912-9c22-42a3585b432d"
      unitRef="usd">7038000</cgnx:MunicipalBondsFairValueDisclosure>
    <cgnx:MunicipalBondsFairValueDisclosure
      contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzEwLTUtMS0xLTE0MTU0_0fbdb269-a88e-4387-ae79-19352aefc8df"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:ForeignCurrencyContractAssetFairValueDisclosure
      contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzEzLTEtMS0xLTA_7e3b0799-2156-4c88-9c42-883b86237618"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractAssetFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractAssetFairValueDisclosure
      contextRef="i50d1c612bfe54d33a636415a8399e08a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzEzLTMtMS0xLTA_4f68aff1-9494-4d69-b284-4f8e4681d993"
      unitRef="usd">265000</us-gaap:ForeignCurrencyContractAssetFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractAssetFairValueDisclosure
      contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzEzLTUtMS0xLTE0MTU0_08c70793-9ffc-4920-967a-3f3bfe940e62"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractAssetFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure
      contextRef="i3105dceca27c41bea714c34ef0d49b64_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzE2LTEtMS0xLTA_36eb4805-4069-41ba-a649-a948be1134c1"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure
      contextRef="i50d1c612bfe54d33a636415a8399e08a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzE2LTMtMS0xLTA_940c95e7-2d9f-41c9-bcdc-74c28a155d16"
      unitRef="usd">38000</us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure>
    <us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure
      contextRef="ib80d5a29b52141d2acf74afd3a3894ce_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTphOTY4ZDZhYmM1NTk0ZDU1ODdhYjRjY2VhYWJjODQxOS90YWJsZXJhbmdlOmE5NjhkNmFiYzU1OTRkNTU4N2FiNGNjZWFhYmM4NDE5XzE2LTUtMS0xLTE0MTU0_1e483207-b76f-4561-aae4-4d66ad77ff85"
      unitRef="usd">0</us-gaap:ForeignCurrencyContractsLiabilityFairValueDisclosure>
    <us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzM1OTU_379069f1-8c6f-443b-a111-ef21e8d5d581">&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-bottom:5pt;margin-top:11pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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;2,554&#160;&lt;/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 GVi 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;(1,646)&lt;/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;Fair value adjustment to 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;245&#160;&lt;/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, 2019&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;1,153&#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="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;Fair value adjustment to 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;(114)&lt;/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;Payment of 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;(1,039)&lt;/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 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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzAtMS0xLTEtMA_4c19c5ce-e5cc-4217-abc1-5783082c3127"
      unitRef="usd">2554000</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:LiabilitiesFairValueAdjustment
      contextRef="i4fb853a9f1a949509cbf8fc704fad5a9_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzMtMS0xLTEtMA_460d3e9b-838f-4565-a6a0-7ecc17b784df"
      unitRef="usd">-1646000</us-gaap:LiabilitiesFairValueAdjustment>
    <us-gaap:LiabilitiesFairValueAdjustment
      contextRef="i99a19abb27ee4bb487e56611ad25d4e8_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzUtMS0xLTEtMA_1faa7776-1d6c-4232-97c4-59f87304d68a"
      unitRef="usd">245000</us-gaap:LiabilitiesFairValueAdjustment>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzctMS0xLTEtMA_caef9848-0c3f-4628-a2e9-a830f6edbc20"
      unitRef="usd">1153000</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:LiabilitiesFairValueAdjustment
      contextRef="i127ae93373df4175b0d7362a4868665b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzEwLTEtMS0xLTA_28a9ff74-0988-47cc-b12c-3ecdec4fff6d"
      unitRef="usd">-114000</us-gaap:LiabilitiesFairValueAdjustment>
    <us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities
      contextRef="i127ae93373df4175b0d7362a4868665b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzExLTEtMS0xLTA_20b9d6b2-1dd4-42b6-852a-6a75442c45f8"
      unitRef="usd">1039000</us-gaap:PaymentForContingentConsiderationLiabilityFinancingActivities>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90YWJsZTo1NzY1ZjYzMTMyMzM0Y2VmOTZkYTlkNzVhZThiMWIyNi90YWJsZXJhbmdlOjU3NjVmNjMxMzIzMzRjZWY5NmRhOWQ3NWFlOGIxYjI2XzEyLTEtMS0xLTA_e7d86dc9-509e-49af-a0c6-7e10fe633913"
      unitRef="usd">0</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="i47edaa0105b14a2abb0d25130a7122bc_I20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2MzY1Mjg_3b907d9d-b872-4753-b18b-9cc0251e5276"
      unitRef="usd">0</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue
      contextRef="i57ab937996f3463d94ec12d192aa0658_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2MzY1Mzc_0bbaf58c-ca56-4d07-9f03-9888dcd8bafd"
      unitRef="usd">0</us-gaap:FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow
      contextRef="ib6e966fb06894826a5f17d7c75db01e1_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2MzY1MTM_71c98b5c-e78b-406f-8752-5ec23dfb20a3"
      unitRef="usd">0</us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow>
    <us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh
      contextRef="i763bb4fb2d5f4ff196fee6ca401674d9_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2MzY1MTc_f4f20db6-b2c8-4b2e-8b77-825d7e4babfd"
      unitRef="usd">2500000</us-gaap:BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2NDMzNzA_f53fb88b-8fa9-4840-ac54-12e4f0bf4273"
      unitRef="usd">3427000</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMDkvZnJhZzphNjI3OGI1MzQ5NGI0M2IwYTIxZTgwN2YwYTQ2OGZjMC90ZXh0cmVnaW9uOmE2Mjc4YjUzNDk0YjQzYjBhMjFlODA3ZjBhNDY4ZmMwXzEwOTk1MTE2NDMzODQ_76983935-e089-45d4-9d7d-b70aad8da292"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzI1Mjk_859f4b43-33bf-444b-83e1-462659e95235">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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;266,609&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;155,498&#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;2,464&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;15,933&#160;&lt;/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;269,073&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;171,431&#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;Treasury bills&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;35,403&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;92,914&#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;padding:2px 0 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;32,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:#cceeff;padding:2px 1pt 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;65,624&#160;&lt;/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;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;25,160&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;66,680&#160;&lt;/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;8,660&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,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;text-align:left;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;1,303&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,630&#160;&lt;/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;Certificate of deposit&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;4,328&#160;&lt;/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;103,240&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;240,470&#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;203,428&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;146,474&#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;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;96,458&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;216,334&#160;&lt;/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;67,058&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;46,403&#160;&lt;/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;19,006&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,914&#160;&lt;/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;5,735&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;2,322&#160;&lt;/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:700;line-height:100%"&gt;3,440&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;16,005&#160;&lt;/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;395,125&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;433,452&#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;767,438&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;845,353&#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: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&#x2019;s cash balance included foreign bank balances totaling $225,853,000 and $123,499,000 as of December&#160;31, 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;Treasury bills consist of debt securities issued by the U.S. government; 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; sovereign bonds consist of direct debt issued by foreign governments; municipal bonds consist of debt securities issued by state and local government entities; certificates of deposit are time deposits held by financial institutions with a fixed interest rate; and agency bonds consist of domestic or foreign obligations of government agencies and government-sponsored enterprises that have government backing. All securities are denominated in U.S. Dollars, with the exception of the certificate of deposit held as of December 31, 2019 that was denominated in Korean Won.&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 Sheet and amounted to $1,560,000 and $2,874,000 as of December 31, 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;The following table summarizes the Company&#x2019;s available-for-sale investments as of December&#160;31, 2020 (in thousands):&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;vertical-align:top;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;Treasury bills&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;34,978&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;425&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;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;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;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;32,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;32,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="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;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;24,999&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;161&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;25,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="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;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;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:400;line-height:100%"&gt;8,590&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;70&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;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;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;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:400;line-height:100%"&gt;1,297&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,303&#160;&lt;/span&gt;&lt;/td&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="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;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;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;200,549&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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:#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;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;95,522&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;936&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;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;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;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;66,329&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;729&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;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;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;18,913&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;93&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;19,006&#160;&lt;/span&gt;&lt;/td&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;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:400;line-height:100%"&gt;5,725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 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&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;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;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:400;line-height:100%"&gt;3,379&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;61&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,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;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;492,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-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;5,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:#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;&#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-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;498,365&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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 style="height:3pt"&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:0 1pt"/&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:0 1pt"/&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:0 1pt"/&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: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="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;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;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;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;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;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;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;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;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: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 January 1, 2020, the Company adopted Accounting Standards Update (ASU) 2016-13, &#x201c;Measurement of Credit Losses on Financial Instruments,&#x201d; using the modified-retrospective approach, which requires the Company to apply the standard on a prospective basis with a cumulative-effect adjustment to retained earnings as of the beginning of the period in which the guidance is effective. The Company did not record an adjustment to retained earnings, as there were no debt securities with credit losses as of the adoption date.&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-bottom:6pt;margin-top:9pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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="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:#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 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;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;Increases 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&#160;&lt;/span&gt;&lt;/td&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;Decreases 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)&lt;/span&gt;&lt;/td&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;Write-offs &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="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 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;&#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-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: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 recorded gross realized gains on the sale of debt securities totaling $4,283,000 in 2020, $1,581,000 in 2019, and $669,000 in 2018, and gross realized losses on the sale of debt securities totaling $164,000 in 2020, $129,000 in 2019, and $168,000 in 2018.&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, 2020 (in thousands):&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;vertical-align:top;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;32,714&#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;69,534&#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;119,328&#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;13,488&#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,078&#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;236,142&#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;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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,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;28,241&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;131,861&#160;&lt;/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: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;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;46,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,755&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,461&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;92,218&#160;&lt;/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;&#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,805&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,201&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;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: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;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,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;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;12,100&#160;&lt;/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:400;line-height:100%"&gt;1,303&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,096&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;7,038&#160;&lt;/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;103,240&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;192,494&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;186,604&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;14,949&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;1,078&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;498,365&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzI1MTA_1dddcbf7-335f-483d-a945-626b4c1719b1">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;266,609&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;155,498&#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;2,464&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;15,933&#160;&lt;/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;269,073&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;171,431&#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;Treasury bills&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;35,403&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;92,914&#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;padding:2px 0 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;32,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:#cceeff;padding:2px 1pt 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;65,624&#160;&lt;/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;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;25,160&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;66,680&#160;&lt;/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;8,660&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,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;text-align:left;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;1,303&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,630&#160;&lt;/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;Certificate of deposit&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;4,328&#160;&lt;/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;103,240&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;240,470&#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;203,428&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;146,474&#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;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;96,458&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;216,334&#160;&lt;/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;67,058&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;46,403&#160;&lt;/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;19,006&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,914&#160;&lt;/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;5,735&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;2,322&#160;&lt;/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:700;line-height:100%"&gt;3,440&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;16,005&#160;&lt;/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;395,125&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;433,452&#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;767,438&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;845,353&#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="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzItMS0xLTEtMA_58d473e4-0c37-4d42-b9b1-909c3bfecc82"
      unitRef="usd">266609000</us-gaap:Cash>
    <us-gaap:Cash
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzItMy0xLTEtMA_49584037-01bc-41e4-87d3-d968c2a9b974"
      unitRef="usd">155498000</us-gaap:Cash>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzQtMS0xLTEtMA_979f691f-0111-42d2-be32-e49c2aae54f5"
      unitRef="usd">2464000</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:MoneyMarketFundsAtCarryingValue
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzQtMy0xLTEtMA_b7ad4676-9c00-429f-b26f-fcf6af2a7b13"
      unitRef="usd">15933000</us-gaap:MoneyMarketFundsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzUtMS0xLTEtMA_8264f934-b733-4e68-8c2a-01a68ce971a7"
      unitRef="usd">269073000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:CashAndCashEquivalentsAtCarryingValue
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzUtMy0xLTEtMA_b770319a-2e6a-4dba-9e87-3b3ce4b8f655"
      unitRef="usd">171431000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i43cb724ca92b4d529471388e4c6aa1c1_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzYtMS0xLTEtMA_71506af0-b44b-4de4-b871-903a470d7464"
      unitRef="usd">35403000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="id84753405a3f4ea0ada1581e69e5e83b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzYtMy0xLTEtMA_03679d89-be79-492f-8218-92c7026d0df2"
      unitRef="usd">92914000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="ic699385aee064f088395dd1a1145c14f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzctMS0xLTEtNjUyMQ_8914d0a5-2615-4dc8-9247-cf416095b6a6"
      unitRef="usd">32714000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i6f32895aae07493ba2be1294738fc07c_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzctMy0xLTEtNjUyMQ_8e19d7e7-97d5-408e-83c8-40b1f9e0a80b"
      unitRef="usd">65624000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzctMS0xLTEtMA_fa5132f1-eb6f-43dc-82f2-4ad896d92b1d"
      unitRef="usd">25160000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i500374dc2fa943ee973d4e8eb7768bf5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzctMy0xLTEtMA_aa3e992f-f479-4497-96b1-002a3c387955"
      unitRef="usd">66680000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzktMS0xLTEtMA_bd219f47-8b27-4c7f-8074-3666d480c37b"
      unitRef="usd">8660000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i7c1b53d9a7ee4f3e840dee641c3d7e70_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzktMy0xLTEtMA_f3b208a2-0a8e-4252-87d7-7f0051624409"
      unitRef="usd">6294000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i86d4d2ca8e2343a6b857331595592807_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzEwLTEtMS0xLTA_973090b1-c3bc-4e10-8e2f-30073c6b7ce9"
      unitRef="usd">1303000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i1ccb72574960407e9799ead9ecf20985_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzEwLTMtMS0xLTA_e27f270d-a2cc-4141-b611-55700d0df863"
      unitRef="usd">4630000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="if5707525027143bbab21055ba6ecb30a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzExLTEtMS0xLTA_27af45c1-4a06-418b-9d09-f6506675d788"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="ifc5414a3304845e5bda45a454f655774_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzExLTMtMS0xLTA_03d029bd-5728-418d-b09e-907fc5a0cd96"
      unitRef="usd">4328000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE1LTEtMS0xLTA_681435c0-a31e-495e-b1d2-979707da2afe"
      unitRef="usd">103240000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE1LTMtMS0xLTA_305270a1-a6d6-442b-87f6-ba5a1f1e321f"
      unitRef="usd">240470000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesCurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="ic699385aee064f088395dd1a1145c14f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE2LTEtMS0xLTY1MzA_4473041e-a528-4fe2-8258-f60b0aeff874"
      unitRef="usd">203428000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i6f32895aae07493ba2be1294738fc07c_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE2LTMtMS0xLTY1MzA_7753ec52-6c25-4a7f-8fc7-323b394f6a4a"
      unitRef="usd">146474000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i43cb724ca92b4d529471388e4c6aa1c1_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE2LTEtMS0xLTA_c9919565-aebc-4934-832b-39a73fe38418"
      unitRef="usd">96458000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="id84753405a3f4ea0ada1581e69e5e83b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE2LTMtMS0xLTA_68d78fee-3b8b-4a62-b01a-250f323c956c"
      unitRef="usd">216334000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE4LTEtMS0xLTA_1351a3c7-4af0-4ac0-ac29-0672486d877c"
      unitRef="usd">67058000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i500374dc2fa943ee973d4e8eb7768bf5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzE4LTMtMS0xLTA_693607bf-c6b4-43c9-ae13-1c7a3f85cd87"
      unitRef="usd">46403000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i324afc1a28ff430a9a4489d8845df9d3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIwLTEtMS0xLTA_bf455b7a-f05e-4ef2-ac2d-558b79318420"
      unitRef="usd">19006000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="ie8277ff2013144aa872677ea05263934_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIwLTMtMS0xLTA_180c4c5e-0e2c-43a3-91ef-9b7b98d5f883"
      unitRef="usd">5914000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i86d4d2ca8e2343a6b857331595592807_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIxLTEtMS0xLTA_6baf8387-7547-443d-a4ba-b33f3c8906f4"
      unitRef="usd">5735000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i1ccb72574960407e9799ead9ecf20985_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIxLTMtMS0xLTA_9ac2f023-a3c9-4914-b161-3934f76b14a6"
      unitRef="usd">2322000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIyLTEtMS0xLTY1Mzc_c907795f-afcf-4359-be48-fc9503fd57ab"
      unitRef="usd">3440000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent
      contextRef="i7c1b53d9a7ee4f3e840dee641c3d7e70_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIyLTMtMS0xLTY1Mzc_3e8a208a-9f4a-45bb-9178-7517eb7aeadd"
      unitRef="usd">16005000</us-gaap:AvailableForSaleSecuritiesDebtSecuritiesNoncurrent>
    <us-gaap:LongTermInvestments
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIyLTEtMS0xLTA_5b09b5ac-b6e8-4423-bbca-c2e130239153"
      unitRef="usd">395125000</us-gaap:LongTermInvestments>
    <us-gaap:LongTermInvestments
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIyLTMtMS0xLTA_bab4d273-5342-4d5b-a5cf-54969d3ec518"
      unitRef="usd">433452000</us-gaap:LongTermInvestments>
    <cgnx:CashCashEquivalentsShortTermAndLongTermInvestments
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIzLTEtMS0xLTA_9b44a550-3e6c-4632-805b-090e34c48b20"
      unitRef="usd">767438000</cgnx:CashCashEquivalentsShortTermAndLongTermInvestments>
    <cgnx:CashCashEquivalentsShortTermAndLongTermInvestments
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo0YWE3M2RhZjM1Nzk0YWIxOTkzNDFlNWRkYTI0OWNkYy90YWJsZXJhbmdlOjRhYTczZGFmMzU3OTRhYjE5OTM0MWU1ZGRhMjQ5Y2RjXzIzLTMtMS0xLTA_f15c3d05-8784-427b-aee0-98d209461a77"
      unitRef="usd">845353000</cgnx:CashCashEquivalentsShortTermAndLongTermInvestments>
    <cgnx:DueFromForeignBanks
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzIwNg_eaa2ce15-8ab5-483c-9b66-7331bf3a056a"
      unitRef="usd">225853000</cgnx:DueFromForeignBanks>
    <cgnx:DueFromForeignBanks
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzIxMw_d42cda85-9fc3-4f7d-a465-54a87e92bb25"
      unitRef="usd">123499000</cgnx:DueFromForeignBanks>
    <us-gaap:InterestReceivable
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzEwOTk1MTE2MzI5MDM_6245ea9f-ac17-41a6-be93-7702425b0836"
      unitRef="usd">1560000</us-gaap:InterestReceivable>
    <us-gaap:InterestReceivable
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzEwOTk1MTE2MzI4OTE_1db5ca75-46c5-440d-8808-83af1b9fc04c"
      unitRef="usd">2874000</us-gaap:InterestReceivable>
    <us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzI1MzM_23047561-1b43-4154-ac23-bea678fec506">&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, 2020 (in thousands):&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;vertical-align:top;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;Treasury bills&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;34,978&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;425&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;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;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;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;32,394&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;320&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;32,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="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;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;24,999&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;161&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;25,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="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;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;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:400;line-height:100%"&gt;8,590&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;70&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;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;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;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:400;line-height:100%"&gt;1,297&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;6&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,303&#160;&lt;/span&gt;&lt;/td&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="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;td colspan="3" style="display:none"/&gt;&lt;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;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;200,549&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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:#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;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;95,522&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;936&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;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;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;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;66,329&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;729&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;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;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;18,913&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;93&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;19,006&#160;&lt;/span&gt;&lt;/td&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;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:400;line-height:100%"&gt;5,725&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 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&gt;&lt;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;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;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:400;line-height:100%"&gt;3,379&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;61&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,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;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;492,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-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;5,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:#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;&#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-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;498,365&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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="i5ea119f35960478b80c8c23a7bfa29f4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzItMS0xLTEtMA_335b8ae1-6213-4124-9b0a-e6aaad8ee3a3"
      unitRef="usd">34978000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i5ea119f35960478b80c8c23a7bfa29f4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzItMy0xLTEtMA_d5ed41e7-783d-4471-894f-065ca96ce317"
      unitRef="usd">425000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i5ea119f35960478b80c8c23a7bfa29f4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzItNS0xLTEtMA_b32d8a8d-3785-421f-befa-5bfa7e9c7353"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i5ea119f35960478b80c8c23a7bfa29f4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzItNy0xLTEtMA_dea393fb-0306-4754-9255-0604df411e99"
      unitRef="usd">35403000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="ic6dbb15ae5b740ab9bdd27fbbc2efda0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtMS0xLTEtNjU1Ng_f6861590-503c-480b-887d-8c9b5997157c"
      unitRef="usd">32394000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="ic6dbb15ae5b740ab9bdd27fbbc2efda0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtMy0xLTEtNjU1Ng_70aecbac-1b9b-409b-ac3f-2ef5ccfa1c2d"
      unitRef="usd">320000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ic6dbb15ae5b740ab9bdd27fbbc2efda0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtNS0xLTEtNjU1Ng_9ef94e7a-32aa-48df-8736-56d365dfc2ab"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ic6dbb15ae5b740ab9bdd27fbbc2efda0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtNy0xLTEtNjU1Ng_6903fe3a-fe2f-40d8-a8c8-371c935db8f5"
      unitRef="usd">32714000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="ic4d8f4817c754d62ae932c2959592db4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtMS0xLTEtMA_9866b294-06a1-4992-8f37-fc7e7f00748d"
      unitRef="usd">24999000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="ic4d8f4817c754d62ae932c2959592db4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtMy0xLTEtMA_fa3794b5-b1c0-44f8-8e52-0c9b559e95c4"
      unitRef="usd">161000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="ic4d8f4817c754d62ae932c2959592db4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtNS0xLTEtMA_ba633117-e0bf-45fe-9b9c-848be71abbd9"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ic4d8f4817c754d62ae932c2959592db4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzMtNy0xLTEtMA_42e3d2fb-842f-41d8-843e-70e4061aeb04"
      unitRef="usd">25160000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="id5fb5c3c941c482980cbee5c7db0d507_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzYtMS0xLTEtMA_e43e2f22-86ce-4ed2-9087-0cd4e5f01008"
      unitRef="usd">8590000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="id5fb5c3c941c482980cbee5c7db0d507_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzYtMy0xLTEtMA_45d4ff59-a9c6-47fd-b6ab-7523a743841f"
      unitRef="usd">70000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="id5fb5c3c941c482980cbee5c7db0d507_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzYtNS0xLTEtMA_cda22668-04cf-4a52-b279-cc4cdd865186"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="id5fb5c3c941c482980cbee5c7db0d507_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzYtNy0xLTEtMA_b7b6012d-37bf-4f51-838f-c671acdad4b5"
      unitRef="usd">8660000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i1408636db4ac405b9c208760e205a9a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzctMS0xLTEtMA_9f4c273c-3c17-4b09-9001-edd23b55266b"
      unitRef="usd">1297000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i1408636db4ac405b9c208760e205a9a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzctMy0xLTEtMA_e03372dd-060c-4f53-ac4c-054b8976b78a"
      unitRef="usd">6000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i1408636db4ac405b9c208760e205a9a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzctNS0xLTEtMA_e97d5aa4-19ba-4658-bc23-69801166e192"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i1408636db4ac405b9c208760e205a9a3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzctNy0xLTEtMA_6c1bdcc7-03aa-4133-8578-9642b0a05721"
      unitRef="usd">1303000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i202533b994e74b5c833a5628cd152023_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzExLTEtMS0xLTA_04c32645-3b0c-4d87-9b2a-736d4938d708"
      unitRef="usd">200549000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i202533b994e74b5c833a5628cd152023_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzExLTMtMS0xLTA_51f51141-ecdd-4b6d-8884-dc0f2b17a204"
      unitRef="usd">2879000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i202533b994e74b5c833a5628cd152023_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzExLTUtMS0xLTA_8e0cef4a-17aa-477f-b17b-f2661357d6aa"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i202533b994e74b5c833a5628cd152023_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzExLTctMS0xLTA_30f89cfc-8854-4cab-a4be-2d52cfb06615"
      unitRef="usd">203428000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i55d96b4194b247fcbe5346f132d94964_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTEtMS0xLTY1NjU_1ce765a9-9491-46ee-9081-f3356b5833c1"
      unitRef="usd">95522000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i55d96b4194b247fcbe5346f132d94964_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTMtMS0xLTY1NjU_b2953db7-e12a-4b4e-b5df-1aa07d3ed4d0"
      unitRef="usd">936000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i55d96b4194b247fcbe5346f132d94964_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTUtMS0xLTY1NjU_a3f46366-e525-4338-930d-ac111080fc9a"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i55d96b4194b247fcbe5346f132d94964_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTctMS0xLTY1NjU_c45f5d26-8413-4b19-b5d1-990982d6e46b"
      unitRef="usd">96458000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i2efefbc6cef645aa8b0601e7585c8b93_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTEtMS0xLTA_a0454fd8-a3ae-494b-8762-53bfdff653e9"
      unitRef="usd">66329000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i2efefbc6cef645aa8b0601e7585c8b93_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTMtMS0xLTA_837cb54c-f425-4f0f-ac83-9fc472bdb790"
      unitRef="usd">729000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i2efefbc6cef645aa8b0601e7585c8b93_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTUtMS0xLTA_dff348c3-7317-4f95-93d8-0331aadaf978"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i2efefbc6cef645aa8b0601e7585c8b93_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzEyLTctMS0xLTA_18bcea4f-baaa-4b37-a006-2c38b3c5ad30"
      unitRef="usd">67058000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="icff2afc806564b9bb491036d05dd55e5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE0LTEtMS0xLTA_23055e8b-69e3-4df1-bc00-36885229709c"
      unitRef="usd">18913000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="icff2afc806564b9bb491036d05dd55e5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE0LTMtMS0xLTA_061dcaf4-731a-4df7-87c1-ef6a5552fdb0"
      unitRef="usd">93000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="icff2afc806564b9bb491036d05dd55e5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE0LTUtMS0xLTA_a9c4b25d-4303-441b-8743-ac91414aff60"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="icff2afc806564b9bb491036d05dd55e5_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE0LTctMS0xLTA_200255fa-3ca9-4fd7-836a-0ac7012964cc"
      unitRef="usd">19006000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i71022fedb4fb4f8ba4f38fce1d72eca6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE1LTEtMS0xLTA_5242ae18-5ea6-44f4-83d2-31e8e2906a24"
      unitRef="usd">5725000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i71022fedb4fb4f8ba4f38fce1d72eca6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE1LTMtMS0xLTA_171b486f-065b-407b-9e8b-6ba552019f3b"
      unitRef="usd">10000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i71022fedb4fb4f8ba4f38fce1d72eca6_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE1LTUtMS0xLTA_273e3db6-4211-41f3-b793-2e3426b692f9"
      unitRef="usd"
      xsi:nil="true"/>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i71022fedb4fb4f8ba4f38fce1d72eca6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE1LTctMS0xLTA_a4cf5806-1fd9-482f-93bd-bd0f2a29540a"
      unitRef="usd">5735000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i0eaceaa1dcd04d4e83c5dc04e5c35116_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTEtMS0xLTY1NzQ_0ecc9510-b2a5-4868-978e-fadea2d3755d"
      unitRef="usd">3379000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i0eaceaa1dcd04d4e83c5dc04e5c35116_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTMtMS0xLTY1NzQ_48d4ced7-3cdf-47c6-96d3-d6cb72870646"
      unitRef="usd">61000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax
      contextRef="i0eaceaa1dcd04d4e83c5dc04e5c35116_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTUtMS0xLTY1NzQ_c0ba8211-116d-40a8-91c2-07d236722101"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i0eaceaa1dcd04d4e83c5dc04e5c35116_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTctMS0xLTY1NzQ_d4dbf6ba-d377-4530-8fa6-49e36e237096"
      unitRef="usd">3440000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTEtMS0xLTA_b44ad6ad-ba6c-4fab-aa24-35e1f121ce63"
      unitRef="usd">492675000</us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis>
    <us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTMtMS0xLTA_6b702abd-b6d5-47f9-97af-be18a36b60c4"
      unitRef="usd">5690000</us-gaap:AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmZjg1MDBiMDhmM2M0MDIwOTIwZGQwNWMyMWExNTk4Ny90YWJsZXJhbmdlOmZmODUwMGIwOGYzYzQwMjA5MjBkZDA1YzIxYTE1OTg3XzE2LTctMS0xLTA_a052cc33-2d1b-4718-9e03-07985f585180"
      unitRef="usd">498365000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzI1MjU_6adc54ec-49d8-406a-9eba-da9129fa325b"
      xsi:nil="true"/>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzEwOTk1MTE2MzI0OTk_2033b724-7e0f-4763-a74c-c8f4940871aa">&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-bottom:6pt;margin-top:9pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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="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:#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 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;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;Increases 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&#160;&lt;/span&gt;&lt;/td&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;Decreases 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)&lt;/span&gt;&lt;/td&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;Write-offs &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="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 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;&#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-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="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzEwOTk1MTE2MzI0OTk_c31a2694-da7e-4565-abb2-b6214eac5f0b">&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-bottom:6pt;margin-top:9pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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="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:#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 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;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;Increases 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&#160;&lt;/span&gt;&lt;/td&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;Decreases 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)&lt;/span&gt;&lt;/td&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;Write-offs &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="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 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;&#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-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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzAtMS0xLTEtMTc1Mg_16174c7c-573a-4a8c-b8ef-1c4e4a6784ae"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzAtMS0xLTEtMTcwOQ_16315468-393b-4bb4-8fb4-355319e15664"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss>
    <us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzEtMS0xLTEtMTcxMQ_530eb9bb-99a6-42f1-b165-70672ffc8ea5"
      unitRef="usd">160000</us-gaap:DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzItMS0xLTEtMTcxMw_0047aae2-62f9-43b1-a125-0f250255906a"
      unitRef="usd">-160000</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzMtMS0xLTEtMTcxNQ_542eba5c-7ae5-4be6-8c6d-af564fbe099c"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff>
    <us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTo3ZGE4YmRhMWU1NmE0YjJlOTQwNWI4MWE1YmNhNTE3OC90YWJsZXJhbmdlOjdkYThiZGExZTU2YTRiMmU5NDA1YjgxYTViY2E1MTc4XzUtMS0xLTEtMTcxNw_fb4981bd-6a05-4d23-8e81-ac9bf44aee00"
      unitRef="usd">0</us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss>
    <us-gaap:AvailableForSaleSecuritiesGrossRealizedGains
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzE5Mzc_82adee70-876e-4f80-b1b6-c720d9a1980d"
      unitRef="usd">4283000</us-gaap:AvailableForSaleSecuritiesGrossRealizedGains>
    <us-gaap:AvailableForSaleSecuritiesGrossRealizedGains
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzE5NDc_688c13ef-821a-49d2-91f0-4f8981615aa7"
      unitRef="usd">1581000</us-gaap:AvailableForSaleSecuritiesGrossRealizedGains>
    <us-gaap:AvailableForSaleSecuritiesGrossRealizedGains
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzE5NjE_d9f706eb-c181-4675-89e0-f2a27da77464"
      unitRef="usd">669000</us-gaap:AvailableForSaleSecuritiesGrossRealizedGains>
    <us-gaap:AvailableForSaleSecuritiesGrossRealizedLosses
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzIwMzk_b0ceece1-5878-4390-8332-0124dc0c09cc"
      unitRef="usd">164000</us-gaap:AvailableForSaleSecuritiesGrossRealizedLosses>
    <us-gaap:AvailableForSaleSecuritiesGrossRealizedLosses
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzIwNDk_455e48ff-6a13-4f25-974f-64246f35a395"
      unitRef="usd">129000</us-gaap:AvailableForSaleSecuritiesGrossRealizedLosses>
    <us-gaap:AvailableForSaleSecuritiesGrossRealizedLosses
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzIwNjM_f4e22283-659e-4722-80ae-8baa573f44f8"
      unitRef="usd">168000</us-gaap:AvailableForSaleSecuritiesGrossRealizedLosses>
    <us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90ZXh0cmVnaW9uOjJlZTAxMjNjOGY4ZTQ1M2NhMjk3MjJlNGYxYWRiMDY2XzI1NDk_98ebf62d-ab51-4e8d-a9a0-b4a5ce0dbdb4">&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, 2020 (in thousands):&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;vertical-align:top;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;32,714&#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;69,534&#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;119,328&#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;13,488&#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,078&#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;236,142&#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;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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,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;28,241&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;131,861&#160;&lt;/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: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;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;46,842&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,755&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,461&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;92,218&#160;&lt;/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;&#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,805&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,201&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;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: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;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,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;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;12,100&#160;&lt;/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:400;line-height:100%"&gt;1,303&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,096&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;639&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;7,038&#160;&lt;/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;103,240&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;192,494&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;186,604&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;14,949&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;1,078&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;498,365&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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="ic699385aee064f088395dd1a1145c14f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItMS0xLTEtMA_66c9194a-babd-403e-81f1-a5b8bb180e0d"
      unitRef="usd">32714000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="ic699385aee064f088395dd1a1145c14f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItMy0xLTEtMA_0ef72a3a-bd27-4f7c-8e27-69cb17add849"
      unitRef="usd">69534000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="ic699385aee064f088395dd1a1145c14f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItNS0xLTEtMA_91f61541-0847-449b-a8a4-f8a912cab26f"
      unitRef="usd">119328000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="ic699385aee064f088395dd1a1145c14f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItNy0xLTEtMA_b2413408-6209-4059-b75f-d7506562ccde"
      unitRef="usd">13488000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="ic699385aee064f088395dd1a1145c14f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItOS0xLTEtMA_544a7409-87cc-4e64-a011-c60e679ad755"
      unitRef="usd">1078000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ic699385aee064f088395dd1a1145c14f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzItMTMtMS0xLTA_eab14ea1-3cdd-4338-961c-c9bb47d4ad79"
      unitRef="usd">236142000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="id71e8694ba5f492184d2c743f99ad454_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMS0xLTEtNjYwNw_0c741cfe-934e-4b92-a115-f3902d2b0ab0"
      unitRef="usd">35403000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="id71e8694ba5f492184d2c743f99ad454_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMy0xLTEtNjYwNw_af292fc7-f8e3-49fa-afa8-0f70cc02fa4d"
      unitRef="usd">68217000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="id71e8694ba5f492184d2c743f99ad454_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtNS0xLTEtNjYwNw_d6b0a6b6-43fb-42b2-abc5-39942f726406"
      unitRef="usd">28241000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="id71e8694ba5f492184d2c743f99ad454_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtNy0xLTEtNjYwNw_46afb5ce-818d-4c0c-bd21-35f95ed39c0a"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="id71e8694ba5f492184d2c743f99ad454_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtOS0xLTEtNjYwNw_ccf75c70-4209-4e03-9514-c53b51897e08"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="id71e8694ba5f492184d2c743f99ad454_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMTMtMS0xLTY2MDc_2c6206c9-556a-4a15-a1e4-f4cec1e56d08"
      unitRef="usd">131861000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMS0xLTEtMA_be6844c6-65a0-4a9f-85c2-1005a56b1107"
      unitRef="usd">25160000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMy0xLTEtMA_5b8d0f46-cde4-452b-858a-7645e63706c4"
      unitRef="usd">46842000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtNS0xLTEtMA_00e85c5c-d8ad-49ad-905b-661ac88c9f0d"
      unitRef="usd">18755000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtNy0xLTEtMA_854db6ca-feb5-4814-a27e-b1b748ddbaa6"
      unitRef="usd">1461000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtOS0xLTEtMA_1d1fb6f6-d3ae-4c29-a5fb-caff60d4be45"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="ife6d3b1743a642a3ab1be80d73ca9b4c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzMtMTMtMS0xLTA_10ccb37b-8860-4863-bcd1-f15ebf4ab79e"
      unitRef="usd">92218000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i324afc1a28ff430a9a4489d8845df9d3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMS0xLTEtNjYwMA_2037cf1f-41ab-47dd-83a6-cee1b387eb9f"
      unitRef="usd">0</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i324afc1a28ff430a9a4489d8845df9d3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMy0xLTEtNjYwMA_249918c3-91f0-4a53-93d5-bf7aaef79aaf"
      unitRef="usd">2805000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i324afc1a28ff430a9a4489d8845df9d3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtNS0xLTEtNjYwMA_84bd0aa1-6657-40ec-aa91-ddc627968751"
      unitRef="usd">16201000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i324afc1a28ff430a9a4489d8845df9d3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtNy0xLTEtNjYwMA_862465e3-cfb5-4135-b4e8-e54bf48d9266"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i324afc1a28ff430a9a4489d8845df9d3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtOS0xLTEtNjYwMA_b28c286d-c634-421e-aea0-19392705a767"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i324afc1a28ff430a9a4489d8845df9d3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMTMtMS0xLTY2MDA_9c80d8b2-4358-4f6b-b803-ab57d6d6a399"
      unitRef="usd">19006000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMS0xLTEtMA_5bb51bdd-fe78-4775-a9d5-1212ed2981f4"
      unitRef="usd">8660000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMy0xLTEtMA_e0dea837-e5dc-439f-8adb-4b42070ba047"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtNS0xLTEtMA_70be2a3e-f749-4915-a601-aa6241e74ef6"
      unitRef="usd">3440000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtNy0xLTEtMA_00ae48d9-94a4-4a50-bbf2-4a81aed674c3"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtOS0xLTEtMA_81836ee3-f427-4547-b5e8-b76567aca8d7"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i2c24ca74f8564fd39926e7a3f5ef51a6_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzUtMTMtMS0xLTA_b7930b19-4264-49e0-8052-d61984a43ac6"
      unitRef="usd">12100000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i86d4d2ca8e2343a6b857331595592807_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtMS0xLTEtMA_61dc9a7c-1bb4-4c7e-be65-b65035885d10"
      unitRef="usd">1303000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i86d4d2ca8e2343a6b857331595592807_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtMy0xLTEtMA_dfbdc59e-faad-4b48-9304-4e07bd6fd551"
      unitRef="usd">5096000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i86d4d2ca8e2343a6b857331595592807_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtNS0xLTEtMA_4a2bcb04-df42-4465-89bb-1b4e3cad9fd7"
      unitRef="usd">639000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i86d4d2ca8e2343a6b857331595592807_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtNy0xLTEtMA_c1993354-4c81-48f9-8079-452f87ae46f6"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i86d4d2ca8e2343a6b857331595592807_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtOS0xLTEtMA_bfa1b3c8-9006-4072-88a5-332ad0b6a114"
      unitRef="usd">0</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i86d4d2ca8e2343a6b857331595592807_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzYtMTMtMS0xLTA_4f71b9d8-9c6f-418d-93be-86544c69df55"
      unitRef="usd">7038000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtMS0xLTEtMA_74ae774d-3434-4934-9806-2961b4500f82"
      unitRef="usd">103240000</us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtMy0xLTEtMA_515df05e-08fc-4dc5-8ea7-53397ab87590"
      unitRef="usd">192494000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtNS0xLTEtMA_d8cdc450-143f-4157-bead-0c81d532bbd2"
      unitRef="usd">186604000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterTwoYearsBeforeThreeYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtNy0xLTEtMA_cd36c2e4-de84-4ae7-b7c4-26a7a3a884f0"
      unitRef="usd">14949000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterThreeYearsBeforeFourYearsFairValue>
    <cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtOS0xLTEtMA_3ae1c250-2f74-41b7-93c7-5bbfba63ff7b"
      unitRef="usd">1078000</cgnx:AvailableForSaleSecuritiesDebtMaturitiesAfterFourYearsBeforeFiveYearsFairValue>
    <us-gaap:AvailableForSaleSecuritiesDebtSecurities
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTUvZnJhZzoyZWUwMTIzYzhmOGU0NTNjYTI5NzIyZTRmMWFkYjA2Ni90YWJsZTpmN2U5ZmEwYTM3NmI0OWU5YjExN2Y0NWU5YzY0OGJkMi90YWJsZXJhbmdlOmY3ZTlmYTBhMzc2YjQ5ZTliMTE3ZjQ1ZTljNjQ4YmQyXzgtMTMtMS0xLTA_e13fde18-503a-4a21-9cb8-be81b5e8bbf6"
      unitRef="usd">498365000</us-gaap:AvailableForSaleSecuritiesDebtSecurities>
    <us-gaap:InventoryDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90ZXh0cmVnaW9uOmZiODFiYzcyZDY2ZDRiYmM4ZGYwMjllMjMyZTkyNzUzXzg3_4010de2c-acf0-4c80-a709-ef99d6288bca">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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;26,800&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;27,285&#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;4,780&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,503&#160;&lt;/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;29,250&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,473&#160;&lt;/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;60,830&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,261&#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 $9,908,000 and $5,296,000 in 2020 and 2019, respectively, which reduced the carrying value of the inventories to their net realizable value. Estimates in 2020 took into account the global economic conditions resulting from the COVID-19 pandemic.</us-gaap:InventoryDisclosureTextBlock>
    <us-gaap:ScheduleOfInventoryCurrentTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90ZXh0cmVnaW9uOmZiODFiYzcyZDY2ZDRiYmM4ZGYwMjllMjMyZTkyNzUzXzg2_9efba3df-96db-4288-8bec-d2693c1dde7f">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;26,800&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;27,285&#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;4,780&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,503&#160;&lt;/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;29,250&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,473&#160;&lt;/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;60,830&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,261&#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="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzItMS0xLTEtMA_7dcec147-c7bd-4ffc-a53e-3d9f73c12d0a"
      unitRef="usd">26800000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryRawMaterialsNetOfReserves
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzItMy0xLTEtMA_fbd2128f-b222-46cf-994c-17418e01ba2a"
      unitRef="usd">27285000</us-gaap:InventoryRawMaterialsNetOfReserves>
    <us-gaap:InventoryWorkInProcessNetOfReserves
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzMtMS0xLTEtMA_99a561ba-1658-4ddf-a2e8-d4ee4af6b83c"
      unitRef="usd">4780000</us-gaap:InventoryWorkInProcessNetOfReserves>
    <us-gaap:InventoryWorkInProcessNetOfReserves
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzMtMy0xLTEtMA_f266c2b3-eded-4f2b-acbb-64265b2a9891"
      unitRef="usd">5503000</us-gaap:InventoryWorkInProcessNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzQtMS0xLTEtMA_cd9d082d-b832-425d-bed9-b0ad7b7322e6"
      unitRef="usd">29250000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventoryFinishedGoodsNetOfReserves
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzQtMy0xLTEtMA_8811a91d-6dff-4a79-bc01-59232b8983a8"
      unitRef="usd">27473000</us-gaap:InventoryFinishedGoodsNetOfReserves>
    <us-gaap:InventoryNet
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzUtMS0xLTEtMA_54de472a-4f2f-4cf2-8cb3-995dba30e547"
      unitRef="usd">60830000</us-gaap:InventoryNet>
    <us-gaap:InventoryNet
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90YWJsZTpkM2Q4YTE2MWZiNzc0NTA5ODRiNWE3MTBjMjAwMjlmZC90YWJsZXJhbmdlOmQzZDhhMTYxZmI3NzQ1MDk4NGI1YTcxMGMyMDAyOWZkXzUtMy0xLTEtMA_04889974-ebec-4525-a464-15ece8915ee7"
      unitRef="usd">60261000</us-gaap:InventoryNet>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90ZXh0cmVnaW9uOmZiODFiYzcyZDY2ZDRiYmM4ZGYwMjllMjMyZTkyNzUzXzEwOTk1MTE2Mjg3NzA_a7b79f7b-733b-4b68-869a-2e57ade17195"
      unitRef="usd">9908000</cgnx:ExcessAndObsoleteInventoryCharges>
    <cgnx:ExcessAndObsoleteInventoryCharges
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMTgvZnJhZzpmYjgxYmM3MmQ2NmQ0YmJjOGRmMDI5ZTIzMmU5Mjc1My90ZXh0cmVnaW9uOmZiODFiYzcyZDY2ZDRiYmM4ZGYwMjllMjMyZTkyNzUzXzEwOTk1MTE2Mjg4NTg_cfbc57e6-d477-461e-8a98-67c0bb7eff2d"
      unitRef="usd">5296000</cgnx:ExcessAndObsoleteInventoryCharges>
    <us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzY1Nw_e94033f2-a522-4777-b575-5f53ce83773a">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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;45,978&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;49,289&#160;&lt;/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;12,682&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,790&#160;&lt;/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;58,162&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;67,474&#160;&lt;/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;29,816&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;31,278&#160;&lt;/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,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;6,800&#160;&lt;/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;181,494&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;194,115&#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;(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;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;(104,672)&lt;/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;79,173&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;89,443&#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: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 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. The Company disposed of property, plant, and equipment with a cost basis of $8,883,000 and accumulated depreciation of $8,559,000 in 2019, resulting in a loss of $324,000.&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;Buildings included rental property with a cost basis of $800,000 and accumulated depreciation of $255,000 as of December&#160;31, 2019. This rental property lease was terminated during the second quarter of 2020.&lt;/span&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock>
    <us-gaap:PropertyPlantAndEquipmentTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzY1NA_20968865-5ee8-4f2f-8557-8f6efef60325">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;45,978&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;49,289&#160;&lt;/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;12,682&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,790&#160;&lt;/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;58,162&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;67,474&#160;&lt;/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;29,816&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;31,278&#160;&lt;/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,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;6,800&#160;&lt;/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;181,494&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;194,115&#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;(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;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;(104,672)&lt;/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;79,173&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;89,443&#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="ibcc3f33ed9014cb08b2e1293011a9151_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzItMS0xLTEtMA_9a8d9e76-f1f1-4868-9d1d-09f1dd58e489"
      unitRef="usd">3951000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i48b62d90851749ac9c03fc1cb1c1ebbc_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzItMy0xLTEtMA_f2081143-f5d5-4c2e-81d6-5d85bebd411a"
      unitRef="usd">3951000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i218148f2a7544001b13f07777e27f0fc_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzMtMS0xLTEtMA_7f36dd0a-aecc-4fb2-8e95-14b6a6137bec"
      unitRef="usd">24533000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i3b0c04aa43fb48cda5ae8bfd82141d82_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzMtMy0xLTEtMA_8b716cb1-f98c-4a28-a70b-a839062b8f06"
      unitRef="usd">24533000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i3b0ec7f8d69d49c18cf9da3008df7d44_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzQtMS0xLTEtMA_43e72832-52c2-4c57-b0f7-431dc9450257"
      unitRef="usd">45978000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="ie12dbe3e996e42e9b339bcf6aed23d6f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzQtMy0xLTEtMA_c364d9b8-8f4e-4969-83c0-65a67ca5f829"
      unitRef="usd">49289000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i8d4ad474693841178fd01634beadc2cb_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzUtMS0xLTEtMA_f5b88fbc-d599-42a5-8998-c6bf2b8d2774"
      unitRef="usd">12682000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i2c7f1534acdc41b6b83fef288833ab1f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzUtMy0xLTEtMA_153247e1-2e82-44c3-a0cc-4db58078e415"
      unitRef="usd">10790000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i0e5e7ce331ec483fbd7ebf4d80540114_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzYtMS0xLTEtMA_a0c84c1f-7b2c-4e93-9de4-35a218a68e6a"
      unitRef="usd">58162000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i8732058db3184ba59c6e2cc6cccf3974_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzYtMy0xLTEtMA_5adb0114-5fc1-4f07-a801-7ab0393191c4"
      unitRef="usd">67474000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i799593d8b62b419ea601b7af8f7a1e5f_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzctMS0xLTEtMA_31ffc685-1de7-4ede-b100-226400bc693d"
      unitRef="usd">29816000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i87982faadf4f416eb7ec7c3a6c8216c5_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzctMy0xLTEtMA_3d34cd82-607d-45e2-af48-a06f3db2054e"
      unitRef="usd">31278000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i3e3040ff593242ae84a0a31f6baccf93_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzgtMS0xLTEtMA_8e074378-9c49-4ea2-8bb8-6274816e603b"
      unitRef="usd">6372000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i3dfc489296454de1a7b79e56d536e5c7_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzgtMy0xLTEtMA_ef39ca1d-ee74-4940-a95f-367d7e18c508"
      unitRef="usd">6800000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzktMS0xLTEtMA_0ba008a8-ee97-4c36-99cd-0408cd6ca556"
      unitRef="usd">181494000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:PropertyPlantAndEquipmentGross
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzktMy0xLTEtMA_5ceadbc2-448d-432d-9f71-e92e01629a4c"
      unitRef="usd">194115000</us-gaap:PropertyPlantAndEquipmentGross>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzEwLTEtMS0xLTA_8a2599c9-84ab-4991-b6ab-dcf2bae49179"
      unitRef="usd">102321000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzEwLTMtMS0xLTA_8d3970c2-3c3b-41b9-8896-86b7333a7096"
      unitRef="usd">104672000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzExLTEtMS0xLTA_db63bc57-1f90-4215-96a7-f41757e944f8"
      unitRef="usd">79173000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentNet
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90YWJsZTphYzUzNTRiZDVjYWM0ZDE1YTBiMmIwYTdlMTAzNDMyZi90YWJsZXJhbmdlOmFjNTM1NGJkNWNhYzRkMTVhMGIyYjBhN2UxMDM0MzJmXzExLTMtMS0xLTA_a0ff0d08-ceca-4153-82db-63461009b9a8"
      unitRef="usd">89443000</us-gaap:PropertyPlantAndEquipmentNet>
    <us-gaap:PropertyPlantAndEquipmentDisposals
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzE4Mg_fa0971b4-abc1-439f-89ff-0128969fcc1e"
      unitRef="usd">26829000</us-gaap:PropertyPlantAndEquipmentDisposals>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzEwOTk1MTE2Mjk2MDA_687a129e-3487-4418-a48e-4906ae3bc603"
      unitRef="usd">24977000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1>
    <us-gaap:GainLossOnDispositionOfAssets1
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzEwOTk1MTE2Mjk2MTI_d65c6dc9-4b72-414c-aaae-d381463883eb"
      unitRef="usd">-1852000</us-gaap:GainLossOnDispositionOfAssets1>
    <us-gaap:PropertyPlantAndEquipmentDisposals
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzE2NDkyNjc0NDM5MDU_79ceb4fe-d9b1-4b97-b1c2-c54712aaba50"
      unitRef="usd">8883000</us-gaap:PropertyPlantAndEquipmentDisposals>
    <us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzMyNA_9604769b-d6ef-4bfd-a760-acb00a4d0116"
      unitRef="usd">8559000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationSaleOfPropertyPlantAndEquipment1>
    <us-gaap:GainLossOnDispositionOfAssets1
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzEwOTk1MTE2MjkzNDI_05142beb-5469-410a-9f6e-26e6d80c07c1"
      unitRef="usd">-324000</us-gaap:GainLossOnDispositionOfAssets1>
    <us-gaap:PropertySubjectToOrAvailableForOperatingLeaseGross
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzUzMg_fe4f9f39-56d1-4aa5-9433-e6ea2f53e639"
      unitRef="usd">800000</us-gaap:PropertySubjectToOrAvailableForOperatingLeaseGross>
    <us-gaap:PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjEvZnJhZzo0YjVkZGY1NWYzNGU0NDgzODg2MTM0YmUzMjU0YmIwOS90ZXh0cmVnaW9uOjRiNWRkZjU1ZjM0ZTQ0ODM4ODYxMzRiZTMyNTRiYjA5XzYwNA_0090aa64-c783-49b6-832c-4f9883effe8d"
      unitRef="usd">255000</us-gaap:PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation>
    <us-gaap:LesseeOperatingLeasesTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzEwOTY_108394e2-8ee5-42ce-87ee-526b45085f0e">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. 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 leases outstanding, and no options to extend that were included in the determination of the lease term for leases outstanding. As of December 31, 2019 there were no options to extend or terminate that were included in the determination of the lease term for leases outstanding. 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 leases outstanding as of December 31, 2020 or December 31, 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 total operating lease expense and operating lease cash payments in 2020 were $8,180,000 and $8,009,000, respectively. The total operating lease expense and operating lease cash payments in 2019 were $6,893,000 and $6,530,000, 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 $123,000 and $275,000 in 2020 and 2019, respectively. Annual rental expense was $8,186,000 in 2018. &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-bottom:5pt;margin-top:14pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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-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;9,101&#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;2022&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,863&#160;&lt;/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;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;5,072&#160;&lt;/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,074&#160;&lt;/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,317&#160;&lt;/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;4,960&#160;&lt;/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;29,387&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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: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 discounted present value of the future lease cash payments resulted in a lease liability of $26,230,000 and $17,973,000 as of December 31, 2020 and December 31, 2019, respectively. The Company did not have any leases that had not yet commenced but that created significant rights and obligations as of December 31, 2020 or December 31, 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 weighted-average discount rate was 4.0% and 4.6% for the leases outstanding as of December 31, 2020 and December 31, 2019, respectively. The weighted-average remaining lease term was 5.1 and 3.7 years for the leases outstanding as of December 31, 2020 and December 31, 2019, respectively.&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 part of the Company's restructuring plan (refer to Note 22), management closed eleven leased offices in 2020, prior to the end of their lease terms. 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 charges" on the Consolidated Statements of Operations. Management is currently negotiating early contract terminations for the remaining lease liability obligations associated with these abandoned offices, which totaled $2,877,000 as of December 31, 2020 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 2019 or 2018.&lt;/span&gt;&lt;/div&gt;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 and 2018. 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, $311,000 in 2019, and $1,116,000 in 2018.</us-gaap:LesseeOperatingLeasesTextBlock>
    <us-gaap:OperatingLeasesOfLessorDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzEwOTY_fd824421-fa66-4ccd-908e-d08d4c362b08">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. 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 leases outstanding, and no options to extend that were included in the determination of the lease term for leases outstanding. As of December 31, 2019 there were no options to extend or terminate that were included in the determination of the lease term for leases outstanding. 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 leases outstanding as of December 31, 2020 or December 31, 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 total operating lease expense and operating lease cash payments in 2020 were $8,180,000 and $8,009,000, respectively. The total operating lease expense and operating lease cash payments in 2019 were $6,893,000 and $6,530,000, 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 $123,000 and $275,000 in 2020 and 2019, respectively. Annual rental expense was $8,186,000 in 2018. &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-bottom:5pt;margin-top:14pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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-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;9,101&#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;2022&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,863&#160;&lt;/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;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;5,072&#160;&lt;/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,074&#160;&lt;/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,317&#160;&lt;/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;4,960&#160;&lt;/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;29,387&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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: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 discounted present value of the future lease cash payments resulted in a lease liability of $26,230,000 and $17,973,000 as of December 31, 2020 and December 31, 2019, respectively. The Company did not have any leases that had not yet commenced but that created significant rights and obligations as of December 31, 2020 or December 31, 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 weighted-average discount rate was 4.0% and 4.6% for the leases outstanding as of December 31, 2020 and December 31, 2019, respectively. The weighted-average remaining lease term was 5.1 and 3.7 years for the leases outstanding as of December 31, 2020 and December 31, 2019, respectively.&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 part of the Company's restructuring plan (refer to Note 22), management closed eleven leased offices in 2020, prior to the end of their lease terms. 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 charges" on the Consolidated Statements of Operations. Management is currently negotiating early contract terminations for the remaining lease liability obligations associated with these abandoned offices, which totaled $2,877,000 as of December 31, 2020 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 2019 or 2018.&lt;/span&gt;&lt;/div&gt;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 and 2018. 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, $311,000 in 2019, and $1,116,000 in 2018.</us-gaap:OperatingLeasesOfLessorDisclosureTextBlock>
    <us-gaap:OperatingLeaseExpense
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzA4NjU_321c39da-3c47-40fa-91d5-8a5725cbfd79"
      unitRef="usd">8180000</us-gaap:OperatingLeaseExpense>
    <us-gaap:OperatingLeasePayments
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzA4NzE_a90edb8d-e547-403f-8362-0c92cc37959f"
      unitRef="usd">8009000</us-gaap:OperatingLeasePayments>
    <us-gaap:OperatingLeaseExpense
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzE2NDQ_2cfa288d-c18b-4bd8-a051-54d171bfbc86"
      unitRef="usd">6893000</us-gaap:OperatingLeaseExpense>
    <us-gaap:OperatingLeasePayments
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzE2NTE_a8c8877d-2ff2-4455-ac51-76b7a2bdbba1"
      unitRef="usd">6530000</us-gaap:OperatingLeasePayments>
    <cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzA5MTM_5ac5cebe-3571-43c8-b301-66913970fa86"
      unitRef="usd">123000</cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized>
    <cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzE4Mjg_c06bd7ab-d994-45df-9887-7c97ae57eee8"
      unitRef="usd">275000</cgnx:OperatingLeaseExpenseNoLiabilityOrAssetRecognized>
    <us-gaap:LeaseAndRentalExpense
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzE5MTI_71992f89-1567-44f0-91ee-641e28855b1d"
      unitRef="usd">8186000</us-gaap:LeaseAndRentalExpense>
    <us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzI5MTM_09e74efe-5144-47dd-a32b-6fa2dbe7e59e">&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-bottom:5pt;margin-top:14pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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-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;9,101&#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;2022&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,863&#160;&lt;/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;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;5,072&#160;&lt;/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,074&#160;&lt;/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,317&#160;&lt;/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;4,960&#160;&lt;/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;29,387&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzEtMi0xLTEtMA_e32cf1a8-c653-4dab-8575-180fd73aad9a"
      unitRef="usd">9101000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzItMi0xLTEtMA_6b49b0e1-175e-444e-b73d-0acc6a14c5cb"
      unitRef="usd">6863000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzMtMi0xLTEtMA_b199f9be-3cfa-44f6-b4df-d153b2fc4eb0"
      unitRef="usd">5072000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzQtMi0xLTEtMA_901edd51-1df8-42e2-a6cc-0f10aa461349"
      unitRef="usd">2074000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzUtMi0xLTEtMA_e42a27eb-e419-4b5e-ad93-91ba4febb6ea"
      unitRef="usd">1317000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzYtMi0xLTEtMA_35bdc6fb-72bd-4020-a611-b3a6235a463a"
      unitRef="usd">4960000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive>
    <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90YWJsZTpkY2Y1NjRiY2Q0ZmY0MjNhYjk5ZTZiM2ViMTMzZmQ2OC90YWJsZXJhbmdlOmRjZjU2NGJjZDRmZjQyM2FiOTllNmIzZWIxMzNmZDY4XzctMi0xLTEtMA_40986061-0b2d-4483-9ccb-d65c23a3cf22"
      unitRef="usd">29387000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
    <us-gaap:OperatingLeaseLiability
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzEwMzc_79ee1fd8-d0cc-429d-a4f0-964826f34aba"
      unitRef="usd">26230000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLiability
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzIwOTA_11dcf005-e9dc-4810-a029-dd3a032b6141"
      unitRef="usd">17973000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzEwOTA_31d1cf38-5f8f-42aa-adde-f1e9e2347f0e"
      unitRef="number">0.040</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzIxNTc_93d8cd18-92d3-477f-b803-afeb06ca0068"
      unitRef="number">0.046</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzExNzg_0860c437-b7c5-4e5c-99f0-4c58614fcd8b">P5Y1M6D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzIyNTk_8a09654a-601c-4178-bce1-cbc669fdb7d8">P3Y8M12D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
    <cgnx:OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset
      contextRef="i1e5c63c6777548228466750a07807abe_I20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzM5OTA_8eecccaa-9323-4c80-b952-6706497d0461"
      unitRef="usd">0</cgnx:OperatingLeaseRightOfUseAssetCarryingValueOfImpairedAsset>
    <us-gaap:OperatingLeaseImpairmentLoss
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2MzI4OTM_1afa13be-0c0a-4b4a-b6f2-5709f65f5d64"
      unitRef="usd">3427000</us-gaap:OperatingLeaseImpairmentLoss>
    <us-gaap:OperatingLeaseLiability
      contextRef="ia0c071df8b2c4479a45a92ebc539394b_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzEwOTk1MTE2NDEyMTc_372b3d45-96bf-4e28-8a23-e2e5730aa6e9"
      unitRef="usd">2877000</us-gaap:OperatingLeaseLiability>
    <us-gaap:OperatingLeaseLeaseIncome
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzI2NTI_f83c1f28-4f95-453c-9a9b-b04ac2761b49"
      unitRef="usd">77000</us-gaap:OperatingLeaseLeaseIncome>
    <us-gaap:RentalIncomeNonoperating
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzI2NjI_13e2855b-82b8-452e-a887-012da1aa78f9"
      unitRef="usd">311000</us-gaap:RentalIncomeNonoperating>
    <us-gaap:RentalIncomeNonoperating
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMjcvZnJhZzphMGIyZmEzODY0NWQ0NjYxOWE2OTA3ZWUwZjY0YTIzOC90ZXh0cmVnaW9uOmEwYjJmYTM4NjQ1ZDQ2NjE5YTY5MDdlZTBmNjRhMjM4XzI2NzY_e79ebefb-0c43-48c8-972c-e13208138562"
      unitRef="usd">1116000</us-gaap:RentalIncomeNonoperating>
    <us-gaap:GoodwillDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90ZXh0cmVnaW9uOjZmZDczMTdjNTczZDRjZjBiNGQ3ZjcwMWE2Njc3MWU5Xzc3Ng_07c60133-17b7-48f9-8fd9-4982304363a3">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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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;113,208&#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;Acquisition of Sualab Co., Ltd.&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;130,142&#160;&lt;/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;95&#160;&lt;/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, 2019&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;243,445&#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;Sualab Co., Ltd. purchase price adjustment&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,004)&lt;/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;&#160;&#160;Foreign exchange rate changes&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,637&#160;&lt;/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 as of December 31, 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;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;244,078&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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: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;Refer to Note 21 to the Consolidated Financial Statements for further information regarding acquisitions. &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 adverse impact of the COVID-19 pandemic on our business triggered a review of long-lived assets, including goodwill, for potential impairment during the second quarter of 2020. Based on this assessment, management concluded that events and circumstances did not indicate the fair value of the reporting unit was less than its carrying value. For its 2020 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. Factors that management considered in these qualitative assessments include macroeconomic conditions, industry and market considerations, overall financial performance (both current and projected), changes in management or strategy, changes in the composition or carrying amount of net assets, and market capitalization. The Company did not record impairment charges related to goodwill in 2019 or 2018.&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;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 related to the Company's 2019 acquisition of Sualab Co., Ltd.&lt;/span&gt;&lt;/div&gt;</us-gaap:GoodwillDisclosureTextBlock>
    <us-gaap:ScheduleOfGoodwillTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90ZXh0cmVnaW9uOjZmZDczMTdjNTczZDRjZjBiNGQ3ZjcwMWE2Njc3MWU5Xzc3OQ_569abf9b-210f-4e70-a91c-5e1d6b20b1f2">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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;113,208&#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;Acquisition of Sualab Co., Ltd.&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;130,142&#160;&lt;/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;95&#160;&lt;/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, 2019&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;243,445&#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;Sualab Co., Ltd. purchase price adjustment&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,004)&lt;/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;&#160;&#160;Foreign exchange rate changes&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,637&#160;&lt;/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 as of December 31, 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;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;244,078&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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:ScheduleOfGoodwillTextBlock>
    <us-gaap:Goodwill
      contextRef="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzEtMi0xLTEtMA_0c2ccf18-7e52-4ffa-99f5-358880a7059c"
      unitRef="usd">113208000</us-gaap:Goodwill>
    <us-gaap:GoodwillAcquiredDuringPeriod
      contextRef="i011aed5572fd480ab06c7ea32ab87210_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzItMi0xLTEtMA_d551be49-a4f6-42a9-8f46-76b9ff3ab2cc"
      unitRef="usd">130142000</us-gaap:GoodwillAcquiredDuringPeriod>
    <us-gaap:GoodwillForeignCurrencyTranslationGainLoss
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzMtMi0xLTEtMA_3eca63dc-d922-4ac3-8234-bf9a20998a16"
      unitRef="usd">95000</us-gaap:GoodwillForeignCurrencyTranslationGainLoss>
    <us-gaap:Goodwill
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzUtMi0xLTEtMA_c7bb1549-2e57-45e7-a269-b7049e76b6c4"
      unitRef="usd">243445000</us-gaap:Goodwill>
    <us-gaap:GoodwillOtherIncreaseDecrease
      contextRef="i09e30511c6b84ebeb0e0ab61e3e3dafa_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzYtMi0xLTEtMA_6136e70a-81c8-4773-9153-157f8cf17620"
      unitRef="usd">-1004000</us-gaap:GoodwillOtherIncreaseDecrease>
    <us-gaap:GoodwillForeignCurrencyTranslationGainLoss
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzctMi0xLTEtMA_e808c368-2545-4224-985b-decca6020168"
      unitRef="usd">1637000</us-gaap:GoodwillForeignCurrencyTranslationGainLoss>
    <us-gaap:Goodwill
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90YWJsZTo4MGQ2ZjFhZDBkZGI0ZjYyYWYyNzMyMDUzMTQ0MThmZi90YWJsZXJhbmdlOjgwZDZmMWFkMGRkYjRmNjJhZjI3MzIwNTMxNDQxOGZmXzgtMi0xLTEtMA_cc2e34e7-4b8a-46e9-abd6-f752db2a1269"
      unitRef="usd">244078000</us-gaap:Goodwill>
    <us-gaap:PaymentsForProceedsFromPreviousAcquisition
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzAvZnJhZzo2ZmQ3MzE3YzU3M2Q0Y2YwYjRkN2Y3MDFhNjY3NzFlOS90ZXh0cmVnaW9uOjZmZDczMTdjNTczZDRjZjBiNGQ3ZjcwMWE2Njc3MWU5XzEwOTk1MTE2MzA2NjI_93007071-6833-476a-a3e4-9af21a918a0f"
      unitRef="usd">1004000</us-gaap:PaymentsForProceedsFromPreviousAcquisition>
    <us-gaap:IntangibleAssetsDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzUzNQ_040c3b82-8b6f-437d-9fa1-6223881ead64">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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;12,397&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;11,820&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,160&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;3,418&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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:700;line-height:100%"&gt;274&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;67&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;43&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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, 2020&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;58,120&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;15,555&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;31,987&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;9,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,827&#160;&lt;/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;14,407&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,402&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,005&#160;&lt;/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;In-process 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;8,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;8,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;/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-compete agreements&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;710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;350&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;360&#160;&lt;/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;Trademarks&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;110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;98&#160;&lt;/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 as of December 31, 2019&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: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;93,474&#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;53,984&#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;39,490&#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 adverse impact of the COVID-19 pandemic on our business 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. Sualab in-process technologies were completed in the fourth quarter of 2020 and were accordingly reported as completed technologies subject to amortization as of December 31, 2020. The Company did not record impairment charges related to intangible assets in 2019 or 2018.&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;2021&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,656&#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;2022&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,286&#160;&lt;/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;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;2,594&#160;&lt;/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;2,080&#160;&lt;/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;1,757&#160;&lt;/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;2,182&#160;&lt;/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;15,555&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzUzMg_4feec7a5-8f9a-432d-86fa-874e6fdf057e">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;12,397&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;11,820&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,160&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;3,418&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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:700;line-height:100%"&gt;274&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;67&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;43&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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, 2020&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;58,120&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;15,555&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;31,987&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;9,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,827&#160;&lt;/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;14,407&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,402&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,005&#160;&lt;/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;In-process 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;8,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;8,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;/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-compete agreements&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;710&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;350&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;360&#160;&lt;/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;Trademarks&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;110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;98&#160;&lt;/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 as of December 31, 2019&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: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;93,474&#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;53,984&#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;39,490&#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:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i39a995f9a76945dcb35a1f3f5dab89b0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEtMS0xLTEtMA_3935a21f-bafe-4cb4-8ad0-814d11538142"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i39a995f9a76945dcb35a1f3f5dab89b0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEtMy0xLTEtMA_cf8da4e5-c245-4197-861d-581b57380d3c"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i39a995f9a76945dcb35a1f3f5dab89b0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEtNS0xLTEtMA_e8645f43-6f5d-4eeb-a19c-0a7874db371c"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="iaa79f869e70d44c48285a931a374a8e3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzItMS0xLTEtMA_944db9ca-2f18-4f8f-b430-3a4f090c0e85"
      unitRef="usd">24217000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="iaa79f869e70d44c48285a931a374a8e3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzItMy0xLTEtMA_baf2931d-d432-431c-80dc-70aa92dd4d10"
      unitRef="usd">12397000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="iaa79f869e70d44c48285a931a374a8e3_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzItNS0xLTEtMA_c2725a89-63f6-450c-bfb4-f5d6bb471c38"
      unitRef="usd">11820000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ic0f9eb803c134de98161f8b3dbc1ce95_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzMtMS0xLTEtMA_82505c2c-4068-4e74-a0a9-0e641f0f8822"
      unitRef="usd">10578000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ic0f9eb803c134de98161f8b3dbc1ce95_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzMtMy0xLTEtMA_0798b60c-97ee-4143-bd4e-b48191c1790e"
      unitRef="usd">7160000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ic0f9eb803c134de98161f8b3dbc1ce95_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzMtNS0xLTEtMA_75b80147-258c-4d21-8abd-a7bea3f116e2"
      unitRef="usd">3418000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i6ee9ee02e4bf4822b6c259421cc22dd9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzUtMS0xLTEtMA_0cdcc6cf-30c2-47cf-b2b2-0a9f3792fa3e"
      unitRef="usd">710000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i6ee9ee02e4bf4822b6c259421cc22dd9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzUtMy0xLTEtMA_93d30ce6-f77a-4e5c-a0b8-802f6376994d"
      unitRef="usd">436000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i6ee9ee02e4bf4822b6c259421cc22dd9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzUtNS0xLTEtMA_bc5856f0-b010-4114-b531-8513ea0555d8"
      unitRef="usd">274000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i308f31c5d8ba450ba20913a309267fb4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzYtMS0xLTEtMA_cb56e137-8351-403f-96fa-2cd5ce98b040"
      unitRef="usd">110000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i308f31c5d8ba450ba20913a309267fb4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzYtMy0xLTEtMA_03537773-d707-4389-b6ef-4eafa7a7493e"
      unitRef="usd">67000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i308f31c5d8ba450ba20913a309267fb4_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzYtNS0xLTEtMA_9bee46b1-805f-4a84-ae0d-c00363fdd219"
      unitRef="usd">43000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzctMS0xLTEtMA_68824055-6d90-4eba-825e-d9d08fcc7bac"
      unitRef="usd">73675000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzctMy0xLTEtMA_41aa2ce9-2445-40d1-81aa-2f1ceca96031"
      unitRef="usd">58120000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:IntangibleAssetsNetIncludingGoodwill
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzctNS0xLTEtMA_0d8bef93-314c-42d7-aa7f-501903ec087f"
      unitRef="usd">15555000</us-gaap:IntangibleAssetsNetIncludingGoodwill>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i1eac7832e000472982f73ab5c4639a3e_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEwLTEtMS0xLTA_e1e13a5d-9035-4e1a-9a18-cb7a31a84444"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i1eac7832e000472982f73ab5c4639a3e_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEwLTMtMS0xLTA_f8f81164-479b-4316-8ee8-fc968383f2b3"
      unitRef="usd">38060000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i1eac7832e000472982f73ab5c4639a3e_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEwLTUtMS0xLTA_d3cfa2d6-7dd9-4a74-bda5-02e2405c0518"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ib499337978d64c0996f876ba7e3c08b8_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzExLTEtMS0xLTA_1564a2dd-c4b2-44d8-9afa-63bd79e97897"
      unitRef="usd">31987000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ib499337978d64c0996f876ba7e3c08b8_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzExLTMtMS0xLTA_cec1141a-70fe-4b4a-a40c-338940e71805"
      unitRef="usd">9160000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ib499337978d64c0996f876ba7e3c08b8_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzExLTUtMS0xLTA_addd15bb-c80e-4b4e-85bf-d62010b0d94c"
      unitRef="usd">22827000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="id65d8c0bdbf74398a35cfe8104c30b2d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEyLTEtMS0xLTA_6fc984dc-3814-4ca0-9411-5d29cbfa7af8"
      unitRef="usd">14407000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="id65d8c0bdbf74398a35cfe8104c30b2d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEyLTMtMS0xLTA_7d5c6be5-85ff-4021-9c07-7369ad57bd4f"
      unitRef="usd">6402000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="id65d8c0bdbf74398a35cfe8104c30b2d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEyLTUtMS0xLTA_9e0c44da-b12b-489a-b55f-0506d27c1460"
      unitRef="usd">8005000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ib24b605f63cf45cba1a5241a4474e599_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTEtMS0xLTI0MzA_f65b6e5f-3ad9-485a-b178-43ffc083e16a"
      unitRef="usd">8200000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="if5088b63841d443ea2181e2aac05f114_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTMtMS0xLTI0MzA_99a985f3-c271-4e3a-bf6d-d141306e420f"
      unitRef="usd">0</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:IndefiniteLivedIntangibleAssetsExcludingGoodwill
      contextRef="ib24b605f63cf45cba1a5241a4474e599_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTUtMS0xLTI0MzA_33eb5535-8086-4bef-9af6-5ca1a48d7096"
      unitRef="usd">8200000</us-gaap:IndefiniteLivedIntangibleAssetsExcludingGoodwill>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ie17bd31409ec49ada21e79d6bc9f4905_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTEtMS0xLTA_0b2ad0bf-f08d-4011-8f21-49be755e4966"
      unitRef="usd">710000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ie17bd31409ec49ada21e79d6bc9f4905_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTMtMS0xLTA_f500a31e-5d7a-492a-9e10-11d719c400cd"
      unitRef="usd">350000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ie17bd31409ec49ada21e79d6bc9f4905_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzEzLTUtMS0xLTA_cb2dc24c-0cfd-477c-9527-86f7e70c1cd3"
      unitRef="usd">360000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="ifa6e76ebd0604c6fb7f2534a1457c766_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE1LTEtMS0xLTI0MzI_7d97b049-631b-4b77-b639-3f3c9106aa37"
      unitRef="usd">110000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="ifa6e76ebd0604c6fb7f2534a1457c766_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE1LTMtMS0xLTI0MzI_892cb2ae-eaa7-4305-b20c-15f4d4aa9028"
      unitRef="usd">12000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="ifa6e76ebd0604c6fb7f2534a1457c766_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE1LTUtMS0xLTI0MzI_e72c6a92-3ae0-49a9-b3a8-f129ff27864e"
      unitRef="usd">98000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:FiniteLivedIntangibleAssetsGross
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE0LTEtMS0xLTA_ad0688c6-cf98-4a94-b0c0-736c65a6d8db"
      unitRef="usd">93474000</us-gaap:FiniteLivedIntangibleAssetsGross>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE0LTMtMS0xLTA_85e31f35-fd68-447a-90e8-c189dfa47df9"
      unitRef="usd">53984000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTozY2MxZTVkMTBiOWU0NDg0YTllM2Y2ODllOWRiYzQ3ZC90YWJsZXJhbmdlOjNjYzFlNWQxMGI5ZTQ0ODRhOWUzZjY4OWU5ZGJjNDdkXzE0LTUtMS0xLTA_a4e866ee-ecb5-4f30-affc-d3629748db0e"
      unitRef="usd">39490000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQwNjc_8dacc23e-3864-402c-a21c-4cc0e80b5e3c"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i6e84999093c84481a74e39726977d099_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQwODA_feea71ee-978f-44eb-9ed5-8022d333bdbe"
      unitRef="usd">10070000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
      contextRef="i2ec5ea0b1ca4492e80d0a8603b4039d2_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQwOTM_a81a8a92-8df4-44d7-8f86-459d40d3b75d"
      unitRef="usd">5900000</us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ib4a1793dd0e94c0b9920e9fa24b518b4_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQxMDU_289f4ce0-6306-4bb7-b076-c3f462939104"
      unitRef="usd">3382000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="if86e7b3ca23041ce8ac0f7a210ea1142_I20200526"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQxMTc_73c38d89-0c44-4e40-8152-423a4b97932f"
      unitRef="usd">447000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization
      contextRef="if86e7b3ca23041ce8ac0f7a210ea1142_I20200526"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQxMzc_c43fb947-0e2b-473a-8eea-53a4a1059d50"
      unitRef="usd">228000</us-gaap:FiniteLivedIntangibleAssetsAccumulatedAmortization>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="i5dc07c358d534713bc54541683dc51e8_I20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQxNTA_33ed808f-2530-4652-a326-c7363d53e7e4"
      unitRef="usd">0</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="if0dc89428d034c9082662b3998a327f0_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzEwOTk1MTE2MzQxMjc_b93a15b4-1f56-4dcf-bb73-9f19d6c593f5"
      unitRef="usd">219000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90ZXh0cmVnaW9uOmU4MGQ4MmVjNWUzNTQ0NWNiMDlmZGJlNGIwMWRmMDBlXzUzNw_de03ae90-05f2-4b2a-9cf2-64688b3bc6ff">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;2021&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,656&#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;2022&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,286&#160;&lt;/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;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;2,594&#160;&lt;/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;2,080&#160;&lt;/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;1,757&#160;&lt;/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;2,182&#160;&lt;/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;15,555&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzEtMi0xLTEtMA_d4b3f025-3794-41e0-9784-87220c48b38b"
      unitRef="usd">3656000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzItMi0xLTEtMA_f57ad68a-d7b4-4026-ab67-26feaa08313a"
      unitRef="usd">3286000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzMtMi0xLTEtMA_2c5e3c0f-369c-4b2c-986a-87af09a34481"
      unitRef="usd">2594000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearThree>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzQtMi0xLTEtMA_6f89742d-cf37-4869-974b-f97d83ee8134"
      unitRef="usd">2080000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFour>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzUtMi0xLTEtMA_c07fd98b-0897-4cbe-8031-3be2b16fafae"
      unitRef="usd">1757000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzYtMi0xLTEtMA_f83fc401-7c28-4b99-9b8d-60f667b5d696"
      unitRef="usd">2182000</us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseAfterYearFive>
    <us-gaap:FiniteLivedIntangibleAssetsNet
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzMvZnJhZzplODBkODJlYzVlMzU0NDVjYjA5ZmRiZTRiMDFkZjAwZS90YWJsZTphZDdjODUwZjliODI0ODI2OWVjYzM5ZDUwYTc4YWU0My90YWJsZXJhbmdlOmFkN2M4NTBmOWI4MjQ4MjY5ZWNjMzlkNTBhNzhhZTQzXzctMi0xLTEtMA_54e574f5-6bb5-48ad-ab06-81b6a2a6a185"
      unitRef="usd">15555000</us-gaap:FiniteLivedIntangibleAssetsNet>
    <us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90ZXh0cmVnaW9uOmNjN2UzYzJkMDkyODRiMGY5YzlmNDZiNjk2ZWVjMjExXzE3Mg_75883a1a-1c3d-4a53-808f-d39430cfdbc0">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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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:700;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;Company bonuses&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;19,343&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;&#x2014;&#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, commissions, 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;14,025&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;11,500&#160;&lt;/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;6,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;6,146&#160;&lt;/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,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;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;text-align:left;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;3,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:#cceeff;padding:2px 1pt 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,708&#160;&lt;/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;27,963&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;25,132&#160;&lt;/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;77,264&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;52,199&#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:9pt"&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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,743&#160;&lt;/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,841&#160;&lt;/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;(3,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;/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, 2019&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;4,713&#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,463&#160;&lt;/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;(2,770)&lt;/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, 2020&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,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;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90ZXh0cmVnaW9uOmNjN2UzYzJkMDkyODRiMGY5YzlmNDZiNjk2ZWVjMjExXzE2OQ_5ede4f86-fac5-46e4-8c50-1690616dc8e8">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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:700;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;Company bonuses&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;19,343&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;&#x2014;&#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, commissions, 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;14,025&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;11,500&#160;&lt;/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;6,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;6,146&#160;&lt;/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,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;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;text-align:left;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;3,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:#cceeff;padding:2px 1pt 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,708&#160;&lt;/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;27,963&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;25,132&#160;&lt;/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;77,264&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;52,199&#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="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzItMS0xLTEtMA_ab114fba-d7f6-4af3-9582-cf563e47feed"
      unitRef="usd">19343000</us-gaap:AccruedBonusesCurrent>
    <us-gaap:AccruedBonusesCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzItMy0xLTEtMA_1ae116fd-9723-4033-a97b-5d2425a7b992"
      unitRef="usd">0</us-gaap:AccruedBonusesCurrent>
    <us-gaap:AccruedSalariesCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzMtMS0xLTEtNzE2OA_fddf421d-065c-4257-8e34-798cdf8649cc"
      unitRef="usd">14025000</us-gaap:AccruedSalariesCurrent>
    <us-gaap:AccruedSalariesCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzMtMy0xLTEtNzE2OA_250fe065-3a14-4b94-806f-19e3cbbb3c23"
      unitRef="usd">11500000</us-gaap:AccruedSalariesCurrent>
    <cgnx:RetirementAllowance
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzMtMS0xLTEtMA_9b853da8-080a-4a80-8a21-507c30267f8b"
      unitRef="usd">6886000</cgnx:RetirementAllowance>
    <cgnx:RetirementAllowance
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzMtMy0xLTEtMA_39f919eb-c733-42e2-8d01-6feac4858926"
      unitRef="usd">6146000</cgnx:RetirementAllowance>
    <us-gaap:ProductWarrantyAccrualClassifiedCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzQtMS0xLTEtMA_cd034875-6bd1-4c2b-bdcf-8d9aa226ac5d"
      unitRef="usd">5406000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
    <us-gaap:ProductWarrantyAccrualClassifiedCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzQtMy0xLTEtMA_2aa2bf15-7589-4c74-b8d2-2b4fd48cb517"
      unitRef="usd">4713000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
    <us-gaap:AccruedVacationCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzUtMS0xLTEtMA_003a182a-845f-4672-afd9-6395d5952af3"
      unitRef="usd">3641000</us-gaap:AccruedVacationCurrent>
    <us-gaap:AccruedVacationCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzUtMy0xLTEtMA_03dd262a-1dac-4baa-9842-50ea55169ae2"
      unitRef="usd">4708000</us-gaap:AccruedVacationCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzgtMS0xLTEtMA_ff9e593d-39a4-4509-b2af-30d4258e374a"
      unitRef="usd">27963000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:OtherAccruedLiabilitiesCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzgtMy0xLTEtMA_108d036e-2c3a-4c47-845c-dc76f69e2137"
      unitRef="usd">25132000</us-gaap:OtherAccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzktMS0xLTEtMA_f15fc3ae-e1cd-4e1d-8c6c-b0b8e947071b"
      unitRef="usd">77264000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:AccruedLiabilitiesCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTo2N2Y0YTQwM2Q3ZmY0Njg5YTVjZWNkZDZlNTNiOWFkYi90YWJsZXJhbmdlOjY3ZjRhNDAzZDdmZjQ2ODlhNWNlY2RkNmU1M2I5YWRiXzktMy0xLTEtMA_c80bfe86-0092-4620-911e-19b31c86bd13"
      unitRef="usd">52199000</us-gaap:AccruedLiabilitiesCurrent>
    <us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90ZXh0cmVnaW9uOmNjN2UzYzJkMDkyODRiMGY5YzlmNDZiNjk2ZWVjMjExXzE4Mg_94262bd0-17bb-435f-b476-92643143d7fd">&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;The changes in the warranty obligation were as follows (in thousands):&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;vertical-align:top;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, 2018&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,743&#160;&lt;/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,841&#160;&lt;/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;(3,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;/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, 2019&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;4,713&#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,463&#160;&lt;/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;(2,770)&lt;/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, 2020&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,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;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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzEtMS0xLTEtMA_a852c0e5-406e-4382-a75e-55e1dc718e50"
      unitRef="usd">4743000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzItMS0xLTEtMA_4b821d41-42ab-4976-83e6-c3f58f6add4f"
      unitRef="usd">3841000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzMtMS0xLTEtMA_cfe611f2-de20-4c43-a971-c008b92eb8c6"
      unitRef="usd">3871000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzUtMS0xLTEtMA_bfde8d7c-a9f0-4ff8-a960-c886ef6f48ec"
      unitRef="usd">4713000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:ProductWarrantyAccrualWarrantiesIssued
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzYtMS0xLTEtMA_c1b62691-4a54-4f07-ba38-cc5e4c7e37d4"
      unitRef="usd">3463000</us-gaap:ProductWarrantyAccrualWarrantiesIssued>
    <us-gaap:ProductWarrantyAccrualPayments
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzctMS0xLTEtMA_1b7a7a34-4a41-449a-bb2e-25a410b600ee"
      unitRef="usd">2770000</us-gaap:ProductWarrantyAccrualPayments>
    <us-gaap:ProductWarrantyAccrual
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzYvZnJhZzpjYzdlM2MyZDA5Mjg0YjBmOWM5ZjQ2YjY5NmVlYzIxMS90YWJsZTplMmZmZWU4ZjRkOWI0OGNjYjcyM2JlMTM0OGY2MjFmZS90YWJsZXJhbmdlOmUyZmZlZThmNGQ5YjQ4Y2NiNzIzYmUxMzQ4ZjYyMWZlXzktMS0xLTEtMA_eaf87c0c-a4c5-4206-bd81-ce9308dca163"
      unitRef="usd">5406000</us-gaap:ProductWarrantyAccrual>
    <us-gaap:CommitmentsAndContingenciesDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzkvZnJhZzo2NjhmMmMzNWMzYzI0NTg4ODY0Y2VlM2EzMDI2MzIxYy90ZXh0cmVnaW9uOjY2OGYyYzM1YzNjMjQ1ODg4NjRjZWUzYTMwMjYzMjFjXzY4MQ_b4b7f2e4-0fc3-4d68-a5c0-9f6c5bcc3a0b">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, 2020, the Company had outstanding purchase orders totaling $32,315,000 to purchase inventory from various vendors. Certain of these purchase orders may be canceled by the Company, subject to cancellation penalties. These purchase commitments relate to expected sales in 2021.&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="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xMzkvZnJhZzo2NjhmMmMzNWMzYzI0NTg4ODY0Y2VlM2EzMDI2MzIxYy90ZXh0cmVnaW9uOjY2OGYyYzM1YzNjMjQ1ODg4NjRjZWUzYTMwMjYzMjFjXzEwOA_b7c946ed-5f7a-4174-861c-15009d0b8490"
      unitRef="usd">32315000</us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted>
    <cgnx:IndemnificationProvisionsTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDUvZnJhZzo0ODhlYmQzNGNkY2I0MmUxYjQyN2JhZmM5M2Q2YjFiMi90ZXh0cmVnaW9uOjQ4OGViZDM0Y2RjYjQyZTFiNDI3YmFmYzkzZDZiMWIyXzI0MDQ_87360362-cccd-4336-bbf3-04e5f8603a3b">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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5NzY_799d092e-e5c7-4e41-863a-ce90841c37ab">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 45 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-bottom:5pt;margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2020&lt;/span&gt;&lt;/td&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, 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: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:#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;Euro&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,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 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;61,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;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,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 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,249&#160;&lt;/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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;80,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;4,223&#160;&lt;/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;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;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;161,951,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="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;139,688&#160;&lt;/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;Japanese Yen&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,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;5,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;575,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;5,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: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,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;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;870,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;2,962&#160;&lt;/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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,700&#160;&lt;/span&gt;&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;3,569&#160;&lt;/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;Taiwanese 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;38,035&#160;&lt;/span&gt;&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,362&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,450&#160;&lt;/span&gt;&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,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;/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;Singapore 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,465&#160;&lt;/span&gt;&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,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;845&#160;&lt;/span&gt;&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;628&#160;&lt;/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;Canadian 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;1,285&#160;&lt;/span&gt;&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,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,300&#160;&lt;/span&gt;&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,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;/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: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;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-bottom:5pt;margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.298%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&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:11.930%"/&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:11.930%"/&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.809%"/&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:11.930%"/&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:11.934%"/&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:8pt;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:9pt;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:9pt;font-weight:700;line-height:100%"&gt;Liability Derivatives&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&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:9pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet&lt;br/&gt;     Location&#160; &#160;&#160;&#160;&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:9pt;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:9pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet&lt;br/&gt;    Location&#160; &#160;&#160;&#160;&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:9pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:20pt"&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:9pt;font-weight:700;line-height:100%"&gt;December 31, 2020&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:9pt;font-weight:400;line-height:100%"&gt;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;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:9pt;font-weight:700;line-height:100%"&gt;December 31, 2020&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:9pt;font-weight:400;line-height:100%"&gt;December 31, 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;td colspan="3" style="display:none"/&gt;&lt;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;265&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;857&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;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:#cceeff;padding:2px 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;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;/tr&gt;&lt;/table&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;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-bottom:5pt;margin-top:14pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="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, 2020&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, 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;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="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, 2020&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, 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: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;265&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;857&#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;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:#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;23&#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;265&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;857&#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;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:#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;23&#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: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;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-bottom:5pt;margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:8pt;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:8pt;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:8pt;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:8pt;font-weight:700;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;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;2018&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;(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;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;(285)&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="if37f3b9e731b4d1e91e114764a70d4e3_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzQ4MQ_0f6b414c-70e3-4ee1-b064-94328cc2ceb4">P45D</us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1>
    <us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5OTE_cfa5fa1e-960b-4fd2-ad3c-6c2301c6da3a">&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-bottom:5pt;margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2020&lt;/span&gt;&lt;/td&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, 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: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:#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;Euro&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,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 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;61,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;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,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 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,249&#160;&lt;/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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;80,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;4,223&#160;&lt;/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;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;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;161,951,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="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;139,688&#160;&lt;/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;Japanese Yen&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,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;5,808&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;575,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;5,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: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,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;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;870,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;2,962&#160;&lt;/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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,700&#160;&lt;/span&gt;&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;3,569&#160;&lt;/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;Taiwanese 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;38,035&#160;&lt;/span&gt;&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,362&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,450&#160;&lt;/span&gt;&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,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;/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;Singapore 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,465&#160;&lt;/span&gt;&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,110&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;845&#160;&lt;/span&gt;&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;628&#160;&lt;/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;Canadian 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;1,285&#160;&lt;/span&gt;&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,010&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,300&#160;&lt;/span&gt;&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,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;/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="id125001a88314a6cb3e00cd9cfaebd63_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzEyLTEtMS0xLTA_fc5d72c5-dff6-4488-852c-ad329c72521d"
      unitRef="eur">50000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="id125001a88314a6cb3e00cd9cfaebd63_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzEyLTItMS0xLTA_e4a66600-7d0e-4a35-923d-7cea8bea477f"
      unitRef="usd">61342000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i4503ad3ffbcb438ab03343baa505dad7_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzEyLTQtMS0xLTA_17d5a63a-a5ff-4d63-94bd-cc816b4bed35"
      unitRef="eur">18000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i4503ad3ffbcb438ab03343baa505dad7_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzEyLTUtMS0xLTA_33dc877b-71dd-434d-a3e2-42648478dbb5"
      unitRef="usd">20249000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i3dda9084cd3d41309db2a7e221067614_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTEtMS0xLTA_41edf20c-b9d6-4b3a-881b-a10232d41d10"
      unitRef="mxn">155000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i3dda9084cd3d41309db2a7e221067614_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTItMS0xLTA_5ee2b47c-7779-46ad-8acc-056463a9aeac"
      unitRef="usd">7776000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i27e1097059694622a8c3700d3d84510d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTQtMS0xLTA_30a9e640-460c-4d5d-86c9-362bef6196e3"
      unitRef="mxn">80000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i27e1097059694622a8c3700d3d84510d_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTUtMS0xLTA_771f62bb-0a99-4140-8b11-dc5b817db7c3"
      unitRef="usd">4223000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i256cacfc43da44b1a64b0b147f385a07_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTEtMS0xLTY2NDE_b9601fd6-bd6b-48cf-930e-8245c347c887"
      unitRef="krw">6925000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i256cacfc43da44b1a64b0b147f385a07_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTItMS0xLTY2NDE_3b63c0cc-45e4-4418-81a7-c1b0ea627e79"
      unitRef="usd">6377000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i1c105ea70aa24e3c81daeb00339a62e9_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTQtMS0xLTY2NDE_65e458da-6f7f-4008-a16a-59f6420d1ab3"
      unitRef="krw">161951500000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i1c105ea70aa24e3c81daeb00339a62e9_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE0LTUtMS0xLTY2NDE_c8f351a8-d272-4d76-b49a-e47b9ffec816"
      unitRef="usd">139688000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ie18106478531477d9cf2a90de218a21c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTEtMS0xLTY2MzQ_29e4af7a-2ff1-462c-a835-3fcacb7a4279"
      unitRef="jpy">600000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ie18106478531477d9cf2a90de218a21c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTItMS0xLTY2MzQ_0ff5c142-fe24-4bc6-81f1-3283a25e6273"
      unitRef="usd">5808000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i4728f332e46840d7aea525c9eaa35aaf_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTQtMS0xLTY2MzQ_b7c70cd1-2cbe-4610-8d75-930daad368b4"
      unitRef="jpy">575000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i4728f332e46840d7aea525c9eaa35aaf_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTUtMS0xLTY2MzQ_767039d0-0124-401e-8158-6fc6d17d4128"
      unitRef="usd">5291000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i9f6d19bc81a2447cb20b33ed5d4e72e8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTEtMS0xLTY2Mjc_518ddf59-6b9a-40c4-99c2-21db18c81149"
      unitRef="huf">1330000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i9f6d19bc81a2447cb20b33ed5d4e72e8_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTItMS0xLTY2Mjc_b7147ab9-32e2-44ae-bc0b-12118b7969ce"
      unitRef="usd">4494000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i82422d1a11ca4a77b1f16cb2de6e0881_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTQtMS0xLTY2Mjc_7a2c20b0-3ed9-4671-8457-073d1c18814c"
      unitRef="huf">870000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i82422d1a11ca4a77b1f16cb2de6e0881_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTUtMS0xLTY2Mjc_a01e8489-14f6-4fde-bdde-28bf2f0f8661"
      unitRef="usd">2962000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i27e2ae5199ff4981a2777a3ba46d555a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTEtMS0xLTA_ea5ebb24-e4f9-49a0-b204-db022a46daa8"
      unitRef="gbp">1675000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i27e2ae5199ff4981a2777a3ba46d555a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTItMS0xLTA_234a4625-dbd7-445d-be9b-53b12000a409"
      unitRef="usd">2287000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="id2b1b3d989764ca4a14ee11ef0312f70_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTQtMS0xLTA_e8cbf35a-9bd0-4765-a1c9-a3a042b32d52"
      unitRef="gbp">2700000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="id2b1b3d989764ca4a14ee11ef0312f70_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE1LTUtMS0xLTA_ae9b1500-1947-43d1-8168-ae3cf905d222"
      unitRef="usd">3569000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i98836da978c546fda0472b613300f607_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE3LTEtMS0xLTA_83c522b9-33ef-43ae-9dbe-49d2c8a7795e"
      unitRef="twd">38035000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i98836da978c546fda0472b613300f607_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE3LTItMS0xLTA_5d0d71af-11b8-43b8-9612-847693fdd475"
      unitRef="usd">1362000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i63ab6dd878f44d6391ba8aa3d6ade87b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE3LTQtMS0xLTA_ab126a4b-2dc4-4d40-b97f-2f43b67598e3"
      unitRef="twd">37450000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="i63ab6dd878f44d6391ba8aa3d6ade87b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE3LTUtMS0xLTA_d993bf02-2e62-4f6a-8f2b-fc0aa76f7162"
      unitRef="usd">1256000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ic0e8d638d38640898e535a75e7cbcba0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTEtMS0xLTY2MjA_fd0231e7-2a48-4363-906d-57d603c8b0f2"
      unitRef="sgd">1465000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ic0e8d638d38640898e535a75e7cbcba0_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTItMS0xLTY2MjA_bfdf3f0e-3893-47c7-9a7e-c519568bf5a8"
      unitRef="usd">1110000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ic91b735b9c514594bf98f5c8c01a0479_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTQtMS0xLTY2MjA_cc521d40-836c-4277-a076-300da2b1131f"
      unitRef="sgd">845000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ic91b735b9c514594bf98f5c8c01a0479_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTUtMS0xLTY2MjA_a9d34975-b09f-4e39-824e-ca9d8fccd295"
      unitRef="usd">628000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ie26e559fd2fc4181af7adeae0db48039_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTEtMS0xLTA_93fa8716-6083-45a8-9f1d-f0560c5a3ee6"
      unitRef="cad">1285000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ie26e559fd2fc4181af7adeae0db48039_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTItMS0xLTA_978bd05e-ab86-4a4c-8c24-dc2ad6ab2f87"
      unitRef="usd">1010000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ib69a426c887140268968b1645cfc6863_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTQtMS0xLTA_787bcbc5-f78b-42c3-9a5f-17334e1f3b33"
      unitRef="cad">1300000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:DerivativeAssetNotionalAmount
      contextRef="ib69a426c887140268968b1645cfc6863_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZToxMzVmZGU3ODRiYWQ0Y2NkOTBhNjJiNzU2YTU4NDk0ZC90YWJsZXJhbmdlOjEzNWZkZTc4NGJhZDRjY2Q5MGE2MmI3NTZhNTg0OTRkXzE4LTUtMS0xLTA_8cd363d7-4f4e-424c-9464-b06e165ed035"
      unitRef="usd">1000000</us-gaap:DerivativeAssetNotionalAmount>
    <us-gaap:ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5ODY_365172d3-f1e5-42b2-9bb2-b0c676101a14">&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;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-bottom:5pt;margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:15.298%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.809%"/&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:11.930%"/&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:11.930%"/&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.809%"/&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:11.930%"/&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:11.934%"/&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:8pt;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:9pt;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:9pt;font-weight:700;line-height:100%"&gt;Liability Derivatives&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:12pt"&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:9pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet&lt;br/&gt;     Location&#160; &#160;&#160;&#160;&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:9pt;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:9pt;font-weight:700;line-height:100%"&gt;Balance&lt;br/&gt;Sheet&lt;br/&gt;    Location&#160; &#160;&#160;&#160;&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:9pt;font-weight:700;line-height:100%"&gt;Fair Value&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="height:20pt"&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:9pt;font-weight:700;line-height:100%"&gt;December 31, 2020&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:9pt;font-weight:400;line-height:100%"&gt;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;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:9pt;font-weight:700;line-height:100%"&gt;December 31, 2020&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:9pt;font-weight:400;line-height:100%"&gt;December 31, 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;td colspan="3" style="display:none"/&gt;&lt;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;265&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;857&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;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:#cceeff;padding:2px 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;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;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock>
    <us-gaap:DerivativeAssets
      contextRef="id2536238c18941b1b330f426e3f204c1_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo0YjQyNjQxMGQ0NWQ0MjdjOTIxZTBiYTk5NmE5ODBkOC90YWJsZXJhbmdlOjRiNDI2NDEwZDQ1ZDQyN2M5MjFlMGJhOTk2YTk4MGQ4XzYtMy0xLTEtMA_8b2c3f04-ba7f-4e1e-aa60-5a4fdbb3cc39"
      unitRef="usd">265000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i3e64074e131b49e786d6d237d108eea8_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo0YjQyNjQxMGQ0NWQ0MjdjOTIxZTBiYTk5NmE5ODBkOC90YWJsZXJhbmdlOjRiNDI2NDEwZDQ1ZDQyN2M5MjFlMGJhOTk2YTk4MGQ4XzYtNS0xLTEtMA_511c1af2-0091-491b-a787-edadb779dcdd"
      unitRef="usd">857000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeLiabilities
      contextRef="ia35a06653c644fd3919ff12db60fe22d_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo0YjQyNjQxMGQ0NWQ0MjdjOTIxZTBiYTk5NmE5ODBkOC90YWJsZXJhbmdlOjRiNDI2NDEwZDQ1ZDQyN2M5MjFlMGJhOTk2YTk4MGQ4XzYtOS0xLTEtMA_e9dea50c-c517-4c06-9ea1-33300fea2626"
      unitRef="usd">38000</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="id668c42d5d03462d90e84f0641b25f23_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo0YjQyNjQxMGQ0NWQ0MjdjOTIxZTBiYTk5NmE5ODBkOC90YWJsZXJhbmdlOjRiNDI2NDEwZDQ1ZDQyN2M5MjFlMGJhOTk2YTk4MGQ4XzYtMTEtMS0xLTA_c7951735-201d-44db-a24c-f6d63a47696f"
      unitRef="usd">23000</us-gaap:DerivativeLiabilities>
    <us-gaap:OffsettingAssetsTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5OTU_37e872eb-39ac-42d9-8cb6-6ae621f3b8f6">&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;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-bottom:5pt;margin-top:14pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="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, 2020&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, 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;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="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, 2020&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, 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: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;265&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;857&#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;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:#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;23&#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;265&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;857&#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;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:#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;23&#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="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzItMi0xLTEtMA_c5a7d3ee-b7d5-4a55-9a7c-04e6ed5cb0f4"
      unitRef="usd">265000</us-gaap:DerivativeFairValueOfDerivativeAsset>
    <us-gaap:DerivativeFairValueOfDerivativeAsset
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzItNC0xLTEtMA_c52135ae-1e42-4661-b926-c11964ac4a58"
      unitRef="usd">857000</us-gaap:DerivativeFairValueOfDerivativeAsset>
    <us-gaap:DerivativeFairValueOfDerivativeLiability
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzItOC0xLTEtMA_35955fc9-f325-4985-b749-39d1f8687899"
      unitRef="usd">38000</us-gaap:DerivativeFairValueOfDerivativeLiability>
    <us-gaap:DerivativeFairValueOfDerivativeLiability
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzItMTAtMS0xLTA_b09fb32c-ac5d-4dfc-86ab-4bd01561e11c"
      unitRef="usd">23000</us-gaap:DerivativeFairValueOfDerivativeLiability>
    <us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzMtMi0xLTEtMA_7427abad-e78e-44db-b42b-f778a20ff741"
      unitRef="usd">0</us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset>
    <us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzMtNC0xLTEtMA_a5fc30ac-89c7-416f-9a1a-3430a94060bc"
      unitRef="usd">0</us-gaap:DerivativeAssetCollateralObligationToReturnCashOffset>
    <us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzMtOC0xLTEtMA_59d8bda0-8b5d-4433-af69-037b1c767bed"
      unitRef="usd">0</us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset>
    <us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzMtMTAtMS0xLTA_7ff88e86-ef29-4625-ae75-647e7e6f6f00"
      unitRef="usd">0</us-gaap:DerivativeLiabilityCollateralRightToReclaimCashOffset>
    <us-gaap:DerivativeAssets
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzQtMi0xLTEtMA_b8c1b0b8-0302-4ade-8a7e-57e681385db4"
      unitRef="usd">265000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeAssets
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzQtNC0xLTEtMA_38b6924a-a580-47f8-9103-f6180731b587"
      unitRef="usd">857000</us-gaap:DerivativeAssets>
    <us-gaap:DerivativeLiabilities
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzQtOC0xLTEtMA_1d39f760-76b2-4231-aa60-47a31db9f52a"
      unitRef="usd">38000</us-gaap:DerivativeLiabilities>
    <us-gaap:DerivativeLiabilities
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTo4ZWYwNGQ3MzU2ZDU0YWQzYjZiNDE2NzJmMjE4NGRkNC90YWJsZXJhbmdlOjhlZjA0ZDczNTZkNTRhZDNiNmI0MTY3MmYyMTg0ZGQ0XzQtMTAtMS0xLTA_f11e6ead-5c1a-4db0-8031-fa1e0d8c266a"
      unitRef="usd">23000</us-gaap:DerivativeLiabilities>
    <us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5OTY_8c035962-0857-43a5-aecf-24debcfd85a7">&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;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-bottom:5pt;margin-top:10pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:8pt;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:8pt;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:8pt;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:8pt;font-weight:700;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;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;2018&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;(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;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;(285)&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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90ZXh0cmVnaW9uOjA5NjFkNWFmZTkwZTQ3ZmZhNGJmNjkwOWQ3ZTNiZmJmXzE5Njg_2dafc9a8-feb9-490b-9629-be1fa9128e71">&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:8pt;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:8pt;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:8pt;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:8pt;font-weight:700;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;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;2018&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;(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;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;(285)&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="iab20f4d47e244a76ace9b260b5743e28_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTpmOTExZWQxMzRjYzY0OTc4OThkOTIwOGYyNWRlMmVlNS90YWJsZXJhbmdlOmY5MTFlZDEzNGNjNjQ5Nzg5OGQ5MjA4ZjI1ZGUyZWU1XzExLTMtMS0xLTA_9ba2b867-966c-4032-be35-8fb8e5e7877d"
      unitRef="usd">-12308000</us-gaap:DerivativeGainLossOnDerivativeNet>
    <us-gaap:DerivativeGainLossOnDerivativeNet
      contextRef="ib5afb25330124ebcae58b0e8d3dc05a2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTpmOTExZWQxMzRjYzY0OTc4OThkOTIwOGYyNWRlMmVlNS90YWJsZXJhbmdlOmY5MTFlZDEzNGNjNjQ5Nzg5OGQ5MjA4ZjI1ZGUyZWU1XzExLTUtMS0xLTA_64273c4b-c4e4-4104-9ee7-b9bf330961c2"
      unitRef="usd">1305000</us-gaap:DerivativeGainLossOnDerivativeNet>
    <us-gaap:DerivativeGainLossOnDerivativeNet
      contextRef="i322fd20d156f460fb46528a0407d0f6d_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNDgvZnJhZzowOTYxZDVhZmU5MGU0N2ZmYTRiZjY5MDlkN2UzYmZiZi90YWJsZTpmOTExZWQxMzRjYzY0OTc4OThkOTIwOGYyNWRlMmVlNS90YWJsZXJhbmdlOmY5MTFlZDEzNGNjNjQ5Nzg5OGQ5MjA4ZjI1ZGUyZWU1XzExLTctMS0xLTA_450c7c36-e470-4a82-a63b-4cefc4820a62"
      unitRef="usd">-285000</us-gaap:DerivativeGainLossOnDerivativeNet>
    <us-gaap:RevenueFromContractWithCustomerTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzE2MDM_9af76e20-1582-4ded-8d45-c1602bd31540">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-bottom:5pt;margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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="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;2018&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;310,027&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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="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;265,175&#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;208,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:#cceeff;padding:2px 1pt 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="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;311,914&#160;&lt;/span&gt;&lt;/td&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;168,287&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,708&#160;&lt;/span&gt;&lt;/td&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;123,919&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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="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,541&#160;&lt;/span&gt;&lt;/td&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;811,020&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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="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;806,338&#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:6pt;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-bottom:5pt;margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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="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;2018&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;674,830&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;654,509&#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;136,190&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,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;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;151,829&#160;&lt;/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;811,020&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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="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;806,338&#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:3pt;text-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&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 Sheet and amounted to $6,846,000 and $3,963,000 as of December 31, 2020 and 2019, 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%"&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: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 January 1, 2020, the Company adopted Accounting Standards Update (ASU) 2016-13, &#x201c;Measurement of Credit Losses on Financial Instruments,&#x201d; using the modified-retrospective approach, which requires the Company to apply the standard on a prospective basis with a cumulative-effect adjustment to retained earnings as of the beginning of the period in which the guidance is effective. The Company did not record an adjustment to retained earnings as this ASU did not have a material impact on the Company's consolidated allowance for credit losses. &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-bottom:5pt;margin-top:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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;596&#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;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;/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&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;(286)&lt;/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;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;/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 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;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 &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 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;831&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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:3pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The Company's 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&gt;&lt;br/&gt;&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-bottom:5pt;margin-top:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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;9,845&#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 deferred revenue and customer deposits&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;53,422&#160;&lt;/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&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;(48,730)&lt;/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;(105)&lt;/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, 2019&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;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;Increases to deferred revenue and customer deposits&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;120,008&#160;&lt;/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&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;(114,014)&lt;/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;848&#160;&lt;/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 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;21,274&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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="text-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&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;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzE2MDU_2756ae83-e93d-4ed1-9485-4747c403bfbd">&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-bottom:5pt;margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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="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;2018&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;310,027&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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="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;265,175&#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;208,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:#cceeff;padding:2px 1pt 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="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;311,914&#160;&lt;/span&gt;&lt;/td&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;168,287&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,708&#160;&lt;/span&gt;&lt;/td&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;123,919&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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="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,541&#160;&lt;/span&gt;&lt;/td&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;811,020&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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="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;806,338&#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:6pt;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-bottom:5pt;margin-top:11pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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="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;2018&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;674,830&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;654,509&#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;136,190&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,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;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;151,829&#160;&lt;/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;811,020&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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="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;806,338&#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="i45bf844ee822481abb812259f0c55cf5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzItMi0xLTEtMA_add5826c-efc3-4a03-a6b5-c2d84df95791"
      unitRef="usd">310027000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i28319ee35cab4f669cc68e5c779ce9a2_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzItNC0xLTEtMA_227f1cec-a2d7-4bb7-91a3-94c4254526d5"
      unitRef="usd">277155000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i005b7b838db94fae896c3e37497e3a38_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzItNi0xLTEtMA_2b58fd69-43ba-4fd4-b7fe-7c90ec275c84"
      unitRef="usd">265175000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ibfe6673ddcfd4beda048b11f578ced24_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzMtMi0xLTEtMA_0c1b228c-f350-4c8b-8308-0e3150ea55e8"
      unitRef="usd">208787000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i2455679b0dc24386ae718a31db1121f5_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzMtNC0xLTEtMA_fc97cd76-18e1-4759-9a7e-30a602efb9ad"
      unitRef="usd">227738000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i0f9a6d89f1af40dab151c1916512c5a3_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzMtNi0xLTEtMA_21c3ed5c-ed80-4c81-b152-34317bf7e132"
      unitRef="usd">311914000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib9cc7499227e47a1bce0663b99b3a27a_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzQtMi0xLTEtMA_524fb9a0-cdd5-49ca-afdb-72f21118f092"
      unitRef="usd">168287000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3c0cc26b301d41ec94472b653c04964d_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzQtNC0xLTEtMA_69a2a229-b4e8-49c0-96ed-eb38f56e4bbd"
      unitRef="usd">115061000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="iee1584fb047e4cd0aadbe377ee63edb0_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzQtNi0xLTEtMA_259be843-9b3e-474a-9a8d-62945e6ca698"
      unitRef="usd">123708000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i0b7584e39a7e4678a6ed685684989018_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzUtMi0xLTEtMA_b13f13a0-5532-4019-9679-4318d3be0fa1"
      unitRef="usd">123919000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="id39fbd1324fc4c9e9dea6a121e2ad1b7_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzUtNC0xLTEtMA_fc1b22fc-06d6-4391-8652-20e0e3e7481e"
      unitRef="usd">105671000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i1693f4a03a22420681a119048a5f80d4_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzUtNi0xLTEtMA_012b7844-8066-4239-a131-a086a1930310"
      unitRef="usd">105541000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzYtMi0xLTEtMA_c5216e2f-351a-425f-b593-1e01fd187cf1"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzYtNC0xLTEtMA_bdd830f0-47cb-43d4-832a-588608f0fb78"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTo2M2FiNmZiMDg4ZWE0Njc5YWU2ZjY1MjQwNDQ4OTY0MS90YWJsZXJhbmdlOjYzYWI2ZmIwODhlYTQ2NzlhZTZmNjUyNDA0NDg5NjQxXzYtNi0xLTEtMA_433b342b-f8db-4efd-af75-fd03b5fcc694"
      unitRef="usd">806338000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i7ef1b2f387074286a1f393195b0d6023_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzItMi0xLTEtMA_2670ecea-018c-4db1-8b50-c200b34d60ea"
      unitRef="usd">674830000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i7871153220d1465d8b9175beda208c9a_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzItNC0xLTEtMA_a9ebbf05-fa33-48b7-bea1-aadc57f4a6af"
      unitRef="usd">629220000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i7cc61298d56c4c5a8ea7c807f888fb48_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzItNi0xLTEtMA_ded59dfc-b00d-40f3-90b7-56bbd6eeb33b"
      unitRef="usd">654509000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i2d31200b11d44782a5477bfdc49ea925_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzMtMi0xLTEtMA_64cc6a51-c4e2-4cc2-ab95-0ccfa0b836c4"
      unitRef="usd">136190000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i8302b4fda4d440c28ff639b7e1be6c18_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzMtNC0xLTEtMA_116e54b1-8583-4c8d-886b-46e8d7434e46"
      unitRef="usd">96405000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ia9f2c2eca7cf407d99a3940e46c8337b_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzMtNi0xLTEtMA_adb128c8-5d95-411c-b560-ddd081edbcc3"
      unitRef="usd">151829000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzQtMi0xLTEtMA_58ce133c-1573-494d-abc3-7903f2ed1bfe"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzQtNC0xLTEtMA_0597c98c-89d9-4b53-982f-420e0c342f2c"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpiYjA1YzMzNWIxNjc0MjQ5ODg1NGQ4OTA2ZThlNWU0Yi90YWJsZXJhbmdlOmJiMDVjMzM1YjE2NzQyNDk4ODU0ZDg5MDZlOGU1ZTRiXzQtNi0xLTEtMA_f4873ab3-7763-4fed-9717-9883804edde0"
      unitRef="usd">806338000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:CapitalizedContractCostGross
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzQ1MQ_479f2469-fe05-40a1-ae0d-05d34e329c47"
      unitRef="usd">6846000</us-gaap:CapitalizedContractCostGross>
    <us-gaap:CapitalizedContractCostGross
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzQ1OQ_412053cc-01d4-4b41-a01c-0bd4ec56723f"
      unitRef="usd">3963000</us-gaap:CapitalizedContractCostGross>
    <us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzEzMTk0MTM5NTQwOTkx_7b01aab2-a547-404f-8fd9-fbda023d712c">&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-bottom:5pt;margin-top:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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;596&#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;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;/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&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;(286)&lt;/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;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;/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 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;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 &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 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;831&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzAtMS0xLTEtMjk4Mw_8ba26920-0bcf-4504-937b-ac399d425431"
      unitRef="usd">596000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzEtMS0xLTEtMjk4Ng_3599324c-ccb3-445d-be71-8380a8ba14b6"
      unitRef="usd">215000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzItMS0xLTEtMjk5Mw_23307df4-18bc-4e7f-939e-337ef3ab1b91"
      unitRef="usd">286000</us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs>
    <cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzMtMS0xLTEtMjk5Nw_180cee57-9b93-4582-b577-87d953c37b3a"
      unitRef="usd">5000</cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzQtMS0xLTEtMjk4MQ_4bd61aca-c072-4665-895b-ab6dc1fc3b41"
      unitRef="usd">530000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:ProvisionForDoubtfulAccounts
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzUtMS0xLTEtMjk5MQ_0c0f6a9e-bb71-477b-b8cd-aa100606a550"
      unitRef="usd">600000</us-gaap:ProvisionForDoubtfulAccounts>
    <us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzYtMS0xLTEtMjk5NQ_7b82061d-907d-4a4c-969e-8d44514fc750"
      unitRef="usd">300000</us-gaap:AllowanceForDoubtfulAccountsReceivableWriteOffs>
    <cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzctMS0xLTEtMjk5OQ_31090aae-d3e5-4b3c-aaaa-7cd4437d131c"
      unitRef="usd">1000</cgnx:AccountsReceivableAllowanceForCreditLossForeignExchangeRateAdjustment>
    <us-gaap:AllowanceForDoubtfulAccountsReceivable
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZTpkYWUwOGY1MjE1OGI0MzVkYmQ1ODVlOGE1Y2Y2YTE0ZS90YWJsZXJhbmdlOmRhZTA4ZjUyMTU4YjQzNWRiZDU4NWU4YTVjZjZhMTRlXzgtMS0xLTEtMjk3OQ_688f48b9-959d-4a70-b0ea-f7e0681f7425"
      unitRef="usd">831000</us-gaap:AllowanceForDoubtfulAccountsReceivable>
    <us-gaap:ContractWithCustomerAssetAndLiabilityTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90ZXh0cmVnaW9uOmNlZDM2ZTkwNzBjZjRkZWY5Y2E1MGM0M2U5YjU5N2M5XzE2MDE_f5a70500-ddd0-4b15-b6fa-3b54d8119456">&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-bottom:5pt;margin-top:8pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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;9,845&#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 deferred revenue and customer deposits&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;53,422&#160;&lt;/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&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;(48,730)&lt;/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;(105)&lt;/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, 2019&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;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;Increases to deferred revenue and customer deposits&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;120,008&#160;&lt;/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&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;(114,014)&lt;/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;848&#160;&lt;/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 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;21,274&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzEtMS0xLTEtMA_7aaeecc6-516d-4413-8cea-3a0e0e1ab6e2"
      unitRef="usd">9845000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzItMS0xLTEtMA_c2367ec7-00ca-4263-b5e0-b6855ec398f6"
      unitRef="usd">53422000</cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease>
    <cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzMtMS0xLTEtMA_b8547aa6-5e63-4885-a42a-9ca7dbe8400c"
      unitRef="usd">48730000</cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized>
    <cgnx:ContractLiabilityForeignExchangeRateChanges
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzQtMS0xLTEtMA_d24dd9b5-130c-4ac0-bf4e-03449484b7c7"
      unitRef="usd">-105000</cgnx:ContractLiabilityForeignExchangeRateChanges>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzUtMS0xLTEtMA_211f574f-4ee0-455b-91be-b4ca68c42a02"
      unitRef="usd">14432000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzYtMS0xLTEtMA_f8599878-a12e-4936-967b-6638bf7fc322"
      unitRef="usd">120008000</cgnx:ContractWithCustomerLiabilityPeriodIncreaseDecrease>
    <cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzctMS0xLTEtMA_8f7161fc-98cc-41ff-932f-7e200e322487"
      unitRef="usd">114014000</cgnx:ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized>
    <cgnx:ContractLiabilityForeignExchangeRateChanges
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzgtMS0xLTEtMA_96600641-8127-4c9b-986a-feea4a2050f7"
      unitRef="usd">848000</cgnx:ContractLiabilityForeignExchangeRateChanges>
    <us-gaap:ContractWithCustomerLiabilityCurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTEvZnJhZzpjZWQzNmU5MDcwY2Y0ZGVmOWNhNTBjNDNlOWI1OTdjOS90YWJsZToxYzMwODViM2Y1OGI0NTU4ODQxZTcwNmIwNTY0NjdhZS90YWJsZXJhbmdlOjFjMzA4NWIzZjU4YjQ1NTg4NDFlNzA2YjA1NjQ2N2FlXzktMS0xLTEtMA_e4c8246e-2559-4661-b87a-0f23515069f4"
      unitRef="usd">21274000</us-gaap:ContractWithCustomerLiabilityCurrent>
    <us-gaap:StockholdersEquityNoteDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzQ1Nzk_360ce7cd-30c3-4602-9355-b9b8fa660373">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:6pt"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline"&gt;Shareholder Rights Agreement&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 December 5, 2018, the Company&#x2019;s Board of Directors allowed the Company&#x2019;s Shareholder Rights Agreement and associated rights to expire in accordance with their terms without renewal. In connection with the adoption of the Shareholder Rights Agreement, the Company had filed Articles of Amendment to its Restated Articles of Organization establishing Series E Junior Participating Cumulative Preferred Stock with the Secretary of State of The Commonwealth of Massachusetts, setting forth the rights, powers, and preferences of the Series E Junior Participating Cumulative Preferred Stock issuable upon exercise of the rights (the &#x201c;Preferred Shares&#x201d;). Effective on April 26, 2019, the Company filed Articles of Amendment to the Company&#x2019;s Restated Articles of Organization with the Secretary of State of The Commonwealth of Massachusetts eliminating the Preferred Shares and returning them to authorized but undesignated shares of the Company&#x2019;s preferred stock.&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 April 2017, the Company's Board of Directors authorized the repurchase of $100,000,000 of the Company's common stock. The Company repurchased 1,744,000 shares at a cost of $100,000,000 under this April 2017 program, including 803,000 shares at a cost of $45,200,000 in 2018. In February 2018, the Company's Board of Directors authorized the repurchase of $150,000,000 of the Company's common stock. The Company repurchased 3,174,000 shares at a cost of $150,000,000 in 2018 under this February 2018 program. In October 2018, the Company's Board of Directors authorized the repurchase of $200,000,000 of the Company's common stock. The Company repurchased 203,000 shares at a cost of $8,622,000 in 2018 under this October 2018 program. Total stock repurchases amounted to $203,822,000 in 2018. The Company repurchased 1,398,000 shares at a cost of $61,690,000 in 2019 and 1,215,000 shares at a cost of $51,036,000 in 2020 under this October 2018 program, leaving a remaining balance of $78,652,000. 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. Purchases under this March 2020 program will commence upon completion of the October 2018 program. 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, and $0.055 in the fourth quarter of 2019, as well as in the first, second, and third quarters of 2020. The dividend was increased to $0.060 per share in the fourth quarter of 2020. 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 $390,508,000 in 2020, which included $351,428,000 paid for the special cash dividend, $35,124,000 in 2019, and $31,865,000 in 2018. Future dividends will be declared at the discretion of the Company's Board of Directors and will depend upon 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="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzY4_9cfcbced-b594-4d0e-86ab-51e220cc889b"
      unitRef="shares">400000</us-gaap:PreferredStockSharesAuthorized>
    <us-gaap:PreferredStockParOrStatedValuePerShare
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwNQ_51ad8314-5009-4e16-bc4a-4ce67ba7fe77"
      unitRef="usdPerShare">0.01</us-gaap:PreferredStockParOrStatedValuePerShare>
    <us-gaap:CommonStockParOrStatedValuePerShare
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2Mzg3MzU_b430434b-9282-4689-8a45-4ec9d85ba408"
      unitRef="usdPerShare">0.002</us-gaap:CommonStockParOrStatedValuePerShare>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="i68be99e07a8140f985fd37cc10ad792c_I20160427"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMyMw_46418b6b-a4c6-4262-931a-6034399339c4"
      unitRef="shares">200000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="id6b1384256a24d76b0b52d56219d0b4e_I20180425"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMyOQ_d887e6d1-be20-4c65-a8a1-240a56281988"
      unitRef="shares">300000000</us-gaap:CommonStockSharesAuthorized>
    <us-gaap:CommonStockSharesAuthorized
      contextRef="ia5190f5ec7d04c8eb5bff1a85d304050_I20160428"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzU0Ng_5b917dcb-3e75-4f15-ac41-de654f886b98"
      unitRef="shares">10000000</us-gaap:CommonStockSharesAuthorized>
    <cgnx:VoteEntitledForEachCommonShareOutstanding
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzE1Njg_d196f8b0-aa2f-4ab2-a789-2c5e5ed890be"
      unitRef="vote">1</cgnx:VoteEntitledForEachCommonShareOutstanding>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="i189ffbc258f445c5a5406966389b4ac6_I20170412"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzI4Mzc_d10cbb18-37d8-4670-9c9d-e2a6106bc91b"
      unitRef="usd">100000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <cgnx:Totalsharesrepurchased
      contextRef="i680260920a244ceea6d6b45594dda05e_D20180101-20180401"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzI4OTY_19e6263a-6839-4804-a407-90938c1ac3a3"
      unitRef="shares">1744000</cgnx:Totalsharesrepurchased>
    <cgnx:Repurchasedsharestotalcost
      contextRef="i4fabd548970d4d4a8f0d64285da4ee5c_D20180101-20180401"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzI5MTk_25f9483f-78d7-4ba3-97e8-a2631a306245"
      unitRef="usd">100000000</cgnx:Repurchasedsharestotalcost>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i680260920a244ceea6d6b45594dda05e_D20180101-20180401"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzI5NjM_a487d6ab-0519-4acd-bfdc-d7551aa715b0"
      unitRef="shares">803000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i680260920a244ceea6d6b45594dda05e_D20180101-20180401"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzI5ODY_ecf83e63-5c8d-494b-a449-8c47181c6d01"
      unitRef="usd">45200000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="i82791ebbdb2d4f73853570e7517f3d7d_I20180201"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMwNzk_83911b91-0f37-49fc-afa8-bbfdccabd536"
      unitRef="usd">150000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i84808d8bcf3b40a8bf77cc46b34bcf52_D20180201-20180228"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMxMzg_6fb89954-f4ac-470d-bd50-fac171907e8f"
      unitRef="shares">3174000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i84808d8bcf3b40a8bf77cc46b34bcf52_D20180201-20180228"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMxNjE_198dff34-1a92-4297-aa65-1e9170e05f0b"
      unitRef="usd">150000000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="ifae0eb830ac74cccafe0924a206f022e_I20181029"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMyODY_20b24745-1a66-43bc-af9c-862e00c29eef"
      unitRef="usd">200000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i473e7a64a83447199f7bf33c5a6abd76_D20181001-20181231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMzNDU_cff45326-f8e7-4ea4-a0a9-436133669967"
      unitRef="shares">203000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i473e7a64a83447199f7bf33c5a6abd76_D20181001-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzMzNjg_0680b8a0-180d-4323-97e8-3059693df6d0"
      unitRef="usd">8622000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i4e62174a29dc4fc7b8238d08ab0deeec_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzM0NDk_4db26f95-4bf8-4ace-8ca3-cb4675a7fabc"
      unitRef="usd">203822000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i8f883d77d8a34a5d99abb929376f85dd_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzM0NDk_768ad019-f69d-4c9b-bf6f-98b776c13543"
      unitRef="usd">203822000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="i1661c3b621a94e96a52ae601c8ee5e7b_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzM0ODY_e78cbf78-c5c0-44dd-9a14-0921dc04ea4d"
      unitRef="shares">1398000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="i1661c3b621a94e96a52ae601c8ee5e7b_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzM1MDk_ab4f8f2e-bf69-4104-a905-23023a4918e0"
      unitRef="usd">61690000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchasedDuringPeriodShares
      contextRef="iab80bdfd853640dc95144e692cb58029_D20200101-20200329"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2MzQzNTE_bc126ae5-747a-4a55-9299-987469be9b4c"
      unitRef="shares">1215000</us-gaap:StockRepurchasedDuringPeriodShares>
    <us-gaap:StockRepurchasedDuringPeriodValue
      contextRef="iab80bdfd853640dc95144e692cb58029_D20200101-20200329"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2MzQzNjQ_730f9c45-348c-4fcb-86a2-3198f5310c09"
      unitRef="usd">51036000</us-gaap:StockRepurchasedDuringPeriodValue>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="iba2e5e421b5b4a57b2a259c12b514f1e_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzM2OTI_541112ab-3cf7-4ffa-bb6a-3aa812a3d71c"
      unitRef="usd">78652000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <us-gaap:StockRepurchaseProgramAuthorizedAmount1
      contextRef="ic6c4df4e7a9a402fbdd4bbc4286660dd_I20200312"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2MzYwNzM_9dda6027-6b6f-412e-a75c-86ab2468789b"
      unitRef="usd">200000000</us-gaap:StockRepurchaseProgramAuthorizedAmount1>
    <us-gaap:CommonStockDividendsPerShareCashPaid
      contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2Mzk2ODk_f67cabe9-6d35-4503-8deb-361f8d94f9ac"
      unitRef="usdPerShare">2.00</us-gaap:CommonStockDividendsPerShareCashPaid>
    <us-gaap:PaymentsOfDividends
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzQyODU_f7701e12-0831-42d1-affb-c0f56338cb56"
      unitRef="usd">390508000</us-gaap:PaymentsOfDividends>
    <us-gaap:PaymentsOfDividends
      contextRef="if71679ad1ab44c19930e3c255a129572_D20201228-20201228"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzEwOTk1MTE2Mzk2OTc_421512f3-64a9-4220-91a3-3f13a2fdb94d"
      unitRef="usd">351428000</us-gaap:PaymentsOfDividends>
    <us-gaap:PaymentsOfDividends
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzQyOTI_ff2466c5-b028-40a4-a40e-93f1dfe8ff9f"
      unitRef="usd">35124000</us-gaap:PaymentsOfDividends>
    <us-gaap:PaymentsOfDividends
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNTQvZnJhZzoxYmQ3ODlhMGMwNmQ0MjY1OWUwNDM4ZmIyNWFmMGEwYy90ZXh0cmVnaW9uOjFiZDc4OWEwYzA2ZDQyNjU5ZTA0MzhmYjI1YWYwYTBjXzE2NDkyNjc0NTQ4NjI_d1410f3b-877a-4eff-9252-b062baff1759"
      unitRef="usd">31865000</us-gaap:PaymentsOfDividends>
    <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzM0NDE_4c810f99-4063-450c-96df-5fe2b2d79280">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, 2020, the Company had 16,260,393 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:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzQwMA_385ebae8-1c19-44f1-862e-1dcc62372ed6"&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:10pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2019&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;12,899&#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;37.95&#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;1,245&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;54.68&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;(4,565)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;27.54&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 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;(609)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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.28&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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, 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:700;line-height:100%"&gt;8,970&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;44.73&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;7.11&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;318,873&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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, 2020&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,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;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;33.79&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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.60&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;145,735&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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, 2020 (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;8,235&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;44.08&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;7.01&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;298,118&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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:9pt;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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;2018&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.4&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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.9&#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.41&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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.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;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.35&#160;&lt;/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;37&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;39&#160;&lt;/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;5.3&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.4&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&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;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 $19.62 in 2020, $18.62 in 2019, and $20.84 in 2018.&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 $166,796,000 in 2020, $90,762,000 in 2019, and $52,629,000 in 2018. The total fair value of stock options vested was $45,998,000 in 2020, $38,974,000 in 2019, and $31,106,000 in 2018.&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-bottom:5pt;margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2019&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;150&#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;48.63&#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;446&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;52.09&#160;&lt;/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;&#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;/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;(42)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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.61&#160;&lt;/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, 2020&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;554&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;51.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:#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:5pt;text-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&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 RSUs granted in 2019 was $48.61. There were no RSUs granted in 2018. There were no RSUs that vested in 2020, 2019, and 2018.&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 7% 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 an increase to compensation expense of $1,787,000 in 2020, a decrease to compensation expense of $499,000 in 2019, and an increase to compensation expense of $1,283,000 in 2018.&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, 2020, total unrecognized compensation expense related to non-vested stock-based awards, including stock options and RSUs, was $51,825,000, which is expected to be recognized over a weighted-average period of 1.7 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 $42,661,000, which includes credits of $1,401,000 relating to grants cancelled as a result of the Company's workforce reduction, and $6,569,000, respectively, in 2020, $45,589,000 and $7,756,000, respectively, in 2019, and $41,090,000 and $7,317,000, respectively, in 2018. No compensation expense was capitalized in 2020, 2019, or 2018.&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;2018&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,365&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,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;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;2,447&#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,387&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,578&#160;&lt;/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;27,909&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;24,065&#160;&lt;/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;42,661&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;41,090&#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="i651cdc8b58564e339fa15af8d913fa7b_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIyMQ_b7e6ad25-b5e1-4b29-8973-d1966b7ecbf5"
      unitRef="shares">16260393</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="ibc99913a4dd04ed587dd18819f2860b9_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzQwNg_ae4f4c74-654f-4b21-ab63-dfbc9ffa4178">P5Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <cgnx:ExpirationPeriodOfStockOptionPlan
      contextRef="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzQ1Mw_c1732eec-e3f0-4e0f-9657-f88d40e4bf85">P10Y</cgnx:ExpirationPeriodOfStockOptionPlan>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1
      contextRef="i38980c90881940f69c5ee24c245a2ff9_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzUwMw_ec74a34f-e88a-42e5-a617-a07f2b015f3f">P3Y</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1>
    <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzM0MzM_081e3d23-6fa1-4cf7-b511-c2bc20dcf183">&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:10pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2019&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;12,899&#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;37.95&#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;1,245&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;54.68&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;(4,565)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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;27.54&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 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;(609)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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.28&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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, 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:700;line-height:100%"&gt;8,970&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;44.73&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;7.11&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;318,873&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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, 2020&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,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;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;33.79&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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.60&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;145,735&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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, 2020 (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;8,235&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;44.08&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;7.01&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;298,118&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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:9pt;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="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzEtMS0xLTEtMA_b07f0c3e-036e-4907-b30b-937c1db0f983"
      unitRef="shares">12899000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzEtMy0xLTEtMA_384dc0ba-0607-4780-9aab-edc9b2c33953"
      unitRef="usdPerShare">37.95</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzItMS0xLTEtMA_1c05ea6a-79e6-4c96-aae9-ab48e18e7856"
      unitRef="shares">1245000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzItMy0xLTEtMA_d08205b6-7a14-487a-bff6-920701ae4ab3"
      unitRef="usdPerShare">54.68</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
    <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzMtMS0xLTEtMA_71bd5ccc-4f1f-4ab2-b3f4-468930422583"
      unitRef="shares">4565000</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
    <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzMtMy0xLTEtMA_9221f39c-330e-4f66-aba2-58659bcd95af"
      unitRef="usdPerShare">27.54</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzQtMS0xLTEtMA_f50dc390-f2cc-40c9-8151-b38e9f78cde5"
      unitRef="shares">609000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzQtMy0xLTEtMA_01b07203-9f47-4197-bcf4-9bf8157ddfe8"
      unitRef="usdPerShare">50.28</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzUtMS0xLTEtMA_dc93de64-ed40-4ddb-9fb0-a8dca823df16"
      unitRef="shares">8970000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzUtMy0xLTEtMA_783b9e66-06eb-4555-9448-536f5cbeedf7"
      unitRef="usdPerShare">44.73</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzUtNS0xLTEtMA_6c0f99fc-10d7-48fa-84e8-eef3a673f632">P7Y1M9D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzUtNy0xLTEtMA_66faa6f7-d376-4baa-86aa-75f890cc00df"
      unitRef="usd">318873000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzYtMS0xLTEtMA_4aa3c5df-82f2-46eb-ab28-521c1b342160"
      unitRef="shares">3135000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzYtMy0xLTEtMA_cccb2ccd-70ec-4736-b72a-d3f3582bfcc2"
      unitRef="usdPerShare">33.79</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzYtNS0xLTEtMA_a0ed42cb-bbac-48a4-aa48-ff1fa7f5fb5b">P5Y7M6D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzYtNy0xLTEtMA_d77c9950-b79d-41b2-aa5d-af5708ee7989"
      unitRef="usd">145735000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableAggregateIntrinsicValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzctMS0xLTEtMA_5d7507d9-a8fc-4d6f-8293-015cff2b10c3"
      unitRef="shares">8235000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzctMy0xLTEtMA_d28df3a4-d6b1-42fa-b501-85cb98773ffe"
      unitRef="usdPerShare">44.08</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzctNS0xLTEtMA_d7849b1d-bc89-4a79-bee1-d2c7607b6a3f">P7Y3D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpkOWE2MzEwNmUxYjA0OTQ1ODdhMWQ2N2I4ZmQyM2ZmNi90YWJsZXJhbmdlOmQ5YTYzMTA2ZTFiMDQ5NDU4N2ExZDY3YjhmZDIzZmY2XzctNy0xLTEtMA_1d7b53d1-d711-45d4-a54f-d78aea412cd6"
      unitRef="usd">298118000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue>
    <us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzM0MTA_e4fc3ca8-c6eb-4e75-bc1b-1c9800998365">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;2018&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.4&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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.9&#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.41&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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.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;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.35&#160;&lt;/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;37&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;39&#160;&lt;/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;5.3&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.4&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzItMS0xLTEtMA_01b20bb3-6318-45eb-a865-d8823f2c52e7"
      unitRef="number">0.014</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="ida6e37838d504208943572dbc92ab92b_D20190101-20191231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzItMy0xLTEtMA_3c5e5f61-f58b-45c0-b534-804d2951cefc"
      unitRef="number">0.027</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate
      contextRef="i809038d6962540f18bd0b417106a9f55_D20180101-20181231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzItNS0xLTEtMA_09f01f6d-67ee-44d6-a5d4-e41634202bcc"
      unitRef="number">0.029</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzMtMS0xLTEtMA_748b34a2-2f44-47d8-a11c-696939fe92fc"
      unitRef="number">0.0041</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="ida6e37838d504208943572dbc92ab92b_D20190101-20191231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzMtMy0xLTEtMA_6a976066-b26d-4aa8-b55b-a9dadd8d3101"
      unitRef="number">0.0039</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate
      contextRef="i809038d6962540f18bd0b417106a9f55_D20180101-20181231"
      decimals="4"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzMtNS0xLTEtMA_0020e482-350f-4557-a264-398ad4bc8aa5"
      unitRef="number">0.0035</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzQtMS0xLTEtMA_665e2393-1dde-43ee-a34b-efd570be45c5"
      unitRef="number">0.37</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="ida6e37838d504208943572dbc92ab92b_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzQtMy0xLTEtMA_9019e544-105f-496e-afbf-ecb9e05bbeac"
      unitRef="number">0.37</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate
      contextRef="i809038d6962540f18bd0b417106a9f55_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzQtNS0xLTEtMA_e9545bda-4c7b-4969-acf8-c6b730cd42a1"
      unitRef="number">0.39</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzUtMS0xLTEtMA_8323d7b4-d7bb-49a6-bdf7-014800a128b1">P6Y</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="ida6e37838d504208943572dbc92ab92b_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzUtMy0xLTEtMA_ebb15e79-76a6-4d2a-b658-44329f49860f">P5Y3M18D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1
      contextRef="i809038d6962540f18bd0b417106a9f55_D20180101-20181231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTpmNTU3MTY1YTQ3MmI0MWM1YjBjYTAyNzc5NjhhNTNmZC90YWJsZXJhbmdlOmY1NTcxNjVhNDcyYjQxYzViMGNhMDI3Nzk2OGE1M2ZkXzUtNS0xLTEtMA_dce42fc1-c78b-4e62-9b10-1ceab122935f">P5Y4M24D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzE4ODY_6e720165-393b-4113-a9bf-4a5876877527"
      unitRef="usdPerShare">19.62</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzE4OTY_5aad2f92-73d7-47b9-8bae-8459b404a0da"
      unitRef="usdPerShare">18.62</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzE5MTA_014198cf-5570-4061-bf92-4fb2c5fc7774"
      unitRef="usdPerShare">20.84</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzE5Nzc_9a9fcb91-070f-4452-9996-08a698d4d93f"
      unitRef="usd">166796000</cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue>
    <cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzE5ODc_80626e6f-bebf-4410-b381-f81625ce0159"
      unitRef="usd">90762000</cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue>
    <cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIwMDE_52d43b93-addb-4db1-8af0-cc0e3760fe00"
      unitRef="usd">52629000</cgnx:SharesBasedCompensationArrangementBySharesBasedPaymentAwardOptionsExercisedIntrinsicValue>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIwNjA_4f892131-c991-4af5-8fe3-0528f0d5e1fd"
      unitRef="usd">45998000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIwNzA_eb7ff02b-54a3-4fc0-ad50-98cb2b70f9d1"
      unitRef="usd">38974000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue>
    <cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIwODQ_dd3a2ba8-5202-4ad5-8cef-905e2b5c8fb9"
      unitRef="usd">31106000</cgnx:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedFairValue>
    <us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzM0MjY_d70989d5-2c65-48d9-a530-b7cf73b91cab">&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-bottom:5pt;margin-top:10pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2019&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;150&#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;48.63&#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;446&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;52.09&#160;&lt;/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;&#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;/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;(42)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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.61&#160;&lt;/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, 2020&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;554&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;51.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:#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="id2ec20935d9d4d07b547537940241758_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzEtMS0xLTEtMA_535165cc-f104-4ea1-8abf-dbce1e6e0cc8"
      unitRef="shares">150000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="id2ec20935d9d4d07b547537940241758_I20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzEtMy0xLTEtMA_bbc78860-c8ed-4d34-9e66-4ade2bef9366"
      unitRef="usdPerShare">48.63</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod
      contextRef="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzItMS0xLTEtMA_470aa53c-110c-4fb4-94b7-65d0d65b07eb"
      unitRef="shares">446000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzItMy0xLTEtMA_a0f8c075-2938-4937-ba23-c1929781224e"
      unitRef="usdPerShare">52.09</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzMtMS0xLTEtMA_ba96f695-984f-4d7e-90d6-f73f55f8e83d"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue
      contextRef="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzMtMy0xLTEtMA_3a8afc85-f44c-47c3-b6f3-7dc6c8d3d0c3"
      unitRef="usdPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod
      contextRef="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzQtMS0xLTEtMA_835a3eea-c181-4f92-96a2-9c5453ccc5c2"
      unitRef="shares">42000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue
      contextRef="i893a4f0e467b4b9f938475ebd56e35b5_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzQtMy0xLTEtMA_93cbfa98-c199-4249-a253-b6c79cfec8ee"
      unitRef="usdPerShare">50.61</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber
      contextRef="ib541eff2ba94440dbea39fc8fbf7e5de_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzUtMS0xLTEtMA_852962b0-0f8c-4513-ac85-cfb2ae61d25f"
      unitRef="shares">554000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue
      contextRef="ib541eff2ba94440dbea39fc8fbf7e5de_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTo4Nzg3MmY4YTE4Mjc0Nzc3YjhhYmRmZGE1OGJlYTAwMC90YWJsZXJhbmdlOjg3ODcyZjhhMTgyNzQ3NzdiOGFiZGZkYTU4YmVhMDAwXzUtMy0xLTEtMA_b28b6783-f035-4f7e-8828-3d51ec8f9862"
      unitRef="usdPerShare">51.27</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i779443a03a8044f2ad85a8a7ef9d1010_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzI2NTE_b9f94c93-10b8-492b-8f4b-746eb79dc86d"
      unitRef="usdPerShare">48.61</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue
      contextRef="i0100324df77340559da96b293701bf79_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzI3Mjc_7ec2e1b1-c33c-4881-8e03-05f7e139c5ea"
      unitRef="usdPerShare">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i4a55c180e4c04a52b6246037f9445c54_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzI2Mzk_23bde921-2898-4c81-b875-cec9efd01c77"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i779443a03a8044f2ad85a8a7ef9d1010_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzI2Mzk_452dcae3-cdcf-4824-a577-a15d0e152d88"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod
      contextRef="i0100324df77340559da96b293701bf79_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzI2Mzk_f44ae901-f2bc-4bc3-94df-62ded62d72fe"
      unitRef="shares">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod>
    <cgnx:NumberOfGroupsWithinEmployeePopulation
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzIyNzE_48cacdf3-5792-4a3f-b2cd-a182946fce81"
      unitRef="group">2</cgnx:NumberOfGroupsWithinEmployeePopulation>
    <cgnx:EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI0Mjg_fd9597b8-dc99-4dcd-934b-cb06aa2577e9"
      unitRef="number">0.07</cgnx:EstimatedForfeitureRateForUnvestedOptionsForSeniorManagement>
    <cgnx:EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI0OTE_8c4b6aba-93be-424f-98a8-053363c2d34c"
      unitRef="number">0.12</cgnx:EstimatedForfeitureRateForUnvestedOptionsForAllNonSeniorManagement>
    <cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI2NTM_b9466fa0-7b46-4bc0-aa38-5bf7504bfd56"
      unitRef="usd">1787000</cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates>
    <cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI3MDQ_ee827ada-450d-417c-8164-4b7ab858ccde"
      unitRef="usd">499000</cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates>
    <cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI3NTY_44061e07-7a94-4601-8f2c-79cddf679ec6"
      unitRef="usd">1283000</cgnx:IncreaseDecreaseInCompensationExpenseDueToRevisedEstimatedForfeitureRates>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI5MDk_9f20361d-673d-4eec-ba01-96157132f2e6"
      unitRef="usd">51825000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions>
    <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzI5ODI_660c362f-3093-4ab9-9cd2-0af497cf4017">P1Y8M12D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMwODU_5a115cf7-8165-4722-a346-9a1280f3c366"
      unitRef="usd">42661000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:ShareBasedCompensation
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzEwOTk1MTE2MzQ0ODg_2521bff0-3a99-4d23-b6cb-8148bf4c951f"
      unitRef="usd">1401000</us-gaap:ShareBasedCompensation>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMwOTI_063dde73-3766-4cc2-a86b-a8ddbcf32d9c"
      unitRef="usd">6569000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMxMTc_8d960d60-14d3-476f-a472-917952754aab"
      unitRef="usd">45589000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMxMjQ_dfd5d5b8-6790-43b3-a655-acfda9a9ec17"
      unitRef="usd">7756000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMxNTM_448e1177-dff6-4dc9-ba35-0d92700ae69d"
      unitRef="usd">41090000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzMxNjA_16b38e72-b5ec-4d5c-96e9-d7da54520bee"
      unitRef="usd">7317000</us-gaap:EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense>
    <us-gaap:ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzM0MTU_0a276cbe-3681-4d81-a916-312603d8d14f">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;2018&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,365&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,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;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;2,447&#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,387&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,578&#160;&lt;/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;27,909&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;24,065&#160;&lt;/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;42,661&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;41,090&#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="if426f384a9bb46cbacd084e8d71c197a_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzItMS0xLTEtMA_8d294452-82b1-4ae6-b47b-c8ee71b24ff1"
      unitRef="usd">1365000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i3f22b7eff3054cdc99db890d8f600218_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzItMy0xLTEtMA_7e2c4afe-9c85-448b-baa5-7afc9cea19ca"
      unitRef="usd">1504000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i4bb46d4ab7b349518f7b7d7470bab716_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzItNS0xLTEtMA_29553544-8145-4bca-b792-803ab5f4f277"
      unitRef="usd">2447000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i1db9dd2158be4fd2a250c3e922e31be2_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzMtMS0xLTEtMA_6489cace-7714-43eb-a7b9-705d8e2283b2"
      unitRef="usd">13387000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ifa6acb19879149b1ae589acfec1446b0_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzMtMy0xLTEtMA_3241a443-6a63-4d0f-a6fb-177b35e488de"
      unitRef="usd">15748000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ieed8f593cfe7487bb17f454efb335bdd_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzMtNS0xLTEtMA_a0553835-b410-4a5e-a0f2-a00c9d8c10a9"
      unitRef="usd">14578000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i462c024635b94c3bb4a833b35d0998ca_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzQtMS0xLTEtMA_daf7d33e-49a1-4a1b-b6eb-c3c2806bd098"
      unitRef="usd">27909000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="icd5ea7b2dba043e39df4b54b2bfa446f_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzQtMy0xLTEtMA_db5eb107-58a1-420b-943d-2fbe3f488287"
      unitRef="usd">28337000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i2903f39accda4c9fbc44e47302e41e23_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzQtNS0xLTEtMA_e682af11-fe24-4deb-ac1a-572ff59d5a27"
      unitRef="usd">24065000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzYtMS0xLTEtMA_398ebddc-2e98-4883-8af0-f5c44be15c15"
      unitRef="usd">42661000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzYtMy0xLTEtMA_5ac16c7f-0290-4a85-a77e-4519a24fed76"
      unitRef="usd">45589000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:AllocatedShareBasedCompensationExpense
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90YWJsZTphYzg3NzMxNjMxYzQ0MzdjOTAzMjBjMjhhNmQ2MmRhMS90YWJsZXJhbmdlOmFjODc3MzE2MzFjNDQzN2M5MDMyMGMyOGE2ZDYyZGExXzYtNS0xLTEtMA_22ba929a-f046-4e90-b166-f7c8d5e58f15"
      unitRef="usd">41090000</us-gaap:AllocatedShareBasedCompensationExpense>
    <us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzc0MQ_6e273630-b15a-4201-a1b2-d0a2081136bc">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,636,000 in 2020, $2,729,000 in 2019, and $2,540,000 in 2018. 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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzE1MA_6bd6f4f8-99de-4652-ba74-3a8e7952816b">P21Y</cgnx:MinimumAgeToBeEligibleToDefinedContributionPlan>
    <us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzE3NA_1f5db705-e0a9-46bb-a0bd-bf9ec94ad59d"
      unitRef="number">1</us-gaap:DefinedContributionPlanMaximumAnnualContributionsPerEmployeePercent>
    <us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzM2NQ_4c79a1a0-f741-4631-bc20-1a6b9a4436d4"
      unitRef="number">0.50</us-gaap:DefinedContributionPlanEmployerMatchingContributionPercentOfMatch>
    <us-gaap:DefinedContributionPlanEmployerMatchingContributionPercent
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzM4MQ_44fbc1c7-4cc4-481c-a35b-901282aa1fb8"
      unitRef="number">0.06</us-gaap:DefinedContributionPlanEmployerMatchingContributionPercent>
    <cgnx:CompanyContributionsVestAtEndOfOneYear
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzQ0NA_9e3c7791-a3e5-4345-b3b0-4c1917526acb"
      unitRef="number">0.25</cgnx:CompanyContributionsVestAtEndOfOneYear>
    <cgnx:CompanyContributionsVestAtEndOfTwoYear
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzQ0OA_1bb8c50d-00ee-4447-a941-f8c581610d49"
      unitRef="number">0.50</cgnx:CompanyContributionsVestAtEndOfTwoYear>
    <cgnx:CompanyContributionsVestAtEndOfThreeYears
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzQ1Mg_d240e1d2-8c5e-49d8-a54b-57f48f45e63f"
      unitRef="number">0.75</cgnx:CompanyContributionsVestAtEndOfThreeYears>
    <cgnx:CompanyContributionsVestAtEndOfFourYears
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzQ2MA_a30160db-895f-4bda-ae53-020f5aedd135"
      unitRef="number">1</cgnx:CompanyContributionsVestAtEndOfFourYears>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzU4OQ_92ead2e7-1b78-46c5-8e8f-8c528163676d"
      unitRef="usd">2636000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzU5OQ_44ce9067-8b08-41b3-ada3-7f8749eefa86"
      unitRef="usd">2729000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:DefinedContributionPlanCostRecognized
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjYvZnJhZzpmMGYxNDc5NzJhZGU0MDYyOTc5ZWZlNzEzYzI3MzA2Yi90ZXh0cmVnaW9uOmYwZjE0Nzk3MmFkZTQwNjI5NzllZmU3MTNjMjczMDZiXzYxMw_b7c6be7f-d16c-4930-a261-9381506a0757"
      unitRef="usd">2540000</us-gaap:DefinedContributionPlanCostRecognized>
    <us-gaap:IncomeTaxDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzI2MDI_cf056330-ad31-440b-b63c-83f21746609b">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 $39,425,000 in 2020, $31,396,000 in 2019, and $39,042,000 in 2018. Foreign income before taxes was $147,486,000 in 2020, $131,598,000 in 2019, and $195,532,000 in 2018. &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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;2018&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;160&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;10,624&#160;&lt;/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;921&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;(879)&lt;/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;13,197&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,307&#160;&lt;/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;14,278&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;16,052&#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;(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;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,271)&lt;/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;(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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;padding: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;15,269&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;(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;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)&lt;/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;(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;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;(745)&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;10,725&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;(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;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;15,307&#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;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&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;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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;2018&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;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;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: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;(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;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;(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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;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;(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;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 expense (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;(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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;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:#cceeff;padding:2px 1pt 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;/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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;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;(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;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;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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;Discrete tax expense (benefit) related to Tax Act&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;(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;/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 discrete tax events&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;(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;&#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;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;2&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;/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;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;6&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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-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:#ffffff;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:#ffffff;padding:0 1pt"/&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:400;line-height:100%"&gt;7&#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;span style="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: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;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:13pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:13pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:13pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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-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;There were no material differences to the Company's reported results in prior 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%;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;The effective tax rate included a decrease in tax expense of $12,788,000 in 2020, $6,472,000 in 2019, and $8,488,000 in 2018 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;In 2020, the Company recorded discrete tax items related to the final true-up of the prior year's tax accrual upon filing the related tax return. 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="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 and believes it has adequate reserves for this German tax exposure. Management will continue to monitor this law and court rulings in Germany. &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 will be realized over 15 years as future tax deductions. From a United States perspective, the sale is 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 its current effective tax rate excluding discrete items to increase slightly 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%"&gt;In December 2017, the Tax Cuts and Jobs Act of 2017 (Tax Act) was signed into law. In 2018, the Company recorded an increase in tax expense of $3,240,000 from the write-down of its deferred tax assets primarily relating to guidance under the Tax Act regarding stock-based compensation. In 2018, the Company recorded a decrease in tax expense of $11,028,000 to revise its estimate of a one-time transition tax on unrepatriated foreign earnings resulting from the Tax Act, which resulted in a revised estimate for the one-time transition tax of $90,351,000. &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;Other discrete tax items, none of which were individually material, resulted in a net decrease in tax expense of $307,000 in 2020, $1,932,000 in 2019, and $1,847,000 in 2018.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span&gt;&lt;br/&gt;&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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;7,294&#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;199&#160;&lt;/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;5,259&#160;&lt;/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,161)&lt;/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, 2019&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;11,591&#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 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 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;13,952&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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: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,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 Company's reserve for income taxes, including gross interest and penalties, was $12,591,000 as of December 31, 2019, which included $11,563,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,332,000 and $1,000,000 as of December&#160;31, 2020 and December&#160;31, 2019, 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 $1,900,000 to $2,000,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, and China, and within the United States, Massachusetts. The statutory tax rate is 12.5% in Ireland and 25% in China, 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 6 percentage points for 2020 and 9 percentage points for both 2019 and 2018. 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 2019 remain open to examination by the Internal Revenue Service ("IRS") and various state taxing authorities. The tax years 2016 through 2019 remain open to examination by various taxing authorities in other jurisdictions in which the Company operates. The Company has recently been notified that it is under audit by the IRS for the tax year 2017. Management believes the Company is adequately reserved for this audit. 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 $340,000, $116,000, and $91,000 in 2020, 2019, and 2018, 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 $33,695,000 in 2020, $13,443,000 in 2019, and $41,430,000 in 2018.&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;Non-current 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;424,156&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;437,500&#160;&lt;/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;13,294&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,042&#160;&lt;/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;10,171&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;8,491&#160;&lt;/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;5,976&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;2,934&#160;&lt;/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;4,932&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,609&#160;&lt;/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;4,211&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,522&#160;&lt;/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;602&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,286&#160;&lt;/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;4,342&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,550&#160;&lt;/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 non-current 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;467,684&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;476,934&#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,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;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,312)&lt;/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;459,116&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;469,622&#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: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:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-current 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;(339,325)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;(350,000)&lt;/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;Other GILTI tax basis differences&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;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,446)&lt;/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;/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:#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;(339,364)&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;(352,446)&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&gt;&lt;br/&gt;&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 31, 2020, the Company had a valuation allowance for state research and development tax credits of $8,568,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, 2020, the Company had state research and development tax credit carryforwards of $11,361,000, net of federal tax, which will begin to expire for the 2020 tax return.&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;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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzYx_5bc158b3-763a-42a5-bd56-8644f2e0e791"
      unitRef="usd">39425000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5Xzcx_0f63f285-076a-43bc-8779-8f798cc5969b"
      unitRef="usd">31396000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5Xzg1_d559cf51-495b-4df0-926a-66c2487daff7"
      unitRef="usd">39042000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEyOA_6eb29710-7b8f-4f8d-aceb-4c80d3302611"
      unitRef="usd">147486000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEzOA_c89bc6e7-1e13-432e-8796-5a9a3a1c8481"
      unitRef="usd">131598000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzE1Mg_3e9e02d5-17a5-4f68-b942-8a61f8e83ae2"
      unitRef="usd">195532000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign>
    <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzkzNjA_4b533ab1-71c0-4a5d-94b9-688f13d8d24e">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;2018&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;160&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;10,624&#160;&lt;/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;921&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;(879)&lt;/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;13,197&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,307&#160;&lt;/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;14,278&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;16,052&#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;(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;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,271)&lt;/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;(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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;padding: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;15,269&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;(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;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)&lt;/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;(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;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;(745)&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;10,725&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;(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;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;15,307&#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;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzMtMS0xLTEtMA_b3c21153-3908-4511-a326-5069cbdb5e8e"
      unitRef="usd">160000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzMtMy0xLTEtMA_e27700dc-3b2f-49bd-8987-8270379d4442"
      unitRef="usd">15854000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentFederalTaxExpenseBenefit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzMtNS0xLTEtMA_de931440-fe44-4767-92c9-10e61d26bf05"
      unitRef="usd">10624000</us-gaap:CurrentFederalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzQtMS0xLTEtMA_be0e01a7-52d3-4820-a5d4-a0079e75f4b4"
      unitRef="usd">921000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzQtMy0xLTEtMA_71299a0c-9d60-4d2b-af76-8aa9c33422c0"
      unitRef="usd">2108000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentStateAndLocalTaxExpenseBenefit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzQtNS0xLTEtMA_083d3f88-198a-41b5-a9c9-1e663161e21f"
      unitRef="usd">-879000</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzUtMS0xLTEtMA_8bc25212-8f68-4e33-81ca-f300b7e87601"
      unitRef="usd">13197000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzUtMy0xLTEtMA_086e92c5-8d9f-4dcc-98ed-149d56769931"
      unitRef="usd">30670000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentForeignTaxExpenseBenefit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzUtNS0xLTEtMA_5db5bfa3-5b50-4c05-a7ea-76d4d3059e5d"
      unitRef="usd">6307000</us-gaap:CurrentForeignTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzYtMS0xLTEtMA_9731c87d-7f30-4c31-b7c5-354d89d85d6c"
      unitRef="usd">14278000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzYtMy0xLTEtMA_71cec671-5735-4ca7-8b58-cf8aeb389c13"
      unitRef="usd">48632000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:CurrentIncomeTaxExpenseBenefit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzYtNS0xLTEtMA_97a6cc9d-f83b-4478-8d48-9aaf75cd0be6"
      unitRef="usd">16052000</us-gaap:CurrentIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzgtMS0xLTEtMA_2387ded9-15ca-44d4-b771-ec349d6577d5"
      unitRef="usd">-18266000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzgtMy0xLTEtMA_3426ddd8-0275-49d5-844b-2dd8174e6175"
      unitRef="usd">352808000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredFederalIncomeTaxExpenseBenefit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzgtNS0xLTEtMA_c014020d-d73d-4ff6-b3ff-ab11f09b5edd"
      unitRef="usd">-1271000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzktMS0xLTEtMA_f483c8b1-ecac-41ee-8d4e-5a06d025333f"
      unitRef="usd">-556000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzktMy0xLTEtMA_b93cf2c2-6f14-425c-b2fc-d91f5333c4d6"
      unitRef="usd">183000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzktNS0xLTEtMA_13b3252e-5681-41af-b181-80177b05790e"
      unitRef="usd">554000</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEwLTEtMS0xLTA_45a371c4-5ff7-4ae5-8ebb-8451bcaa1491"
      unitRef="usd">15269000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEwLTMtMS0xLTA_fe029ab7-415a-4abf-ba76-df8968261202"
      unitRef="usd">-442494000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredForeignIncomeTaxExpenseBenefit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEwLTUtMS0xLTA_217fd87c-6d9e-42a0-a994-4c174c934502"
      unitRef="usd">-28000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzExLTEtMS0xLTA_e99fdbc7-c6fd-4066-8c34-9ac57fe7af5a"
      unitRef="usd">-3553000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzExLTMtMS0xLTA_fe19c41e-8f08-4281-96f3-34894149e29d"
      unitRef="usd">-89503000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:DeferredIncomeTaxExpenseBenefit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzExLTUtMS0xLTA_f1dacb99-b682-4a4b-9f6f-c4e3f4741267"
      unitRef="usd">-745000</us-gaap:DeferredIncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEyLTEtMS0xLTA_63cd7217-1de2-40a4-9c3f-1b8963e283f9"
      unitRef="usd">10725000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEyLTMtMS0xLTA_883e5666-ae90-40df-bf6c-79ec78809e83"
      unitRef="usd">-40871000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozMDA3MWRhNmUxNmQ0NjMxOGI1ZWNjNzFkM2ZkNjcyMC90YWJsZXJhbmdlOjMwMDcxZGE2ZTE2ZDQ2MzE4YjVlY2M3MWQzZmQ2NzIwXzEyLTUtMS0xLTA_c0212818-4dbf-4ad9-a308-e56edc1a3a85"
      unitRef="usd">15307000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzkzNjM_8524e8f5-e9ac-4980-b69d-58e41c94c31e">&lt;div&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;2018&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;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;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: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;(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;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;(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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;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;(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;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 expense (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;(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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;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:#cceeff;padding:2px 1pt 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;/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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;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;(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;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;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;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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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;Discrete tax expense (benefit) related to Tax Act&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;(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;/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 discrete tax events&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;(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;&#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;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;2&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;/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;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;6&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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-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:#ffffff;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:#ffffff;padding:0 1pt"/&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:400;line-height:100%"&gt;7&#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;span style="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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzItMS0xLTEtMA_9a648956-7aa5-4921-ba33-551e4a221758"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzItMy0xLTEtMA_888cd496-82d6-4f78-99a7-ec9b6becfd54"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzItNS0xLTEtMA_f9e7ba43-5ed9-4e43-8d01-21623396a6cb"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzMtMS0xLTEtMA_23e09453-6321-48e4-ab7f-b6a3d3a48331"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzMtMy0xLTEtMA_3684d9a1-0c85-4028-93ac-ea5acbf05cbc"
      unitRef="number">0.02</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzMtNS0xLTEtMA_5e9da22e-a21e-40ef-88ac-342cadf37289"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzQtMS0xLTEtMA_20666dbc-4965-489a-828c-ea96b350159a"
      unitRef="number">-0.06</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzQtMy0xLTEtMA_77e62b77-4b9b-4a30-8df4-0fa1568448b7"
      unitRef="number">-0.09</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzQtNS0xLTEtMA_35019f11-ef87-45b8-b35c-81e1f177daee"
      unitRef="number">-0.09</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzUtMS0xLTEtMA_891ad50b-f8a3-490a-9fac-905cf8febe58"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzUtMy0xLTEtMA_b6d37c5c-b732-437c-bb75-66bfcfad96bd"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzUtNS0xLTEtMA_c18110d5-4a5f-4ace-b544-a473e292583a"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationTaxCredits>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzYtMS0xLTEtMA_51184f4c-0966-49cd-9bad-1ba328677b07"
      unitRef="number">0.07</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzYtMy0xLTEtMA_9ff6d6fa-47c1-4b72-8993-06bdbdd46d25"
      unitRef="number">0.04</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzYtNS0xLTEtMA_07dd008c-4b69-49ed-ae57-ed245f06f97f"
      unitRef="number">0.04</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzctMS0xLTEtMTU2Ng_0102e359-a42e-453d-9816-afef8e4b7c47"
      unitRef="number">-0.05</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzctMy0xLTEtMTU2OA_da78b5c7-100d-4db5-b790-0758a7ad5e37"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzctNS0xLTEtMTU3MA_4f7298bb-f787-49d9-8c9f-261c9268ce98"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlements>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzgtMS0xLTEtMTI2NjU_90663332-ce44-4307-8f46-10c080d00732"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzgtMy0xLTEtMTI2NjU_57b9ef35-76fb-4c1a-903e-b0387ba839a3"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign>
    <us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzgtNS0xLTEtMTI2NjU_0518d2b3-4bdc-4a4e-8731-c6f2d27b8e3b"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzktMS0xLTEtMA_f6e1c3ef-3fb9-45ce-86f4-3cff174d0b3c"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzktMy0xLTEtMA_28189a21-d82c-4219-9c8c-3d1b27f451c5"
      unitRef="number">0.18</cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzktNS0xLTEtMA_0a740528-f5dd-4467-a401-98e53535acb1"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEwLTEtMS0xLTA_09ab56e4-8089-4fb2-b17f-99b86ec82820"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEwLTMtMS0xLTA_e4f2e11f-b0f3-4589-b1a7-eb89c74bf398"
      unitRef="number">-2.68</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEwLTUtMS0xLTA_51b9e03f-353b-4290-8522-08559ead3149"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate>
    <cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzExLTEtMS0xLTA_e66bbbb0-246c-4e3c-880d-774de67269cc"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent>
    <cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzExLTMtMS0xLTA_0728f098-73c2-4f67-ad54-f82f3159d80e"
      unitRef="number">2.14</cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent>
    <cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzExLTUtMS0xLTA_0a423f83-a42b-4747-952a-8d6306f8a5b8"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent>
    <cgnx:EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTEtMS0xLTEyNjcy_36133ec1-bf50-4199-870c-e6bb07db04ee"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent>
    <cgnx:EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTMtMS0xLTEyNjcy_960d2f4e-3e6b-4e91-96ef-0391a7ee0da7"
      unitRef="number">0</cgnx:EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent>
    <cgnx:EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTUtMS0xLTEyNjcy_63e41627-ff9f-49ec-881c-b1bf33a0233d"
      unitRef="number">-0.03</cgnx:EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEyLTEtMS0xLTA_e8b4a62c-ab4a-4ea5-affa-883a2dcde485"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEyLTMtMS0xLTA_3a0519fa-3b12-4fee-bdf5-b4f91fba02bf"
      unitRef="number">-0.01</us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEyLTUtMS0xLTA_27f954a6-5cde-4eb7-ab34-95c919e529d8"
      unitRef="number">0</us-gaap:EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEzLTEtMS0xLTA_4e59fd7d-445f-442c-ab86-5fec6bfd4601"
      unitRef="number">0.02</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEzLTMtMS0xLTA_2d6211f1-3cc2-4fc9-b17d-ab33fe5409ba"
      unitRef="number">0.03</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzEzLTUtMS0xLTA_81d62e4a-f742-40c8-ac6a-a81b6866688a"
      unitRef="number">0.01</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTEtMS0xLTA_c65ffba5-ca6e-4fa1-9394-97df27b68a13"
      unitRef="number">0.06</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTMtMS0xLTA_5200d333-4fa5-4758-b845-7063bd9b7f3a"
      unitRef="number">-0.25</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:EffectiveIncomeTaxRateContinuingOperations
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTowMTllODNiNDBiMmY0YmY0OTY4NzJmOTdmNjQ2NDE4My90YWJsZXJhbmdlOjAxOWU4M2I0MGIyZjRiZjQ5Njg3MmY5N2Y2NDY0MTgzXzE0LTUtMS0xLTA_6d4525c1-fc14-4c8d-bbc4-ac11be12fa8a"
      unitRef="number">0.07</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
    <us-gaap:ScheduleOfChangeInAccountingEstimateTextBlock
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzEzMzA_f9a19851-a57b-4b9b-8c32-51719484fb45">&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:13pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:13pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:13pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzMtMS0xLTEtMTM4NzQ_e96ef75e-91d0-4d05-9597-0299e18cd8cb"
      unitRef="usd">162994000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments
      contextRef="ifbdf0ae819594cb49f4c1e2f90ad10af_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzMtMy0xLTEtMTM4NzQ_3a727895-40ec-4c15-8ae3-c6e71935c256"
      unitRef="usd">162994000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments>
    <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments
      contextRef="idc4d65f03e5f4807a2e320e83cb6f52c_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzMtNS0xLTEtMTM4NzQ_18db5bd4-99b7-433e-af55-2b908a8853bc"
      unitRef="usd">0</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzQtMS0xLTEtMTM4NzQ_276e3249-87db-46f8-ae12-ca2ddac2e44f"
      unitRef="usd">-40871000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="ifbdf0ae819594cb49f4c1e2f90ad10af_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzQtMy0xLTEtMTM4NzQ_3074a67b-05e0-4ca9-b21f-eb0c6a872078"
      unitRef="usd">-393317000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:IncomeTaxExpenseBenefit
      contextRef="idc4d65f03e5f4807a2e320e83cb6f52c_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzQtNS0xLTEtMTM4NzQ_2c724365-8083-4107-9bd0-67998fc592ff"
      unitRef="usd">352446000</us-gaap:IncomeTaxExpenseBenefit>
    <us-gaap:NetIncomeLoss
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzUtMS0xLTEtMTM4NzQ_fdaf3a31-f3a1-4a7d-9ad2-ca9b87b45830"
      unitRef="usd">203865000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ifbdf0ae819594cb49f4c1e2f90ad10af_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzUtMy0xLTEtMTM4NzQ_b676762e-187a-4976-b4d4-80af31e8b1d1"
      unitRef="usd">556311000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="idc4d65f03e5f4807a2e320e83cb6f52c_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzUtNS0xLTEtMTM4NzQ_1432c209-53ed-45c0-bcf1-32a8002db6de"
      unitRef="usd">-352446000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzgtMS0xLTEtMTM4NzY_4be1c994-b768-4c13-8f3e-570156abf1a2"
      unitRef="usdPerShare">1.19</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="ifbdf0ae819594cb49f4c1e2f90ad10af_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzgtMy0xLTEtMTM4NzY_b4c707cb-940a-4002-8067-3a3e94c4310e"
      unitRef="usdPerShare">3.25</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="idc4d65f03e5f4807a2e320e83cb6f52c_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzgtNS0xLTEtMTM4NzY_53ffa23d-89ff-4bd4-9c57-db35e53409ca"
      unitRef="usdPerShare">-2.06</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzktMS0xLTEtMTM4NzY_66c88be9-b955-4e10-9d48-8cf2ef1cf0ce"
      unitRef="usdPerShare">1.16</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="ifbdf0ae819594cb49f4c1e2f90ad10af_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzktMy0xLTEtMTM4NzY_7dd9cf0f-fd08-4911-8fe1-68e267ccc8a7"
      unitRef="usdPerShare">3.17</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="idc4d65f03e5f4807a2e320e83cb6f52c_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTphMmYyODdhYmIzNjY0YzUzYmNjMWJhNmRjYmE3YzYxNC90YWJsZXJhbmdlOmEyZjI4N2FiYjM2NjRjNTNiY2MxYmE2ZGNiYTdjNjE0XzktNS0xLTEtMTM4NzY_55984a30-2fbf-4fb3-9169-d447bc7fbc3d"
      unitRef="usdPerShare">-2.01</us-gaap:EarningsPerShareDiluted>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzMtMS0xLTEtMTM4Nzg_f3fef900-d06f-4033-9adf-e00f32bf0ef9"
      unitRef="usd">449519000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="ie91c97a2dae54d89aca19258376342cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzMtMy0xLTEtMTM4Nzg_26194317-71c4-499b-9b2b-14cdc344da50"
      unitRef="usd">469621000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredTaxAssetsGross
      contextRef="i9585a4990b0841d78d4b36d1b378c43b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzMtNS0xLTEtMTM4Nzg_e99cba7a-47ff-4b7f-a741-dc6b43b2489a"
      unitRef="usd">-20102000</us-gaap:DeferredTaxAssetsGross>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzQtMS0xLTEtMTM4Nzg_c7d34ce4-3487-4e0d-873c-13dd38ea9e78"
      unitRef="usd">332344000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="ie91c97a2dae54d89aca19258376342cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzQtMy0xLTEtMTM4Nzg_65775b05-92a0-4d9a-947e-9c6434acc60f"
      unitRef="usd">0</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:DeferredIncomeTaxLiabilities
      contextRef="i9585a4990b0841d78d4b36d1b378c43b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpkNDUwZDZiNGI0ZWE0NjljOTI4MjJhODJmNWY5MWE3MC90YWJsZXJhbmdlOmQ0NTBkNmI0YjRlYTQ2OWM5MjgyMmE4MmY1ZjkxYTcwXzQtNS0xLTEtMTM4Nzg_a4899883-eec9-49d2-88c9-d909dd7c4134"
      unitRef="usd">332344000</us-gaap:DeferredIncomeTaxLiabilities>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpmYWQ4YTIyODBlZjU0OGZiYWUyN2VhMmQ1NjI1MzcwOC90YWJsZXJhbmdlOmZhZDhhMjI4MGVmNTQ4ZmJhZTI3ZWEyZDU2MjUzNzA4XzMtMS0xLTEtMTM4ODA_270e430c-88a3-47f2-9e77-a0152421f595"
      unitRef="usd">753268000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="ie91c97a2dae54d89aca19258376342cd_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpmYWQ4YTIyODBlZjU0OGZiYWUyN2VhMmQ1NjI1MzcwOC90YWJsZXJhbmdlOmZhZDhhMjI4MGVmNTQ4ZmJhZTI3ZWEyZDU2MjUzNzA4XzMtMy0xLTEtMTM4ODA_02610b83-4dd4-4dce-95ae-fb3576e5bc88"
      unitRef="usd">1105714000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:RetainedEarningsAccumulatedDeficit
      contextRef="i9585a4990b0841d78d4b36d1b378c43b_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTpmYWQ4YTIyODBlZjU0OGZiYWUyN2VhMmQ1NjI1MzcwOC90YWJsZXJhbmdlOmZhZDhhMjI4MGVmNTQ4ZmJhZTI3ZWEyZDU2MjUzNzA4XzMtNS0xLTEtMTM4ODA_5b41d5f9-8f7a-46a6-8bf2-e32207213a74"
      unitRef="usd">-352446000</us-gaap:RetainedEarningsAccumulatedDeficit>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzA5ODM_4cc95cf7-6a62-4ec0-998e-5621155e2ddd"
      unitRef="usd">12788000</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzA5OTY_346a800a-a7a5-4e88-8672-4f7266c98cd8"
      unitRef="usd">6472000</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount>
    <us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzEwMTM_358cf073-74a3-4e0f-9443-f63bea05bb67"
      unitRef="usd">8488000</us-gaap:EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsForeign
      contextRef="ic48912cbc17b4251b7d020048b72df79_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzE1Mjk_a40c7dc5-e6fe-411f-b719-05f5ea9d31f9"
      unitRef="usd">13984000</us-gaap:IncomeTaxReconciliationTaxSettlementsForeign>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsForeign
      contextRef="ia73f3fc2b64c4e2582288e0adf3c57b1_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzE3OTE_6e8b1e60-1f40-43dc-92ef-58231e3f4c35"
      unitRef="usd">3267000</us-gaap:IncomeTaxReconciliationTaxSettlementsForeign>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsForeign
      contextRef="i5a515bc5bae6415eab49241663c963be_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzE4NjU_a5c9cc12-955a-4c4a-8348-55bcfeb5edb3"
      unitRef="usd">843000</us-gaap:IncomeTaxReconciliationTaxSettlementsForeign>
    <cgnx:DeferredTaxAssetsForeignTaxStructureChange
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-5"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzI0ODY_8f7832ef-d874-49cc-bc38-3c24112d5b3a"
      unitRef="usd">437500000</cgnx:DeferredTaxAssetsForeignTaxStructureChange>
    <cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzI4NzI_9f707186-d160-48f0-86fe-5502b760e4b5"
      unitRef="usd">350000000</cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome>
    <us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzMwMzY_543a91f1-71a6-47d1-95ba-ced473e95327"
      unitRef="usd">87500000</us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential>
    <cgnx:EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar
      contextRef="i011aed5572fd480ab06c7ea32ab87210_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzM0NDY_fcd84cf4-0ea0-484e-a6f2-c9eba0645f0b"
      unitRef="usd">28528000</cgnx:EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i6190f02336a543c295b3b8bcc1483263_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzM4NDgyOTA3MzM0Nzk_79bc1f80-9f97-4453-bc2f-47ac2e39e517"
      unitRef="usd">3700000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3NDU_c5b107f1-0950-4db9-8597-531225b8e425"
      unitRef="usd">3240000</us-gaap:TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit>
    <us-gaap:TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3MDI_ed217f23-d021-48f7-988e-4575d1a1deec"
      unitRef="usd">11028000</us-gaap:TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense>
    <us-gaap:TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability
      contextRef="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3NTc_6e736e26-7967-417f-bf1a-401fd2da16ae"
      unitRef="usd">90351000</us-gaap:TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsOther
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NjYwNzU_d1f64744-9ed1-4ab2-94b8-81be410ed23d"
      unitRef="usd">307000</us-gaap:IncomeTaxReconciliationTaxSettlementsOther>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsOther
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE2Nzc_40a0352e-2f61-48a0-936c-8e933466864e"
      unitRef="usd">1932000</us-gaap:IncomeTaxReconciliationTaxSettlementsOther>
    <us-gaap:IncomeTaxReconciliationTaxSettlementsOther
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE2OTA_1da5a04b-620d-4b63-b278-22de6a6e73c3"
      unitRef="usd">1847000</us-gaap:IncomeTaxReconciliationTaxSettlementsOther>
    <us-gaap:SummaryOfIncomeTaxContingenciesTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzkzNjQ_d62e4476-54a9-4af5-8650-032944e4adad">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018&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;7,294&#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;199&#160;&lt;/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;5,259&#160;&lt;/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,161)&lt;/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, 2019&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;11,591&#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 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 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;13,952&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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:SummaryOfIncomeTaxContingenciesTextBlock>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzAtMS0xLTEtMA_9f4b16b8-4876-45f8-a89c-7a6fefe55f1f"
      unitRef="usd">7294000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzEtMS0xLTEtMA_349df0d9-f0c5-4ff2-bcfc-3d7ad139b78e"
      unitRef="usd">199000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzItMS0xLTEtMA_7151f155-0fad-4d9b-82c3-17221e460b5f"
      unitRef="usd">5259000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzQtMS0xLTEtMA_4ca6f233-1cf1-4d60-87fe-d21e16c9aaf6"
      unitRef="usd">1161000</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzUtMS0xLTEtMA_a086f346-fd82-4157-922b-118891f5d46d"
      unitRef="usd">11591000</us-gaap:UnrecognizedTaxBenefits>
    <us-gaap:UnrecognizedTaxBenefitsPeriodIncreaseDecrease
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzYtMS0xLTEtMA_ad3f6715-2d71-4ecd-bb8b-fd6f6760ebbc"
      unitRef="usd">162000</us-gaap:UnrecognizedTaxBenefitsPeriodIncreaseDecrease>
    <us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzctMS0xLTEtMA_4d9b739d-c886-46db-b823-b6193f7b70f1"
      unitRef="usd">3383000</us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions>
    <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzktMS0xLTEtMA_c557ebf8-7a1b-49a9-b03c-10f97af17e33"
      unitRef="usd">1184000</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
    <us-gaap:UnrecognizedTaxBenefits
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTozNjA2NWNmODk3ZmQ0ZmZmYmZlZWY5MzQ5NTExZTk2NS90YWJsZXJhbmdlOjM2MDY1Y2Y4OTdmZDRmZmZiZmVlZjkzNDk1MTFlOTY1XzEwLTEtMS0xLTA_3eb86661-38e8-492b-a24d-c72538191ae2"
      unitRef="usd">13952000</us-gaap:UnrecognizedTaxBenefits>
    <cgnx:UnrecognizedTaxBenefitsGross
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY0MTM_c619d0ac-a91e-4b2d-adfb-742c33ac779f"
      unitRef="usd">15285000</cgnx:UnrecognizedTaxBenefitsGross>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY0NTY_6059f7a5-ab7a-4796-a8df-86b1ee4cf7bc"
      unitRef="usd">14257000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY1MDE_f9c8195c-0303-488b-9633-ee6916635002"
      unitRef="usd">1028000</cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets>
    <cgnx:UnrecognizedTaxBenefitsGross
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY2NDk_c50267b8-7b3b-4060-bfb5-d216bfba116c"
      unitRef="usd">12591000</cgnx:UnrecognizedTaxBenefitsGross>
    <us-gaap:LiabilityForUncertainTaxPositionsNoncurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY2OTI_4a050e6e-8ec8-437a-bdbd-752d8ce59690"
      unitRef="usd">11563000</us-gaap:LiabilityForUncertainTaxPositionsNoncurrent>
    <cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY3Mzc_a03fef72-dd47-4b86-b95d-af8e9d5c9fea"
      unitRef="usd">1028000</cgnx:Unrecognizedtaxbenefitshownasareductiontononcurrentdeferredtaxassets>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY4NzU_d650a87e-d140-49f9-9576-68124731375c"
      unitRef="usd">1332000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzY4ODI_52cdbfbf-1b6a-4ebf-a40c-de33212601bb"
      unitRef="usd">1000000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued>
    <cgnx:MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzczNTI_6cb5cbf5-0b12-4689-887e-1d33836d4334"
      unitRef="usd">1900000</cgnx:MinimumDecreaseInIncomeTaxExpenseDueToReleaseInReserves>
    <cgnx:MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzczNTg_2c1ee316-f62c-4ea9-b068-788bf735c1fc"
      unitRef="usd">2000000</cgnx:MaximumDecreaseInIncomeTaxExpenseDueToReleaseInReserves>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="ide172e3d496d43dd8c49b008179d1944_D20200101-20201231"
      decimals="3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3MTU_e7cdd5f2-c9ba-404d-a159-df2836ef4993"
      unitRef="number">0.125</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="i646f28e36e1549a997f83f579e5fcc4e_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3MjI_4ddf1e13-328d-412c-ac62-abb1863226b1"
      unitRef="number">0.25</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate
      contextRef="iac4b14509e984788854e67cef6971927_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3Mjc_1301cccd-78d8-435e-86f8-a25eb6a40206"
      unitRef="number">0.21</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3Mzk_3a010ac0-8760-4e5f-b0b3-be2497409d57"
      unitRef="number">-0.06</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3MzI_3410bc0e-8599-4367-9e1c-3efa5da7dfe2"
      unitRef="number">-0.09</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NzE3MzI_e3c7b89f-ae01-4e74-8f91-5e7b2b19fbeb"
      unitRef="number">-0.09</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NjczNjk_e0540182-fc7f-4d0f-9eee-484e4c85b08a"
      unitRef="usd">340000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NjczNzQ_ba22f781-ddca-4e30-9893-b31b15818053"
      unitRef="usd">116000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense>
    <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2NjczODM_6ce9e7f1-a457-4253-983b-b59615a0eb41"
      unitRef="usd">91000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2Njc0NjE_a6888d8f-6afe-4c6a-ac0e-33ae321fbc64"
      unitRef="usd">33695000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2Njc0NzM_8165ee01-aebb-4885-b664-d104f5ea8e5f"
      unitRef="usd">13443000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:IncomeTaxesPaidNet
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzEwOTk1MTE2Njc0ODk_d403e10c-7c38-421d-877c-8f3dd763960f"
      unitRef="usd">41430000</us-gaap:IncomeTaxesPaidNet>
    <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzkzNTc_7cace371-6463-48a1-9eec-0adaf9279afd">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;Non-current 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;424,156&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;437,500&#160;&lt;/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;13,294&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,042&#160;&lt;/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;10,171&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;8,491&#160;&lt;/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;5,976&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;2,934&#160;&lt;/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;4,932&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,609&#160;&lt;/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;4,211&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,522&#160;&lt;/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;602&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,286&#160;&lt;/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;4,342&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,550&#160;&lt;/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 non-current 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;467,684&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;476,934&#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,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;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,312)&lt;/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;459,116&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;469,622&#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: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:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%"&gt;Non-current 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;(339,325)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;(350,000)&lt;/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;Other GILTI tax basis differences&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;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,446)&lt;/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;/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:#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;(339,364)&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;(352,446)&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="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzMtMS0xLTEtMA_8a3bb59b-afb2-4b4b-b4fa-aed64c76ee8f"
      unitRef="usd">424156000</cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure>
    <cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzMtMy0xLTEtMA_d0431a49-088c-43a7-9235-a67a88584ba4"
      unitRef="usd">437500000</cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzQtMS0xLTEtMA_89e80d86-46cc-4c28-b086-6c07085d6d75"
      unitRef="usd">13294000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzQtMy0xLTEtMA_0bbbab7f-3774-4440-bfc9-54091148978e"
      unitRef="usd">15042000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzUtMS0xLTEtMA_1a088c51-295c-49ed-a9c9-a195bf078679"
      unitRef="usd">10171000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzUtMy0xLTEtMA_62d2b928-35c1-4b97-8704-26dce32d787e"
      unitRef="usd">8491000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzYtMS0xLTEtMTA1NjE_f3aea179-c0fc-43ce-814d-df35a48438cf"
      unitRef="usd">5976000</us-gaap:DeferredTaxAssetsInventory>
    <us-gaap:DeferredTaxAssetsInventory
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzYtMy0xLTEtMTA1NjE_4f2dae64-09ec-456a-885e-c300b7194c82"
      unitRef="usd">2934000</us-gaap:DeferredTaxAssetsInventory>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzctMS0xLTEtMTA1NjE_fa3a0396-f5ab-4dc3-a37b-a17e2dc9d84d"
      unitRef="usd">4932000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther>
    <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzctMy0xLTEtMTA1NjE_858d7dfc-1eb0-4e76-b2aa-400a076f985b"
      unitRef="usd">1609000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther>
    <cgnx:NoncurrentDeferredTaxAssetsDeprecation
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzgtMS0xLTEtMTA1Njg_472bf66d-d67b-42e1-a3f2-3b34563235ec"
      unitRef="usd">4211000</cgnx:NoncurrentDeferredTaxAssetsDeprecation>
    <cgnx:NoncurrentDeferredTaxAssetsDeprecation
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzgtMy0xLTEtMTA1Njg_29579481-cffd-42ad-9289-8ae0cbf0283b"
      unitRef="usd">3522000</cgnx:NoncurrentDeferredTaxAssetsDeprecation>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzYtMS0xLTEtMA_d6c2b30b-9728-49e4-8b92-5e961be7b21c"
      unitRef="usd">602000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign>
    <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzYtMy0xLTEtMA_ba288d27-ac66-4dcd-bdf6-12e3dc188627"
      unitRef="usd">4286000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign>
    <cgnx:DeferredTaxAssetsOtherNoncurrent
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEwLTEtMS0xLTA_c0708724-29db-4eac-9ddb-5ee5630ec362"
      unitRef="usd">4342000</cgnx:DeferredTaxAssetsOtherNoncurrent>
    <cgnx:DeferredTaxAssetsOtherNoncurrent
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEwLTMtMS0xLTA_d9d1b6c9-9eef-4cd0-87f4-a9c027522db7"
      unitRef="usd">3550000</cgnx:DeferredTaxAssetsOtherNoncurrent>
    <cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzExLTEtMS0xLTA_f1595f80-0c0d-442e-8091-10d2d1028b3f"
      unitRef="usd">467684000</cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross>
    <cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzExLTMtMS0xLTA_3ab1f4fd-4f97-4ba3-8902-e57d6e488726"
      unitRef="usd">476934000</cgnx:DeferredTaxAssetsWithJurisdictionalNettingGross>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEyLTEtMS0xLTA_68d2e9ba-d806-4e8c-9f51-570fafcf5f4d"
      unitRef="usd">8568000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEyLTMtMS0xLTA_488af5a3-7fec-408c-b227-4f7a80b36312"
      unitRef="usd">7312000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEzLTEtMS0xLTA_e0b4cc65-bfba-471f-83e3-f8de5e84f350"
      unitRef="usd">459116000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <us-gaap:DeferredTaxAssetsLiabilitiesNet
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzEzLTMtMS0xLTA_4d62b0f4-20d0-4432-ae44-b902ffa65595"
      unitRef="usd">469622000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
    <cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzE2LTEtMS0xLTA_df3aec38-f425-4cd5-b922-1ff7ccf1f687"
      unitRef="usd">339325000</cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome>
    <cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzE2LTMtMS0xLTA_f6ef5269-9685-491c-8f60-f8958213f7f5"
      unitRef="usd">350000000</cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome>
    <cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzE3LTEtMS0xLTA_4fd196df-df68-4528-89d4-2da4f77033c4"
      unitRef="usd">39000</cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome>
    <cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzE3LTMtMS0xLTA_f3c6001c-67bd-41e4-80b9-3779533352e6"
      unitRef="usd">2446000</cgnx:DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome>
    <cgnx:DeferredTaxLiabilitiesWithJurisdictionalNettingGross
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzIwLTEtMS0xLTA_a418372e-4b40-48f2-bbc8-9c80ba6e5cf2"
      unitRef="usd">339364000</cgnx:DeferredTaxLiabilitiesWithJurisdictionalNettingGross>
    <cgnx:DeferredTaxLiabilitiesWithJurisdictionalNettingGross
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90YWJsZTo4ZGFkMDE2ZDQ4ODQ0ZDk2OGRiNzhlYzRlMzk0NDRmZC90YWJsZXJhbmdlOjhkYWQwMTZkNDg4NDRkOTY4ZGI3OGVjNGUzOTQ0NGZkXzIwLTMtMS0xLTA_5b1acf34-73fe-4af4-80be-033fae7f9eb5"
      unitRef="usd">352446000</cgnx:DeferredTaxLiabilitiesWithJurisdictionalNettingGross>
    <us-gaap:DeferredTaxAssetsValuationAllowance
      contextRef="ie355c14ef9d34a27b2d42fbc0aa3a07d_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5XzgwNDc_108227d6-e4bf-4431-a1f7-354ebaaa684c"
      unitRef="usd">8568000</us-gaap:DeferredTaxAssetsValuationAllowance>
    <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch
      contextRef="id6f2d6204d6d4481aa38f21288abe631_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzIvZnJhZzoxZjRlMDZmMzA0YjE0MWVjYTQwNmY0NzlkNDE1NTM1OS90ZXh0cmVnaW9uOjFmNGUwNmYzMDRiMTQxZWNhNDA2ZjQ3OWQ0MTU1MzU5Xzg0MDA_7db31a26-17e2-4ad1-a3a1-229eafe3379e"
      unitRef="usd">11361000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch>
    <us-gaap:EarningsPerShareTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzY2OQ_4ecef9e9-8931-404f-ad1b-877aff3317a1">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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;2018&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;173,489&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;172,333&#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,103&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,073&#160;&lt;/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;176,592&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;177,406&#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: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;Stock options to purchase 4,371,194, 5,735,608, and 2,650,164 shares of common stock, on a weighted-average basis, were outstanding in 2020, 2019, and 2018, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive. Restricted stock units totaling 3,826 and 13,092 shares of common stock, on a weighted-average basis, were outstanding in 2020 and 2019, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive. There were no anti-dilutive restricted stock units outstanding, on a weighted-average basis, in 2018.&lt;/span&gt;&lt;/div&gt;</us-gaap:EarningsPerShareTextBlock>
    <us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzY3Ng_bccc745e-09d8-4bad-8e54-3b5ea09b6e2c">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;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;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;2018&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;173,489&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;172,333&#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,103&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,073&#160;&lt;/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;176,592&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;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;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;177,406&#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="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzItMS0xLTEtMA_30b10eff-f06b-4080-9627-64e75017881e"
      unitRef="shares">173489000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzItMy0xLTEtMA_b1c197d0-425a-4147-8154-b9cc9bdd1f35"
      unitRef="shares">171194000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzItNS0xLTEtMA_929c5f5b-7193-4a64-a563-2b98f3711dce"
      unitRef="shares">172333000</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzMtMS0xLTEtMA_1fd83223-ef09-4cfe-bbf1-dc420038bab3"
      unitRef="shares">3103000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzMtMy0xLTEtMA_cd3fed38-6471-43aa-bda8-62c3d97cd01c"
      unitRef="shares">4075000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzMtNS0xLTEtMA_a8183ec5-9cb0-45eb-b76c-4d8f7bc1071a"
      unitRef="shares">5073000</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzQtMS0xLTEtMA_3f43e5f8-1638-4f84-9b52-2abb4a361b33"
      unitRef="shares">176592000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzQtMy0xLTEtMA_f4231ca4-44e8-4242-9843-37672aab9f13"
      unitRef="shares">175269000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90YWJsZTo4ZjY5ZjcwZjgwNWI0ZDBjOWU4NmE1Yzk4ZDAwNDg5Yy90YWJsZXJhbmdlOjhmNjlmNzBmODA1YjRkMGM5ZTg2YTVjOThkMDA0ODljXzQtNS0xLTEtMA_4bb594c8-483d-4bd7-acd3-942e30b29564"
      unitRef="shares">177406000</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i7d5054231975477bbc455390b1195587_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzEzNA_93ad0a08-0ab7-432b-9980-f6ea1a5218c5"
      unitRef="shares">4371194</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="ib6eaadfb2aab4fa68a92113aa083ed66_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzEzOA_732aed8e-bc12-4c29-8f5b-47b119454e72"
      unitRef="shares">5735608</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i77bd997d9cd240a0a39403e13f7fa372_D20180101-20181231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzE0Ng_bfdc1ac1-1418-4043-8051-9365c992e341"
      unitRef="shares">2650164</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i4d22de0a070640c0969df0023f0d5bd4_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzEwOTk1MTE2Mjg0ODk_8433fdba-6efa-4167-979b-d93a6b3301cc"
      unitRef="shares">3826</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount
      contextRef="i91547104c6e54802adc08015c4e816c4_D20190101-20191231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNzgvZnJhZzpkNWY4MjFkYzU1Zjg0YzMxOTA4NGFkODVhODE4OGFiZi90ZXh0cmVnaW9uOmQ1ZjgyMWRjNTVmODRjMzE5MDg0YWQ4NWE4MTg4YWJmXzM5MQ_11503609-6d62-41ec-817d-68be8cb19783"
      unitRef="shares">13092</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
    <us-gaap:SegmentReportingDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzEwMDg_91959e3f-70a9-41d7-a36c-477a9b257755">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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2020&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;280,205&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;208,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:#cceeff;padding:2px 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;168,287&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;153,741&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;811,020&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;60,911&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;20,014&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;1,278&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;4,764&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;86,967&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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, 2019&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;247,689&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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,738&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;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="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;135,137&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;725,625&#160;&lt;/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;68,496&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;21,691&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,487&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,602&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;95,276&#160;&lt;/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, 2018&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;231,760&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;311,914&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;123,708&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;138,956&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;806,338&#160;&lt;/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;67,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,948&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,482&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,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;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,321&#160;&lt;/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;Revenue is presented geographically based on the customer&#x2019;s country of domicile. Revenue from a single customer accounted for 13% and 15% of total revenue in 2020 and 2018, respectively. Revenue from this customer was not greater than 10% of total revenue in 2019. Accounts receivable from this same customer accounted for 20%, 24%, and 30% of total accounts receivable as of December 31, 2020, 2019, and 2018, respectively. In 2020, a second customer accounted for 14% of total revenue. Accounts receivable from this second customer accounted for 19% of total accounts receivable as of December 31, 2020.</us-gaap:SegmentReportingDisclosureTextBlock>
    <us-gaap:NumberOfReportableSegments
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5Xzc0_437c4463-a073-4d98-bfa5-d7dea2d3b85c"
      unitRef="segment">1</us-gaap:NumberOfReportableSegments>
    <us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzEwMDQ_07057317-47f3-40dd-93ab-34f3703855db">&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-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2020&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;280,205&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;208,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:#cceeff;padding:2px 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;168,287&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;153,741&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;811,020&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;60,911&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;20,014&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;1,278&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;4,764&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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;86,967&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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, 2019&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;247,689&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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,738&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;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="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;135,137&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;725,625&#160;&lt;/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;68,496&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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;21,691&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,487&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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,602&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;95,276&#160;&lt;/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, 2018&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;231,760&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;311,914&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;123,708&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;138,956&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;806,338&#160;&lt;/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;67,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;td colspan="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;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,948&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,482&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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,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;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,321&#160;&lt;/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="i0c04c5967faf43108a2b44e1eb1467ba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzItMS0xLTEtMA_b1d5f96b-1d57-4552-84f8-876475847378"
      unitRef="usd">280205000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ibfe6673ddcfd4beda048b11f578ced24_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzItMy0xLTEtMA_3d165038-e1db-4d88-ba7f-07dc0396a158"
      unitRef="usd">208787000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ib9cc7499227e47a1bce0663b99b3a27a_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzItNS0xLTEtMA_9f96aa88-987c-4195-84dc-6b07d0edd951"
      unitRef="usd">168287000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3c10e6816b864f37a86cb0f6bb0735a9_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzItNy0xLTEtMA_55774339-a68f-4ce6-8e71-26ed12967eea"
      unitRef="usd">153741000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzItOS0xLTEtMA_d27751c1-6ace-4f11-ab29-93e3f012f77f"
      unitRef="usd">811020000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:NoncurrentAssets
      contextRef="iacfa50daa2fe4c539ad33435ea3b8a08_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzMtMS0xLTEtMA_f34296ce-f8de-4315-bc18-cd7e3634882d"
      unitRef="usd">60911000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i5df31456d9734b238cf6d82c794debfd_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzMtMy0xLTEtMA_3db56d76-9a8c-4ca1-a64c-a4aba86981dd"
      unitRef="usd">20014000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i00ca102b165c4c3db45dab357f1bec1a_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzMtNS0xLTEtMA_7e0b1605-b44b-4f2e-abef-00ee17eb2fa0"
      unitRef="usd">1278000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i648bad067bdc4d4489358d8b681752f7_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzMtNy0xLTEtMA_4e9f026a-4497-4a88-995d-1358f7d01d59"
      unitRef="usd">4764000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i2929afbc60be4803907a61e4c5f55328_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzMtOS0xLTEtMA_5111858d-e265-4fe7-8502-feb7d99ce418"
      unitRef="usd">86967000</us-gaap:NoncurrentAssets>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i746a867e03db40d2ba017800c468fef6_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzUtMS0xLTEtMA_ce8cfd5a-da34-4f55-9f07-8b5bbc7a250b"
      unitRef="usd">247689000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i2455679b0dc24386ae718a31db1121f5_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzUtMy0xLTEtMA_008499d3-cba0-4f1b-8f41-c4c48c8877c0"
      unitRef="usd">227738000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3c0cc26b301d41ec94472b653c04964d_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzUtNS0xLTEtMA_954303f4-df32-40b9-af6f-8ffec5466388"
      unitRef="usd">115061000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i5fdf4bf4bded45cbbbb2b5fe9674984d_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzUtNy0xLTEtMA_6aafeb06-68f2-4203-ae17-e3a9c652e63a"
      unitRef="usd">135137000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzUtOS0xLTEtMA_b3eff411-ace3-47e8-8b3b-cd3e4dc95afb"
      unitRef="usd">725625000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:NoncurrentAssets
      contextRef="ib2628019e5884269a64b6816274d0949_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzYtMS0xLTEtMA_b1d2c686-f219-4361-abc2-4f019c2bbf58"
      unitRef="usd">68496000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i3a5907b6d38040178c89577a865ccdd9_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzYtMy0xLTEtMA_0600b670-5dfa-43c5-ab4e-3607f83d0110"
      unitRef="usd">21691000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="id26bbc6a4fce4ee4b4844c551ffbcd52_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzYtNS0xLTEtMA_9ab8be4d-4373-4bae-bf03-9727cc3628ab"
      unitRef="usd">1487000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i1f2df605085e4c16b8cb6bae2c82dc17_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzYtNy0xLTEtMA_f07c63ff-dff9-4769-8075-cc3d07af1c62"
      unitRef="usd">3602000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="i75e8b9e5dee441478b9993822d16dbea_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzYtOS0xLTEtMA_abd1d8cc-528a-4724-ac50-b41794d26ab2"
      unitRef="usd">95276000</us-gaap:NoncurrentAssets>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i52bc079d60364e258cd8c95018302d13_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzgtMS0xLTEtMA_68df5c73-824e-4577-b874-14a0218f99f5"
      unitRef="usd">231760000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i0f9a6d89f1af40dab151c1916512c5a3_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzgtMy0xLTEtMA_9f0f7688-1686-400c-91c1-4c4176808dfc"
      unitRef="usd">311914000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="iee1584fb047e4cd0aadbe377ee63edb0_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzgtNS0xLTEtMA_5a8a23a3-6de8-4d8c-898c-7de75ef9f5f2"
      unitRef="usd">123708000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i3e5a7c3891874475803e5cc3eff8e278_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzgtNy0xLTEtMA_071503c6-acf3-4d16-bba5-fb3de98b7d7b"
      unitRef="usd">138956000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i90123248550b45fd8a317f6e73288a1f_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzgtOS0xLTEtMA_35bcd067-c60d-4f8e-89e3-a8e2979fcc64"
      unitRef="usd">806338000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:NoncurrentAssets
      contextRef="ifafb1a8d25934dc08c31868b6bcbe384_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzktMS0xLTEtMA_c483c876-252a-4312-89f1-11ca0d9cae18"
      unitRef="usd">67156000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="iab0087b78f23431ca5626d7b81c5b2e7_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzktMy0xLTEtMA_e59d6b95-20f4-48a6-8cb3-93f02a8f3cdf"
      unitRef="usd">23948000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="ibc01324d910d4a5f891ff127e62379a9_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzktNS0xLTEtMA_23c986f8-d8c9-4c81-b738-9f678d75a560"
      unitRef="usd">1482000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="iba687ef314c646918abb65b1eeb24670_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzktNy0xLTEtMA_76af2cf5-d304-4be0-929e-2f8582d70a20"
      unitRef="usd">2735000</us-gaap:NoncurrentAssets>
    <us-gaap:NoncurrentAssets
      contextRef="iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90YWJsZTo0NTc1NDlhYWMyNzQ0MDkxYjhkYjRiMWIxYzZmYzExNC90YWJsZXJhbmdlOjQ1NzU0OWFhYzI3NDQwOTFiOGRiNGIxYjFjNmZjMTE0XzktOS0xLTEtMA_19ad9522-e5a4-4bc0-911b-b01d59d4b5cb"
      unitRef="usd">95321000</us-gaap:NoncurrentAssets>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i34d8f3c69efc42209391814f2a19744e_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzcxMQ_6862abc9-5206-4ab4-947a-5534a4b17dbe"
      unitRef="number">0.13</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i5fa2c3db08364cf9bd07608173af36a1_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzcxOA_0149da40-3c39-472d-83d7-a66f574f5470"
      unitRef="number">0.15</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="ibffce964090a497c887ee131bacc1fd5_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzgyNw_ea4afae8-d16d-480b-bb9d-c3e06eccd13a"
      unitRef="number">0.20</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i65add4e3d5b64520a77634d4325ac6ae_D20190101-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzgzMQ_2c4841d2-55a9-46dd-bfb4-20634bf34618"
      unitRef="number">0.24</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i026f4bd009c043c0862c4af3db857458_D20180101-20181231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzgzOQ_f1537c8a-e53d-406c-bd8f-070fa653d209"
      unitRef="number">0.30</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="i3181f39a9ece4d42a19fcf211f42e203_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzEwOTk1MTE2MzA4ODE_fc9b7f40-9fb6-4ee7-a237-67a89bb648f4"
      unitRef="number">0.14</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:ConcentrationRiskPercentage1
      contextRef="ief4089b8c7b34be5b00f1b2f4403ceed_D20200101-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODEvZnJhZzoyNmNkNzNhN2I4OGU0OTcxOTZjZmYwYTA0YmFiZTRjOS90ZXh0cmVnaW9uOjI2Y2Q3M2E3Yjg4ZTQ5NzE5NmNmZjBhMDRiYWJlNGM5XzEwOTk1MTE2MzA4OTA_1577473e-5f3c-4df8-a412-fd47d3632cbd"
      unitRef="number">0.19</us-gaap:ConcentrationRiskPercentage1>
    <us-gaap:BusinessCombinationDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzU4MzM_33d9e694-a50f-46a2-ba58-5956f4af28ff">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 on the fourth anniversary date of the closing, contingent upon continued employment of key talent, and will be recorded as compensation expense over this four-year period. &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;Sualab's intellectual property, engineering expertise, and market coverage are expected to increase the Company's existing deep learning capabilities. Combined with intellectual property acquired from ViDi Systems S.A. in 2017, the Company is now a leading provider of deep learning-based industrial vision 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;The purchase price that was not related to employment was allocated as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:11pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:85.263%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.537%"/&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;Cash and cash equivalents&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;3,691&#160;&lt;/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;Current investments&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;9,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;/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;Accounts receivable&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,200&#160;&lt;/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;Inventories&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;115&#160;&lt;/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;Prepaid expenses and other current 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;252&#160;&lt;/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;Property, plant, and 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:400;line-height:100%"&gt;726&#160;&lt;/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;Operating lease 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;2,792&#160;&lt;/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;Deferred income tax asset&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,087&#160;&lt;/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;Other 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;513&#160;&lt;/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;Accounts payable&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;(28)&lt;/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;Accrued expenses&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;(2,633)&lt;/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;Deferred revenue and customer deposits&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;(764)&lt;/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;Operating lease liabilities&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;(448)&lt;/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;Non-current operating lease liabilities&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,344)&lt;/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;Deferred income tax liabilities&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;(7,926)&lt;/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;Other liabilities&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;(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;/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;Completed technologies&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,300&#160;&lt;/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;In-process 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;8,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;/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;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;5,800&#160;&lt;/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;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;340&#160;&lt;/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;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;/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;Goodwill&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;129,138&#160;&lt;/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 25.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;Purchase price&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;169,598&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&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 completed technologies, in-process technologies, customer relationships, trademarks, and non-compete agreements are included in "Intangible assets" on the Consolidated Balance &lt;/span&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;Sheet. The completed technologies are being amortized to cost of revenue over eight years, the customer relationships are being amortized to SG&amp;amp;A expenses over seven years, the trademarks are being amortized to SG&amp;amp;A expenses over two years, and the non-compete agreements are being amortized to RD&amp;amp;E expenses over six to seven years. &lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The in-process technologies were completed in the fourth quarter of 2020 and are being amortized to cost of revenue over six years. &lt;/span&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;The portion of the acquired goodw&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;ill deductible for tax purposes is $104,609,000.&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 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;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, &lt;/span&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;and customer relationships acquired from Sualab were impaired in the amounts of $10,070,000, $5,900,000, and $3,382,000, respectively. &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 style="text-align:justify"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:107%"&gt;This transaction was accounted for as a business combination. Pro-forma information is not presented because it is not significant. Revenue and earnings since the date of the acquisition included in the Company's Consolidated Statements of Operations are also not presented because they are not material. Transaction costs were immaterial and were expensed as incurred.&lt;/span&gt;&lt;/div&gt;</us-gaap:BusinessCombinationDisclosureTextBlock>
    <us-gaap:BusinessCombinationConsiderationTransferred1
      contextRef="i9f1cef1658d7425f8fb46c98ade30cb0_D20191016-20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzExMTI_d039c4ea-1933-406a-8f3e-07cf2f46fb21"
      unitRef="usd">193638000</us-gaap:BusinessCombinationConsiderationTransferred1>
    <us-gaap:PaymentsToAcquireBusinessesGross
      contextRef="i9f1cef1658d7425f8fb46c98ade30cb0_D20191016-20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzExNDE_52c15362-75be-46fb-aef5-54f950808531"
      unitRef="usd">170602000</us-gaap:PaymentsToAcquireBusinessesGross>
    <us-gaap:BusinessCombinationContingentConsiderationLiability
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEyMjA_b6271496-6e6e-4829-8dfc-3ff2f8dddb72"
      unitRef="usd">24040000</us-gaap:BusinessCombinationContingentConsiderationLiability>
    <us-gaap:ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzU4MzA_5e6c619c-477d-40bc-a826-abbfadf9acd0">&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 purchase price that was not related to employment was allocated as follows (in thousands):&lt;/span&gt;&lt;/div&gt;&lt;div style="margin-bottom:5pt;margin-top:11pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:85.263%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:12.537%"/&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;Cash and cash equivalents&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;3,691&#160;&lt;/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;Current investments&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;9,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;/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;Accounts receivable&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,200&#160;&lt;/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;Inventories&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;115&#160;&lt;/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;Prepaid expenses and other current 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;252&#160;&lt;/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;Property, plant, and 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:400;line-height:100%"&gt;726&#160;&lt;/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;Operating lease 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;2,792&#160;&lt;/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;Deferred income tax asset&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,087&#160;&lt;/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;Other 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;513&#160;&lt;/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;Accounts payable&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;(28)&lt;/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;Accrued expenses&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;(2,633)&lt;/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;Deferred revenue and customer deposits&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;(764)&lt;/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;Operating lease liabilities&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;(448)&lt;/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;Non-current operating lease liabilities&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,344)&lt;/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;Deferred income tax liabilities&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;(7,926)&lt;/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;Other liabilities&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;(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;/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;Completed technologies&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,300&#160;&lt;/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;In-process 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;8,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;/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;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;5,800&#160;&lt;/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;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;340&#160;&lt;/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;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;/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;Goodwill&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;129,138&#160;&lt;/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 25.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;Purchase price&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;169,598&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',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:ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzAtMS0xLTEtMA_5c37b47b-b282-4834-b518-666211831b60"
      unitRef="usd">3691000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzEtMS0xLTEtMA_c08a545d-6a8e-4f73-88fa-34df40ff8d8e"
      unitRef="usd">9487000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzItMS0xLTEtMA_88629019-06a5-4d0a-ad3b-c6ed96d0ad1c"
      unitRef="usd">1200000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzMtMS0xLTEtMA_04e0acf7-7d99-4e94-aae8-93694d08b693"
      unitRef="usd">115000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzQtMS0xLTEtMA_08f6df14-6bde-48b6-a371-99a379119c65"
      unitRef="usd">252000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzUtMS0xLTEtMA_15853727-df58-48d1-9700-9c9a4bad3356"
      unitRef="usd">726000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment>
    <cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzYtMS0xLTEtMA_22967021-ce77-4d02-9857-56f93fe4ce1a"
      unitRef="usd">2792000</cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzctMS0xLTEtMA_ff20b439-f083-4301-9a81-c4df237152fb"
      unitRef="usd">3087000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzgtMS0xLTEtMA_a06c9ad7-d0f1-4e8f-987f-f6d11c1745e1"
      unitRef="usd">513000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzktMS0xLTEtMA_8242c0b7-125b-473c-ba98-8f674016a1db"
      unitRef="usd">28000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzEwLTEtMS0xLTA_edb08041-b231-40e0-99b0-21ee9c28ced7"
      unitRef="usd">2633000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities>
    <cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzExLTEtMS0xLTA_0ef8ec56-04d5-4bfb-b2a4-4028fa76b33b"
      unitRef="usd">764000</cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits>
    <cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzEyLTEtMS0xLTA_895a3f89-9c0d-4df9-9927-ffafd149c343"
      unitRef="usd">448000</cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent>
    <cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzEzLTEtMS0xLTA_8afa1ed3-1f50-4fac-b1f9-ab3e69be5a96"
      unitRef="usd">2344000</cgnx:BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE0LTEtMS0xLTA_3a6d4a95-ea6c-46e1-811b-350d0302deda"
      unitRef="usd">7926000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE1LTEtMS0xLTA_cfe0df65-bc3a-4389-a514-b0c147ffe01d"
      unitRef="usd">10000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="i53c699b5269249168914134a4dba2402_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE2LTEtMS0xLTA_a97dfdc0-fe13-47c1-b6bd-4f23d5082a6b"
      unitRef="usd">18300000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="if17d8ab6bbd442cebb0469b4030f8993_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE3LTEtMS0xLTA_a20b1385-7837-4360-8a55-d290ccd80c8a"
      unitRef="usd">8200000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="iab276190f0f64ca79a123e6fbc3e0f84_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE4LTEtMS0xLTA_347cad1b-570f-438d-8593-d05302df6fc2"
      unitRef="usd">5800000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="i3feb9908ffcc411ca51ca9428c2087d7_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzE5LTEtMS0xLTA_e7f41cd9-ae31-403f-8d63-23f3a1aeb90b"
      unitRef="usd">340000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill
      contextRef="i90630e79dfaa43649fce5b15a9b58931_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzIwLTEtMS0xLTA_d4c0745e-6800-4300-9f07-f333190700b3"
      unitRef="usd">110000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill>
    <us-gaap:Goodwill
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzIxLTEtMS0xLTA_61bce48e-1624-46f6-885d-54269179c601"
      unitRef="usd">129138000</us-gaap:Goodwill>
    <us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90YWJsZTpiNjI2N2Y1OWE5OTE0ODY2OGNkMGVhZjkxYjAzMWI4ZC90YWJsZXJhbmdlOmI2MjY3ZjU5YTk5MTQ4NjY4Y2QwZWFmOTFiMDMxYjhkXzIyLTEtMS0xLTA_7ab5d801-7d07-4408-a7d4-694dfa8bb36d"
      unitRef="usd">169598000</us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="i49224b955c854388a485ddf240f6b6c2_D20191016-20191016"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzIwOTc_ce1cbfeb-9cfa-4969-a396-418631f8b195">P8Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="i9323aa33b7ba4726a2ca36589f0a5e3e_D20191016-20191016"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzIxNzA_9866a35a-2643-40f9-9adf-35fc6293e91e">P7Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="i9f4951f283f745dd9d4fdca84cb3d759_D20191016-20191016"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzIyMzE_0fda6423-3aa4-4e90-ac68-2f89245a4e5b">P2Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="i2821a398bffd46768fe52ad96d602eeb_D20191016-20191016"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzIzMTU_7a69f1a5-ee6c-4f78-b8de-b95d770a751b">P7Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife
      contextRef="i1ef9b43f5b59456bb824e0eda27daf6e_D20191016-20191016"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEwOTk1MTE2NDUwNjQ_dcb8dd31-e8a9-41d7-948c-0d9e632f910c">P6Y</us-gaap:AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife>
    <us-gaap:BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount
      contextRef="ib3b9e3e754784b8a883740beb69647f9_I20191016"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzI1MTc_9020ad88-6dfd-4bb0-b408-d716dd3c0a05"
      unitRef="usd">104609000</us-gaap:BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEwOTk1MTE2NDM4MTE_8dacc23e-3864-402c-a21c-4cc0e80b5e3c"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i6e84999093c84481a74e39726977d099_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEwOTk1MTE2NDM4MjU_feea71ee-978f-44eb-9ed5-8022d333bdbe"
      unitRef="usd">10070000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill
      contextRef="i2ec5ea0b1ca4492e80d0a8603b4039d2_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEwOTk1MTE2NDM4MzA_a81a8a92-8df4-44d7-8f86-459d40d3b75d"
      unitRef="usd">5900000</us-gaap:ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ib4a1793dd0e94c0b9920e9fa24b518b4_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xODcvZnJhZzo2MzZmOTYzZGI0YjY0NThjYjZjNWQ3ZGVmZGVhMWExNy90ZXh0cmVnaW9uOjYzNmY5NjNkYjRiNjQ1OGNiNmM1ZDdkZWZkZWExYTE3XzEwOTk1MTE2NDM4Mzk_289f4ce0-6306-4bb7-b076-c3f462939104"
      unitRef="usd">3382000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:RestructuringAndRelatedActivitiesDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzODY0_a1cc34d2-1bcc-4cdc-9f31-3a6e27e127a5">Restructuring Charges&lt;div style="text-align:justify"&gt;&lt;span style="background-color:#ffffff;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 &lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;8%&lt;/span&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; and office closures. The Company recorded restructuring charges from these actions totaling &lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;$15,924,000&lt;/span&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; in 2020 which are included in &#x201c;Restructuring charges&#x201d; on the Consolidated Statements of Operation&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;s. 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.&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="background-color:#ffffff;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="margin-bottom:6pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="text-align:justify"&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align:justify"&gt;&lt;span style="background-color:#ffffff;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 &lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;181&lt;/span&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt; 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 b&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;enefits, 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="background-color:#ffffff;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 recognize&lt;/span&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;d in the second quarter of 2020 when th&lt;/span&gt;&lt;span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"&gt;e 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="background-color:#ffffff;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="background-color:#ffffff;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="margin-bottom:6pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:700;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 #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,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-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;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-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;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-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;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-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;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;/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="ib391e5eb31594e308bef2a25810dbf65_I20200526"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzMjA4_adf0ee01-6fd1-4a06-a898-c3c90da22299"
      unitRef="number">0.08</us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent>
    <us-gaap:RestructuringCharges
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzMjUw_404d57a0-2195-40cc-927e-6e2d2dab5481"
      unitRef="usd">15924000</us-gaap:RestructuringCharges>
    <us-gaap:ScheduleOfRestructuringAndRelatedCostsTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzODY1_415c2a9c-196c-49a1-ada3-6afa097cd599">&lt;div&gt;&lt;span style="background-color:#ffffff;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="margin-bottom:6pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="i3dd19d64ad784899a5163158c879090b_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6ODJlMTA1MTMwYTIzNGQzNmI0ZGU1NGIzZTVkMWYzMWQvdGFibGVyYW5nZTo4MmUxMDUxMzBhMjM0ZDM2YjRkZTU0YjNlNWQxZjMxZF8xLTMtMS0xLTM1Mjg_c6dc64a7-25c7-4b52-9c09-4aadee5d4294"
      unitRef="usd">10159000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="ibf69a777edc9439f8408d65906e118f2_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6ODJlMTA1MTMwYTIzNGQzNmI0ZGU1NGIzZTVkMWYzMWQvdGFibGVyYW5nZTo4MmUxMDUxMzBhMjM0ZDM2YjRkZTU0YjNlNWQxZjMxZF8yLTMtMS0xLTM1MzY_0ae6f543-07c7-4098-af97-01857e7237a3"
      unitRef="usd">5207000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i1014d0429e234545a0da021351ef7a26_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6ODJlMTA1MTMwYTIzNGQzNmI0ZGU1NGIzZTVkMWYzMWQvdGFibGVyYW5nZTo4MmUxMDUxMzBhMjM0ZDM2YjRkZTU0YjNlNWQxZjMxZF8zLTMtMS0xLTM1Mzg_ad8f9003-1bc8-4813-a3de-74e8fc3bc14e"
      unitRef="usd">558000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6ODJlMTA1MTMwYTIzNGQzNmI0ZGU1NGIzZTVkMWYzMWQvdGFibGVyYW5nZTo4MmUxMDUxMzBhMjM0ZDM2YjRkZTU0YjNlNWQxZjMxZF80LTMtMS0xLTM1NDA_fa015f0e-4de9-4220-b3f7-2cf181f28b26"
      unitRef="usd">15924000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminated
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzNDMw_654205e2-12d3-4f7e-87c5-fd1b3d4c71f7"
      unitRef="employees">181</us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminated>
    <us-gaap:ScheduleOfRestructuringReserveByTypeOfCostTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGV4dHJlZ2lvbjpkMGE4NjllNGVkNDM0MjYzOWJiZjI5ZDM5NzJkMTE4ZV8xMDk5NTExNjMzODY2_7ed09b4c-0481-490c-b2a6-3e2e4f8dbf5c">&lt;div style="margin-bottom:16pt;margin-top:9pt;text-align:justify"&gt;&lt;span style="background-color:#ffffff;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="margin-bottom:6pt;text-align:justify"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:700;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 #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,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-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;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-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;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-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;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-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;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;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfRestructuringReserveByTypeOfCostTextBlock>
    <us-gaap:RestructuringReserve
      contextRef="ib2ec5da1c598442e83cb678d4c0703a7_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8xLTEtMS0xLTM1OTQ_f43d0a27-b95c-414e-b13c-0eead7044920"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="i58b0269806a34ecf901f561c702ca253_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8xLTMtMS0xLTM1OTQ_b14bb6ef-05fc-41e2-9459-afad18fdf821"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="i74ff1e1493a0418daa710e42429847e6_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8xLTUtMS0xLTM1OTQ_ccc8cac9-6f35-42f2-9a8e-bf5a33d21e8f"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="i15e487b1cb144371b2d581e8b6c32c6c_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8xLTctMS0xLTM1OTQ_7670a945-9058-4bb0-8d83-3a80a8a28984"
      unitRef="usd">0</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringCharges
      contextRef="i697b402587d640b29a6131eec6eee921_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8yLTEtMS0xLTM2MzA_06976ccb-7576-4f8f-ad93-5663b23cfd53"
      unitRef="usd">11329000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="ie03bd6caf6c04201a1251cc3ccce7ef5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8yLTMtMS0xLTM2MzI_6248f1f5-487e-497a-9ffc-d161f4f8fb47"
      unitRef="usd">5220000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i4cf92bf23f0c48f9933406a00f53bbf9_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8yLTUtMS0xLTM2MzQ_8afbb435-6377-4e52-903c-bf9a04852884"
      unitRef="usd">636000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i910901a831a74c5a94efe291993cb6db_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8yLTctMS0xLTM2MzY_b60fedb6-c5e1-4348-8c54-0f9f02693f5c"
      unitRef="usd">17185000</us-gaap:RestructuringCharges>
    <us-gaap:PaymentsForRestructuring
      contextRef="i697b402587d640b29a6131eec6eee921_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8zLTEtMS0xLTM2Mzg_b2b29739-483e-4cb7-afc4-8aa865ae1ec1"
      unitRef="usd">8717000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="ie03bd6caf6c04201a1251cc3ccce7ef5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8zLTMtMS0xLTM2Mzg_0ee683ec-b87b-438d-9f7a-964818830193"
      unitRef="usd">317000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="i4cf92bf23f0c48f9933406a00f53bbf9_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8zLTUtMS0xLTM2Mzg_7254b41b-7751-45fa-b8c8-cd7647558dff"
      unitRef="usd">563000</us-gaap:PaymentsForRestructuring>
    <us-gaap:PaymentsForRestructuring
      contextRef="i910901a831a74c5a94efe291993cb6db_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV8zLTctMS0xLTM2Mzg_2a85dfc2-9207-4821-a380-12d10b626c10"
      unitRef="usd">9597000</us-gaap:PaymentsForRestructuring>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="i697b402587d640b29a6131eec6eee921_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV80LTEtMS0xLTM2NDA_cf9db8b3-b5d9-4cf9-ad51-4d1dc7f2339c"
      unitRef="usd">0</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="ie03bd6caf6c04201a1251cc3ccce7ef5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV80LTMtMS0xLTM2NDA_e4e814a0-5081-460b-a154-2901a81d8a0d"
      unitRef="usd">4163000</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="i4cf92bf23f0c48f9933406a00f53bbf9_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV80LTUtMS0xLTM2NDA_90ca5599-5123-49d9-b339-71a38fd038db"
      unitRef="usd">0</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveSettledWithoutCash2
      contextRef="i910901a831a74c5a94efe291993cb6db_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV80LTctMS0xLTM2NDA_20eab51e-1eb1-4367-9f29-f858ea705179"
      unitRef="usd">4163000</us-gaap:RestructuringReserveSettledWithoutCash2>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="i697b402587d640b29a6131eec6eee921_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV81LTEtMS0xLTM2NDI_2c0cbd39-dc93-4aa8-8583-a8ad91665c7a"
      unitRef="usd">-1170000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="ie03bd6caf6c04201a1251cc3ccce7ef5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV81LTMtMS0xLTM2NDI_00d1c489-929e-4016-b489-d533738debec"
      unitRef="usd">-13000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="i4cf92bf23f0c48f9933406a00f53bbf9_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV81LTUtMS0xLTM2NDI_b9f9d5a1-55dc-4fa5-8e1e-60a03c56453e"
      unitRef="usd">-78000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveAccrualAdjustment1
      contextRef="i910901a831a74c5a94efe291993cb6db_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV81LTctMS0xLTM2NDI_cb75c176-1e42-4f94-9cc3-792fe84d3bf6"
      unitRef="usd">-1261000</us-gaap:RestructuringReserveAccrualAdjustment1>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i697b402587d640b29a6131eec6eee921_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV82LTEtMS0xLTM2NDQ_5fda7a3b-5c01-4387-b855-09ffd79d5552"
      unitRef="usd">182000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="ie03bd6caf6c04201a1251cc3ccce7ef5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV82LTMtMS0xLTM2NDQ_e89aa81c-5ff9-49ac-b145-ee793b21bf5b"
      unitRef="usd">23000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i4cf92bf23f0c48f9933406a00f53bbf9_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV82LTUtMS0xLTM2NDQ_624faf44-028a-4a58-bfbe-584949d1e5bf"
      unitRef="usd">20000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserveTranslationAdjustment
      contextRef="i910901a831a74c5a94efe291993cb6db_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV82LTctMS0xLTM2NDQ_f2bde3aa-8767-4259-b24b-66d355580d7a"
      unitRef="usd">225000</us-gaap:RestructuringReserveTranslationAdjustment>
    <us-gaap:RestructuringReserve
      contextRef="i0f3836fb4ff448cb8224c36be297098e_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV83LTEtMS0xLTM1OTg_05d2102c-6ec2-49ee-a106-c475a324fa2a"
      unitRef="usd">1624000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="icc6eade4fc96482cbe1fda703ab9bec1_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV83LTMtMS0xLTM1OTg_74878885-a204-4f41-bc35-a96d331f0eaf"
      unitRef="usd">750000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="i1c3a59091e4241499f1eb919fa67a6c9_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV83LTUtMS0xLTM1OTg_9c8d2037-90c5-446f-bcb6-ac9b8bb5e003"
      unitRef="usd">15000</us-gaap:RestructuringReserve>
    <us-gaap:RestructuringReserve
      contextRef="iacfefc04f8504b0784f70c45f9371633_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMDI5L2ZyYWc6ZDBhODY5ZTRlZDQzNDI2MzliYmYyOWQzOTcyZDExOGUvdGFibGU6YWQ2ZDg0YWM5MDFjNGUxMzgyMDFiOGQyMmQ3NzI0YTEvdGFibGVyYW5nZTphZDZkODRhYzkwMWM0ZTEzODIwMWI4ZDIyZDc3MjRhMV83LTctMS0xLTM1OTg_0ac71832-f56c-46dc-8dfe-54c144f3afba"
      unitRef="usd">2389000</us-gaap:RestructuringReserve>
    <us-gaap:SubsequentEventsTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTMvZnJhZzphMTM0NGMyNTM2MGU0MmNhYWExNGQzNGJiZmZkMDg4ZC90ZXh0cmVnaW9uOmExMzQ0YzI1MzYwZTQyY2FhYTE0ZDM0YmJmZmQwODhkXzIyMw_a025a4a0-a2e0-4486-ae07-711b7941db86">Subsequent EventsOn February 11, 2021, the Company's Board of Directors declared a cash dividend of $0.060 per share. The dividend is payable March 12, 2021 to all shareholders of record as of the close of business on February 26, 2021.</us-gaap:SubsequentEventsTextBlock>
    <us-gaap:DividendsPayableAmountPerShare
      contextRef="ibe2a9b71d2a34641867e257f72e7ac89_I20210211"
      decimals="INF"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTMvZnJhZzphMTM0NGMyNTM2MGU0MmNhYWExNGQzNGJiZmZkMDg4ZC90ZXh0cmVnaW9uOmExMzQ0YzI1MzYwZTQyY2FhYTE0ZDM0YmJmZmQwODhkXzExNg_a9cb27b6-f4c0-4c03-afa3-3d6207e478ab"
      unitRef="usdPerShare">0.060</us-gaap:DividendsPayableAmountPerShare>
    <us-gaap:DividendsPayableDateDeclaredDayMonthAndYear
      contextRef="iea3807e5f96a4f27a97d05dbb4f0c9dd_D20210211-20210211"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTMvZnJhZzphMTM0NGMyNTM2MGU0MmNhYWExNGQzNGJiZmZkMDg4ZC90ZXh0cmVnaW9uOmExMzQ0YzI1MzYwZTQyY2FhYTE0ZDM0YmJmZmQwODhkXzE1NQ_50a6a0db-27ba-4206-bcee-491ad8305b6d">2021-03-12</us-gaap:DividendsPayableDateDeclaredDayMonthAndYear>
    <us-gaap:DividendsPayableDateOfRecordDayMonthAndYear
      contextRef="iea3807e5f96a4f27a97d05dbb4f0c9dd_D20210211-20210211"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTMvZnJhZzphMTM0NGMyNTM2MGU0MmNhYWExNGQzNGJiZmZkMDg4ZC90ZXh0cmVnaW9uOmExMzQ0YzI1MzYwZTQyY2FhYTE0ZDM0YmJmZmQwODhkXzIxOQ_a27853f8-2a18-46ef-8d4c-8d73ed4ea68f">2021-02-26</us-gaap:DividendsPayableDateOfRecordDayMonthAndYear>
    <us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90ZXh0cmVnaW9uOjQ4M2Q2NTI0M2QxMjQyNGI5NDBmYWNiYWExOTAzMThjXzEx_ac893f35-8056-4d63-87f5-0e818c1be95c">&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.471%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.457%"/&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:9.457%"/&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:9.457%"/&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:9.459%"/&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="21" 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;Quarter Ended&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="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:7pt;font-weight:700;line-height:100%"&gt;March 29,                             2020&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:7pt;font-weight:700;line-height:100%"&gt;June 28,                                 2020&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:7pt;font-weight:700;line-height:100%"&gt;September 27,                           2020&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:7pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;br/&gt;2020&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="21" 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, except per share amounts)&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:9pt;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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;167,235&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;169,097&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;251,073&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;223,615&#160;&lt;/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:9pt;font-weight:400;line-height:100%"&gt;Gross margin&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:9pt;font-weight:400;line-height:100%"&gt;126,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="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;118,777&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:9pt;font-weight:400;line-height:100%"&gt;191,332&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:9pt;font-weight:400;line-height:100%"&gt;168,455&#160;&lt;/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:9pt;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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;14,798&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;875&#160;&lt;/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:9pt;font-weight:400;line-height:100%"&gt;Intangible asset impairment charges&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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;19,571&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:9pt;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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;Operating income (loss)&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:9pt;font-weight:400;line-height:100%"&gt;20,951&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;(6,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:9pt;font-weight:400;line-height:100%"&gt;96,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:9pt;font-weight:400;line-height:100%"&gt;59,085&#160;&lt;/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 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;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;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net income (loss)&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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;20,477&#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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;(1,142)&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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;87,506&#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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;69,345&#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 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;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="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:9pt;font-weight:400;line-height:100%"&gt;Basic net income (loss) per share&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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.12&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;(0.01)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.50&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.40&#160;&lt;/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:9pt;font-weight:400;line-height:100%"&gt;Diluted net income (loss) per share&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.12&#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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;(0.01)&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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.49&#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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.39&#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-bottom:5pt;margin-top:14pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.752%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.635%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.535%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.635%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.535%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.635%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.535%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.638%"/&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="21" 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;Quarter Ended&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:7pt;font-weight:700;line-height:100%"&gt;March 31, 2019&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:7pt;font-weight:700;line-height:100%"&gt;June 30,                           2019&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:7pt;font-weight:700;line-height:100%"&gt;September 29,                           2019&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:7pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;br/&gt;2019&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="21" 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, except per share amounts)&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:9pt;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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;173,484&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;199,047&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;183,325&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;169,769&#160;&lt;/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:9pt;font-weight:400;line-height:100%"&gt;Gross margin&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:9pt;font-weight:400;line-height:100%"&gt;127,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;148,080&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:9pt;font-weight:400;line-height:100%"&gt;135,693&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:9pt;font-weight:400;line-height:100%"&gt;124,898&#160;&lt;/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:9pt;font-weight:400;line-height:100%"&gt;Operating income&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:9pt;font-weight:400;line-height:100%"&gt;30,147&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;51,756&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;43,092&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;17,607&#160;&lt;/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 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;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;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;33,104&#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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;48,749&#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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;41,685&#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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;80,327&#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 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;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="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:9pt;font-weight:400;line-height:100%"&gt;Basic net income per share&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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.19&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.28&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.24&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.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:9pt;font-weight:400;line-height:100%"&gt;Diluted net income per share&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.19&#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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.28&#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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.24&#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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.46&#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;</us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock>
    <us-gaap:QuarterlyFinancialInformationTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90ZXh0cmVnaW9uOjQ4M2Q2NTI0M2QxMjQyNGI5NDBmYWNiYWExOTAzMThjXzE1_1a544215-cd5b-4d2c-a547-0eabfb040920">&lt;div style="margin-bottom:5pt;margin-top:5pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:54.471%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.457%"/&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:9.457%"/&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:9.457%"/&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:9.459%"/&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="21" 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;Quarter Ended&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="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:7pt;font-weight:700;line-height:100%"&gt;March 29,                             2020&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:7pt;font-weight:700;line-height:100%"&gt;June 28,                                 2020&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:7pt;font-weight:700;line-height:100%"&gt;September 27,                           2020&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:7pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;br/&gt;2020&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="21" 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, except per share amounts)&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:9pt;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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;167,235&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;169,097&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;251,073&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;223,615&#160;&lt;/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:9pt;font-weight:400;line-height:100%"&gt;Gross margin&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:9pt;font-weight:400;line-height:100%"&gt;126,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="3" style="background-color:#ffffff;padding:0 1pt"/&gt;&lt;td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;118,777&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:9pt;font-weight:400;line-height:100%"&gt;191,332&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:9pt;font-weight:400;line-height:100%"&gt;168,455&#160;&lt;/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:9pt;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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;14,798&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;251&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;875&#160;&lt;/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:9pt;font-weight:400;line-height:100%"&gt;Intangible asset impairment charges&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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;19,571&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:9pt;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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;Operating income (loss)&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:9pt;font-weight:400;line-height:100%"&gt;20,951&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;(6,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:9pt;font-weight:400;line-height:100%"&gt;96,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:9pt;font-weight:400;line-height:100%"&gt;59,085&#160;&lt;/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 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;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;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;Net income (loss)&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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;20,477&#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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;(1,142)&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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;87,506&#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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;69,345&#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 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;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="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:9pt;font-weight:400;line-height:100%"&gt;Basic net income (loss) per share&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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.12&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;(0.01)&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.50&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.40&#160;&lt;/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:9pt;font-weight:400;line-height:100%"&gt;Diluted net income (loss) per share&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.12&#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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;(0.01)&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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.49&#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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.39&#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-bottom:5pt;margin-top:14pt;text-align:center"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.415%"&gt;&lt;tr&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:53.752%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.635%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.535%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.635%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.535%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.635%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:0.535%"/&gt;&lt;td style="width:0.1%"/&gt;&lt;td style="width:1.0%"/&gt;&lt;td style="width:9.638%"/&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="21" 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;Quarter Ended&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:7pt;font-weight:700;line-height:100%"&gt;March 31, 2019&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:7pt;font-weight:700;line-height:100%"&gt;June 30,                           2019&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:7pt;font-weight:700;line-height:100%"&gt;September 29,                           2019&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:7pt;font-weight:700;line-height:100%"&gt;December&#160;31,&lt;br/&gt;2019&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="21" 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, except per share amounts)&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:9pt;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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;173,484&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;199,047&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;183,325&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;169,769&#160;&lt;/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:9pt;font-weight:400;line-height:100%"&gt;Gross margin&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:9pt;font-weight:400;line-height:100%"&gt;127,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;font-weight:400;line-height:100%"&gt;148,080&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:9pt;font-weight:400;line-height:100%"&gt;135,693&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;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:9pt;font-weight:400;line-height:100%"&gt;124,898&#160;&lt;/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:9pt;font-weight:400;line-height:100%"&gt;Operating income&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:9pt;font-weight:400;line-height:100%"&gt;30,147&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;51,756&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;43,092&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 1pt 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:9pt;font-weight:400;line-height:100%"&gt;17,607&#160;&lt;/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 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;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;text-align:left;vertical-align:top"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;33,104&#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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;48,749&#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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;41,685&#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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;80,327&#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 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;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="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:9pt;font-weight:400;line-height:100%"&gt;Basic net income per share&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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.19&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.28&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.24&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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:9pt;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:9pt;font-weight:400;line-height:100%"&gt;0.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:9pt;font-weight:400;line-height:100%"&gt;Diluted net income per share&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 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'Arial',sans-serif;font-size:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.19&#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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.28&#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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.24&#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:9pt;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: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:9pt;font-weight:400;line-height:100%"&gt;0.46&#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;</us-gaap:QuarterlyFinancialInformationTextBlock>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzMtMS0xLTEtMA_52d08588-13d0-4db5-9e08-f9f4f3c4d273"
      unitRef="usd">167235000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzMtMy0xLTEtMA_71c17f0f-8fe0-4ba3-b96b-cd1fdf1f99d3"
      unitRef="usd">169097000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzMtNS0xLTEtMA_d6513c3a-862c-467b-8557-08fd78fda3b8"
      unitRef="usd">251073000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzMtNy0xLTEtMA_5b96f577-cf95-4019-b8ab-2ae9b1358e6c"
      unitRef="usd">223615000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:GrossProfit
      contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzQtMS0xLTEtMA_708eac11-c6d2-4bf8-9303-c2048b2f7764"
      unitRef="usd">126035000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzQtMy0xLTEtMA_90804947-afee-4d91-b3b1-77cb03807b92"
      unitRef="usd">118777000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzQtNS0xLTEtMA_91af16ab-a605-4293-acd0-5188436261ad"
      unitRef="usd">191332000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzQtNy0xLTEtMA_145ee23f-2f72-4610-aca5-2060f730beea"
      unitRef="usd">168455000</us-gaap:GrossProfit>
    <us-gaap:RestructuringCharges
      contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtMS0xLTEtMzg2NA_e4b3ad67-ac14-4020-aa14-7cd9f352ffe5"
      unitRef="usd">0</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtMy0xLTEtMzg3Ng_f77fa36d-3c69-4ea3-96ae-d52230276bbc"
      unitRef="usd">14798000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtNS0xLTEtMzg4Mw_0be012ae-a1aa-4052-bd00-1cb01550d181"
      unitRef="usd">251000</us-gaap:RestructuringCharges>
    <us-gaap:RestructuringCharges
      contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtNy0xLTEtMzg4Nw_8e0160c0-d948-47b6-bd39-73fd035b8cac"
      unitRef="usd">875000</us-gaap:RestructuringCharges>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzYtMS0xLTEtMzg5MQ_94b306a4-8754-483c-8f1e-fae645fce25c"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzYtMy0xLTEtMzg5NQ_e88a3a20-f69c-47b2-9908-fcd6710e1956"
      unitRef="usd">19571000</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzYtNS0xLTEtMzg5OQ_a546f78b-f61c-4182-8656-d324705b823e"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill
      contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzYtNy0xLTEtMzkwMw_c6f97bb9-697b-44f7-a6ef-1de681639e00"
      unitRef="usd">0</us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill>
    <us-gaap:OperatingIncomeLoss
      contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtMS0xLTEtMA_1cee2fd7-8cd0-4638-bf82-d41b6f51bd09"
      unitRef="usd">20951000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtMy0xLTEtMA_d853918c-7283-45c8-92ef-814268464196"
      unitRef="usd">-6142000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtNS0xLTEtMA_cf2de24a-dbfe-4f3c-988c-9de2f4a37f41"
      unitRef="usd">96635000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzUtNy0xLTEtMA_c6f6102e-15c3-4ea7-bba0-4d526c593cd8"
      unitRef="usd">59085000</us-gaap:OperatingIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzctMS0xLTEtMA_f70d74ff-6f36-4a96-a826-4a8d6185c3b8"
      unitRef="usd">20477000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzctMy0xLTEtMA_773e2b43-97d4-42e9-a33d-144eb3a5460e"
      unitRef="usd">-1142000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzctNS0xLTEtMA_da350237-5efd-4094-8c9c-ee038d287003"
      unitRef="usd">87506000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzctNy0xLTEtMA_5952e7c6-a2d1-4c3a-9a78-98843cfb394f"
      unitRef="usd">69345000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzktMS0xLTEtMA_ef31e8d2-8bd9-4fdb-a099-e0a11a1f2277"
      unitRef="usdPerShare">0.12</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzktMy0xLTEtMA_0de5ae19-be32-45dd-a056-92a7b6bbe349"
      unitRef="usdPerShare">-0.01</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzktNS0xLTEtMA_b5bbfbc6-fbeb-455a-9ad0-a96a777d69d1"
      unitRef="usdPerShare">0.50</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzktNy0xLTEtMA_a69ca07c-04b4-4a33-b359-9f5cc4bf717d"
      unitRef="usdPerShare">0.40</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i4d842b53d08546a58f973daf11b6b336_D20200101-20200329"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzEwLTEtMS0xLTA_5347b32e-f47a-425c-a8e2-f670454aa6fa"
      unitRef="usdPerShare">0.12</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i07177f365f7c4768b8d6f79d1941bd9b_D20200330-20200628"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzEwLTMtMS0xLTA_9020d175-f904-4793-a26d-9cbb2bdf8031"
      unitRef="usdPerShare">-0.01</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzEwLTUtMS0xLTA_93c333cd-f0e8-4821-9adf-c4836bd0495a"
      unitRef="usdPerShare">0.49</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZTpmNTVjN2MwZTFjOGE0MDRmYmM1ZGRmNTNhZTU5ZDExNy90YWJsZXJhbmdlOmY1NWM3YzBlMWM4YTQwNGZiYzVkZGY1M2FlNTlkMTE3XzEwLTctMS0xLTA_c6a24f80-d098-457e-8500-9feb2af40cb0"
      unitRef="usdPerShare">0.39</us-gaap:EarningsPerShareDiluted>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzMtMS0xLTEtMA_d913aacc-635a-4162-9aa4-a95b4477b322"
      unitRef="usd">173484000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzMtMy0xLTEtMA_30b2ca97-cdde-403b-97ab-6f7fff42100f"
      unitRef="usd">199047000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzMtNS0xLTEtMA_731e9717-27bd-49c4-b05b-967416b0660a"
      unitRef="usd">183325000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax
      contextRef="i461ae862bded4902a73b0e4183842825_D20190930-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzMtNy0xLTEtMA_f10da8ec-83f6-4563-92d1-5d4544663a2c"
      unitRef="usd">169769000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
    <us-gaap:GrossProfit
      contextRef="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzQtMS0xLTEtMA_c5847deb-dbe8-4618-9d6f-900c2ebbe037"
      unitRef="usd">127200000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzQtMy0xLTEtMA_68c236cd-dbb4-4da9-9aa7-dd9f76812150"
      unitRef="usd">148080000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzQtNS0xLTEtMA_4d4aee44-7970-402f-9f1e-24dbca6e8a31"
      unitRef="usd">135693000</us-gaap:GrossProfit>
    <us-gaap:GrossProfit
      contextRef="i461ae862bded4902a73b0e4183842825_D20190930-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzQtNy0xLTEtMA_4be8d379-4361-4fa3-86b7-55b2e8004ad1"
      unitRef="usd">124898000</us-gaap:GrossProfit>
    <us-gaap:OperatingIncomeLoss
      contextRef="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzUtMS0xLTEtMA_fd03ec58-fd21-4cff-a8f7-bc406df0be80"
      unitRef="usd">30147000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzUtMy0xLTEtMA_4d6557a1-e5e6-40be-8d8e-d144ac42bb23"
      unitRef="usd">51756000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzUtNS0xLTEtMA_24eff625-1597-46b9-b5ac-d795fcd9150c"
      unitRef="usd">43092000</us-gaap:OperatingIncomeLoss>
    <us-gaap:OperatingIncomeLoss
      contextRef="i461ae862bded4902a73b0e4183842825_D20190930-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzUtNy0xLTEtMA_c48844f9-38c7-4408-81fc-1d178b6c83b1"
      unitRef="usd">17607000</us-gaap:OperatingIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzctMS0xLTEtMA_7c8b059a-396a-49f6-93b2-7838641a7708"
      unitRef="usd">33104000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzctMy0xLTEtMA_928cd51b-0455-41ec-b0d0-7794b5dd55c1"
      unitRef="usd">48749000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzctNS0xLTEtMA_d0719d12-0825-4c54-a7d7-4fd4b413c42d"
      unitRef="usd">41685000</us-gaap:NetIncomeLoss>
    <us-gaap:NetIncomeLoss
      contextRef="i461ae862bded4902a73b0e4183842825_D20190930-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzctNy0xLTEtMA_87640939-3550-46e0-bf8c-f1e37908b9d2"
      unitRef="usd">80327000</us-gaap:NetIncomeLoss>
    <us-gaap:EarningsPerShareBasic
      contextRef="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzktMS0xLTEtMA_b158307c-abda-4408-8444-662315850ec0"
      unitRef="usdPerShare">0.19</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzktMy0xLTEtMA_c46d7678-cab6-4fb9-a10c-6b1056711bc8"
      unitRef="usdPerShare">0.28</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzktNS0xLTEtMA_f9f89b0c-d87e-4c19-8d01-aa22701f79b2"
      unitRef="usdPerShare">0.24</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareBasic
      contextRef="i461ae862bded4902a73b0e4183842825_D20190930-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzktNy0xLTEtMA_4aaf96ea-972b-4ea1-8a08-cd5c948829a0"
      unitRef="usdPerShare">0.47</us-gaap:EarningsPerShareBasic>
    <us-gaap:EarningsPerShareDiluted
      contextRef="if7996aa15f714caf82ddf7106af9528c_D20190101-20190331"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzEwLTEtMS0xLTA_f7f3c0c3-ab86-4dff-918f-21eb14c55f60"
      unitRef="usdPerShare">0.19</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i6e6c2567195d4d6eb84e7e55500c43c5_D20190401-20190630"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzEwLTMtMS0xLTA_efb95d81-2ea2-4b90-805f-8b196714c6a0"
      unitRef="usdPerShare">0.28</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i7ccf3128a5694073aaf9d55b4d7bbc25_D20190701-20190929"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzEwLTUtMS0xLTA_09a2ffe5-93ac-4928-9050-8f3fbc8ccec8"
      unitRef="usdPerShare">0.24</us-gaap:EarningsPerShareDiluted>
    <us-gaap:EarningsPerShareDiluted
      contextRef="i461ae862bded4902a73b0e4183842825_D20190930-20191231"
      decimals="2"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTYvZnJhZzo0ODNkNjUyNDNkMTI0MjRiOTQwZmFjYmFhMTkwMzE4Yy90YWJsZToxZTU5MmY0MDE5NWY0NDkwYTg1YTM1YTE5OWIzNmY5ZC90YWJsZXJhbmdlOjFlNTkyZjQwMTk1ZjQ0OTBhODVhMzVhMTk5YjM2ZjlkXzEwLTctMS0xLTA_4bc63d8d-06da-4163-8584-561ce8a39976"
      unitRef="usdPerShare">0.46</us-gaap:EarningsPerShareDiluted>
    <srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock
      contextRef="ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90ZXh0cmVnaW9uOjVlZTZlOWM4YTI5MjRlZjhhZWNkYzRhMGZmYjNlYjNkXzEzOA_18e8bf68-d773-4bda-b58c-8ef7c24ae45c">SCHEDULE II &#x2013; VALUATION AND QUALIFYING ACCOUNTS&lt;div style="margin-bottom:5pt;margin-top:5pt"&gt;&lt;table style="border-collapse:collapse;display:inline-table;vertical-align:top;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;2020&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;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;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;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;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;(300)&lt;/span&gt;&lt;/td&gt;&lt;td style="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;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: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;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;/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;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;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'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;596&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;215&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;(286)&lt;/span&gt;&lt;/td&gt;&lt;td style="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;5&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="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;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;/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;2018&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;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 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;282&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;(61)&lt;/span&gt;&lt;/td&gt;&lt;td style="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;(12)&lt;/span&gt;&lt;/td&gt;&lt;td style="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;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;/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;2020&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;&#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;&#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,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 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:#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,050&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;225&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;16&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="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;2018&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,181&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;182&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;(282)&lt;/span&gt;&lt;/td&gt;&lt;td style="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;(31)&lt;/span&gt;&lt;/td&gt;&lt;td style="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,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;/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;2020&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;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;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,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;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;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;/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;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;padding:2px 0 2px 1pt;text-align:left;vertical-align:bottom"&gt;&lt;span style="color:#000000;font-family:'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;6,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 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,200&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#cceeff;padding:2px 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;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;/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;2018&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;5,309&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;803&#160;&lt;/span&gt;&lt;/td&gt;&lt;td style="background-color:#ffffff;padding:2px 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;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;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div style="margin-top:9pt;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="i8e972664ec3c438389db17b50d0ad10f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzQtMi0xLTEtMA_cc85a8e8-3052-42c8-87ef-e34791cd1449"
      unitRef="usd">530000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i37775b2adc474d559a494eed1d8f6ac5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzQtNC0xLTEtMA_95b79c9e-01dc-40f1-b439-071f8deecb1a"
      unitRef="usd">600000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i37775b2adc474d559a494eed1d8f6ac5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzQtOC0xLTEtMA_2b445c49-f7c5-4876-99bf-10f60e42f21f"
      unitRef="usd">300000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i37775b2adc474d559a494eed1d8f6ac5_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzQtMTAtMS0xLTA_5318d2b8-4cee-4ab5-931f-15bbd6f5fbbf"
      unitRef="usd">1000</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ie492a4ee7d994b01bc240511c5f5ca36_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzQtMTItMS0xLTA_4b5af1d6-acff-494b-a336-984cc5dcf0ea"
      unitRef="usd">831000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ie90ec26745b74b1890b61791666978fb_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzUtMi0xLTEtMA_1320b148-b138-4ef8-9ce7-7d4019133a53"
      unitRef="usd">596000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="ibb41123b05be4a27ad6c96526002ec57_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzUtNC0xLTEtMA_b6d3aea1-6b51-4449-9541-1b6da5c58749"
      unitRef="usd">215000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="ibb41123b05be4a27ad6c96526002ec57_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzUtOC0xLTEtMA_1edf2b5a-3308-4e76-ad51-6e2708d0a091"
      unitRef="usd">286000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="ibb41123b05be4a27ad6c96526002ec57_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzUtMTAtMS0xLTA_047e1837-5d65-4e9d-823d-d85638f7ef6d"
      unitRef="usd">5000</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i8e972664ec3c438389db17b50d0ad10f_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzUtMTItMS0xLTA_4d8ff918-872f-42bd-a66d-de8a753639bb"
      unitRef="usd">530000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ie9684df3af564d50a07cfe28f4f69336_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzYtMi0xLTEtMA_136809c1-57da-4259-951d-c85c0912ed39"
      unitRef="usd">387000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="ic78dc423d96c4e29987c28f52c27bc95_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzYtNC0xLTEtMA_f84ed345-72c6-49e9-a693-d1cea5f32adc"
      unitRef="usd">282000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="ic78dc423d96c4e29987c28f52c27bc95_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzYtOC0xLTEtMA_03fe26ee-7ff5-469d-993c-0fcdeb19e563"
      unitRef="usd">61000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="ic78dc423d96c4e29987c28f52c27bc95_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzYtMTAtMS0xLTA_be8248dd-1d4c-4904-b6c0-1ad57db1259b"
      unitRef="usd">-12000</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ie90ec26745b74b1890b61791666978fb_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzYtMTItMS0xLTA_fa8822b7-07bf-4e99-8b25-a3569c8b99dc"
      unitRef="usd">596000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i54b2ed2f00304fdfa3f801687140ae81_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzgtMi0xLTEtMA_ea1ed3e5-5546-4506-b406-c8801d972565"
      unitRef="usd">1291000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i199f3e5533e043ac9c6f62f8fc1ed886_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzgtNC0xLTEtMA_f368394d-5062-480e-8d06-d38c9997c9af"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i199f3e5533e043ac9c6f62f8fc1ed886_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzgtOC0xLTEtMA_0e36b18f-1761-40b3-a4c1-90c5ab48baa5"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i199f3e5533e043ac9c6f62f8fc1ed886_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzgtMTAtMS0xLTA_42bd001d-a10b-44e4-ad68-afa03c5935fd"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ie4b7cc11c49c4137b5953a249b30e99c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzgtMTItMS0xLTA_edfcee5c-7604-4f19-aedc-11f2e8466cf2"
      unitRef="usd">1291000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i840c3d1abc6941068b772313fe40c779_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzktMi0xLTEtMA_71d557ec-f801-4088-b841-5e9eb8c0be79"
      unitRef="usd">1050000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="ibee2fce1153a48d38797395e471767dc_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzktNC0xLTEtMA_77f9d2d4-1292-4779-9105-19aed0c3d26f"
      unitRef="usd">225000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="ibee2fce1153a48d38797395e471767dc_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzktOC0xLTEtMA_5729ddc4-8556-4d24-9435-05b62f506990"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="ibee2fce1153a48d38797395e471767dc_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzktMTAtMS0xLTA_6253d8a5-8827-4daf-b515-d3fb5f0c9e5d"
      unitRef="usd">16000</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i54b2ed2f00304fdfa3f801687140ae81_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzktMTItMS0xLTA_b28fed01-e75c-4ebc-aa26-1fd7ca0629b3"
      unitRef="usd">1291000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="iba36066cec554376853522d4c65c284f_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEwLTItMS0xLTA_2b22bfb4-cb08-495d-8993-12b0cbca3c7e"
      unitRef="usd">1181000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i496f14a2f40e4f87b27a64cd626ba072_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEwLTQtMS0xLTA_66e2d052-497b-4d77-8be6-33cdea476052"
      unitRef="usd">182000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i496f14a2f40e4f87b27a64cd626ba072_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEwLTgtMS0xLTA_ed4c56a4-b986-4f90-b600-1d5ad862bc58"
      unitRef="usd">282000</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i496f14a2f40e4f87b27a64cd626ba072_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEwLTEwLTEtMS0w_ce0b4ad8-b69e-479e-9ff5-1e8f256f576c"
      unitRef="usd">-31000</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i840c3d1abc6941068b772313fe40c779_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEwLTEyLTEtMS0w_bc233372-e86f-43e3-87c7-38b63e770930"
      unitRef="usd">1050000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="iff0b1f4df45343c4b855bba0c1cb0a1e_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEyLTItMS0xLTA_92f723c4-a90f-4f6f-adbc-fd1e3f29da7a"
      unitRef="usd">7312000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i62f1344296954ca19a69714d6e44cdba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEyLTQtMS0xLTA_24d0126e-f4a2-4d12-9d8b-063a5a8bf72e"
      unitRef="usd">1256000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i62f1344296954ca19a69714d6e44cdba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEyLTgtMS0xLTA_2bf7def7-64be-41f8-b8df-2ced3aa217bb"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i62f1344296954ca19a69714d6e44cdba_D20200101-20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEyLTEwLTEtMS0w_b47e4139-13d8-4133-a3f7-6bb51ec308f7"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="ib63ab0f617af4d9fb37d199aca629b2c_I20201231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEyLTEyLTEtMS0w_a7162a1b-e58c-4ba0-9d4d-e18a11c7c06f"
      unitRef="usd">8568000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="if2e1eff52c264d429b1146b698c8ad14_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEzLTItMS0xLTA_270807fe-f973-492b-ba74-cf10e1fb9801"
      unitRef="usd">6112000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i6a93ce3bf60c414c9a02243f3e5fe615_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEzLTQtMS0xLTA_ff374b2a-23c7-4aff-8f51-9919125d1dac"
      unitRef="usd">1200000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i6a93ce3bf60c414c9a02243f3e5fe615_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEzLTgtMS0xLTA_609406e3-8fee-459b-8484-32ece6d1ec79"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i6a93ce3bf60c414c9a02243f3e5fe615_D20190101-20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEzLTEwLTEtMS0w_4332d41c-c480-4d88-820c-b6c7b2bde183"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="iff0b1f4df45343c4b855bba0c1cb0a1e_I20191231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzEzLTEyLTEtMS0w_2d6d55d2-f729-4f54-9e15-883d8d80762c"
      unitRef="usd">7312000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="i759f2e339dc54f62882a481da1682c75_I20171231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzE0LTItMS0xLTA_da2e37ae-b56a-4d17-a39f-87bb63d8842c"
      unitRef="usd">5309000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense
      contextRef="i48c9b3bfd9b84764b06ddf508e993169_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzE0LTQtMS0xLTA_8126b470-a66a-4bfc-82f6-d023f79a936a"
      unitRef="usd">803000</us-gaap:ValuationAllowancesAndReservesChargedToCostAndExpense>
    <us-gaap:ValuationAllowancesAndReservesDeductions
      contextRef="i48c9b3bfd9b84764b06ddf508e993169_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzE0LTgtMS0xLTA_6bcc194f-556b-4dd8-8fa7-ada6480e063b"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesDeductions>
    <us-gaap:ValuationAllowancesAndReservesAdjustments
      contextRef="i48c9b3bfd9b84764b06ddf508e993169_D20180101-20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzE0LTEwLTEtMS0w_af013dbf-5843-40e9-8a8d-e9f1a89061ee"
      unitRef="usd">0</us-gaap:ValuationAllowancesAndReservesAdjustments>
    <us-gaap:ValuationAllowancesAndReservesBalance
      contextRef="if2e1eff52c264d429b1146b698c8ad14_I20181231"
      decimals="-3"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xOTkvZnJhZzo1ZWU2ZTljOGEyOTI0ZWY4YWVjZGM0YTBmZmIzZWIzZC90YWJsZTphNGY3MmE5Y2U1ZWE0OTc2YmRkMmQ4NDJkMTA1YTI2NS90YWJsZXJhbmdlOmE0ZjcyYTljZTVlYTQ5NzZiZGQyZDg0MmQxMDVhMjY1XzE0LTEyLTEtMS0w_4b1b3103-1f0e-471c-94be-15cac31bdfc7"
      unitRef="usd">6112000</us-gaap:ValuationAllowancesAndReservesBalance>
    <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant
      contextRef="i651cdc8b58564e339fa15af8d913fa7b_I20201231"
      decimals="0"
      id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8yMjAvZnJhZzpjYmFiMTI1ZjhmZmU0ZDI1YTY5YTI0ZDljNDRhNjkwYy90YWJsZTo0ODA3ZjM4YzI3Nzc0MGUzODc4N2ZkNzBmMmVmNzE0NS90YWJsZXJhbmdlOjQ4MDdmMzhjMjc3NzQwZTM4Nzg3ZmQ3MGYyZWY3MTQ1XzItNS0xLTEtMA_b7e6ad25-b5e1-4b29-8973-d1966b7ecbf5"
      unitRef="shares">16260393</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant>
    <link:footnoteLink
      xlink:role="http://www.xbrl.org/2003/role/link"
      xlink:type="extended">
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMy0xLTEtMA_fcf9ac05-73e0-4b9a-9f42-051740b17006"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMy0xLTEtMA_fcf9ac05-73e0-4b9a-9f42-051740b17006"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItNS0xLTEtMA_cf5434e1-c84e-40e6-ae37-abdc8b82c0fb"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItNS0xLTEtMA_cf5434e1-c84e-40e6-ae37-abdc8b82c0fb"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMS0xLTEtMA_3fcc5ff5-86e9-4ec4-b05d-ed578f6b733e"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMS0xLTEtMA_3fcc5ff5-86e9-4ec4-b05d-ed578f6b733e"
          xlink:type="locator"/>
        <link:footnote id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83MC9mcmFnOmRmNzE1YWU1YzgzZTRkYjU4NmI0MDBjZWUwZjFmZWJhL3RleHRyZWdpb246ZGY3MTVhZTVjODNlNGRiNTg2YjQwMGNlZTBmMWZlYmFfMTc2_57fc51a2-a860-4939-bb07-1cb794b56f77" xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83MC9mcmFnOmRmNzE1YWU1YzgzZTRkYjU4NmI0MDBjZWUwZjFmZWJhL3RleHRyZWdpb246ZGY3MTVhZTVjODNlNGRiNTg2YjQwMGNlZTBmMWZlYmFfMTc2_57fc51a2-a860-4939-bb07-1cb794b56f77" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-US"><xhtml:div><xhtml:span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Prior period results have been adjusted to reflect the two-for-one stock split effected in the form of a stock dividend which occurred in the fourth quarter of 2017.</xhtml:span></xhtml:div><xhtml:div><xhtml:span><xhtml:br/></xhtml:span></xhtml:div><xhtml:div><xhtml:span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">2 </xhtml:span></xhtml:div></link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMy0xLTEtMA_fcf9ac05-73e0-4b9a-9f42-051740b17006"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83MC9mcmFnOmRmNzE1YWU1YzgzZTRkYjU4NmI0MDBjZWUwZjFmZWJhL3RleHRyZWdpb246ZGY3MTVhZTVjODNlNGRiNTg2YjQwMGNlZTBmMWZlYmFfMTc2_57fc51a2-a860-4939-bb07-1cb794b56f77"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItNS0xLTEtMA_cf5434e1-c84e-40e6-ae37-abdc8b82c0fb"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83MC9mcmFnOmRmNzE1YWU1YzgzZTRkYjU4NmI0MDBjZWUwZjFmZWJhL3RleHRyZWdpb246ZGY3MTVhZTVjODNlNGRiNTg2YjQwMGNlZTBmMWZlYmFfMTc2_57fc51a2-a860-4939-bb07-1cb794b56f77"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml82Ny9mcmFnOjcwY2M5OTU3YjA0YjRkODA5OTY1OGNiMTBiZWIzYTMwL3RhYmxlOmQ5MGRmOGM0ZTFjYjRkOTc4M2YyMzM4ZmQzMGFkOGM4L3RhYmxlcmFuZ2U6ZDkwZGY4YzRlMWNiNGQ5NzgzZjIzMzhmZDMwYWQ4YzhfMzItMS0xLTEtMA_3fcc5ff5-86e9-4ec4-b05d-ed578f6b733e"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml83MC9mcmFnOmRmNzE1YWU1YzgzZTRkYjU4NmI0MDBjZWUwZjFmZWJhL3RleHRyZWdpb246ZGY3MTVhZTVjODNlNGRiNTg2YjQwMGNlZTBmMWZlYmFfMTc2_57fc51a2-a860-4939-bb07-1cb794b56f77"
          xlink:type="arc"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy00LTEtMS0w_cabb0072-09e1-4075-b53c-ea0a18e894b0"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy00LTEtMS0w_cabb0072-09e1-4075-b53c-ea0a18e894b0"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi0yLTEtMS0w_5cdbaf78-2bf5-43cb-af9e-67554557063d"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi0yLTEtMS0w_5cdbaf78-2bf5-43cb-af9e-67554557063d"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNi0xLTEtMA_eac98b88-4a0d-4608-8f13-ca18c1caba5e"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNi0xLTEtMA_eac98b88-4a0d-4608-8f13-ca18c1caba5e"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtOC0xLTEtMA_5d60a2fd-a71d-4dd1-a5f1-fc8412f5fc24"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtOC0xLTEtMA_5d60a2fd-a71d-4dd1-a5f1-fc8412f5fc24"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNS02LTEtMS0w_6dc2f805-559c-4217-9e65-ee730488199d"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNS02LTEtMS0w_6dc2f805-559c-4217-9e65-ee730488199d"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtOC0xLTEtMA_0fb24a7b-2556-4979-a60f-9291ff96ee81"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtOC0xLTEtMA_0fb24a7b-2556-4979-a60f-9291ff96ee81"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi02LTEtMS0w_36bb30b6-f359-4d6b-9e2d-d0d471f131f5"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi02LTEtMS0w_36bb30b6-f359-4d6b-9e2d-d0d471f131f5"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC00LTEtMS0w_90389b71-c309-48c6-9c56-d09124fdb990"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC00LTEtMS0w_90389b71-c309-48c6-9c56-d09124fdb990"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTctOC0xLTEtMA_b8a33808-ccdd-442f-a364-f30093273e58"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTctOC0xLTEtMA_b8a33808-ccdd-442f-a364-f30093273e58"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNC0xLTEtMA_6390b954-bf90-4800-ab31-63f8cd1e2827"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNC0xLTEtMA_6390b954-bf90-4800-ab31-63f8cd1e2827"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctOC0xLTEtMA_71d789d2-d005-43da-9967-b51be795e669"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctOC0xLTEtMA_71d789d2-d005-43da-9967-b51be795e669"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjktOC0xLTEtMA_0ad125f1-e142-488e-97fc-3980b44ffb5a"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjktOC0xLTEtMA_0ad125f1-e142-488e-97fc-3980b44ffb5a"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtMi0xLTEtMA_fbd83d7f-f0cd-42b8-ae99-fee6369b5000"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtMi0xLTEtMA_fbd83d7f-f0cd-42b8-ae99-fee6369b5000"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtOC0xLTEtMA_f8467d93-a030-4341-95a4-4b3e376e1b2b"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtOC0xLTEtMA_f8467d93-a030-4341-95a4-4b3e376e1b2b"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy02LTEtMS0w_7a8f4424-377c-47b0-8ed8-5678f90a66d7"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy02LTEtMS0w_7a8f4424-377c-47b0-8ed8-5678f90a66d7"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtMi0xLTEtMA_a8456ff2-6c8e-4327-9767-95e0aab8bc6f"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtMi0xLTEtMA_a8456ff2-6c8e-4327-9767-95e0aab8bc6f"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi00LTEtMS0w_e73dfbc5-c92b-45b2-86a3-6b2ce8ca339d"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi00LTEtMS0w_e73dfbc5-c92b-45b2-86a3-6b2ce8ca339d"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNi0xLTEtMA_8149619e-d381-4bac-a976-5e8949ceaadd"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNi0xLTEtMA_8149619e-d381-4bac-a976-5e8949ceaadd"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTktOC0xLTEtMA_2f630d93-31b9-4665-8ce3-c5897bea9348"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTktOC0xLTEtMA_2f630d93-31b9-4665-8ce3-c5897bea9348"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNi0xLTEtMA_c5131655-9e82-4715-b160-56721b0fc3b6"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNi0xLTEtMA_c5131655-9e82-4715-b160-56721b0fc3b6"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNC0xLTEtMA_3c7db71d-765a-4371-a27f-d97efe6c933b"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNC0xLTEtMA_3c7db71d-765a-4371-a27f-d97efe6c933b"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy0yLTEtMS0w_7e137acc-b71e-4fcc-8be3-7d9be1b8df98"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy0yLTEtMS0w_7e137acc-b71e-4fcc-8be3-7d9be1b8df98"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNC0xLTEtMA_acd85e5b-1f79-40a0-99d9-c2be23943359"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNC0xLTEtMA_acd85e5b-1f79-40a0-99d9-c2be23943359"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjgtNi0xLTEtMA_dca86476-293c-4ad4-99cb-4b6675969150"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjgtNi0xLTEtMA_dca86476-293c-4ad4-99cb-4b6675969150"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi04LTEtMS0w_452815a1-2492-4932-95b1-77aeae6e331c"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi04LTEtMS0w_452815a1-2492-4932-95b1-77aeae6e331c"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTYtNi0xLTEtMA_bb353597-ac6e-4360-a250-05c0590c7a5e"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTYtNi0xLTEtMA_bb353597-ac6e-4360-a250-05c0590c7a5e"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtMi0xLTEtMA_d48391c5-c93c-4ca8-84f7-87c69ab6b519"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtMi0xLTEtMA_d48391c5-c93c-4ca8-84f7-87c69ab6b519"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctMi0xLTEtMA_33cce827-38a3-449f-949c-d6ff313a061a"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctMi0xLTEtMA_33cce827-38a3-449f-949c-d6ff313a061a"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNi0xLTEtMA_86878b94-446c-4751-b747-53766ecc532e"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNi0xLTEtMA_86878b94-446c-4751-b747-53766ecc532e"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNi04LTEtMS0w_3ea9afc7-0cfd-435d-b528-9f9c80ab70b9"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNi04LTEtMS0w_3ea9afc7-0cfd-435d-b528-9f9c80ab70b9"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtMi0xLTEtMA_f6b63f9c-710d-4bca-be6e-b95ac093b305"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtMi0xLTEtMA_f6b63f9c-710d-4bca-be6e-b95ac093b305"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctNC0xLTEtMA_5e569250-0a3e-400c-94ab-ddb15f9ac54c"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctNC0xLTEtMA_5e569250-0a3e-400c-94ab-ddb15f9ac54c"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtMi0xLTEtMA_0022d7be-0047-4a75-85db-40447966923d"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtMi0xLTEtMA_0022d7be-0047-4a75-85db-40447966923d"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNC0xLTEtMA_fd1403d8-b01a-49d8-af68-9ab0091a74df"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNC0xLTEtMA_fd1403d8-b01a-49d8-af68-9ab0091a74df"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy04LTEtMS0w_229f1c19-7a07-418f-befd-ff97f4674e2f"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy04LTEtMS0w_229f1c19-7a07-418f-befd-ff97f4674e2f"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC0yLTEtMS0w_c319c94c-9d08-4046-b823-681d92f5ae90"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC0yLTEtMS0w_c319c94c-9d08-4046-b823-681d92f5ae90"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNC0xLTEtMA_d2213fd1-bdbf-41ca-89f3-4abbae7005e1"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNC0xLTEtMA_d2213fd1-bdbf-41ca-89f3-4abbae7005e1"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC04LTEtMS0w_080ff9e1-117c-4112-9676-839dc83b6532"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC04LTEtMS0w_080ff9e1-117c-4112-9676-839dc83b6532"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtMi0xLTEtMA_14baac37-176a-46da-a9bd-1fc18e35b395"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtMi0xLTEtMA_14baac37-176a-46da-a9bd-1fc18e35b395"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtOC0xLTEtMA_f1fb524c-80ad-487e-bbbb-4a916c92385f"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtOC0xLTEtMA_f1fb524c-80ad-487e-bbbb-4a916c92385f"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtNC0xLTEtMA_a751e0f1-753e-47fb-9d55-6d3a74ad1d63"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtNC0xLTEtMA_a751e0f1-753e-47fb-9d55-6d3a74ad1d63"
          xlink:type="locator"/>
        <link:loc
          xlink:href="#id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNi0xLTEtMA_fcb04f98-617c-43c6-9d4b-24816237d53a"
          xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNi0xLTEtMA_fcb04f98-617c-43c6-9d4b-24816237d53a"
          xlink:type="locator"/>
        <link:footnote id="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6" xlink:label="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-US">Prior period amounts have been adjusted to reflect the two-for-one stock split effected in the form of a stock dividend which occurred in the fourth quarter of 2017.</link:footnote>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy00LTEtMS0w_cabb0072-09e1-4075-b53c-ea0a18e894b0"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi0yLTEtMS0w_5cdbaf78-2bf5-43cb-af9e-67554557063d"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNi0xLTEtMA_eac98b88-4a0d-4608-8f13-ca18c1caba5e"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtOC0xLTEtMA_5d60a2fd-a71d-4dd1-a5f1-fc8412f5fc24"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNS02LTEtMS0w_6dc2f805-559c-4217-9e65-ee730488199d"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtOC0xLTEtMA_0fb24a7b-2556-4979-a60f-9291ff96ee81"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi02LTEtMS0w_36bb30b6-f359-4d6b-9e2d-d0d471f131f5"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC00LTEtMS0w_90389b71-c309-48c6-9c56-d09124fdb990"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTctOC0xLTEtMA_b8a33808-ccdd-442f-a364-f30093273e58"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNC0xLTEtMA_6390b954-bf90-4800-ab31-63f8cd1e2827"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctOC0xLTEtMA_71d789d2-d005-43da-9967-b51be795e669"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjktOC0xLTEtMA_0ad125f1-e142-488e-97fc-3980b44ffb5a"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtMi0xLTEtMA_fbd83d7f-f0cd-42b8-ae99-fee6369b5000"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtOC0xLTEtMA_f8467d93-a030-4341-95a4-4b3e376e1b2b"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy02LTEtMS0w_7a8f4424-377c-47b0-8ed8-5678f90a66d7"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtMi0xLTEtMA_a8456ff2-6c8e-4327-9767-95e0aab8bc6f"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi00LTEtMS0w_e73dfbc5-c92b-45b2-86a3-6b2ce8ca339d"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNi0xLTEtMA_8149619e-d381-4bac-a976-5e8949ceaadd"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTktOC0xLTEtMA_2f630d93-31b9-4665-8ce3-c5897bea9348"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNi0xLTEtMA_c5131655-9e82-4715-b160-56721b0fc3b6"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtNC0xLTEtMA_3c7db71d-765a-4371-a27f-d97efe6c933b"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMy0yLTEtMS0w_7e137acc-b71e-4fcc-8be3-7d9be1b8df98"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtNC0xLTEtMA_acd85e5b-1f79-40a0-99d9-c2be23943359"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjgtNi0xLTEtMA_dca86476-293c-4ad4-99cb-4b6675969150"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMi04LTEtMS0w_452815a1-2492-4932-95b1-77aeae6e331c"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTYtNi0xLTEtMA_bb353597-ac6e-4360-a250-05c0590c7a5e"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtMi0xLTEtMA_d48391c5-c93c-4ca8-84f7-87c69ab6b519"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctMi0xLTEtMA_33cce827-38a3-449f-949c-d6ff313a061a"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNi0xLTEtMA_86878b94-446c-4751-b747-53766ecc532e"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNi04LTEtMS0w_3ea9afc7-0cfd-435d-b528-9f9c80ab70b9"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTMtMi0xLTEtMA_f6b63f9c-710d-4bca-be6e-b95ac093b305"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjctNC0xLTEtMA_5e569250-0a3e-400c-94ab-ddb15f9ac54c"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjUtMi0xLTEtMA_0022d7be-0047-4a75-85db-40447966923d"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMjYtNC0xLTEtMA_fd1403d8-b01a-49d8-af68-9ab0091a74df"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNy04LTEtMS0w_229f1c19-7a07-418f-befd-ff97f4674e2f"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC0yLTEtMS0w_c319c94c-9d08-4046-b823-681d92f5ae90"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTQtNC0xLTEtMA_d2213fd1-bdbf-41ca-89f3-4abbae7005e1"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfNC04LTEtMS0w_080ff9e1-117c-4112-9676-839dc83b6532"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtMi0xLTEtMA_14baac37-176a-46da-a9bd-1fc18e35b395"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtOC0xLTEtMA_f1fb524c-80ad-487e-bbbb-4a916c92385f"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMTUtNC0xLTEtMA_a751e0f1-753e-47fb-9d55-6d3a74ad1d63"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
        <link:footnoteArc
          xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote"
          xlink:from="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml84OC9mcmFnOjMxZGUwMWI1OGM4ODQxZTI5MTMyODg5Y2M0YzVjYzI3L3RhYmxlOmEzNmNjOGZjZWMzODQ1ZWM5MmUzMmNhZjk1OTU0OGRkL3RhYmxlcmFuZ2U6YTM2Y2M4ZmNlYzM4NDVlYzkyZTMyY2FmOTU5NTQ4ZGRfMzYtNi0xLTEtMA_fcb04f98-617c-43c6-9d4b-24816237d53a"
          xlink:to="id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85MS9mcmFnOmZhODFjZjhmNWFlZjQzNDU4MzBiOWFlNDU1ZmNiNjRiL3RleHRyZWdpb246ZmE4MWNmOGY1YWVmNDM0NTgzMGI5YWU0NTVmY2I2NGJfMTgz_f2e3fdcb-96ab-4135-b6d8-89545dc610a6"
          xlink:type="arc"/>
    </link:footnoteLink>
</xbrl>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>15
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782878776">
<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, 2020</div></th>
<th class="th"><div>Jan. 31, 2021</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_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,  2020<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">$ 9,792,441,959<span></span>
</td>
</tr>
<tr 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">176,028,184<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">2020<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>The end date of the period reflected on the cover page if a periodic report. For all other reports and registration statements containing historical data, it is the date up through which that historical data is presented.  If there is no historical data in the report, use the filing date. 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 Regulation 12B<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 Regulation 12B<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 Regulation 12B<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 Regulation 12B<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 Regulation 12B<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 Regulation 12B<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 Regulation 12B<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>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_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>16
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502710560216">
<tr>
<th class="tl" colspan="1" 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="1">3 Months Ended</th>
<th class="th" colspan="6">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th" colspan="2"><div>Dec. 31, 2020</div></th>
<th class="th" colspan="2"><div>Dec. 31, 2019</div></th>
<th class="th" colspan="2"><div>Dec. 31, 2018</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="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>
</tr>
<tr class="ro">
<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">$ 223,615<span></span>
</td>
<td class="nump">$ 811,020<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 725,625<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 806,338<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="re">
<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="text">&#160;<span></span>
</td>
<td class="nump">206,421<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">189,754<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">206,052<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></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="nump">168,455<span></span>
</td>
<td class="nump">604,599<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">535,871<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">600,286<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="re">
<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="text">&#160;<span></span>
</td>
<td class="nump">130,982<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">119,427<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">116,445<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="ro">
<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="text">&#160;<span></span>
</td>
<td class="nump">267,593<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">273,842<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">262,699<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="re">
<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">875<span></span>
</td>
<td class="nump">15,924<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">0<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">0<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="ro">
<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="fn" style="border-bottom: 0px;"></td>
<td class="nump">0<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">0<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></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="nump">59,085<span></span>
</td>
<td class="nump">170,529<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">142,602<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">221,142<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="ro">
<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="text">&#160;<span></span>
</td>
<td class="nump">3,697<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="num">(509)<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="num">(1,064)<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="re">
<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="text">&#160;<span></span>
</td>
<td class="nump">12,994<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">19,689<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">14,715<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="ro">
<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="text">&#160;<span></span>
</td>
<td class="num">(309)<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">1,212<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="num">(219)<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments', window );">Income before income tax expense (benefit)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">186,911<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">162,994<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">234,574<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="ro">
<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="text">&#160;<span></span>
</td>
<td class="nump">10,725<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="num">(40,871)<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">15,307<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></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="nump">$ 69,345<span></span>
</td>
<td class="nump">$ 176,186<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 203,865<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 219,267<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="ro">
<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="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>
</tr>
<tr class="re">
<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="nump">$ 0.40<span></span>
</td>
<td class="nump">$ 1.02<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 1.19<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 1.27<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="ro">
<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="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>
</tr>
<tr class="re">
<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="nump">0.39<span></span>
</td>
<td class="nump">$ 1.00<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 1.16<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">$ 1.24<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="ro">
<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="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>
</tr>
<tr class="re">
<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="text">&#160;<span></span>
</td>
<td class="nump">173,489<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">171,194<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">172,333<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="ro">
<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="text">&#160;<span></span>
</td>
<td class="nump">176,592<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">175,269<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td class="nump">177,406<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
</tr>
<tr class="re">
<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="nump">$ 2.00<span></span>
</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="nump">$ 0.185<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
</tr>
<tr><td colspan="8"></td></tr>
<tr><td colspan="8"><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"><div><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Prior period results have been adjusted to reflect the two-for-one stock split effected in the form of a stock dividend which occurred in the fourth quarter of 2017.</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:120%">2 </span></div></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>num: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=120395209&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 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22583-107794<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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-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 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1448-109256<br><br>Reference 4: 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=109234566&amp;loc=d3e22595-107794<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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1337-109256<br><br>Reference 7: 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=120380238&amp;loc=d3e4984-109258<br><br>Reference 8: 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 9: 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=120380238&amp;loc=d3e3842-109258<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 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22644-107794<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=6371337&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 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=120395209&amp;loc=SL114868664-224227<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 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1252-109256<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 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=SL5780133-109256<br><br>Reference 15: 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>num: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=120380238&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=109234566&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=120380238&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=121326447&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=109234566&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=109234566&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=109234566&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=121326447&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 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 10: 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=6371337&amp;loc=d3e3550-109257<br><br>Reference 11: 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 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 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-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 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1337-109256<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=120395209&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>num: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=109240200&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=121605123&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=6450222&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/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 2: 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=120311839&amp;loc=d3e8924-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 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8906-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(g)(1)(ii))<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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8736-108599<br><br>Reference 6: 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=75031198&amp;loc=d3e14064-108612<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 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8933-108599<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.1,2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120395209&amp;loc=SL114868664-224227<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 (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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=121586364&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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 before deduction of income tax expense (benefit) and income (loss) attributable to noncontrolling interest, and addition of income (loss) from equity method investments.</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 (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8906-108599<br><br>Reference 4: 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=120311839&amp;loc=d3e8924-108599<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<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)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<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 22<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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=116825942&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=84230637&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=120311839&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=109234566&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=120385591&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=109234566&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=120395209&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://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=121641772&amp;loc=SL7669619-108580<br><br>Reference 2: 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=120311839&amp;loc=d3e8924-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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<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 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 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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 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 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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22595-107794<br><br>Reference 9: 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=121641772&amp;loc=SL7669625-108580<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=120311839&amp;loc=d3e8736-108599<br><br>Reference 11: 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 12: 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=120395209&amp;loc=SL114868664-224227<br><br>Reference 13: 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=121586364&amp;loc=d3e3602-108585<br><br>Reference 14: 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=109234566&amp;loc=d3e22499-107794<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=109234566&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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=75031198&amp;loc=d3e14064-108612<br><br>Reference 17: 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=120311839&amp;loc=d3e8906-108599<br><br>Reference 18: 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=109234566&amp;loc=d3e22583-107794<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://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=121326447&amp;loc=SL5780133-109256<br><br>Reference 21: 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 22: 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=120311839&amp;loc=d3e8933-108599<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=109234566&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_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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120395209&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://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 2: 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://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> -Subparagraph (b)<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 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121586364&amp;loc=d3e3602-108585<br><br>Reference 4: 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))<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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=121604090&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=120311839&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=120311839&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=120311839&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=121604090&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=120395209&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=6371337&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=121326447&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=6371337&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=121326447&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>17
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502783227576">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 176,186<span></span>
</td>
<td class="nump">$ 203,865<span></span>
</td>
<td class="nump">$ 219,267<span></span>
</td>
</tr>
<tr class="re">
<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 $981, $515, and ($188) in 2020 2019, and 2018, respectively</a></td>
<td class="nump">6,478<span></span>
</td>
<td class="nump">5,219<span></span>
</td>
<td class="num">(1,185)<span></span>
</td>
</tr>
<tr class="re">
<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">(4,119)<span></span>
</td>
<td class="num">(1,452)<span></span>
</td>
<td class="num">(501)<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="nump">2,359<span></span>
</td>
<td class="nump">3,767<span></span>
</td>
<td class="num">(1,686)<span></span>
</td>
</tr>
<tr 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="nump">1,115<span></span>
</td>
<td class="num">(541)<span></span>
</td>
<td class="num">(4,216)<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="nump">1,115<span></span>
</td>
<td class="num">(541)<span></span>
</td>
<td class="num">(4,216)<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="nump">3,474<span></span>
</td>
<td class="nump">3,226<span></span>
</td>
<td class="num">(5,902)<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">$ 179,660<span></span>
</td>
<td class="nump">$ 207,091<span></span>
</td>
<td class="nump">$ 213,365<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=120395209&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=121641772&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=121641772&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=121641772&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://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=121641772&amp;loc=SL7669619-108580<br><br>Reference 2: 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=120311839&amp;loc=d3e8924-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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<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 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 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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 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 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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22595-107794<br><br>Reference 9: 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=121641772&amp;loc=SL7669625-108580<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=120311839&amp;loc=d3e8736-108599<br><br>Reference 11: 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 12: 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=120395209&amp;loc=SL114868664-224227<br><br>Reference 13: 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=121586364&amp;loc=d3e3602-108585<br><br>Reference 14: 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=109234566&amp;loc=d3e22499-107794<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=109234566&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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=75031198&amp;loc=d3e14064-108612<br><br>Reference 17: 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=120311839&amp;loc=d3e8906-108599<br><br>Reference 18: 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=109234566&amp;loc=d3e22583-107794<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://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=121326447&amp;loc=SL5780133-109256<br><br>Reference 21: 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 22: 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=120311839&amp;loc=d3e8933-108599<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=109234566&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_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=108774443&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=108774443&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=108774443&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=108774443&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=121641772&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=121641772&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=108774443&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=121641772&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=108774443&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=121641772&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=121641772&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=121645371&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=121641772&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=121641772&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=121641772&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>18
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709961736">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax', window );">Tax effect of unrealized gain on cash flow hedges</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_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax', window );">Tax effect of unrealized gain (loss) on available-for-sale investments</a></td>
<td class="nump">981<span></span>
</td>
<td class="nump">515<span></span>
</td>
<td class="num">(188)<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax', window );">Tax effect 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_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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), before 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 10<br> -Section 45<br> -Paragraph 9<br> -URI http://asc.fasb.org/extlink&amp;oid=120253306&amp;loc=d3e28129-110885<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 10A<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121641772&amp;loc=SL7669646-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 30<br> -Section 45<br> -Paragraph 21<br> -URI http://asc.fasb.org/extlink&amp;oid=118261656&amp;loc=d3e32262-110900<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 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121641772&amp;loc=d3e640-108580<br><br>Reference 5: 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=109240200&amp;loc=d3e30755-110894<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 increase (decrease) in accumulated gain (loss) from derivative instruments designated and qualifying as the effective portion of cash flow hedges and an entity's share of an equity investee's increase (decrease) in deferred hedging gain (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 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121641772&amp;loc=SL7669646-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 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121641772&amp;loc=d3e640-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_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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=121641772&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=121641772&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>19
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782878392">
<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, 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_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">$ 269,073,000<span></span>
</td>
<td class="nump">$ 171,431,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 $102,258 and $235,610 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</a></td>
<td class="nump">103,240,000<span></span>
</td>
<td class="nump">240,470,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 $831 and $530 in 2020 and 2019, respectively</a></td>
<td class="nump">125,696,000<span></span>
</td>
<td class="nump">103,447,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">5,632,000<span></span>
</td>
<td class="nump">4,782,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">60,830,000<span></span>
</td>
<td class="nump">60,261,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">37,220,000<span></span>
</td>
<td class="nump">26,840,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">601,691,000<span></span>
</td>
<td class="nump">607,231,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 $390,417 and $431,633 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</a></td>
<td class="nump">395,125,000<span></span>
</td>
<td class="nump">433,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_PropertyPlantAndEquipmentNet', window );">Property, plant, and equipment, net</a></td>
<td class="nump">79,173,000<span></span>
</td>
<td class="nump">89,443,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">22,582,000<span></span>
</td>
<td class="nump">17,522,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">244,078,000<span></span>
</td>
<td class="nump">243,445,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">15,555,000<span></span>
</td>
<td class="nump">39,490,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">434,704,000<span></span>
</td>
<td class="nump">449,519,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,794,000<span></span>
</td>
<td class="nump">5,833,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">1,800,702,000<span></span>
</td>
<td class="nump">1,885,935,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">16,270,000<span></span>
</td>
<td class="nump">17,866,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">77,264,000<span></span>
</td>
<td class="nump">52,199,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">9,379,000<span></span>
</td>
<td class="nump">30,333,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">21,274,000<span></span>
</td>
<td class="nump">14,432,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">8,110,000<span></span>
</td>
<td class="nump">5,647,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">132,297,000<span></span>
</td>
<td class="nump">120,477,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">18,120,000<span></span>
</td>
<td class="nump">12,326,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">314,952,000<span></span>
</td>
<td class="nump">332,344,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,257,000<span></span>
</td>
<td class="nump">11,563,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">48,915,000<span></span>
</td>
<td class="nump">51,113,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">9,959,000<span></span>
</td>
<td class="nump">2,402,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">538,500,000<span></span>
</td>
<td class="nump">530,225,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 2020 and 2019, 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 2020 and 2019, respectively, issued and outstanding: 175,790 and 172,440 shares in 2020 and 2019, respectively</a></td>
<td class="nump">352,000<span></span>
</td>
<td class="nump">345,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">807,739,000<span></span>
</td>
<td class="nump">639,372,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">487,912,000<span></span>
</td>
<td class="nump">753,268,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">(33,801,000)<span></span>
</td>
<td class="num">(37,275,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,262,202,000<span></span>
</td>
<td class="nump">1,355,710,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">$ 1,800,702,000<span></span>
</td>
<td class="nump">$ 1,885,935,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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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=121593590&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=121566466&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=121593590&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=121641772&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=121641772&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=121370832&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=121370832&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=121641772&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/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 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 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=75031198&amp;loc=d3e14064-108612<br><br>Reference 4: 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=121559654&amp;loc=d3e5710-111685<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 (a)<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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 22<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8736-108599<br><br>Reference 8: 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 9: 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 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 30<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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=121566466&amp;loc=d3e6801-107765<br><br>Reference 2: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 3: 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 4: 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 5: 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=121559654&amp;loc=d3e5710-111685<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.9)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 7: 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 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 45<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=121566466&amp;loc=d3e6676-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_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=121558606&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=121553693&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=121586364&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=121566466&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=121556615&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=121556615&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=121604090&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=120406818&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=120406818&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=120406818&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=120406818&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://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=121566466&amp;loc=d3e6676-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.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://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 2: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 3: 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=121559654&amp;loc=d3e5710-111685<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.19-26)<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 810<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=121559654&amp;loc=d3e5710-111685<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/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=120311839&amp;loc=d3e8906-108599<br><br>Reference 8: 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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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://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 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)(25))<br> -URI http://asc.fasb.org/extlink&amp;oid=120400017&amp;loc=d3e572229-122910<br><br>Reference 4: 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 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(32))<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: 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=75031198&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/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=121559654&amp;loc=d3e5710-111685<br><br>Reference 2: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 3: 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 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(g)(1)(ii))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<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.21)<br> -URI http://asc.fasb.org/extlink&amp;oid=120391452&amp;loc=d3e13212-122682<br><br>Reference 6: 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=121559654&amp;loc=d3e5710-111685<br><br>Reference 7: 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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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=121603541&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=121603541&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=121603541&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=121566466&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://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_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/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 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)(23)(a)(4))<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 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121370832&amp;loc=SL117420844-207641<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 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 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=121370832&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://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=27010918&amp;loc=d3e74512-122707<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(31))<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 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 6: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 7: 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>20
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502793089368">
<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, 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_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">$ 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_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,790,000<span></span>
</td>
<td class="nump">172,440,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,790,000<span></span>
</td>
<td class="nump">172,440,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_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>num: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=109259400&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_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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>num: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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>21
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785251832">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 176,186<span></span>
</td>
<td class="nump">$ 203,865<span></span>
</td>
<td class="nump">$ 219,267<span></span>
</td>
</tr>
<tr class="re">
<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">42,661<span></span>
</td>
<td class="nump">45,589<span></span>
</td>
<td class="nump">41,090<span></span>
</td>
</tr>
<tr class="re">
<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">22,139<span></span>
</td>
<td class="nump">21,527<span></span>
</td>
<td class="nump">18,473<span></span>
</td>
</tr>
<tr class="ro">
<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">1,817<span></span>
</td>
<td class="nump">324<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_AmortizationOfIntangibleAssets', window );">Amortization of intangible assets</a></td>
<td class="nump">4,364<span></span>
</td>
<td class="nump">3,373<span></span>
</td>
<td class="nump">3,076<span></span>
</td>
</tr>
<tr class="ro">
<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">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">9,908<span></span>
</td>
<td class="nump">5,296<span></span>
</td>
<td class="nump">2,985<span></span>
</td>
</tr>
<tr class="ro">
<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">3,427<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_AccretionAmortizationOfDiscountsAndPremiumsInvestments', window );">Amortization of discounts or premiums on investments</a></td>
<td class="nump">1,274<span></span>
</td>
<td class="num">(618)<span></span>
</td>
<td class="nump">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_GainLossOnSaleOfInvestments', window );">Realized gain on sale of investments</a></td>
<td class="num">(4,119)<span></span>
</td>
<td class="num">(1,452)<span></span>
</td>
<td class="num">(501)<span></span>
</td>
</tr>
<tr class="re">
<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="num">(114)<span></span>
</td>
<td class="num">(1,401)<span></span>
</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_IncreaseDecreaseInDeferredIncomeTaxes', window );">Change in deferred income taxes</a></td>
<td class="num">(3,353)<span></span>
</td>
<td class="num">(94,866)<span></span>
</td>
<td class="num">(413)<span></span>
</td>
</tr>
<tr class="re">
<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">(21,285)<span></span>
</td>
<td class="nump">16,807<span></span>
</td>
<td class="num">(1,867)<span></span>
</td>
</tr>
<tr class="ro">
<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="num">(848)<span></span>
</td>
<td class="nump">3,530<span></span>
</td>
<td class="num">(906)<span></span>
</td>
</tr>
<tr class="re">
<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">(10,319)<span></span>
</td>
<td class="nump">17,841<span></span>
</td>
<td class="num">(19,931)<span></span>
</td>
</tr>
<tr class="ro">
<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">(9,909)<span></span>
</td>
<td class="nump">7,405<span></span>
</td>
<td class="num">(9,750)<span></span>
</td>
</tr>
<tr class="re">
<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="num">(1,688)<span></span>
</td>
<td class="nump">1,633<span></span>
</td>
<td class="num">(7,247)<span></span>
</td>
</tr>
<tr class="ro">
<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">24,542<span></span>
</td>
<td class="num">(8,938)<span></span>
</td>
<td class="nump">380<span></span>
</td>
</tr>
<tr class="re">
<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">(22,973)<span></span>
</td>
<td class="nump">25,266<span></span>
</td>
<td class="num">(21,903)<span></span>
</td>
</tr>
<tr class="ro">
<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">6,571<span></span>
</td>
<td class="nump">3,875<span></span>
</td>
<td class="nump">1,434<span></span>
</td>
</tr>
<tr class="re">
<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">4,548<span></span>
</td>
<td class="nump">4,255<span></span>
</td>
<td class="num">(838)<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">242,400<span></span>
</td>
<td class="nump">253,311<span></span>
</td>
<td class="nump">223,454<span></span>
</td>
</tr>
<tr class="re">
<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">(922,867)<span></span>
</td>
<td class="num">(1,031,642)<span></span>
</td>
<td class="num">(782,032)<span></span>
</td>
</tr>
<tr class="re">
<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">1,104,605<span></span>
</td>
<td class="nump">1,062,962<span></span>
</td>
<td class="nump">812,565<span></span>
</td>
</tr>
<tr class="ro">
<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">(13,303)<span></span>
</td>
<td class="num">(21,745)<span></span>
</td>
<td class="num">(37,095)<span></span>
</td>
</tr>
<tr class="re">
<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">1,004<span></span>
</td>
<td class="num">(166,911)<span></span>
</td>
<td class="num">(4,265)<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="nump">169,439<span></span>
</td>
<td class="num">(157,336)<span></span>
</td>
<td class="num">(10,827)<span></span>
</td>
</tr>
<tr class="re">
<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 );">Issuance of common stock under stock plans</a></td>
<td class="nump">125,715<span></span>
</td>
<td class="nump">64,581<span></span>
</td>
<td class="nump">26,783<span></span>
</td>
</tr>
<tr class="re">
<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">(51,036)<span></span>
</td>
<td class="num">(61,690)<span></span>
</td>
<td class="num">(203,822)<span></span>
</td>
</tr>
<tr class="ro">
<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">(390,508)<span></span>
</td>
<td class="num">(35,124)<span></span>
</td>
<td class="num">(31,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_PaymentForContingentConsiderationLiabilityFinancingActivities', window );">Payment of Chiaro contingent consideration</a></td>
<td class="num">(1,039)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">(1,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_NetCashProvidedByUsedInFinancingActivities', window );">Net cash used in financing activities</a></td>
<td class="num">(316,868)<span></span>
</td>
<td class="num">(32,233)<span></span>
</td>
<td class="num">(209,904)<span></span>
</td>
</tr>
<tr class="re">
<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="nump">2,671<span></span>
</td>
<td class="num">(523)<span></span>
</td>
<td class="num">(1,093)<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="nump">97,642<span></span>
</td>
<td class="nump">63,219<span></span>
</td>
<td class="nump">1,630<span></span>
</td>
</tr>
<tr class="re">
<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">171,431<span></span>
</td>
<td class="nump">108,212<span></span>
</td>
<td class="nump">106,582<span></span>
</td>
</tr>
<tr class="ro">
<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">$ 269,073<span></span>
</td>
<td class="nump">$ 171,431<span></span>
</td>
<td class="nump">$ 108,212<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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121583591&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=98513438&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=121586364&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=121586364&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=98513438&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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_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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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://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=121641772&amp;loc=SL7669619-108580<br><br>Reference 2: 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=120311839&amp;loc=d3e8924-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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<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 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 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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 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 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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22595-107794<br><br>Reference 9: 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=121641772&amp;loc=SL7669625-108580<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=120311839&amp;loc=d3e8736-108599<br><br>Reference 11: 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 12: 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=120395209&amp;loc=SL114868664-224227<br><br>Reference 13: 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=121586364&amp;loc=d3e3602-108585<br><br>Reference 14: 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=109234566&amp;loc=d3e22499-107794<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=109234566&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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=75031198&amp;loc=d3e14064-108612<br><br>Reference 17: 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=120311839&amp;loc=d3e8906-108599<br><br>Reference 18: 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=109234566&amp;loc=d3e22583-107794<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://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=121326447&amp;loc=SL5780133-109256<br><br>Reference 21: 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 22: 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=120311839&amp;loc=d3e8933-108599<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=109234566&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_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=121593497&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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=121586364&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>22
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502783223384">
<tr>
<th class="tl" colspan="2" 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>Cumulative Effect, Period of Adoption, Adjustment</div></th>
<th class="th" colspan="2"><div>Common Stock [Member]</div></th>
<th class="th"><div>Additional Paid-in Capital [Member]</div></th>
<th class="th"><sup>[1]</sup></th>
<th class="th"><div>Retained Earnings [Member]</div></th>
<th class="th"><sup>[1]</sup></th>
<th class="th">
<div>Retained Earnings [Member] </div>
<div>Cumulative Effect, Period of Adoption, Adjustment</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, 2017</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 1,095,673,000<span></span>
</td>
<td class="num">$ (5,961,000)<span></span>
</td>
<td class="nump">$ 347,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="nump">$ 461,338,000<span></span>
</td>
<td colspan="2" class="nump">$ 668,587,000<span></span>
</td>
<td class="num">$ (5,961,000)<span></span>
</td>
<td class="num">$ (34,599,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, 2017</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">173,507<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="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>
<td class="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">26,783,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 3,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="nump">26,780,000<span></span>
</td>
<td colspan="2" 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_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Issuance of common stock under stock option plans, shares</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,493<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(203,822,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (8,000)<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="num">(203,814,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_StockRepurchasedDuringPeriodShares', window );">Repurchase of common stock, shares</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(4,180)<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">41,090,000<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 colspan="2" class="nump">41,090,000<span></span>
</td>
<td colspan="2" 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_DividendsCommonStockCash', window );">Payment of dividends</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(31,865,000)<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 colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="num">(31,865,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_NetIncomeLoss', window );">Net income</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">219,267,000<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 colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="nump">219,267,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_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax', window );">Net unrealized gain (loss), net of tax of $981, $515, and ($188) in 2020 2019, and 2018, respectively</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(1,185,000)<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 colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1,185,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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(1,185,000)<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 colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(501,000)<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 colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(501,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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(4,216,000)<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 colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(4,216,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, 2018</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">1,135,263,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 342,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="nump">529,208,000<span></span>
</td>
<td colspan="2" class="nump">646,214,000<span></span>
</td>
<td class="text">&#160;<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 );">Balance, shares at Dec. 31, 2018</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">170,820<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="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>
<td class="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">64,581,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 6,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="nump">64,575,000<span></span>
</td>
<td colspan="2" 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_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Issuance of common stock under stock option plans, shares</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,018<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">(61,690,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (3,000)<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="num">(61,687,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_StockRepurchasedDuringPeriodShares', window );">Repurchase of common stock, shares</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1,398)<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">45,589,000<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 colspan="2" class="nump">45,589,000<span></span>
</td>
<td colspan="2" 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_DividendsCommonStockCash', window );">Payment of dividends</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="num">(35,124,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_NetIncomeLoss', window );">Net income</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="nump">203,865,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_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax', window );">Net unrealized gain (loss), net of tax of $981, $515, and ($188) in 2020 2019, and 2018, respectively</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 1,355,710,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 345,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="nump">639,372,000<span></span>
</td>
<td colspan="2" class="nump">753,268,000<span></span>
</td>
<td class="text">&#160;<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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">172,440<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">172,440<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="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>
<td class="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 125,715,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 9,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="nump">125,706,000<span></span>
</td>
<td colspan="2" 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_StockIssuedDuringPeriodSharesStockOptionsExercised', window );">Issuance of common stock under stock option plans, shares</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">4,565<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,565<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="num">$ (51,036,000)<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">$ (2,000)<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="num">(51,034,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_StockRepurchasedDuringPeriodShares', window );">Repurchase of common stock, shares</a></td>
<td class="th" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(1,215)<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">42,661,000<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 colspan="2" class="nump">42,661,000<span></span>
</td>
<td colspan="2" 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_DividendsCommonStockCash', window );">Payment of dividends</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="num">(390,508,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_NetIncomeLoss', window );">Net income</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax', window );">Net unrealized gain (loss), net of tax of $981, $515, and ($188) in 2020 2019, and 2018, respectively</a></td>
<td class="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></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="fn" style="border-bottom: 0px;"></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" 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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">$ 1,262,202,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 352,000<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="nump">$ 807,739,000<span></span>
</td>
<td colspan="2" class="nump">$ 487,912,000<span></span>
</td>
<td class="text">&#160;<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="th" style="border-bottom: 0px;"><sup></sup></td>
<td class="nump">175,790<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">175,790<span></span>
</td>
<td class="fn" style="border-bottom: 0px;"><sup>[1]</sup></td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td colspan="2" class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr><td colspan="11"></td></tr>
<tr><td colspan="11"><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">Prior period amounts have been adjusted to reflect the two-for-one stock split effected in the form of a stock dividend which occurred in the fourth quarter of 2017.</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_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=120383193&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=120383193&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=121326096&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://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=121641772&amp;loc=SL7669619-108580<br><br>Reference 2: 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=120311839&amp;loc=d3e8924-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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<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 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 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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 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 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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22595-107794<br><br>Reference 9: 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=121641772&amp;loc=SL7669625-108580<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=120311839&amp;loc=d3e8736-108599<br><br>Reference 11: 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 12: 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=120395209&amp;loc=SL114868664-224227<br><br>Reference 13: 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=121586364&amp;loc=d3e3602-108585<br><br>Reference 14: 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=109234566&amp;loc=d3e22499-107794<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=109234566&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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=75031198&amp;loc=d3e14064-108612<br><br>Reference 17: 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=120311839&amp;loc=d3e8906-108599<br><br>Reference 18: 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=109234566&amp;loc=d3e22583-107794<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://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=121326447&amp;loc=SL5780133-109256<br><br>Reference 21: 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 22: 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=120311839&amp;loc=d3e8933-108599<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=109234566&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_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=121641772&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=121641772&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=121641772&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=121641772&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=121641772&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=121641772&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=121645371&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=121641772&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=121641772&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=121641772&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=109259400&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=109259400&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=109259400&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=109259400&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://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=27010918&amp;loc=d3e74512-122707<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(31))<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 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 6: 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=75031198&amp;loc=d3e14064-108612<br><br>Reference 7: 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>23
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709698408">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax', window );">Tax effect of unrealized gain on derivative instruments</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_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax', window );">Tax effect of unrealized gain on available-for-sale investments</a></td>
<td class="nump">981<span></span>
</td>
<td class="nump">515<span></span>
</td>
<td class="num">(188)<span></span>
</td>
</tr>
<tr class="ro">
<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_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 increase (decrease) in accumulated gain (loss) from derivative instruments designated and qualifying as the effective portion of cash flow hedges and an entity's share of an equity investee's increase (decrease) in deferred hedging gain (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 220<br> -SubTopic 10<br> -Section 45<br> -Paragraph 10A<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121641772&amp;loc=SL7669646-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 12<br> -URI http://asc.fasb.org/extlink&amp;oid=121641772&amp;loc=d3e640-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_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_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=121641772&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=109240200&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=121641772&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=121641772&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=121641772&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>24
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708308184">
<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, 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_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 combinations, 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 other comprehensive income (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 certificates of deposit and debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Certificates of deposit and 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 other comprehensive income (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 </span></div><div style="margin-top:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">recoveries related to debt securities are included in &#8220;Other income (expense)&#8221; on the Consolidated Statements of Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts that project the 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, general economic and industry conditions, and reasonable forecasts about the future, 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 prices 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%">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 market 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 would 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 two 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 entity'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 upon 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, </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%">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. The Company determines whether a contract 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 macroeconomic conditions, industry and market considerations, overall financial performance (both current and projected), changes in management or 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 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 upon facts and circumstances. The useful lives of distribution networks range from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2MTY_1993dea7-2551-4816-80cd-4137c69069dd">eleven</span> to twelve years, of completed technologies from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2NTc_a4acc09f-a1f8-4829-97e1-5e2e1d62e3a6">five</span> to eight years, of customer relationships from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2OTg_1ba8638a-e4db-4203-9056-3c3066dac80d">five</span> to eight years, of non-compete agreements from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3Mzk_2ef3c53a-ab25-4b57-bc54-77289ccd63fa">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:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTc4NTM_da3b6d83-8fe8-41be-be75-64b34b1da43f">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 collectibility 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 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 upon 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 </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%">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 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, outside services, and prototyping materials. 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,443,000 in 2020, $1,385,000 in 2019, and $1,662,000 in 2018.</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. The fair value of RSUs is determined based on the market value of the Company's common stock on the grant date. </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 options and RSUs using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting 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 $36,912,000 and $38,027,000, as of December 31, 2020 and December 31, 2019, respectively; net unrealized gains on available-for-sale investments of $4,382,000 and $2,023,000 as of December 31, 2020 and December 31, 2019, respectively; 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 income (loss) to investment income on the Consolidated Statements of Operations were net realized gains of $4,119,000, $1,452,000, and $501,000 for 2020, 2019, and 2018, 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%">The Company has two large customers that each represented a significant portion of revenue in 2020 and accounts receivable as of December 31, 2020. 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 product is manufactured by a third-party contractor located in Indonesia. This contractor has agreed to provide Cognex with termination notification periods and last-time-buy rights, if and when that may be applicable. We rely upon this contractor to provide quality product and meet delivery schedules. 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:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain components are presently sourced from a single vendor that is selected based on price and performance considerations. In the event of a supply disruption from a single-source vendor, these components may be purchased from alternative vendors, which may result in manufacturing delays based on the lead time of the new vendor and higher costs. Certain key electronic and mechanical components that are purchased from strategic suppliers, such as processors or imagers, are fundamental to the design of Cognex products. A disruption in the supply of these key components, such as a last-time-buy announcement, natural disaster, financial bankruptcy, or other event, may require us to purchase a significant amount of inventory at unfavorable prices resulting in lower gross margins and higher risk of carrying excess inventory. If we are unable to secure adequate supply from alternative sources, we may have to redesign our products, which may lead to a delay in manufacturing and a 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 typically associated with restructuring activities 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://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>nonnum: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>25
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502804989880">
<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, 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_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:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">ASU 2019-12 applies to all entities within the scope of Topic 740, Income Taxes. The amendments in this ASU simplify the accounting for income taxes by removing the following exceptions: (1) exception to the incremental approach for intraperiod tax allocation when there is a loss from continuing operations and income or a gain from other items; (2) exception to the requirement to recognize a deferred tax liability for equity method investments when a foreign subsidiary becomes an equity method investment; (3) exception to the ability not to recognize a deferred tax liability for a foreign subsidiary when a foreign equity method investment becomes a subsidiary; and (4) exception to the general methodology for calculating income taxes in an interim period when a year-to-date loss exceeds the anticipated loss for the year. The amendments in this ASU also simplify the accounting for income taxes by doing the following: (1) requiring that an entity recognize a franchise tax that is partially based on income as an income-based tax and account for any incremental amount incurred as a non-income-based tax; (2) requiring that an entity evaluate when a step up in the tax basis of goodwill should be considered part of the business combination in which the book goodwill was originally recognized and when it should be considered a separate transaction; (3) specifying that an entity is not required to allocate the consolidated amount of current and deferred tax expense to a legal entity that is not subject to tax in its separate financial statements; and (4) requiring that an entity reflect the effect of an enacted change in tax laws or rates in the annual effective tax rate computation in the interim period that included the enacted date. The amendments in this ASU are effective for public companies for annual periods, and interim periods within those annual periods, beginning after December 15, 2020. Early adoption is permitted; however, an entity that elects to early adopt the amendments must adopt all the amendments in the same period. The amendments in this ASU related to separate financial statements of legal entities that are not subject to tax should be applied on a retrospective basis for all periods presented. The amendments related to changes in ownership of foreign equity method investments or foreign subsidiaries should be applied on a modified retrospective basis through a cumulative-effect adjustment to retained earnings as of the beginning of the fiscal year of adoption. The amendments related to franchise taxes that are partially based on income should be applied on either a retrospective basis for all periods presented or a modified retrospective basis through a cumulative-effect adjustment to retained earnings as of the beginning of the fiscal year of adoption. All other amendments should be applied on a prospective basis. Management does not expect ASU 2019-12 to 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)"</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 amendments in this ASU 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. The amendments in this ASU 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 this ASU are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 to 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:6pt;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 amendments in this ASU are effective for fiscal years, and interim periods within those fiscal years, beginning after December 15, 2020. Early application is not permitted. The amendments in this ASU should be applied on a prospective basis as of the beginning of the period of adoption for existing or newly purchased callable debt securities. Management does not expect ASU 2020-08 to have a material impact on the Company's consolidated financial statements and 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=113356391&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 606<br> -SubTopic 10<br> -Section 65<br> -Paragraph 1<br> -Subparagraph (i)<br> -URI http://asc.fasb.org/extlink&amp;oid=113356391&amp;loc=SL49131195-203048<br><br>Reference 4: 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=112272810&amp;loc=SL108384541-122693<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 65<br> -Paragraph 1<br> -Subparagraph (i)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=113356391&amp;loc=SL49131195-203048<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)(iii)<br> -URI http://asc.fasb.org/extlink&amp;oid=121370832&amp;loc=SL117420844-207641<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 1<br> -Subparagraph (b)(4)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22499-107794<br><br>Reference 8: 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=121370832&amp;loc=SL117420844-207641<br><br>Reference 9: 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=121370832&amp;loc=SL117420844-207641<br><br>Reference 10: 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 11: 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=113356391&amp;loc=SL49131195-203048<br><br>Reference 12: 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=121370832&amp;loc=SL117420844-207641<br><br>Reference 13: 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 14: 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=112272810&amp;loc=d3e31137-122693<br><br>Reference 15: 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 16: 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=109234566&amp;loc=d3e22499-107794<br><br>Reference 17: 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 18: 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=121646688&amp;loc=SL121648383-210437<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 1<br> -Subparagraph (c)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22499-107794<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 (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121370832&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 326<br> -SubTopic 10<br> -Section 65<br> -Paragraph 4<br> -Subparagraph (e)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121646688&amp;loc=SL121648383-210437<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 50<br> -Paragraph 1<br> -Subparagraph (b)(1)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22499-107794<br><br>Reference 23: 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><br>Reference 24: 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><br>Reference 25: 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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>nonnum: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>26
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709773144">
<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, 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_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, 2020 (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">2,464&#160;</span></td><td style="background-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%">236,142&#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%">Treasury bills</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></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%">131,861&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><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%">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%">&#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%">92,218&#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 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%">19,006&#160;</span></td><td style="background-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%">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: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%">12,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"/></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%">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: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,038&#160;</span></td><td style="background-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></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%">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="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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%">38&#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><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 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-bottom:5pt;margin-top:11pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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%">2,554&#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 GVi 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%">(1,646)</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%">Fair value adjustment to 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%">245&#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="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 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,153&#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="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%">Fair value adjustment to 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%">(114)</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%">Payment of 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%">(1,039)</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 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:6pt;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 as of December 31, 2019, resulting from a lower level of revenue in the Americas' automotive industry, and the balance remains at zero as of December 31, 2020. The undiscounted potential outcomes related to future contingent consideration range from $0 to $2,500,000 based on certain revenue levels over the next two 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%;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. Our business has been adversely and materially impacted by deteriorating global economic conditions resulting from the COVID-19 pandemic. These conditions 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 are included in "Restructuring charges" on the Consolidated Statements of Operations, and intangible asset impairment charges of $19,571,000 (refer to Note 9). These fair value measurements are based on the present values of future cash flows using significant inputs that are not observable in the market, and are therefore classified as Level 3. The Company did not record impairment charges related to non-financial assets in 2019 and 2018.<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=117815213&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>nonnum: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>27
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708562040">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">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%">266,609</span><span style="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%">155,498&#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%">2,464</span><span 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%">15,933&#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%">269,073</span><span style="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%">171,431&#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%">Treasury bills</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%">35,403</span><span 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%">92,914&#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;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">32,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:#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%">65,624&#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%">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%">25,160</span><span 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%">66,680&#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%">8,660</span><span style="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,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;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%">1,303</span><span 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,630&#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%">Certificate of deposit</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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%">4,328&#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%">103,240</span><span 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%">240,470&#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%">203,428</span><span style="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%">146,474&#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%">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%">96,458</span><span 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%">216,334&#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%">67,058</span><span style="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%">46,403&#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%">19,006</span><span 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,914&#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%">5,735</span><span style="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%">2,322&#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:700;line-height:100%">3,440</span><span 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%">16,005&#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%">395,125</span><span style="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%">433,452&#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%">767,438</span><span 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%">845,353&#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:9pt;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 $225,853,000 and $123,499,000 as of December&#160;31, 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%">Treasury bills consist of debt securities issued by the U.S. government; 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; sovereign bonds consist of direct debt issued by foreign governments; municipal bonds consist of debt securities issued by state and local government entities; certificates of deposit are time deposits held by financial institutions with a fixed interest rate; and agency bonds consist of domestic or foreign obligations of government agencies and government-sponsored enterprises that have government backing. All securities are denominated in U.S. Dollars, with the exception of the certificate of deposit held as of December 31, 2019 that was denominated in Korean Won.</span></div><div style="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 Sheet and amounted to $1,560,000 and $2,874,000 as of December 31, 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%">The following table summarizes the Company&#8217;s available-for-sale investments as of December&#160;31, 2020 (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">Treasury bills</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%">34,978&#160;</span></td><td style="background-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%">425&#160;</span></td><td style="background-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%">35,403&#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%">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%">32,394&#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%">320&#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%">32,714&#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%">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%">24,999&#160;</span></td><td style="background-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%">161&#160;</span></td><td style="background-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%">25,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="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><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%">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:400;line-height:100%">8,590&#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%">70&#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%">8,660&#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%">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:400;line-height:100%">1,297&#160;</span></td><td style="background-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%">6&#160;</span></td><td style="background-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,303&#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="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><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%">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%">200,549&#160;</span></td><td style="background-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,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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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:#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%">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%">95,522&#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%">936&#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%">96,458&#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%">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%">66,329&#160;</span></td><td style="background-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%">729&#160;</span></td><td style="background-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%">67,058&#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%">18,913&#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%">93&#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%">19,006&#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%">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:400;line-height:100%">5,725&#160;</span></td><td style="background-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&#160;</span></td><td style="background-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><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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"/><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%">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:400;line-height:100%">3,379&#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%">61&#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,440&#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%">492,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-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%">5,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:#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%">&#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-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%">498,365</span><span 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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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 style="height:3pt"><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="padding:0 1pt"/><td colspan="3" style="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="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><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"/><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"/><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"/><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"/><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"/><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"/><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"/><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:5pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On January 1, 2020, the Company adopted Accounting Standards Update (ASU) 2016-13, &#8220;Measurement of Credit Losses on Financial Instruments,&#8221; using the modified-retrospective approach, which requires the Company to apply the standard on a prospective basis with a cumulative-effect adjustment to retained earnings as of the beginning of the period in which the guidance is effective. The Company did not record an adjustment to retained earnings, as there were no debt securities with credit losses as of the adoption date.</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-bottom:6pt;margin-top:9pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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="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:#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 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"/><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%">Increases 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&#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%">Decreases 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)</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%">Write-offs </span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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="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 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%">&#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-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:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company recorded gross realized gains on the sale of debt securities totaling $4,283,000 in 2020, $1,581,000 in 2019, and $669,000 in 2018, and gross realized losses on the sale of debt securities totaling $164,000 in 2020, $129,000 in 2019, and $168,000 in 2018.</span></div><div style="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, 2020 (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">32,714&#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%">69,534&#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%">119,328&#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%">13,488&#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,078&#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%">236,142&#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%">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%">35,403&#160;</span></td><td style="background-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%">68,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%">28,241&#160;</span></td><td style="background-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%">131,861&#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: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"/><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%">46,842&#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%">18,755&#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,461&#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%">92,218&#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%">&#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,805&#160;</span></td><td style="background-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,201&#160;</span></td><td style="background-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%">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: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"/><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,440&#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%">12,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%">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:400;line-height:100%">1,303&#160;</span></td><td style="background-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,096&#160;</span></td><td style="background-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%">639&#160;</span></td><td style="background-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%">7,038&#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%">103,240</span><span style="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%">192,494</span><span style="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%">186,604</span><span style="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%">14,949</span><span style="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%">1,078</span><span style="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%">498,365</span><span style="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>nonnum: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>28
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502783291800">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">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%">26,800</span><span style="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%">27,285&#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%">4,780</span><span 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,503&#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%">29,250</span><span style="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,473&#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%">60,830</span><span 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,261&#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 $9,908,000 and $5,296,000 in 2020 and 2019, respectively, which reduced the carrying value of the inventories to their net realizable value. Estimates 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>nonnum: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>29
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708578072">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">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%">45,978</span><span style="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%">49,289&#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%">12,682</span><span 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,790&#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%">58,162</span><span style="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%">67,474&#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%">29,816</span><span 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%">31,278&#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,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%">6,800&#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%">181,494</span><span 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%">194,115&#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%">(102,321)</span></td><td style="background-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%">(104,672)</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%">79,173</span><span 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%">89,443&#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:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">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. The Company disposed of property, plant, and equipment with a cost basis of $8,883,000 and accumulated depreciation of $8,559,000 in 2019, resulting in a loss of $324,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%">Buildings included rental property with a cost basis of $800,000 and accumulated depreciation of $255,000 as of December&#160;31, 2019. This rental property lease was terminated during the second quarter of 2020.</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_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>nonnum: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>30
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502710600488">
<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, 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_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. 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 leases outstanding, and no options to extend that were included in the determination of the lease term for leases outstanding. As of December 31, 2019 there were no options to extend or terminate that were included in the determination of the lease term for leases outstanding. 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 leases outstanding as of December 31, 2020 or December 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%">The total operating lease expense and operating lease cash payments in 2020 were $8,180,000 and $8,009,000, respectively. The total operating lease expense and operating lease cash payments in 2019 were $6,893,000 and $6,530,000, 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 $123,000 and $275,000 in 2020 and 2019, respectively. Annual rental expense was $8,186,000 in 2018. </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-bottom:5pt;margin-top:14pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">2021</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%">9,101&#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%">2022</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,863&#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%">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%">5,072&#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,074&#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,317&#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%">4,960&#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%">29,387</span><span 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:9pt;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 $26,230,000 and $17,973,000 as of December 31, 2020 and December 31, 2019, respectively. The Company did not have any leases that had not yet commenced but that created significant rights and obligations as of December 31, 2020 or December 31, 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 weighted-average discount rate was 4.0% and 4.6% for the leases outstanding as of December 31, 2020 and December 31, 2019, respectively. The weighted-average remaining lease term was 5.1 and 3.7 years for the leases outstanding as of December 31, 2020 and December 31, 2019, respectively.</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 part of the Company's restructuring plan (refer to Note 22), management closed eleven leased offices in 2020, prior to the end of their lease terms. 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 charges" on the Consolidated Statements of Operations. Management is currently negotiating early contract terminations for the remaining lease liability obligations associated with these abandoned offices, which totaled $2,877,000 as of December 31, 2020 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 2019 or 2018.</span></div>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 and 2018. 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, $311,000 in 2019, and $1,116,000 in 2018.<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_LesseeOperatingLeasesTextBlock', 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. 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 leases outstanding, and no options to extend that were included in the determination of the lease term for leases outstanding. As of December 31, 2019 there were no options to extend or terminate that were included in the determination of the lease term for leases outstanding. 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 leases outstanding as of December 31, 2020 or December 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%">The total operating lease expense and operating lease cash payments in 2020 were $8,180,000 and $8,009,000, respectively. The total operating lease expense and operating lease cash payments in 2019 were $6,893,000 and $6,530,000, 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 $123,000 and $275,000 in 2020 and 2019, respectively. Annual rental expense was $8,186,000 in 2018. </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-bottom:5pt;margin-top:14pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">2021</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%">9,101&#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%">2022</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,863&#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%">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%">5,072&#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,074&#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,317&#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%">4,960&#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%">29,387</span><span 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:9pt;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 $26,230,000 and $17,973,000 as of December 31, 2020 and December 31, 2019, respectively. The Company did not have any leases that had not yet commenced but that created significant rights and obligations as of December 31, 2020 or December 31, 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 weighted-average discount rate was 4.0% and 4.6% for the leases outstanding as of December 31, 2020 and December 31, 2019, respectively. The weighted-average remaining lease term was 5.1 and 3.7 years for the leases outstanding as of December 31, 2020 and December 31, 2019, respectively.</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 part of the Company's restructuring plan (refer to Note 22), management closed eleven leased offices in 2020, prior to the end of their lease terms. 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 charges" on the Consolidated Statements of Operations. Management is currently negotiating early contract terminations for the remaining lease liability obligations associated with these abandoned offices, which totaled $2,877,000 as of December 31, 2020 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 2019 or 2018.</span></div>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 and 2018. 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, $311,000 in 2019, and $1,116,000 in 2018.<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_LesseeOperatingLeasesTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 operating leases of lessee. Includes, but is not limited to, description of operating lease and maturity analysis of operating lease 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 842<br> -SubTopic 20<br> -URI http://asc.fasb.org/subtopic&amp;trid=77888251<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_LesseeOperatingLeasesTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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_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/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 840<br> -SubTopic 10<br> -Section 55<br> -Paragraph 40<br> -Subparagraph Note 1<br> -URI http://asc.fasb.org/extlink&amp;oid=121580752&amp;loc=d3e38371-112697<br><br>Reference 2: http://www.xbrl.org/2003/role/exampleRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 840<br> -SubTopic 10<br> -Section 55<br> -Paragraph 40<br> -Subparagraph Note 3<br> -URI http://asc.fasb.org/extlink&amp;oid=121580752&amp;loc=d3e38371-112697<br><br>Reference 3: 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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709912776">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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%">113,208&#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%">Acquisition of Sualab Co., Ltd.</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%">130,142&#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 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%">95&#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, 2019</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%">243,445&#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%">Sualab Co., Ltd. purchase price adjustment</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,004)</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%">&#160;&#160;Foreign exchange rate changes</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,637&#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%">Balance as of December 31, 2020</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%">244,078</span><span style="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:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Refer to Note 21 to the Consolidated Financial Statements for further information regarding acquisitions. </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 adverse impact of the COVID-19 pandemic on our business triggered a review of long-lived assets, including goodwill, for potential impairment during the second quarter of 2020. Based on this assessment, management concluded that events and circumstances did not indicate the fair value of the reporting unit was less than its carrying value. For its 2020 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. Factors that management considered in these qualitative assessments include macroeconomic conditions, industry and market considerations, overall financial performance (both current and projected), changes in management or strategy, changes in the composition or carrying amount of net assets, and market capitalization. The Company did not record impairment charges related to goodwill in 2019 or 2018.</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 the fourth quarter of 2020, the Company recorded a credit to goodwill in the amount of $1,004,000, representing a purchase price adjustment related to the Company's 2019 acquisition of Sualab Co., Ltd.</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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708567656">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">12,397</span><span 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%">11,820</span><span 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,160</span><span style="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%">3,418</span><span style="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%">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:700;line-height:100%">274</span><span 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%">67</span><span style="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%">43</span><span style="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, 2020</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%">58,120</span><span 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%">15,555</span><span 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%">31,987&#160;</span></td><td style="background-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%">9,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,827&#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%">14,407&#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,402&#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,005&#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%">In-process 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%">8,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">8,200&#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-compete agreements</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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:#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%">350&#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%">360&#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%">Trademarks</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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:#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&#160;</span></td><td style="background-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%">98&#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%">Balance as of December 31, 2019</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: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%">93,474&#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%">53,984&#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%">39,490&#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 adverse impact of the COVID-19 pandemic on our business 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. Sualab in-process technologies were completed in the fourth quarter of 2020 and were accordingly reported as completed technologies subject to amortization as of December 31, 2020. The Company did not record impairment charges related to intangible assets in 2019 or 2018.</span></div><div style="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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">2021</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,656&#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%">2022</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,286&#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%">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%">2,594&#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%">2,080&#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%">1,757&#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%">2,182&#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%">15,555</span><span style="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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708619464">
<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, 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_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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:700;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%">Company bonuses</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%">19,343</span><span style="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%">&#8212;&#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, commissions, 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%">14,025</span><span 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%">11,500&#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%">6,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%">6,146&#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,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%">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;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%">3,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:#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,708&#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%">27,963</span><span 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%">25,132&#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%">77,264</span><span style="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%">52,199&#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:9pt"><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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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,743&#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,841&#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%">(3,871)</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, 2019</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%">4,713&#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,463&#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%">(2,770)</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, 2020</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,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;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>nonnum: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>34
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782655096">
<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, 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_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, 2020, the Company had outstanding purchase orders totaling $32,315,000 to purchase inventory from various vendors. Certain of these purchase orders may be canceled by the Company, subject to cancellation penalties. These purchase commitments relate to expected sales in 2021.</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 440<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=121559207&amp;loc=d3e25336-109308<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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121559207&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708578072">
<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, 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_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>nonnum: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>36
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502895791240">
<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, 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>
</tr>
<tr class="ro">
<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 45 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-bottom:5pt;margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2020</span></td><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, 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: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:#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%">50,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><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 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,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><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,249&#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%">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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,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%">4,223&#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%">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"/><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%">161,951,500&#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%">139,688&#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%">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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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 colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">575,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%">5,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: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,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"/><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%">870,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%">2,962&#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%">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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,700&#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%">3,569&#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%">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%">38,035&#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,362&#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%">37,450&#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,256&#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%">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%">1,465&#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,110&#160;</span></td><td style="background-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%">845&#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%">628&#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%">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,285&#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,010&#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,300&#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,000&#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:9pt;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-bottom:5pt;margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"><tr><td style="width:1.0%"/><td style="width:15.298%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.809%"/><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:11.930%"/><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:11.930%"/><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.809%"/><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:11.930%"/><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:11.934%"/><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:8pt;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:9pt;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:9pt;font-weight:700;line-height:100%">Liability Derivatives</span></td></tr><tr style="height:12pt"><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:9pt;font-weight:700;line-height:100%">Balance<br/>Sheet<br/>     Location&#160; &#160;&#160;&#160;</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:9pt;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:9pt;font-weight:700;line-height:100%">Balance<br/>Sheet<br/>    Location&#160; &#160;&#160;&#160;</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:9pt;font-weight:700;line-height:100%">Fair Value</span></td></tr><tr style="height:20pt"><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:9pt;font-weight:700;line-height:100%">December 31, 2020</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:9pt;font-weight:400;line-height:100%">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;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%">December 31, 2020</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:9pt;font-weight:400;line-height:100%">December 31, 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"/><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%">265</span><span style="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%">857&#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%">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:#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%">23&#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:9pt"><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-bottom:5pt;margin-top:14pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="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, 2020</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, 2019</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:0 1pt"/><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:700;line-height:100%">December 31, 2020</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, 2019</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%">265</span><span style="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%">857&#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%">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:#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%">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"/></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%">265</span><span style="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%">857&#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%">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:#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%">23&#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:9pt;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-bottom:5pt;margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:8pt;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:8pt;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:8pt;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:8pt;font-weight:700;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><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%">2018</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%">(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"/><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%">(285)</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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502813101544">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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="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%">2018</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%">310,027</span><span 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%">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="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%">265,175&#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%">208,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:#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="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%">311,914&#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%">168,287</span><span 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%">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="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,708&#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%">123,919</span><span style="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%">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="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,541&#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%">811,020</span><span 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%">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="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%">806,338&#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:6pt;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-bottom:5pt;margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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="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%">2018</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%">674,830</span><span 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%">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"/><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%">654,509&#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%">136,190</span><span style="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,405&#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%">151,829&#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%">811,020</span><span 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%">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="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%">806,338&#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:3pt;text-align:justify"><span><br/></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 Sheet and amounted to $6,846,000 and $3,963,000 as of December 31, 2020 and 2019, 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%">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:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">On January 1, 2020, the Company adopted Accounting Standards Update (ASU) 2016-13, &#8220;Measurement of Credit Losses on Financial Instruments,&#8221; using the modified-retrospective approach, which requires the Company to apply the standard on a prospective basis with a cumulative-effect adjustment to retained earnings as of the beginning of the period in which the guidance is effective. The Company did not record an adjustment to retained earnings as this ASU did not have a material impact on the Company's consolidated allowance for credit losses. </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-bottom:5pt;margin-top:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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%">596&#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%">215&#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</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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:#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%">5&#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, 2019</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%">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 </span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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 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%">831</span><span style="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:3pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The Company's 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><br/></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-bottom:5pt;margin-top:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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%">9,845&#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 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:10pt;font-weight:400;line-height:100%">53,422&#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</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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,730)</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%">(105)</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, 2019</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%">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%">Increases to 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:10pt;font-weight:400;line-height:100%">120,008&#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</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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,014)</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%">848&#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 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%">21,274</span><span style="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="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%">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=121604090&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=121604090&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=121604090&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=121604090&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=121604090&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=121604090&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=121604090&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=121604090&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=121604090&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502895791240">
<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, 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_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:6pt"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%;text-decoration:underline">Shareholder Rights Agreement</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 December 5, 2018, the Company&#8217;s Board of Directors allowed the Company&#8217;s Shareholder Rights Agreement and associated rights to expire in accordance with their terms without renewal. In connection with the adoption of the Shareholder Rights Agreement, the Company had filed Articles of Amendment to its Restated Articles of Organization establishing Series E Junior Participating Cumulative Preferred Stock with the Secretary of State of The Commonwealth of Massachusetts, setting forth the rights, powers, and preferences of the Series E Junior Participating Cumulative Preferred Stock issuable upon exercise of the rights (the &#8220;Preferred Shares&#8221;). Effective on April 26, 2019, the Company filed Articles of Amendment to the Company&#8217;s Restated Articles of Organization with the Secretary of State of The Commonwealth of Massachusetts eliminating the Preferred Shares and returning them to authorized but undesignated shares of the Company&#8217;s preferred stock.</span></div><div style="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 April 2017, the Company's Board of Directors authorized the repurchase of $100,000,000 of the Company's common stock. The Company repurchased 1,744,000 shares at a cost of $100,000,000 under this April 2017 program, including 803,000 shares at a cost of $45,200,000 in 2018. In February 2018, the Company's Board of Directors authorized the repurchase of $150,000,000 of the Company's common stock. The Company repurchased 3,174,000 shares at a cost of $150,000,000 in 2018 under this February 2018 program. In October 2018, the Company's Board of Directors authorized the repurchase of $200,000,000 of the Company's common stock. The Company repurchased 203,000 shares at a cost of $8,622,000 in 2018 under this October 2018 program. Total stock repurchases amounted to $203,822,000 in 2018. The Company repurchased 1,398,000 shares at a cost of $61,690,000 in 2019 and 1,215,000 shares at a cost of $51,036,000 in 2020 under this October 2018 program, leaving a remaining balance of $78,652,000. 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. Purchases under this March 2020 program will commence upon completion of the October 2018 program. 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, and $0.055 in the fourth quarter of 2019, as well as in the first, second, and third quarters of 2020. The dividend was increased to $0.060 per share in the fourth quarter of 2020. 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 $390,508,000 in 2020, which included $351,428,000 paid for the special cash dividend, $35,124,000 in 2019, and $31,865,000 in 2018. Future dividends will be declared at the discretion of the Company's Board of Directors and will depend upon 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 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><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 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 505<br> -URI http://asc.fasb.org/topic&amp;trid=2208762<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708627672">
<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, 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_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, 2020, the Company had 16,260,393 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:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml8xNjAvZnJhZzpiMmI0OWNkNDk1ODc0MWQ3OWNhMGQ5MjEyYjRiZDgyMi90ZXh0cmVnaW9uOmIyYjQ5Y2Q0OTU4NzQxZDc5Y2EwZDkyMTJiNGJkODIyXzQwMA_385ebae8-1c19-44f1-862e-1dcc62372ed6">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:10pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2019</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%">12,899&#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%">37.95&#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%">1,245&#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%">54.68&#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%">(4,565)</span></td><td style="background-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%">27.54&#160;</span></td><td style="background-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%">(609)</span></td><td style="background-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.28&#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, 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:700;line-height:100%">8,970</span><span 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%">44.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;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%">7.11</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%">318,873</span><span 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, 2020</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,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;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%">33.79</span><span style="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.60</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%">145,735</span><span style="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, 2020 (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%">8,235</span><span 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%">44.08</span><span 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%">7.01</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%">298,118</span><span 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:9pt;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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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.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;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%">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><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.9&#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.41</span><span style="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.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><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.35&#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%">37</span><span 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%">39&#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%">5.3</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.4</span></td></tr></table></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%">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 $19.62 in 2020, $18.62 in 2019, and $20.84 in 2018.</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 $166,796,000 in 2020, $90,762,000 in 2019, and $52,629,000 in 2018. The total fair value of stock options vested was $45,998,000 in 2020, $38,974,000 in 2019, and $31,106,000 in 2018.</span></div><div style="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-bottom:5pt;margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2019</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%">150&#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%">48.63&#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%">446&#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%">52.09&#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%">&#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"/></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%">(42)</span></td><td style="background-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.61&#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, 2020</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%">554</span><span 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%">51.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:#ffffff;border-bottom:3pt double #000000;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div><div style="margin-top:5pt;text-align:justify"><span><br/></span></div><div style="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 RSUs granted in 2019 was $48.61. There were no RSUs granted in 2018. There were no RSUs that vested in 2020, 2019, and 2018.</span></div><div style="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 7% 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 an increase to compensation expense of $1,787,000 in 2020, a decrease to compensation expense of $499,000 in 2019, and an increase to compensation expense of $1,283,000 in 2018.</span></div><div style="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, 2020, total unrecognized compensation expense related to non-vested stock-based awards, including stock options and RSUs, was $51,825,000, which is expected to be recognized over a weighted-average period of 1.7 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 $42,661,000, which includes credits of $1,401,000 relating to grants cancelled as a result of the Company's workforce reduction, and $6,569,000, respectively, in 2020, $45,589,000 and $7,756,000, respectively, in 2019, and $41,090,000 and $7,317,000, respectively, in 2018. No compensation expense was capitalized in 2020, 2019, or 2018.</span></div><div style="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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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,365</span><span style="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,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"/><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%">2,447&#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,387</span><span 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%">15,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%">14,578&#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%">27,909</span><span style="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%">28,337&#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%">24,065&#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%">42,661</span><span 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%">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"/><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%">41,090&#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>nonnum: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>40
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502895791240">
<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, 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_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,636,000 in 2020, $2,729,000 in 2019, and $2,540,000 in 2018. 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=118257860&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=118255775&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=118255775&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=118255775&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=118255775&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=118255775&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=118255775&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=118255775&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=118255775&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=118255775&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708563688">
<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, 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_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 $39,425,000 in 2020, $31,396,000 in 2019, and $39,042,000 in 2018. Foreign income before taxes was $147,486,000 in 2020, $131,598,000 in 2019, and $195,532,000 in 2018. </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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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%">160</span><span 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%">15,854&#160;</span></td><td style="background-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%">10,624&#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%">921</span><span style="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%">2,108&#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%">(879)</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%">13,197</span><span 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%">30,670&#160;</span></td><td style="background-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%">6,307&#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%">14,278</span><span style="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%">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"/><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%">16,052&#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%">(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"/><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,271)</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%">(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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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;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%">15,269</span><span style="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%">(442,494)</span></td><td style="background-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)</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%">(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"/><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%">(745)</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%">10,725</span><span style="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%">(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"/><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%">15,307&#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"/></tr></table></div><div><span><br/></span></div><div><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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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%">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%">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: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%">(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"/><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%">(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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">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%">(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"/><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 expense (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%">(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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">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:#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"/></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%">18&#160;</span></td><td style="background-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%">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%">(268)</span></td><td style="background-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%">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%">214&#160;</span></td><td style="background-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%">Discrete tax expense (benefit) related to Tax Act</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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%">(3)</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 discrete tax events</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">(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%">&#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%">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%">2</span><span style="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&#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"/></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;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%">6</span><span 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"><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-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:#ffffff;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:#ffffff;padding:0 1pt"/><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:400;line-height:100%">7&#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"><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: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">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:13pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:13pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:13pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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-bottom:8pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">There were no material differences to the Company's reported results in prior 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%;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%">The effective tax rate included a decrease in tax expense of $12,788,000 in 2020, $6,472,000 in 2019, and $8,488,000 in 2018 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%">In 2020, the Company recorded discrete tax items related to the final true-up of the prior year's tax accrual upon filing the related tax return. 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="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. Management will continue to monitor this law and court rulings in Germany. </span></div><div style="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 will be realized over 15 years as future tax deductions. From a United States perspective, the sale is 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 its current effective tax rate excluding discrete items to increase slightly 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%">In December 2017, the Tax Cuts and Jobs Act of 2017 (Tax Act) was signed into law. In 2018, the Company recorded an increase in tax expense of $3,240,000 from the write-down of its deferred tax assets primarily relating to guidance under the Tax Act regarding stock-based compensation. In 2018, the Company recorded a decrease in tax expense of $11,028,000 to revise its estimate of a one-time transition tax on unrepatriated foreign earnings resulting from the Tax Act, which resulted in a revised estimate for the one-time transition tax of $90,351,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, $1,932,000 in 2019, and $1,847,000 in 2018.</span></div><div><span><br/></span></div><div style="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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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%">7,294&#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%">199&#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%">5,259&#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,161)</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, 2019</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%">11,591&#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 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 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%">13,952</span><span 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: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,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 Company's reserve for income taxes, including gross interest and penalties, was $12,591,000 as of December 31, 2019, which included $11,563,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,332,000 and $1,000,000 as of December&#160;31, 2020 and December&#160;31, 2019, 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 $1,900,000 to $2,000,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, and China, and within the United States, Massachusetts. The statutory tax rate is 12.5% in Ireland and 25% in China, 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 6 percentage points for 2020 and 9 percentage points for both 2019 and 2018. 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 2019 remain open to examination by the Internal Revenue Service ("IRS") and various state taxing authorities. The tax years 2016 through 2019 remain open to examination by various taxing authorities in other jurisdictions in which the Company operates. The Company has recently been notified that it is under audit by the IRS for the tax year 2017. Management believes the Company is adequately reserved for this audit. 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 $340,000, $116,000, and $91,000 in 2020, 2019, and 2018, 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 $33,695,000 in 2020, $13,443,000 in 2019, and $41,430,000 in 2018.</span></div><div style="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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">Non-current 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%">424,156</span><span 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%">437,500&#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%">13,294</span><span style="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,042&#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%">10,171</span><span 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%">8,491&#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%">5,976</span><span style="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%">2,934&#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%">4,932</span><span 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,609&#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%">4,211</span><span style="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,522&#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%">602</span><span 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,286&#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%">4,342</span><span style="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,550&#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 non-current 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%">467,684</span><span 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%">476,934&#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,568)</span></td><td style="background-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,312)</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%">459,116</span><span 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%">469,622&#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: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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-current 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%">(339,325)</span></td><td style="background-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%">(350,000)</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%">Other GILTI tax basis differences</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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></td><td style="background-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,446)</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"/></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:#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%">(339,364)</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%">(352,446)</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><br/></span></div><div style="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, 2020, the Company had a valuation allowance for state research and development tax credits of $8,568,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, 2020, the Company had state research and development tax credit carryforwards of $11,361,000, net of federal tax, which will begin to expire for the 2020 tax return.</span></div><div style="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 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=84230637&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=116825942&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=84230637&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=116825942&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=84230637&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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>nonnum: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>42
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709804200">
<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, 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_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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%">173,489</span><span style="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%">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"/><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%">172,333&#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,103</span><span 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,075&#160;</span></td><td style="background-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,073&#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%">176,592</span><span style="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%">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"/><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%">177,406&#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:9pt;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 4,371,194, 5,735,608, and 2,650,164 shares of common stock, on a weighted-average basis, were outstanding in 2020, 2019, and 2018, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive. Restricted stock units totaling 3,826 and 13,092 shares of common stock, on a weighted-average basis, were outstanding in 2020 and 2019, respectively, but were not included in the calculation of dilutive net income per share because they were anti-dilutive. There were no anti-dilutive restricted stock units outstanding, on a weighted-average basis, in 2018.</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=6371337&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=6371337&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709933016">
<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, 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_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2020</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%">280,205</span><span style="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%">208,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:#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%">168,287</span><span style="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%">153,741</span><span style="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%">811,020</span><span style="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%">60,911</span><span 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%">20,014</span><span 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%">1,278</span><span 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%">4,764</span><span 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%">86,967</span><span 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, 2019</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%">247,689&#160;</span></td><td style="background-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,738&#160;</span></td><td style="background-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%">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="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%">135,137&#160;</span></td><td style="background-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%">725,625&#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%">68,496&#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%">21,691&#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,487&#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,602&#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%">95,276&#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, 2018</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%">231,760&#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%">311,914&#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%">123,708&#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%">138,956&#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%">806,338&#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%">67,156&#160;</span></td><td style="background-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,948&#160;</span></td><td style="background-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,482&#160;</span></td><td style="background-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,735&#160;</span></td><td style="background-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,321&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/></tr></table></div>Revenue is presented geographically based on the customer&#8217;s country of domicile. Revenue from a single customer accounted for 13% and 15% of total revenue in 2020 and 2018, respectively. Revenue from this customer was not greater than 10% of total revenue in 2019. Accounts receivable from this same customer accounted for 20%, 24%, and 30% of total accounts receivable as of December 31, 2020, 2019, and 2018, respectively. In 2020, a second customer accounted for 14% of total revenue. Accounts receivable from this second customer accounted for 19% of total accounts receivable as of December 31, 2020.<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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709890184">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Acquisitions<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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 );">Acquisitions</a></td>
<td class="text">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 on the fourth anniversary date of the closing, contingent upon continued employment of key talent, and will be recorded as compensation expense over this four-year 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:400;line-height:120%">Sualab's intellectual property, engineering expertise, and market coverage are expected to increase the Company's existing deep learning capabilities. Combined with intellectual property acquired from ViDi Systems S.A. in 2017, the Company is now a leading provider of deep learning-based industrial vision 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%">The purchase price that was not related to employment was allocated as follows (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:11pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"><tr><td style="width:1.0%"/><td style="width:85.263%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.537%"/><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%">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: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,691&#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%">Current 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:10pt;font-weight:400;line-height:100%">9,487&#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%">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:10pt;font-weight:400;line-height:100%">1,200&#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%">Inventories</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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&#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%">Prepaid expenses and other current 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%">252&#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%">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:10pt;font-weight:400;line-height:100%">726&#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%">Operating lease 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%">2,792&#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%">Deferred income tax asset</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,087&#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%">Other 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%">513&#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%">Accounts payable</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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)</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%">Accrued 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,633)</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%">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:10pt;font-weight:400;line-height:100%">(764)</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%">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:10pt;font-weight:400;line-height:100%">(448)</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%">Non-current operating lease liabilities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,344)</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%">Deferred income tax 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:10pt;font-weight:400;line-height:100%">(7,926)</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%">Other liabilities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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"/></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%">Completed technologies</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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,300&#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%">In-process 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%">8,200&#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%">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%">5,800&#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%">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%">340&#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%">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"/></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%">Goodwill</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">129,138&#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 25.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%">Purchase price</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%">169,598</span><span style="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><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 completed technologies, in-process technologies, customer relationships, trademarks, and non-compete agreements are included in "Intangible assets" on the Consolidated Balance </span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Sheet. The completed technologies are being amortized to cost of revenue over eight years, the customer relationships are being amortized to SG&amp;A expenses over seven years, the trademarks are being amortized to SG&amp;A expenses over two years, and the non-compete agreements are being amortized to RD&amp;E expenses over six to seven years. </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The in-process technologies were completed in the fourth quarter of 2020 and are being amortized to cost of revenue over six years. </span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">The portion of the acquired goodw</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">ill deductible for tax purposes is $104,609,000.</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:120%">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, </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%">and customer relationships acquired from Sualab were impaired in the amounts of $10,070,000, $5,900,000, and $3,382,000, respectively. </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%">This transaction was accounted for as a business combination. Pro-forma information is not presented because it is not significant. Revenue and earnings since the date of the acquisition included in the Company's Consolidated Statements of Operations are also not presented because they are not material. Transaction costs were immaterial and were expensed as incurred.</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_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>nonnum: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>45
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709646728">
<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, 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>
</tr>
<tr class="ro">
<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="text-align:justify"><span style="background-color:#ffffff;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 </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">8%</span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> and office closures. The Company recorded restructuring charges from these actions totaling </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">$15,924,000</span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> in 2020 which are included in &#8220;Restructuring charges&#8221; on the Consolidated Statements of Operation</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">s. 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.</span></div><div style="text-align:justify"><span><br/></span></div><div><span style="background-color:#ffffff;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="margin-bottom:6pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="text-align:justify"><span><br/></span></div><div style="text-align:justify"><span style="background-color:#ffffff;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 </span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">181</span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%"> 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 b</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">enefits, 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="background-color:#ffffff;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 recognize</span><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">d in the second quarter of 2020 when th</span><span style="background-color:#ffffff;color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">e Company ceased using the property for economic benefit. </span></div><div style="margin-top:9pt;text-align:justify"><span style="background-color:#ffffff;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="background-color:#ffffff;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="margin-bottom:6pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:700;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 #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,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-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%">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-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%">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-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%">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-bottom:3pt double #000000;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="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><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></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://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 420<br> -URI http://asc.fasb.org/topic&amp;trid=2175745<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>nonnum: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>46
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709723128">
<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, 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_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 11, 2021, the Company's Board of Directors declared a cash dividend of $0.060 per share. The dividend is payable March 12, 2021 to all shareholders of record as of the close of business on February 26, 2021.<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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708272296">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Selected Quarterly Financial Data (Unaudited)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_QuarterlyFinancialInformationDisclosureAbstract', window );"><strong>Quarterly Financial Information 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_QuarterlyFinancialInformationTextBlock', window );">Selected Quarterly Financial Data (Unaudited)</a></td>
<td class="text"><div style="margin-bottom:5pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"><tr><td style="width:1.0%"/><td style="width:54.471%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.457%"/><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:9.457%"/><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:9.457%"/><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:9.459%"/><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="21" 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%">Quarter Ended</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="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:7pt;font-weight:700;line-height:100%">March 29,                             2020</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:7pt;font-weight:700;line-height:100%">June 28,                                 2020</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:7pt;font-weight:700;line-height:100%">September 27,                           2020</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:7pt;font-weight:700;line-height:100%">December&#160;31,<br/>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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="21" 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><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%">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: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%">167,235&#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: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%">169,097&#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: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%">251,073&#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: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%">223,615&#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:9pt;font-weight:400;line-height:100%">Gross margin</span></td><td colspan="2" style="background-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%">126,035&#160;</span></td><td style="background-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:9pt;font-weight:400;line-height:100%">118,777&#160;</span></td><td style="background-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:9pt;font-weight:400;line-height:100%">191,332&#160;</span></td><td style="background-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:9pt;font-weight:400;line-height:100%">168,455&#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:9pt;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: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 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:9pt;font-weight:400;line-height:100%">14,798&#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:9pt;font-weight:400;line-height:100%">251&#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:9pt;font-weight:400;line-height:100%">875&#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:9pt;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: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 colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-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%">19,571&#160;</span></td><td style="background-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: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 colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-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"/></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%">Operating income (loss)</span></td><td colspan="2" style="background-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%">20,951&#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:9pt;font-weight:400;line-height:100%">(6,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:9pt;font-weight:400;line-height:100%">96,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:9pt;font-weight:400;line-height:100%">59,085&#160;</span></td><td style="background-color:#cceeff;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;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;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 (loss)</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: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%">20,477&#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: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%">(1,142)</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: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%">87,506&#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: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%">69,345&#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 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"/><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="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%">Basic net income (loss) per 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: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%">0.12&#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: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%">(0.01)</span></td><td style="background-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: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%">0.50&#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: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%">0.40&#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:9pt;font-weight:400;line-height:100%">Diluted net income (loss) per share</span></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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.12&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">(0.01)</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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.49&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.39&#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-bottom:5pt;margin-top:14pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.415%"><tr><td style="width:1.0%"/><td style="width:53.752%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.635%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.535%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.635%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.535%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.635%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.535%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.638%"/><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="21" 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%">Quarter Ended</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:7pt;font-weight:700;line-height:100%">March 31, 2019</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:7pt;font-weight:700;line-height:100%">June 30,                           2019</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:7pt;font-weight:700;line-height:100%">September 29,                           2019</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:7pt;font-weight:700;line-height:100%">December&#160;31,<br/>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="21" 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><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%">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: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%">173,484&#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: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%">199,047&#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: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%">183,325&#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: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%">169,769&#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:9pt;font-weight:400;line-height:100%">Gross margin</span></td><td colspan="2" style="background-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%">127,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 colspan="2" style="background-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%">148,080&#160;</span></td><td style="background-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:9pt;font-weight:400;line-height:100%">135,693&#160;</span></td><td style="background-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:9pt;font-weight:400;line-height:100%">124,898&#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:9pt;font-weight:400;line-height:100%">Operating 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:9pt;font-weight:400;line-height:100%">30,147&#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:9pt;font-weight:400;line-height:100%">51,756&#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:9pt;font-weight:400;line-height:100%">43,092&#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:9pt;font-weight:400;line-height:100%">17,607&#160;</span></td><td style="background-color:#cceeff;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;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;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;border-top:1pt 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%">33,104&#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: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%">48,749&#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: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%">41,685&#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: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%">80,327&#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 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"/><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="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%">Basic net income per 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: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%">0.19&#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: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%">0.28&#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: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%">0.24&#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: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%">0.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:9pt;font-weight:400;line-height:100%">Diluted net income per share</span></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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.19&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.28&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.24&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.46&#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><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_QuarterlyFinancialInformationDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_QuarterlyFinancialInformationDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-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_QuarterlyFinancialInformationTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 quarterly financial data. Includes, but is not limited to, tabular presentation of financial information for fiscal quarters, effect of year-end adjustments, and an explanation of matters or transactions that affect comparability of the information.</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> -URI http://asc.fasb.org/topic&amp;trid=2126967<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_QuarterlyFinancialInformationTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708558984">
<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, 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_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">2020</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%">530&#160;</span></td><td style="background-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%">600&#160;</span></td><td style="background-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%">(300)</span></td><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%">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: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%">831&#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%">2019</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%">596&#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%">215&#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%">(286)</span></td><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%">5&#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%">530&#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%">2018</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%">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 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%">282&#160;</span></td><td style="background-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%">(61)</span></td><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%">(12)</span></td><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%">596&#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%">2020</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%">&#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%">&#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,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 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:#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,050&#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%">225&#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%">16&#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%">2018</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,181&#160;</span></td><td style="background-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%">182&#160;</span></td><td style="background-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%">(282)</span></td><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%">(31)</span></td><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,050&#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%">2020</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%">7,312&#160;</span></td><td style="background-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,256&#160;</span></td><td style="background-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%">8,568&#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%">2019</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%">6,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 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,200&#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%">7,312&#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%">2018</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%">5,309&#160;</span></td><td style="background-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%">803&#160;</span></td><td style="background-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%">6,112&#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:9pt;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>nonnum: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>49
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782811816">
<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, 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_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 combinations, 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 other comprehensive income (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 certificates of deposit and debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Certificates of deposit and 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 other comprehensive income (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 </span></div>recoveries related to debt securities are included in &#8220;Other income (expense)&#8221; on the Consolidated Statements of Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts that project the 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 prices 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%">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 market 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 would 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 two 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">GoodwillGoodwill 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 macroeconomic conditions, industry and market considerations, overall financial performance (both current and projected), changes in management or 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 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 upon facts and circumstances. The useful lives of distribution networks range from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2MTY_1993dea7-2551-4816-80cd-4137c69069dd">eleven</span> to twelve years, of completed technologies from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2NTc_a4acc09f-a1f8-4829-97e1-5e2e1d62e3a6">five</span> to eight years, of customer relationships from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY2OTg_1ba8638a-e4db-4203-9056-3c3066dac80d">five</span> to eight years, of non-compete agreements from <span style="-sec-ix-hidden:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTY3Mzk_2ef3c53a-ab25-4b57-bc54-77289ccd63fa">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:id3VybDovL2RvY3MudjEvZG9jOjFhNDMwZDNmMzllNzQ3Njk5NjVjMWNjOWY3ZTY2ODQyL3NlYzoxYTQzMGQzZjM5ZTc0NzY5OTY1YzFjYzlmN2U2Njg0Ml85Ny9mcmFnOjY1MGRiYjNkNmNmNTRhY2FiZTU2MDUwYWRiNDEwODM3L3RleHRyZWdpb246NjUwZGJiM2Q2Y2Y1NGFjYWJlNTYwNTBhZGI0MTA4MzdfMTc4NTM_da3b6d83-8fe8-41be-be75-64b34b1da43f">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 collectibility 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 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 upon 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 </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%">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 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, outside services, and prototyping materials. 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,443,000 in 2020, $1,385,000 in 2019, and $1,662,000 in 2018.</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. The fair value of RSUs is determined based on the market value of the Company's common stock on the grant date. </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 options and RSUs using the graded attribution method, in which expense is recognized on a straight-line basis over the service period for each separately vesting 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><span></span>
</td>
</tr>
<tr class="ro">
<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 $36,912,000 and $38,027,000, as of December 31, 2020 and December 31, 2019, respectively; net unrealized gains on available-for-sale investments of $4,382,000 and $2,023,000 as of December 31, 2020 and December 31, 2019, respectively; 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 income (loss) to investment income on the Consolidated Statements of Operations were net realized gains of $4,119,000, $1,452,000, and $501,000 for 2020, 2019, and 2018, respectively.</span></div><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%">The Company has two large customers that each represented a significant portion of revenue in 2020 and accounts receivable as of December 31, 2020. 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 product is manufactured by a third-party contractor located in Indonesia. This contractor has agreed to provide Cognex with termination notification periods and last-time-buy rights, if and when that may be applicable. We rely upon this contractor to provide quality product and meet delivery schedules. 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:9pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">Certain components are presently sourced from a single vendor that is selected based on price and performance considerations. In the event of a supply disruption from a single-source vendor, these components may be purchased from alternative vendors, which may result in manufacturing delays based on the lead time of the new vendor and higher costs. Certain key electronic and mechanical components that are purchased from strategic suppliers, such as processors or imagers, are fundamental to the design of Cognex products. A disruption in the supply of these key components, such as a last-time-buy announcement, natural disaster, financial bankruptcy, or other event, may require us to purchase a significant amount of inventory at unfavorable prices resulting in lower gross margins and higher risk of carrying excess inventory. If we are unable to secure adequate supply from alternative sources, we may have to redesign our products, which may lead to a delay in manufacturing and a 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 certificates of deposit and debt securities with original maturities of three months or less, are classified as cash equivalents and are stated at amortized cost. Certificates of deposit and 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 other comprehensive income (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 </span></div>recoveries related to debt securities are included in &#8220;Other income (expense)&#8221; on the Consolidated Statements of Operations. When developing an estimate of expected credit losses, management considers all relevant information including historical experience, current conditions, and reasonable forecasts that project the 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. The Company determines whether a contract 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 entity'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 upon 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, </span></div>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 typically associated with restructuring activities 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, general economic and industry conditions, and reasonable forecasts about the future, 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>nonnum: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>nonnum: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>nonnum: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><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-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_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>nonnum: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=121583591&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><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-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_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>nonnum: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 954<br> -SubTopic 450<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=6491354&amp;loc=d3e6052-115624<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<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><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 (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=68068213&amp;loc=d3e12565-110249<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-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_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>nonnum: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>nonnum: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://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-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>nonnum: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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br><br>Reference 4: 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>nonnum: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=121590274&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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=121590274&amp;loc=d3e41638-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 1A<br> -URI http://asc.fasb.org/extlink&amp;oid=121590274&amp;loc=SL5579245-113959<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 7<br> -URI http://asc.fasb.org/extlink&amp;oid=121590274&amp;loc=d3e41675-113959<br><br>Reference 6: http://fasb.org/us-gaap/role/ref/legacyRef<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 7: 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=121590274&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>nonnum: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=6371337&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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br><br>Reference 3: 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=6371337&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>nonnum: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=121572278&amp;loc=d3e13279-108611<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-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_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>nonnum: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><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-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_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>nonnum: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><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-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_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>nonnum: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=120406818&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=84230637&amp;loc=d3e32847-109319<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 954<br> -SubTopic 740<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6491622&amp;loc=d3e9504-115650<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<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 19<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32840-109319<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 1<br> -URI http://asc.fasb.org/extlink&amp;oid=116657188&amp;loc=SL116659661-227067<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 9<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-109319<br><br>Reference 8: 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=120406818&amp;loc=d3e32280-109318<br><br>Reference 9: 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=84230637&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>nonnum: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://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<br><br>Reference 2: 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 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 50<br> -Paragraph 2<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16323-109275<br><br>Reference 4: 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 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>nonnum: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><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-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_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>nonnum: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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<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 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=6361739&amp;loc=d3e7789-107766<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=116846552&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://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>nonnum: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>nonnum: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=121609121&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>nonnum: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><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-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_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>nonnum: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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=16397303&amp;loc=d3e19347-109286<br><br>Reference 3: 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 4: 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 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.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>nonnum: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=84158767&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=84158767&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>nonnum: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 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-107790<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 (b),(f)<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 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>nonnum: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=68068213&amp;loc=d3e12565-110249<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 235<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=84158767&amp;loc=d3e18780-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_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>nonnum: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=121611835&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=121611835&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=121611835&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=121611835&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=121611835&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>nonnum: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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708577240">
<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, 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_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:6pt;text-align:justify"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:120%">ASU 2019-12 applies to all entities within the scope of Topic 740, Income Taxes. The amendments in this ASU simplify the accounting for income taxes by removing the following exceptions: (1) exception to the incremental approach for intraperiod tax allocation when there is a loss from continuing operations and income or a gain from other items; (2) exception to the requirement to recognize a deferred tax liability for equity method investments when a foreign subsidiary becomes an equity method investment; (3) exception to the ability not to recognize a deferred tax liability for a foreign subsidiary when a foreign equity method investment becomes a subsidiary; and (4) exception to the general methodology for calculating income taxes in an interim period when a year-to-date loss exceeds the anticipated loss for the year. The amendments in this ASU also simplify the accounting for income taxes by doing the following: (1) requiring that an entity recognize a franchise tax that is partially based on income as an income-based tax and account for any incremental amount incurred as a non-income-based tax; (2) requiring that an entity evaluate when a step up in the tax basis of goodwill should be considered part of the business combination in which the book goodwill was originally recognized and when it should be considered a separate transaction; (3) specifying that an entity is not required to allocate the consolidated amount of current and deferred tax expense to a legal entity that is not subject to tax in its separate financial statements; and (4) requiring that an entity reflect the effect of an enacted change in tax laws or rates in the annual effective tax rate computation in the interim period that included the enacted date. The amendments in this ASU are effective for public companies for annual periods, and interim periods within those annual periods, beginning after December 15, 2020. Early adoption is permitted; however, an entity that elects to early adopt the amendments must adopt all the amendments in the same period. The amendments in this ASU related to separate financial statements of legal entities that are not subject to tax should be applied on a retrospective basis for all periods presented. The amendments related to changes in ownership of foreign equity method investments or foreign subsidiaries should be applied on a modified retrospective basis through a cumulative-effect adjustment to retained earnings as of the beginning of the fiscal year of adoption. The amendments related to franchise taxes that are partially based on income should be applied on either a retrospective basis for all periods presented or a modified retrospective basis through a cumulative-effect adjustment to retained earnings as of the beginning of the fiscal year of adoption. All other amendments should be applied on a prospective basis. Management does not expect ASU 2019-12 to 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)"</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 amendments in this ASU 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. The amendments in this ASU 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 this ASU are effective for all entities as of March 12, 2020 through December 31, 2022. Management does not expect ASU 2020-04 to 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:6pt;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 amendments in this ASU are effective for fiscal years, and interim periods within those fiscal years, beginning after December 15, 2020. Early application is not permitted. The amendments in this ASU should be applied on a prospective basis as of the beginning of the period of adoption for existing or newly purchased callable debt securities. Management does not expect ASU 2020-08 to have a material impact on the Company's consolidated financial statements and 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>nonnum: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>51
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708643176">
<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, 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_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, 2020 (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:10pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">2,464&#160;</span></td><td style="background-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%">236,142&#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%">Treasury bills</span></td><td colspan="3" style="background-color:#ffffff;padding:0 1pt"></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%">131,861&#160;</span></td><td style="background-color:#ffffff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><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%">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%">&#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%">92,218&#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 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%">19,006&#160;</span></td><td style="background-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%">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: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%">12,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"/></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%">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: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,038&#160;</span></td><td style="background-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></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%">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="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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%">38&#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-bottom:5pt;margin-top:11pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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%">2,554&#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 GVi 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%">(1,646)</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%">Fair value adjustment to 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%">245&#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="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 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,153&#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="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%">Fair value adjustment to 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%">(114)</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%">Payment of 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%">(1,039)</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 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=117815213&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=117815213&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>nonnum: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=117815213&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=117815213&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502787017080">
<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, 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>
</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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">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%">266,609</span><span style="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%">155,498&#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%">2,464</span><span 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%">15,933&#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%">269,073</span><span style="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%">171,431&#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%">Treasury bills</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%">35,403</span><span 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%">92,914&#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;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:700;line-height:100%">32,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:#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%">65,624&#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%">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%">25,160</span><span 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%">66,680&#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%">8,660</span><span style="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,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;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%">1,303</span><span 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,630&#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%">Certificate of deposit</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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%">4,328&#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%">103,240</span><span 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%">240,470&#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%">203,428</span><span style="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%">146,474&#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%">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%">96,458</span><span 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%">216,334&#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%">67,058</span><span style="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%">46,403&#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%">19,006</span><span 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,914&#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%">5,735</span><span style="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%">2,322&#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:700;line-height:100%">3,440</span><span 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%">16,005&#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%">395,125</span><span style="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%">433,452&#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%">767,438</span><span 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%">845,353&#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, 2020 (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">Treasury bills</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%">34,978&#160;</span></td><td style="background-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%">425&#160;</span></td><td style="background-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%">35,403&#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%">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%">32,394&#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%">320&#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%">32,714&#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%">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%">24,999&#160;</span></td><td style="background-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%">161&#160;</span></td><td style="background-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%">25,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="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><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%">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:400;line-height:100%">8,590&#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%">70&#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%">8,660&#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%">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:400;line-height:100%">1,297&#160;</span></td><td style="background-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%">6&#160;</span></td><td style="background-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,303&#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="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><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%">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%">200,549&#160;</span></td><td style="background-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,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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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:#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%">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%">95,522&#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%">936&#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%">96,458&#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%">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%">66,329&#160;</span></td><td style="background-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%">729&#160;</span></td><td style="background-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%">67,058&#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%">18,913&#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%">93&#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%">19,006&#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%">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:400;line-height:100%">5,725&#160;</span></td><td style="background-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&#160;</span></td><td style="background-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><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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"/><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%">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:400;line-height:100%">3,379&#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%">61&#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,440&#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%">492,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-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%">5,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:#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%">&#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-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%">498,365</span><span 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"> <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-bottom:6pt;margin-top:9pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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="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:#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 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"/><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%">Increases 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&#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%">Decreases 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)</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%">Write-offs </span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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="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 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%">&#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-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-bottom:6pt;margin-top:9pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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="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:#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 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"/><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%">Increases 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&#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%">Decreases 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)</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%">Write-offs </span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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="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 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%">&#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-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, 2020 (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">32,714&#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%">69,534&#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%">119,328&#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%">13,488&#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,078&#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%">236,142&#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%">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%">35,403&#160;</span></td><td style="background-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%">68,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%">28,241&#160;</span></td><td style="background-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%">131,861&#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: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"/><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%">46,842&#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%">18,755&#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,461&#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%">92,218&#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%">&#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,805&#160;</span></td><td style="background-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,201&#160;</span></td><td style="background-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%">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: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"/><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,440&#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%">12,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%">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:400;line-height:100%">1,303&#160;</span></td><td style="background-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,096&#160;</span></td><td style="background-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%">639&#160;</span></td><td style="background-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%">7,038&#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%">103,240</span><span style="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%">192,494</span><span style="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%">186,604</span><span style="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%">14,949</span><span style="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%">1,078</span><span style="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%">498,365</span><span style="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>nonnum: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=121582814&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>nonnum: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>nonnum: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>nonnum: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=121645371&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709949880">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">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%">26,800</span><span style="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%">27,285&#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%">4,780</span><span 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,503&#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%">29,250</span><span style="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,473&#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%">60,830</span><span 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,261&#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>nonnum: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>54
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709859896">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">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%">45,978</span><span style="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%">49,289&#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%">12,682</span><span 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,790&#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%">58,162</span><span style="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%">67,474&#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%">29,816</span><span 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%">31,278&#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,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%">6,800&#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%">181,494</span><span 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%">194,115&#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%">(102,321)</span></td><td style="background-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%">(104,672)</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%">79,173</span><span 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%">89,443&#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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709976840">
<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, 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_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-bottom:5pt;margin-top:14pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">2021</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%">9,101&#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%">2022</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,863&#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%">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%">5,072&#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,074&#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,317&#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%">4,960&#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%">29,387</span><span 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=121609121&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708283048">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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%">113,208&#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%">Acquisition of Sualab Co., Ltd.</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%">130,142&#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 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%">95&#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, 2019</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%">243,445&#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%">Sualab Co., Ltd. purchase price adjustment</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,004)</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%">&#160;&#160;Foreign exchange rate changes</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,637&#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%">Balance as of December 31, 2020</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%">244,078</span><span style="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_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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709908536">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">12,397</span><span 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%">11,820</span><span 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,160</span><span style="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%">3,418</span><span style="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%">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:700;line-height:100%">274</span><span 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%">67</span><span style="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%">43</span><span style="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, 2020</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%">58,120</span><span 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%">15,555</span><span 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%">31,987&#160;</span></td><td style="background-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%">9,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,827&#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%">14,407&#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,402&#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,005&#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%">In-process 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%">8,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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">8,200&#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-compete agreements</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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:#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%">350&#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%">360&#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%">Trademarks</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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:#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&#160;</span></td><td style="background-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%">98&#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%">Balance as of December 31, 2019</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: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%">93,474&#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%">53,984&#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%">39,490&#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_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">2021</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,656&#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%">2022</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,286&#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%">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%">2,594&#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%">2,080&#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%">1,757&#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%">2,182&#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%">15,555</span><span style="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>nonnum: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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708563688">
<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, 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_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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:700;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%">Company bonuses</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%">19,343</span><span style="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%">&#8212;&#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, commissions, 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%">14,025</span><span 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%">11,500&#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%">6,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%">6,146&#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,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%">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;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%">3,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:#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,708&#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%">27,963</span><span 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%">25,132&#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%">77,264</span><span style="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%">52,199&#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:9pt"><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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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,743&#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,841&#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%">(3,871)</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, 2019</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%">4,713&#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,463&#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%">(2,770)</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, 2020</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,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;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>nonnum: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=68068213&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502705940520">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2020</span></td><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, 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: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:#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%">50,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><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 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,000&#160;</span></td><td style="background-color:#cceeff;padding:2px 1pt 2px 0;text-align:right;vertical-align:bottom"/><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,249&#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%">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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,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%">4,223&#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%">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"/><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%">161,951,500&#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%">139,688&#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%">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 colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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 colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">575,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%">5,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: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,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"/><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%">870,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%">2,962&#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%">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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,700&#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%">3,569&#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%">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%">38,035&#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,362&#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%">37,450&#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,256&#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%">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%">1,465&#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,110&#160;</span></td><td style="background-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%">845&#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%">628&#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%">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,285&#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,010&#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,300&#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,000&#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:9pt;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-bottom:5pt;margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.853%"><tr><td style="width:1.0%"/><td style="width:15.298%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.809%"/><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:11.930%"/><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:11.930%"/><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.809%"/><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:11.930%"/><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:11.934%"/><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:8pt;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:9pt;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:9pt;font-weight:700;line-height:100%">Liability Derivatives</span></td></tr><tr style="height:12pt"><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:9pt;font-weight:700;line-height:100%">Balance<br/>Sheet<br/>     Location&#160; &#160;&#160;&#160;</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:9pt;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:9pt;font-weight:700;line-height:100%">Balance<br/>Sheet<br/>    Location&#160; &#160;&#160;&#160;</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:9pt;font-weight:700;line-height:100%">Fair Value</span></td></tr><tr style="height:20pt"><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:9pt;font-weight:700;line-height:100%">December 31, 2020</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:9pt;font-weight:400;line-height:100%">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;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%">December 31, 2020</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:9pt;font-weight:400;line-height:100%">December 31, 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"/><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%">265</span><span style="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%">857&#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%">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:#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%">23&#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:9pt"><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-bottom:5pt;margin-top:14pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="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, 2020</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, 2019</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:0 1pt"/><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:700;line-height:100%">December 31, 2020</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, 2019</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%">265</span><span style="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%">857&#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%">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:#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%">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"/></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%">265</span><span style="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%">857&#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%">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:#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%">23&#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:9pt;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-bottom:5pt;margin-top:10pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:8pt;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:8pt;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:8pt;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:8pt;font-weight:700;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><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%">2018</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%">(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"/><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%">(285)</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;vertical-align:top;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:8pt;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:8pt;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:8pt;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:8pt;font-weight:700;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><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%">2018</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%">(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"/><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%">(285)</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://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 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>nonnum: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=121590274&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>nonnum: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=121590274&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=121590274&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=121590274&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>nonnum: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=121590274&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>nonnum: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=121590274&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502818381288">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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="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%">2018</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%">310,027</span><span 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%">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="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%">265,175&#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%">208,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:#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="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%">311,914&#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%">168,287</span><span 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%">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="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,708&#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%">123,919</span><span style="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%">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="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,541&#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%">811,020</span><span 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%">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="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%">806,338&#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:6pt;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-bottom:5pt;margin-top:11pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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="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%">2018</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%">674,830</span><span 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%">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"/><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%">654,509&#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%">136,190</span><span style="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,405&#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%">151,829&#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%">811,020</span><span 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%">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="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%">806,338&#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-bottom:5pt;margin-top:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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%">9,845&#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 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:10pt;font-weight:400;line-height:100%">53,422&#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</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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,730)</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%">(105)</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, 2019</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%">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%">Increases to 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:10pt;font-weight:400;line-height:100%">120,008&#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</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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,014)</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%">848&#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 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%">21,274</span><span style="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="margin-bottom:5pt;margin-top:8pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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%">596&#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%">215&#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</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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:#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%">5&#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, 2019</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%">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 </span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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 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%">831</span><span style="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=121611835&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=121599337&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>nonnum: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=121604090&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>nonnum: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=121604090&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>nonnum: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>61
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502710641256">
<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, 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_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:10pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2019</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%">12,899&#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%">37.95&#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%">1,245&#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%">54.68&#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%">(4,565)</span></td><td style="background-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%">27.54&#160;</span></td><td style="background-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%">(609)</span></td><td style="background-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.28&#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, 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:700;line-height:100%">8,970</span><span 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%">44.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;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%">7.11</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%">318,873</span><span 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, 2020</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,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;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%">33.79</span><span style="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.60</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%">145,735</span><span style="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, 2020 (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%">8,235</span><span 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%">44.08</span><span 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%">7.01</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%">298,118</span><span 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:9pt;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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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.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;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%">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><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.9&#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.41</span><span style="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.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><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.35&#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%">37</span><span 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%">39&#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%">5.3</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.4</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-bottom:5pt;margin-top:10pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2019</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%">150&#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%">48.63&#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%">446&#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%">52.09&#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%">&#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"/></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%">(42)</span></td><td style="background-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.61&#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, 2020</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%">554</span><span 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%">51.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:#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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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,365</span><span style="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,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"/><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%">2,447&#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,387</span><span 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%">15,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%">14,578&#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%">27,909</span><span style="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%">28,337&#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%">24,065&#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%">42,661</span><span 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%">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"/><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%">41,090&#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>nonnum: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=115993241&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>nonnum: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>nonnum: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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502786921848">
<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, 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>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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%">160</span><span 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%">15,854&#160;</span></td><td style="background-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%">10,624&#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%">921</span><span style="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%">2,108&#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%">(879)</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%">13,197</span><span 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%">30,670&#160;</span></td><td style="background-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%">6,307&#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%">14,278</span><span style="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%">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"/><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%">16,052&#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%">(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"/><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,271)</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%">(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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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;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%">15,269</span><span style="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%">(442,494)</span></td><td style="background-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)</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%">(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"/><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%">(745)</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%">10,725</span><span style="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%">(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"/><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%">15,307&#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"/></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><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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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%">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%">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: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%">(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"/><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%">(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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">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%">(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"/><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 expense (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%">(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"/><td colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">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:#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"/></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%">18&#160;</span></td><td style="background-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%">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%">(268)</span></td><td style="background-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%">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%">214&#160;</span></td><td style="background-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%">Discrete tax expense (benefit) related to Tax Act</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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%">(3)</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 discrete tax events</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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%">(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%">&#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%">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%">2</span><span style="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&#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"/></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;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%">6</span><span 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"><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-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:#ffffff;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:#ffffff;padding:0 1pt"/><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:400;line-height:100%">7&#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"><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:13pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:13pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:13pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2018</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%">7,294&#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%">199&#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%">5,259&#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,161)</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, 2019</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%">11,591&#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 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 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%">13,952</span><span 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>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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%">Non-current 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%">424,156</span><span 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%">437,500&#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%">13,294</span><span style="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,042&#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%">10,171</span><span 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%">8,491&#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%">5,976</span><span style="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%">2,934&#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%">4,932</span><span 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,609&#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%">4,211</span><span style="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,522&#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%">602</span><span 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,286&#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%">4,342</span><span style="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,550&#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 non-current 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%">467,684</span><span 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%">476,934&#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,568)</span></td><td style="background-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,312)</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%">459,116</span><span 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%">469,622&#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: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:top"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">Non-current 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%">(339,325)</span></td><td style="background-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%">(350,000)</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%">Other GILTI tax basis differences</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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></td><td style="background-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,446)</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"/></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:#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%">(339,364)</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%">(352,446)</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=116846552&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=109234566&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>nonnum: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=84230637&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>nonnum: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=84230637&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>nonnum: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=84230637&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>nonnum: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=84230637&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=84230637&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=84230637&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708272296">
<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, 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_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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%">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><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%">2018</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%">173,489</span><span style="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%">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"/><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%">172,333&#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,103</span><span 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,075&#160;</span></td><td style="background-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,073&#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%">176,592</span><span style="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%">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"/><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%">177,406&#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=6371337&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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709811448">
<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, 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_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-bottom:5pt;margin-top:5pt"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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, 2020</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%">280,205</span><span style="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%">208,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:#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%">168,287</span><span style="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%">153,741</span><span style="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%">811,020</span><span style="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%">60,911</span><span 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%">20,014</span><span 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%">1,278</span><span 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%">4,764</span><span 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%">86,967</span><span 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, 2019</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%">247,689&#160;</span></td><td style="background-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,738&#160;</span></td><td style="background-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%">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="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%">135,137&#160;</span></td><td style="background-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%">725,625&#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%">68,496&#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%">21,691&#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,487&#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,602&#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%">95,276&#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, 2018</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%">231,760&#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%">311,914&#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%">123,708&#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%">138,956&#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%">806,338&#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%">67,156&#160;</span></td><td style="background-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,948&#160;</span></td><td style="background-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,482&#160;</span></td><td style="background-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,735&#160;</span></td><td style="background-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,321&#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=120311839&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=120395209&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>nonnum: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>65
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708272296">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Acquisitions Acquisitions - (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_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_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock', window );">Schedule of Indefinite-lived Intangible Assets Acquired as Part of Business Combination</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 purchase price that was not related to employment was allocated as follows (in thousands):</span></div><div style="margin-bottom:5pt;margin-top:11pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"><tr><td style="width:1.0%"/><td style="width:85.263%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:12.537%"/><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%">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: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,691&#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%">Current 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:10pt;font-weight:400;line-height:100%">9,487&#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%">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:10pt;font-weight:400;line-height:100%">1,200&#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%">Inventories</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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&#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%">Prepaid expenses and other current 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%">252&#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%">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:10pt;font-weight:400;line-height:100%">726&#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%">Operating lease 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%">2,792&#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%">Deferred income tax asset</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,087&#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%">Other 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%">513&#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%">Accounts payable</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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)</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%">Accrued 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,633)</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%">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:10pt;font-weight:400;line-height:100%">(764)</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%">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:10pt;font-weight:400;line-height:100%">(448)</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%">Non-current operating lease liabilities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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,344)</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%">Deferred income tax 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:10pt;font-weight:400;line-height:100%">(7,926)</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%">Other liabilities</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;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"/></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%">Completed technologies</span></td><td colspan="2" style="background-color:#cceeff;padding:2px 0 2px 1pt;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,300&#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%">In-process 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%">8,200&#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%">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%">5,800&#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%">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%">340&#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%">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"/></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%">Goodwill</span></td><td colspan="2" style="background-color:#ffffff;padding:2px 0 2px 1pt;text-align:right;vertical-align:bottom"><span style="color:#000000;font-family:'Arial',sans-serif;font-size:10pt;font-weight:400;line-height:100%">129,138&#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 25.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%">Purchase price</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%">169,598</span><span style="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_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>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 characteristics and cost, by total and major class, of indefinite-lived intangible assets acquired as part of a business combination. Indefinite-lived intangible assets are assets that have no physical form, but have expected future economic benefit. The future benefit is not expected to diminish over a stated period of time. Acquired indefinite-lived intangible assets are disclosed by major class (assets that can be grouped together because they are similar, either by their nature or by their use in operations of the entity) and in total.</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 1<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=66006027&amp;loc=d3e16265-109275<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 20<br> -Section 50<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121647850&amp;loc=d3e4922-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_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>66
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709655368">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Restructuring Charges (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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>
</tr>
<tr class="ro">
<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"><div><span style="background-color:#ffffff;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="margin-bottom:6pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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="background-color:#ffffff;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="margin-bottom:6pt;text-align:justify"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;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:700;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 #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,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-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%">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-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%">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-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%">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-bottom:3pt double #000000;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="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><td colspan="3" style="display:none"/><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></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_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>nonnum: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>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502710425848">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Selected Quarterly Financial Data (Unaudited) (Tables)<br></strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><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_QuarterlyFinancialInformationDisclosureAbstract', window );"><strong>Quarterly Financial Information 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_ScheduleOfQuarterlyFinancialInformationTableTextBlock', window );">Schedule of Selected Quarterly Financial Information Data</a></td>
<td class="text"><div style="margin-bottom:5pt;margin-top:5pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.707%"><tr><td style="width:1.0%"/><td style="width:54.471%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.457%"/><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:9.457%"/><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:9.457%"/><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:9.459%"/><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="21" 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%">Quarter Ended</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="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:7pt;font-weight:700;line-height:100%">March 29,                             2020</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:7pt;font-weight:700;line-height:100%">June 28,                                 2020</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:7pt;font-weight:700;line-height:100%">September 27,                           2020</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:7pt;font-weight:700;line-height:100%">December&#160;31,<br/>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:8pt;font-weight:400;line-height:100%">&#160;</span></td><td colspan="21" 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><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%">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: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%">167,235&#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: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%">169,097&#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: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%">251,073&#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: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%">223,615&#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:9pt;font-weight:400;line-height:100%">Gross margin</span></td><td colspan="2" style="background-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%">126,035&#160;</span></td><td style="background-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:9pt;font-weight:400;line-height:100%">118,777&#160;</span></td><td style="background-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:9pt;font-weight:400;line-height:100%">191,332&#160;</span></td><td style="background-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:9pt;font-weight:400;line-height:100%">168,455&#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:9pt;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: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 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:9pt;font-weight:400;line-height:100%">14,798&#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:9pt;font-weight:400;line-height:100%">251&#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:9pt;font-weight:400;line-height:100%">875&#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:9pt;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: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 colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-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%">19,571&#160;</span></td><td style="background-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: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 colspan="3" style="background-color:#ffffff;padding:0 1pt"/><td colspan="2" style="background-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"/></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%">Operating income (loss)</span></td><td colspan="2" style="background-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%">20,951&#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:9pt;font-weight:400;line-height:100%">(6,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:9pt;font-weight:400;line-height:100%">96,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:9pt;font-weight:400;line-height:100%">59,085&#160;</span></td><td style="background-color:#cceeff;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;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;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 (loss)</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: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%">20,477&#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: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%">(1,142)</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: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%">87,506&#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: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%">69,345&#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 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"/><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="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%">Basic net income (loss) per 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: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%">0.12&#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: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%">(0.01)</span></td><td style="background-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: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%">0.50&#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: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%">0.40&#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:9pt;font-weight:400;line-height:100%">Diluted net income (loss) per share</span></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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.12&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">(0.01)</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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.49&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.39&#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-bottom:5pt;margin-top:14pt;text-align:center"><table style="border-collapse:collapse;display:inline-table;vertical-align:top;width:99.415%"><tr><td style="width:1.0%"/><td style="width:53.752%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.635%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.535%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.635%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.535%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.635%"/><td style="width:0.1%"/><td style="width:0.1%"/><td style="width:0.535%"/><td style="width:0.1%"/><td style="width:1.0%"/><td style="width:9.638%"/><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="21" 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%">Quarter Ended</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:7pt;font-weight:700;line-height:100%">March 31, 2019</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:7pt;font-weight:700;line-height:100%">June 30,                           2019</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:7pt;font-weight:700;line-height:100%">September 29,                           2019</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:7pt;font-weight:700;line-height:100%">December&#160;31,<br/>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="21" 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><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%">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: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%">173,484&#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: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%">199,047&#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: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%">183,325&#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: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%">169,769&#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:9pt;font-weight:400;line-height:100%">Gross margin</span></td><td colspan="2" style="background-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%">127,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 colspan="2" style="background-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%">148,080&#160;</span></td><td style="background-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:9pt;font-weight:400;line-height:100%">135,693&#160;</span></td><td style="background-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:9pt;font-weight:400;line-height:100%">124,898&#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:9pt;font-weight:400;line-height:100%">Operating 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:9pt;font-weight:400;line-height:100%">30,147&#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:9pt;font-weight:400;line-height:100%">51,756&#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:9pt;font-weight:400;line-height:100%">43,092&#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:9pt;font-weight:400;line-height:100%">17,607&#160;</span></td><td style="background-color:#cceeff;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;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;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;border-top:1pt 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%">33,104&#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: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%">48,749&#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: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%">41,685&#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: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%">80,327&#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 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"/><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="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%">Basic net income per 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: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%">0.19&#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: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%">0.28&#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: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%">0.24&#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: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%">0.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:9pt;font-weight:400;line-height:100%">Diluted net income per share</span></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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.19&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.28&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.24&#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:9pt;font-weight:400;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:9pt;font-weight:400;line-height:100%">0.46&#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><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_QuarterlyFinancialInformationDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_QuarterlyFinancialInformationDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-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_ScheduleOfQuarterlyFinancialInformationTableTextBlock">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 quarterly financial data. Includes, but is not limited to, financial information for fiscal quarters, cumulative effect of a change in accounting principle and earnings per share data.</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 270<br> -SubTopic 10<br> -Section 50<br> -Paragraph 1<br> -URI http://asc.fasb.org/extlink&amp;oid=121640914&amp;loc=d3e1280-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_ScheduleOfQuarterlyFinancialInformationTableTextBlock</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>us-gaap_</td>
</tr>
<tr>
<td><strong> Data Type:</strong></td>
<td>nonnum: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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782527288">
<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, 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_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>num: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>69
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502780923656">
<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, 2020</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>70
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502787014216">
<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, 2020</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>71
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502710248888">
<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, 2020</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>72
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708627672">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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,443,000<span></span>
</td>
<td class="nump">$ 1,385,000<span></span>
</td>
<td class="nump">$ 1,662,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>73
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785296472">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 36,912,000<span></span>
</td>
<td class="nump">$ 38,027,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">4,382,000<span></span>
</td>
<td class="nump">2,023,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">4,119,000<span></span>
</td>
<td class="nump">1,452,000<span></span>
</td>
<td class="nump">$ 501,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">$ 4,119,000<span></span>
</td>
<td class="nump">$ 1,452,000<span></span>
</td>
<td class="nump">$ 501,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=121641772&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=121641772&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=121641772&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=116690757&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=121641772&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=121641772&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=121605123&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=121641772&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=121641772&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=121645371&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=121641772&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>74
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785115944">
<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, 2020 </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">$ 2,464<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">236,142<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">131,861<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">92,218<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">19,006<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">12,100<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">7,038<span></span>
</td>
</tr>
<tr class="ro">
<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">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_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">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_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>75
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782523576">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 1,153,000<span></span>
</td>
<td class="nump">$ 2,554,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="num">(1,039,000)<span></span>
</td>
<td class="nump">0<span></span>
</td>
<td class="num">$ (1,000,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_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue', window );">Ending balance</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">1,153,000<span></span>
</td>
<td class="nump">$ 2,554,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="nump">0<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,646,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="nump">0<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_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="num">(114,000)<span></span>
</td>
<td class="nump">$ 245,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="num">$ (1,039,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_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=117815213&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=121586364&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>76
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502803307240">
<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="4">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Sep. 27, 2020</div></th>
<th class="th"><div>Jun. 28, 2020</div></th>
<th class="th"><div>Mar. 29, 2020</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
<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="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">$ 0<span></span>
</td>
<td class="nump">$ 1,153,000<span></span>
</td>
<td class="nump">$ 2,554,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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,427,000<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_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="nump">0<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>
<td class="nump">19,571,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_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>
<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>
<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_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet', window );">Credit losses</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">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="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">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>
<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>
<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="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">0<span></span>
</td>
<td class="nump">$ 0<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. | 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>
<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>
<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="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">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>
<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>
<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="nump">$ 2,500,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">$ 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=117815213&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=121586364&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=121593497&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_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 other than temporary impairment (OTTI) losses on equity securities, OTTI related to credit losses on debt securities, and OTTI losses on debt securities when the entity intends to sell the securities or it is more likely than not that the entity will be required to sell the securities before recovery of its amortized cost basis. Additionally, this item includes OTTI losses recognized during the period on investments accounted for under the cost method of accounting.</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_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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>77
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502784894088">
<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, 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_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">$ 266,609<span></span>
</td>
<td class="nump">$ 155,498<span></span>
</td>
</tr>
<tr class="re">
<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">2,464<span></span>
</td>
<td class="nump">15,933<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">269,073<span></span>
</td>
<td class="nump">171,431<span></span>
</td>
</tr>
<tr class="re">
<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 $102,258 and $235,610 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</a></td>
<td class="nump">103,240<span></span>
</td>
<td class="nump">240,470<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">395,125<span></span>
</td>
<td class="nump">433,452<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">767,438<span></span>
</td>
<td class="nump">845,353<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 $102,258 and $235,610 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</a></td>
<td class="nump">35,403<span></span>
</td>
<td class="nump">92,914<span></span>
</td>
</tr>
<tr class="re">
<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">96,458<span></span>
</td>
<td class="nump">216,334<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 $102,258 and $235,610 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</a></td>
<td class="nump">25,160<span></span>
</td>
<td class="nump">66,680<span></span>
</td>
</tr>
<tr class="re">
<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">67,058<span></span>
</td>
<td class="nump">46,403<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 $102,258 and $235,610 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</a></td>
<td class="nump">32,714<span></span>
</td>
<td class="nump">65,624<span></span>
</td>
</tr>
<tr class="re">
<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">203,428<span></span>
</td>
<td class="nump">146,474<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 $102,258 and $235,610 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</a></td>
<td class="nump">8,660<span></span>
</td>
<td class="nump">6,294<span></span>
</td>
</tr>
<tr class="re">
<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">3,440<span></span>
</td>
<td class="nump">16,005<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 $102,258 and $235,610 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</a></td>
<td class="nump">1,303<span></span>
</td>
<td class="nump">4,630<span></span>
</td>
</tr>
<tr class="re">
<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">5,735<span></span>
</td>
<td class="nump">2,322<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_CertificatesOfDepositMember', window );">Certificates of Deposit [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 $102,258 and $235,610 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019</a></td>
<td class="nump">0<span></span>
</td>
<td class="nump">4,328<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="ro">
<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="re">
<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">$ 19,006<span></span>
</td>
<td class="nump">$ 5,914<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=121558606&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=121553693&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=121558606&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=121553693&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://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 3: 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=121586364&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=121566466&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=us-gaap_CertificatesOfDepositMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_CertificatesOfDepositMember</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>78
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502786941576">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 225,853<span></span>
</td>
<td class="nump">$ 123,499<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">1,560<span></span>
</td>
<td class="nump">2,874<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_AvailableForSaleSecuritiesGrossRealizedGains', window );">Gross realized gains on sale of debt securities</a></td>
<td class="nump">4,283<span></span>
</td>
<td class="nump">1,581<span></span>
</td>
<td class="nump">$ 669<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses', window );">Gross realized losses on sale of debt securities</a></td>
<td class="nump">$ 164<span></span>
</td>
<td class="nump">$ 129<span></span>
</td>
<td class="nump">$ 168<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_AvailableForSaleSecuritiesGrossRealizedGains">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 gross profit realized on the sale of debt or equity securities 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;">us-gaap_AvailableForSaleSecuritiesGrossRealizedGains</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_AvailableForSaleSecuritiesGrossRealizedLosses">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 gross loss realized on the sale of debt or equity securities 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;">us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_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_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>79
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502789512344">
<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, 2020 </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">$ 492,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_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">5,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_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></td>
<td class="nump">498,365<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="ro">
<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">131,861<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="re">
<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">34,978<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">425<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', 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">35,403<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="re">
<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">95,522<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">936<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', 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">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>
</tr>
<tr class="re">
<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">92,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_AssetBackedSecuritiesMember', window );">Asset-Backed Securities [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">24,999<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">161<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', 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">25,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_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="ro">
<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">66,329<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">729<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', 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">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>
</tr>
<tr class="ro">
<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">236,142<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="re">
<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">32,394<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">320<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', 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">32,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_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="re">
<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">200,549<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">2,879<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', 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">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>
</tr>
<tr class="re">
<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">12,100<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] | 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">8,590<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">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_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', 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">8,660<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="ro">
<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">3,379<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">61<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', 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">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>
</tr>
<tr class="ro">
<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">7,038<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="re">
<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">1,297<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">6<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', 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">1,303<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="re">
<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">5,725<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">10<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', window );">Gross Unrealized Losses</a></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_AvailableForSaleSecuritiesDebtSecurities', window );">Fair Value, Total</a></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>
</tr>
<tr class="re">
<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">19,006<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="ro">
<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,913<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax', window );">Gross Unrealized Gains</a></td>
<td class="nump">93<span></span>
</td>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax', 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">$ 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_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=121645371&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=121558606&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_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 investments in debt and equity securities classified as 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=121645371&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_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 investments in debt and equity securities classified as available-for-sale.</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_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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=121558606&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=121553693&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=121645371&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>80
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708542040">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Cash, Cash Equivalents, and Investments - Allowance for Credit Loss (Details)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th">
<div>Dec. 31, 2020 </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_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRollForward', window );"><strong>Debt Securities, Available-for-sale, Allowance for Credit Loss [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_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss', window );">Beginning balance</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_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal', window );">Increases to the allowance for credit losses</a></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="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_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff', window );">Write-offs</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_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss', window );">Ending balance</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_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=121582814&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=121582814&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=121645371&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=121558606&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=121582814&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_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 writeoff 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 (g)<br> -URI http://asc.fasb.org/extlink&amp;oid=121582814&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_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_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=121558606&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=121582814&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>81
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502783033320">
<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, 2020 </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">$ 103,240<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">192,494<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">186,604<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">14,949<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">1,078<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">498,365<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">35,403<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">68,217<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">28,241<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">131,861<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">32,714<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">69,534<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">119,328<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">13,488<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">1,078<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">236,142<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">25,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_AvailableForSaleSecuritiesDebtMaturitiesAfterOneYearBeforeTwoYearsFairValue', window );">1-2 Years</a></td>
<td class="nump">46,842<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">18,755<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,461<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">92,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="re">
<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">8,660<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">3,440<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">12,100<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">1,303<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">5,096<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">639<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">7,038<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">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">2,805<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">16,201<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">$ 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_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=120252992&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=121645371&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=121645371&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=121558606&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=121553693&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=121645371&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>82
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502786914104">
<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, 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_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">$ 26,800<span></span>
</td>
<td class="nump">$ 27,285<span></span>
</td>
</tr>
<tr class="re">
<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">4,780<span></span>
</td>
<td class="nump">5,503<span></span>
</td>
</tr>
<tr class="ro">
<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">29,250<span></span>
</td>
<td class="nump">27,473<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">$ 60,830<span></span>
</td>
<td class="nump">$ 60,261<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=121566466&amp;loc=d3e6676-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.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>83
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785115688">
<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, 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_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">$ 181,494<span></span>
</td>
<td class="nump">$ 194,115<span></span>
</td>
</tr>
<tr class="re">
<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">(102,321)<span></span>
</td>
<td class="num">(104,672)<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">79,173<span></span>
</td>
<td class="nump">89,443<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">45,978<span></span>
</td>
<td class="nump">49,289<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">12,682<span></span>
</td>
<td class="nump">10,790<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">58,162<span></span>
</td>
<td class="nump">67,474<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">29,816<span></span>
</td>
<td class="nump">31,278<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,372<span></span>
</td>
<td class="nump">$ 6,800<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://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_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>84
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502710093096">
<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, 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_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">$ 26,829<span></span>
</td>
<td class="nump">$ 8,883<span></span>
</td>
</tr>
<tr class="re">
<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">24,977<span></span>
</td>
<td class="nump">8,559<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross', window );">Buildings include rental property</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">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_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation', window );">Accumulated depreciation</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">255<span></span>
</td>
</tr>
<tr class="ro">
<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">$ 1,852<span></span>
</td>
<td class="nump">$ 324<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=121586364&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>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 accumulated depreciation, by major property class, recorded on property subject to or available for lease 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/otherTransitionRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 840<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121578510&amp;loc=d3e41551-112718<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 840<br> -SubTopic 20<br> -Section 45<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=121589968&amp;loc=d3e41460-112716<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_PropertySubjectToOrAvailableForOperatingLeaseGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 of physical assets used in the normal conduct of business to produce goods and services subject to or available for lease.</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/otherTransitionRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 840<br> -SubTopic 20<br> -Section 50<br> -Paragraph 4<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=121578510&amp;loc=d3e41551-112718<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/otherTransitionRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 840<br> -SubTopic 20<br> -Section 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121589968&amp;loc=d3e41457-112716<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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>85
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502783331848">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems', window );"><strong>New Accounting Pronouncements or Change in Accounting Principle [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_OperatingLeaseRightOfUseAsset', window );">Operating lease assets</a></td>
<td class="nump">$ 22,582<span></span>
</td>
<td class="nump">$ 17,522<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_OperatingLeaseLiabilityCurrent', window );">Operating lease liabilities</a></td>
<td class="nump">8,110<span></span>
</td>
<td class="nump">5,647<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_OperatingLeaseLiabilityNoncurrent', window );">Non-current operating lease liabilities</a></td>
<td class="nump">18,120<span></span>
</td>
<td class="nump">12,326<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">6,893<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_OperatingLeasePayments', window );">Operating lease payments</a></td>
<td class="nump">8,009<span></span>
</td>
<td class="nump">6,530<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_OperatingLeaseExpenseNoLiabilityOrAssetRecognized', window );">Operating lease expense for which no liability or asset was recognized</a></td>
<td class="nump">123<span></span>
</td>
<td class="nump">275<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_LeaseAndRentalExpense', window );">Rent expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 8,186<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_OperatingLeaseLiability', window );">Operating lease, liability</a></td>
<td class="nump">$ 26,230<span></span>
</td>
<td class="nump">$ 17,973<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_OperatingLeaseWeightedAverageDiscountRatePercent', window );">Operating lease, weighted average discount rate (percent)</a></td>
<td class="nump">4.00%<span></span>
</td>
<td class="nump">4.60%<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_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">3 years 8 months 12 days<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_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="re">
<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 asset impairment charges</a></td>
<td class="nump">$ 3,427<span></span>
</td>
<td class="nump">$ 0<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_OperatingLeaseLeaseIncome', window );">Operating lease income</a></td>
<td class="nump">77<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_RentalIncomeNonoperating', window );">Operating lease income</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 311<span></span>
</td>
<td class="nump">$ 1,116<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_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems', window );"><strong>New Accounting Pronouncements or Change in Accounting Principle [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">$ 2,877<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_LeaseAndRentalExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 rent expense incurred for leased assets, including but not limited to, furniture and equipment, that is not directly or indirectly associated with the manufacture, sale or creation of a product or product line.</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_LeaseAndRentalExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems</td>
</tr>
<tr>
<td style="padding-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_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=121603541&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=121593497&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=121576215&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=121561866&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=121640914&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=121603541&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_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=121603541&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=121603541&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_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=121603541&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=121609121&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_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=121603541&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_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=121609121&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=121568110&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>num: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=121568110&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=121609121&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_RentalIncomeNonoperating">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Income earned by providing the use of assets to an outside party in exchange for a payment or series of payments that is nonoperating in 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 S99<br> -Paragraph 2<br> -Subparagraph (SX 210.5-03.7)<br> -URI http://asc.fasb.org/extlink&amp;oid=120395209&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_RentalIncomeNonoperating</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>86
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502787052472">
<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, 2020 </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 );">2021</a></td>
<td class="nump">$ 9,101<span></span>
</td>
</tr>
<tr class="re">
<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 );">2022</a></td>
<td class="nump">6,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_LesseeOperatingLeaseLiabilityPaymentsDueYearThree', window );">2023</a></td>
<td class="nump">5,072<span></span>
</td>
</tr>
<tr class="re">
<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 );">2024</a></td>
<td class="nump">2,074<span></span>
</td>
</tr>
<tr class="ro">
<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 );">2025</a></td>
<td class="nump">1,317<span></span>
</td>
</tr>
<tr class="re">
<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">4,960<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">$ 29,387<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=121609121&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=121609121&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=121609121&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=121609121&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=121609121&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=121609121&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=121609121&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>87
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782519992">
<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, 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_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">$ 243,445<span></span>
</td>
<td class="nump">$ 113,208<span></span>
</td>
</tr>
<tr class="re">
<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="nump">1,637<span></span>
</td>
<td class="nump">95<span></span>
</td>
</tr>
<tr class="ro">
<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">244,078<span></span>
</td>
<td class="nump">243,445<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_GoodwillAcquiredDuringPeriod', window );">Goodwill acquired during the period</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 130,142<span></span>
</td>
</tr>
<tr class="ro">
<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="num">$ (1,004)<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_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://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_GoodwillAcquiredDuringPeriod">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized resulting from 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://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 (b)<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_GoodwillAcquiredDuringPeriod</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_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>88
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785589880">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Goodwill - Additional Information (Detail)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1">12 Months Ended</th>
</tr>
<tr><th class="th">
<div>Dec. 31, 2020 </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_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_PaymentsForProceedsFromPreviousAcquisition', window );">Credit to goodwill</a></td>
<td class="nump">$ 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_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_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>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 3<br> -Subparagraph (SX 210.12-04(a))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e24072-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_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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>89
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502784870744">
<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, 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_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">$ 93,474<span></span>
</td>
</tr>
<tr class="re">
<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">58,120<span></span>
</td>
<td class="nump">53,984<span></span>
</td>
</tr>
<tr class="ro">
<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">15,555<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">15,555<span></span>
</td>
<td class="nump">39,490<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_IndefiniteLivedIntangibleAssetsByMajorClassAxis=us-gaap_InProcessResearchAndDevelopmentMember', window );">In Process Research and Development [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="text">&#160;<span></span>
</td>
<td class="nump">8,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_IndefiniteLivedIntangibleAssetsExcludingGoodwill', window );">Indefinite-lived Intangible Assets Acquired</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8,200<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">31,987<span></span>
</td>
</tr>
<tr class="ro">
<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">12,397<span></span>
</td>
<td class="nump">9,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,820<span></span>
</td>
<td class="nump">22,827<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">14,407<span></span>
</td>
</tr>
<tr class="re">
<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,160<span></span>
</td>
<td class="nump">6,402<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">3,418<span></span>
</td>
<td class="nump">8,005<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_InProcessResearchAndDevelopmentMember', window );">In Process Research and Development [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_FiniteLivedIntangibleAssetsAccumulatedAmortization', window );">Accumulated Amortization</a></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_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="re">
<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">710<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="nump">436<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">274<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="ro">
<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">110<span></span>
</td>
<td class="nump">110<span></span>
</td>
</tr>
<tr class="ro">
<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">67<span></span>
</td>
<td class="nump">12<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">$ 43<span></span>
</td>
<td class="nump">98<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="re">
<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="text">&#160;<span></span>
</td>
<td class="nump">710<span></span>
</td>
</tr>
<tr class="re">
<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">350<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="text">&#160;<span></span>
</td>
<td class="nump">$ 360<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_IndefiniteLivedIntangibleAssetsExcludingGoodwill">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 assets, excluding financial assets and goodwill, lacking physical substance and having a projected indefinite period of benefit.</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 (b)<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_IndefiniteLivedIntangibleAssetsExcludingGoodwill</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_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_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_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_FiniteLivedIntangibleAssetsByMajorClassAxis=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_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>90
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782751768">
<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, 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_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 );">2021</a></td>
<td class="nump">$ 3,656<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 );">2022</a></td>
<td class="nump">3,286<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 );">2023</a></td>
<td class="nump">2,594<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 );">2024</a></td>
<td class="nump">2,080<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 );">2025</a></td>
<td class="nump">1,757<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">2,182<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">$ 15,555<span></span>
</td>
<td class="nump">$ 39,490<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>91
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502789842840">
<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="4">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>Dec. 31, 2020</div></th>
<th class="th"><div>Sep. 27, 2020</div></th>
<th class="th"><div>Jun. 28, 2020</div></th>
<th class="th"><div>Mar. 29, 2020</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
<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">$ 0<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="nump">$ 19,571<span></span>
</td>
<td class="nump">$ 0<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="nump">58,120<span></span>
</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">58,120<span></span>
</td>
<td class="nump">53,984<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>
<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>
<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="nump">12,397<span></span>
</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">12,397<span></span>
</td>
<td class="nump">9,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_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>
<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>
<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="nump">$ 7,160<span></span>
</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,160<span></span>
</td>
<td class="nump">$ 6,402<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>
<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>
<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="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>
<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>
<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>
<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">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>
<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>
<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>
<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">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>
<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>
<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>
<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">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>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<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="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="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="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=121647850&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=121586364&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=121586364&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>92
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709631016">
<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, 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_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 );">Company bonuses</a></td>
<td class="nump">$ 19,343<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_AccruedSalariesCurrent', window );">Salaries, commissions, and payroll taxes</a></td>
<td class="nump">14,025<span></span>
</td>
<td class="nump">11,500<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">6,886<span></span>
</td>
<td class="nump">6,146<span></span>
</td>
</tr>
<tr class="re">
<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,406<span></span>
</td>
<td class="nump">4,713<span></span>
</td>
</tr>
<tr class="ro">
<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">3,641<span></span>
</td>
<td class="nump">4,708<span></span>
</td>
</tr>
<tr class="re">
<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">27,963<span></span>
</td>
<td class="nump">25,132<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">$ 77,264<span></span>
</td>
<td class="nump">$ 52,199<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=121566466&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=121566466&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=121566466&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=121566466&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=121566466&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=121566466&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=121566466&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=121566466&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=68068213&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=68070138&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>93
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708374072">
<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, 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_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">$ 4,713<span></span>
</td>
<td class="nump">$ 4,743<span></span>
</td>
</tr>
<tr class="re">
<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,463<span></span>
</td>
<td class="nump">3,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_ProductWarrantyAccrualPayments', window );">Fulfillment of warranty obligations</a></td>
<td class="num">(2,770)<span></span>
</td>
<td class="num">(3,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_ProductWarrantyAccrual', window );">Ending Balance</a></td>
<td class="nump">$ 5,406<span></span>
</td>
<td class="nump">$ 4,713<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=68068213&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=68068213&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=68068213&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=68068213&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>94
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708599512">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Commitments and Contingencies - Additional Information (Detail)<br></strong></div></th>
<th class="th">
<div>Dec. 31, 2020 </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_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_PurchaseCommitmentRemainingMinimumAmountCommitted', window );">Purchase order outstanding</a></td>
<td class="nump">$ 32,315,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_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>95
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502709931368">
<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, 2020</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">45 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>96
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502711279672">
<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, &#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, 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>MXN ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>KRW (&#8361;)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>JPY (&#165;)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>HUF (Ft)</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>GBP (&#163;)</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>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>CAD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>EUR (&#8364;)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>MXN ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>KRW (&#8361;)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>JPY (&#165;)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>HUF (Ft)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>GBP (&#163;)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>TWD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>SGD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>CAD ($)</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>
</tr>
<tr class="ro">
<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>
</tr>
<tr class="re">
<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,377<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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ 139,688<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#8361; 161,951,500<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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 );">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>
</tr>
<tr class="re">
<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>
</tr>
<tr class="ro">
<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; 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="nump">&#8364; 18,000<span></span>
</td>
<td class="nump">20,249<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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>
</tr>
<tr class="ro">
<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>
</tr>
<tr class="re">
<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,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>
<td class="nump">5,291<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">&#165; 575,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>
</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>
</tr>
<tr class="re">
<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>
</tr>
<tr class="ro">
<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">7,776<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>
<td class="text">&#160;<span></span>
</td>
<td class="nump">4,223<span></span>
</td>
<td class="nump">$ 80,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>
</tr>
<tr class="ro">
<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>
</tr>
<tr class="re">
<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">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="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="nump">3,569<span></span>
</td>
<td class="text">&#160;<span></span>
</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; 2,700<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>
</tr>
<tr class="re">
<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>
</tr>
<tr class="ro">
<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,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="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>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2,962<span></span>
</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 870,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>
</tr>
<tr class="ro">
<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>
</tr>
<tr class="re">
<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,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="nump">$ 38,035<span></span>
</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,256<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ 37,450<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 );">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>
</tr>
<tr class="re">
<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>
</tr>
<tr class="ro">
<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,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="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="nump">1,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">$ 1,300<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>
</tr>
<tr class="ro">
<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>
</tr>
<tr class="re">
<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,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="nump">$ 1,465<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 628<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ 845<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=121590274&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=121590274&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=121590274&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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>97
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782508408">
<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, 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_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">$ 265<span></span>
</td>
<td class="nump">$ 857<span></span>
</td>
</tr>
<tr class="re">
<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">38<span></span>
</td>
<td class="nump">23<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">265<span></span>
</td>
<td class="nump">857<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">$ 38<span></span>
</td>
<td class="nump">$ 23<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://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 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/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=121572278&amp;loc=d3e13433-108611<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 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://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 (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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121572278&amp;loc=d3e13433-108611<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 10<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226008-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>98
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502787032840">
<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, 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_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">$ 265<span></span>
</td>
<td class="nump">$ 857<span></span>
</td>
</tr>
<tr class="re">
<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">265<span></span>
</td>
<td class="nump">857<span></span>
</td>
</tr>
<tr class="re">
<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">38<span></span>
</td>
<td class="nump">23<span></span>
</td>
</tr>
<tr class="ro">
<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">$ 38<span></span>
</td>
<td class="nump">$ 23<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://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 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/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=121572278&amp;loc=d3e13433-108611<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 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://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 2: 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 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 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 815<br> -SubTopic 10<br> -Section 50<br> -Paragraph 4B<br> -Subparagraph (a),(c)<br> -URI http://asc.fasb.org/extlink&amp;oid=121590274&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=121590274&amp;loc=SL5624163-113959<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 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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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://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 (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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121572278&amp;loc=d3e13433-108611<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 10<br> -URI http://asc.fasb.org/extlink&amp;oid=99393222&amp;loc=SL20226008-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>99
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785532280">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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="num">$ (12,308)<span></span>
</td>
<td class="nump">$ 1,305<span></span>
</td>
<td class="num">$ (285)<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=121590274&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>100
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708581656">
<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, 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_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">$ 6,846,000<span></span>
</td>
<td class="nump">$ 3,963,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=68051541&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>101
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785914856">
<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="8">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Sep. 27, 2020</div></th>
<th class="th"><div>Jun. 28, 2020</div></th>
<th class="th"><div>Mar. 29, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Sep. 29, 2019</div></th>
<th class="th"><div>Jun. 30, 2019</div></th>
<th class="th"><div>Mar. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 223,615<span></span>
</td>
<td class="nump">$ 251,073<span></span>
</td>
<td class="nump">$ 169,097<span></span>
</td>
<td class="nump">$ 167,235<span></span>
</td>
<td class="nump">$ 169,769<span></span>
</td>
<td class="nump">$ 183,325<span></span>
</td>
<td class="nump">$ 199,047<span></span>
</td>
<td class="nump">$ 173,484<span></span>
</td>
<td class="nump">$ 811,020<span></span>
</td>
<td class="nump">$ 725,625<span></span>
</td>
<td class="nump">$ 806,338<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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</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="nump">674,830<span></span>
</td>
<td class="nump">629,220<span></span>
</td>
<td class="nump">654,509<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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</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="nump">136,190<span></span>
</td>
<td class="nump">96,405<span></span>
</td>
<td class="nump">151,829<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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</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="nump">310,027<span></span>
</td>
<td class="nump">277,155<span></span>
</td>
<td class="nump">265,175<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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</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="nump">208,787<span></span>
</td>
<td class="nump">227,738<span></span>
</td>
<td class="nump">311,914<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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</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="nump">168,287<span></span>
</td>
<td class="nump">115,061<span></span>
</td>
<td class="nump">123,708<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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</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="nump">$ 123,919<span></span>
</td>
<td class="nump">$ 105,671<span></span>
</td>
<td class="nump">$ 105,541<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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=121604090&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=120311839&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=120311839&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=120311839&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=121604090&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>102
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502787060216">
<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, 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_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">$ 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_ProvisionForDoubtfulAccounts', window );">Increases to the allowance for credit losses</a></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_AllowanceForDoubtfulAccountsReceivableWriteOffs', window );">Write-offs</a></td>
<td class="num">(300)<span></span>
</td>
<td class="num">(286)<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">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_AllowanceForDoubtfulAccountsReceivable', window );">Ending balance</a></td>
<td class="nump">$ 831<span></span>
</td>
<td class="nump">$ 530<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=121599337&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=121611835&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=121599337&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=121599878&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=121599337&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=121599337&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=120395209&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>103
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708388728">
<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, 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_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">$ 14,432<span></span>
</td>
<td class="nump">$ 9,845<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">120,008<span></span>
</td>
<td class="nump">53,422<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</a></td>
<td class="num">(114,014)<span></span>
</td>
<td class="num">(48,730)<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="nump">848<span></span>
</td>
<td class="num">(105)<span></span>
</td>
</tr>
<tr class="ro">
<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">$ 21,274<span></span>
</td>
<td class="nump">$ 14,432<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=121556615&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=121556615&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=121604090&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>104
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782066984">
<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="1">1 Months Ended</th>
<th class="th" colspan="3">3 Months Ended</th>
<th class="th" colspan="3">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>
<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>Feb. 28, 2018 </div>
<div>USD ($) </div>
<div>shares</div>
</th>
<th class="th">
<div>Mar. 29, 2020 </div>
<div>USD ($) </div>
<div>shares</div>
</th>
<th class="th">
<div>Dec. 31, 2018 </div>
<div>USD ($) </div>
<div>shares</div>
</th>
<th class="th">
<div>Apr. 01, 2018 </div>
<div>USD ($) </div>
<div>shares</div>
</th>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>USD ($) </div>
<div>Vote </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>
<th class="th">
<div>Dec. 31, 2018 </div>
<div>USD ($)</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>Feb. 01, 2018 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Apr. 12, 2017 </div>
<div>USD ($)</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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="text">&#160;<span></span>
</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="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="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="text">&#160;<span></span>
</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="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="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="text">&#160;<span></span>
</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="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="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="text">&#160;<span></span>
</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="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="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="text">&#160;<span></span>
</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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="nump">$ 51,036,000<span></span>
</td>
<td class="nump">$ 61,690,000<span></span>
</td>
<td class="nump">$ 203,822,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="ro">
<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="nump">390,508,000<span></span>
</td>
<td class="nump">$ 35,124,000<span></span>
</td>
<td class="nump">31,865,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_ShareRepurchaseProgramAxis=cgnx_RepurchaseProgramApril2017Member', window );">Repurchase Program April 2017 [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>
</tr>
<tr class="ro">
<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ 100,000,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_Totalsharesrepurchased', window );">total shares repurchased | 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="nump">1,744,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="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="nump">803,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="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="text">&#160;<span></span>
</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">$ 45,200,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="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_RepurchaseProgramFebruary2018Member', window );">Repurchase Program February 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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="text">&#160;<span></span>
</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">$ 150,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="nump">3,174,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="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="nump">$ 150,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="text">&#160;<span></span>
</td>
<td class="nump">203,822,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_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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="nump">$ 78,652,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">$ 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>
<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="nump">1,215,000<span></span>
</td>
<td class="nump">203,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,398,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>
</tr>
<tr class="ro">
<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="nump">$ 51,036,000<span></span>
</td>
<td class="nump">$ 8,622,000<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 61,690,000<span></span>
</td>
<td class="nump">$ 203,822,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_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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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="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>
<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_StatementClassOfStockAxis=us-gaap_CommonStockMember', window );">Common Stock [Member] | Repurchase Program April 2017 [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>
</tr>
<tr class="re">
<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_Repurchasedsharestotalcost', window );">Repurchased shares, total cost</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">$ 100,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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_Repurchasedsharestotalcost">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Repurchased shares, total cost</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_Repurchasedsharestotalcost</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_Totalsharesrepurchased">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 shares repurchased</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_Totalsharesrepurchased</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_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>num: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_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=121586364&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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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>num: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_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_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=109259400&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=109259400&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_RepurchaseProgramApril2017Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_RepurchaseProgramApril2017Member</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_RepurchaseProgramFebruary2018Member">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_RepurchaseProgramFebruary2018Member</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_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>
<table border="0" cellpadding="0" cellspacing="0" class="authRefData" style="display: none;" id="defref_us-gaap_StatementClassOfStockAxis=us-gaap_CommonStockMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_StatementClassOfStockAxis=us-gaap_CommonStockMember</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>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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502707065688">
<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="3">12 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>USD ($) </div>
<div>group </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>
<th class="th">
<div>Dec. 31, 2018 </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>
</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="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="nump">7.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="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="nump">$ 1,787,000<span></span>
</td>
<td class="nump">$ 499,000<span></span>
</td>
<td class="nump">$ 1,283,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="nump">$ 19.62<span></span>
</td>
<td class="nump">$ 18.62<span></span>
</td>
<td class="nump">$ 20.84<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="nump">$ 166,796,000<span></span>
</td>
<td class="nump">$ 90,762,000<span></span>
</td>
<td class="nump">$ 52,629,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="nump">45,998,000<span></span>
</td>
<td class="nump">38,974,000<span></span>
</td>
<td class="nump">31,106,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="nump">$ 51,825,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">1 year 8 months 12 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="nump">$ 42,661,000<span></span>
</td>
<td class="nump">45,589,000<span></span>
</td>
<td class="nump">41,090,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="nump">6,569,000<span></span>
</td>
<td class="nump">7,756,000<span></span>
</td>
<td class="nump">7,317,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="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>
</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>
</tr>
<tr class="ro">
<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="re">
<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="nump">16,260,393<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"> <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_ExpirationPeriodOfStockOptionPlan', window );">Expiration period of stock option plan</a></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>
</tr>
<tr class="re">
<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue', window );">Granted, weighted-average exercise price | $ / shares</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 48.61<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod', window );">Vested (in shares) | shares</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_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>
</tr>
<tr class="re">
<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Vesting period for stock option plans</a></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>
</tr>
<tr class="ro">
<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="re">
<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">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>
</tr>
<tr class="re">
<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_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1', window );">Vesting period for stock option plans</a></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>
</tr>
<tr class="ro">
<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="re">
<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">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>num: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>num: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=115993241&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=121586364&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>num: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>num: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>106
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785664024">
<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, 2020 </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">12,899<span></span>
</td>
</tr>
<tr class="re">
<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">1,245<span></span>
</td>
</tr>
<tr class="ro">
<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">(4,565)<span></span>
</td>
</tr>
<tr class="re">
<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">(609)<span></span>
</td>
</tr>
<tr class="ro">
<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">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_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">$ 37.95<span></span>
</td>
</tr>
<tr class="re">
<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">54.68<span></span>
</td>
</tr>
<tr class="ro">
<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">27.54<span></span>
</td>
</tr>
<tr class="re">
<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.28<span></span>
</td>
</tr>
<tr class="ro">
<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">$ 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_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber', window );">Exercisable, Shares | shares</a></td>
<td class="nump">3,135<span></span>
</td>
</tr>
<tr class="ro">
<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">8,235<span></span>
</td>
</tr>
<tr class="re">
<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">$ 33.79<span></span>
</td>
</tr>
<tr class="ro">
<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">$ 44.08<span></span>
</td>
</tr>
<tr class="re">
<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">7 years 1 month 9 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 7 months 6 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">7 years 3 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">$ 318,873<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">145,735<span></span>
</td>
</tr>
<tr class="ro">
<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">$ 298,118<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>num: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>num: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>num: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>num: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>num: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>num: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=109259400&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>107
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502705944120">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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.40%<span></span>
</td>
<td class="nump">2.70%<span></span>
</td>
<td class="nump">2.90%<span></span>
</td>
</tr>
<tr class="re">
<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.41%<span></span>
</td>
<td class="nump">0.39%<span></span>
</td>
<td class="nump">0.35%<span></span>
</td>
</tr>
<tr class="ro">
<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">37.00%<span></span>
</td>
<td class="nump">37.00%<span></span>
</td>
<td class="nump">39.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">5 years 3 months 18 days<span></span>
</td>
<td class="text">5 years 4 months 24 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>num: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>num: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>num: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=115993241&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>108
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785274632">
<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, 2020 </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">150<span></span>
</td>
</tr>
<tr class="re">
<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">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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod', window );">Vested | shares</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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod', window );">Forfeited or expired | shares</a></td>
<td class="num">(42)<span></span>
</td>
</tr>
<tr class="ro">
<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">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_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">$ 48.63<span></span>
</td>
</tr>
<tr class="re">
<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">52.09<span></span>
</td>
</tr>
<tr class="ro">
<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">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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue', window );">Forfeited or expired, weighted-average exercise price | $ / shares</a></td>
<td class="nump">50.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_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue', window );">Nonvested ending balance, weighted-average exercise price | $ / shares</a></td>
<td class="nump">$ 51.27<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>num: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>num: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>num: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>num: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>109
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785830600">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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 8 months 12 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">$ 42,661,000<span></span>
</td>
<td class="nump">$ 45,589,000<span></span>
</td>
<td class="nump">$ 41,090,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,569,000<span></span>
</td>
<td class="nump">7,756,000<span></span>
</td>
<td class="nump">7,317,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,365,000<span></span>
</td>
<td class="nump">1,504,000<span></span>
</td>
<td class="nump">2,447,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,387,000<span></span>
</td>
<td class="nump">15,748,000<span></span>
</td>
<td class="nump">14,578,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">$ 27,909,000<span></span>
</td>
<td class="nump">$ 28,337,000<span></span>
</td>
<td class="nump">$ 24,065,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=115993241&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>110
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502783113848">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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,636,000<span></span>
</td>
<td class="nump">$ 2,729,000<span></span>
</td>
<td class="nump">$ 2,540,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>num: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>num: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>num: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>num: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>num: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>num: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>num: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>111
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502836769016">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">18.00%<span></span>
</td>
<td class="nump">0.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,952,000<span></span>
</td>
<td class="nump">$ 11,591,000<span></span>
</td>
<td class="nump">$ 7,294,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="nump">87,500,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_DeferredTaxAssetsForeignTaxStructureChange', window );">Foreign tax structure deferred tax asset</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">437,500,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_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome', window );">GILTI tax basis differences</a></td>
<td class="nump">339,325,000<span></span>
</td>
<td class="nump">350,000,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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic', window );">Domestic income from continuing operations before taxes</a></td>
<td class="nump">39,425,000<span></span>
</td>
<td class="nump">31,396,000<span></span>
</td>
<td class="nump">39,042,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">$ 147,486,000<span></span>
</td>
<td class="nump">$ 131,598,000<span></span>
</td>
<td class="nump">$ 195,532,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">$ 266,609,000<span></span>
</td>
<td class="nump">$ 155,498,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">6.00%<span></span>
</td>
<td class="nump">9.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">$ 12,788,000<span></span>
</td>
<td class="nump">$ 6,472,000<span></span>
</td>
<td class="nump">$ 8,488,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">7.00%<span></span>
</td>
<td class="nump">4.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">$ 242,400,000<span></span>
</td>
<td class="nump">$ 253,311,000<span></span>
</td>
<td class="nump">$ 223,454,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">316,868,000<span></span>
</td>
<td class="nump">32,233,000<span></span>
</td>
<td class="nump">209,904,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">340,000<span></span>
</td>
<td class="nump">116,000<span></span>
</td>
<td class="nump">91,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,257,000<span></span>
</td>
<td class="nump">11,563,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,332,000<span></span>
</td>
<td class="nump">1,000,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">1,900,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">2,000,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,568,000<span></span>
</td>
<td class="nump">7,312,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">33,695,000<span></span>
</td>
<td class="nump">13,443,000<span></span>
</td>
<td class="nump">41,430,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_IncomeTaxReconciliationTaxSettlementsOther', window );">Effective income tax rate reconciliation, tax settlement, other, amount</a></td>
<td class="nump">307,000<span></span>
</td>
<td class="nump">1,932,000<span></span>
</td>
<td class="nump">1,847,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_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit', window );">Tax cuts and jobs act, measurement period adjustment, income tax expense (benefit)</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,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_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense', window );">Tax cuts and jobs act, transition tax for accumulated foreign earnings, income tax expense</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">11,028,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_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability', window );">Tax cuts and jobs act, transition tax for accumulated foreign earnings, liability</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 90,351,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="nump">332,344,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_UnrecognizedTaxBenefitsGross', window );">Unrecognized Tax Benefits, Gross</a></td>
<td class="nump">15,285,000<span></span>
</td>
<td class="nump">12,591,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="nump">13,984,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_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="nump">3,267,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_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="nump">843,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=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">8,568,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">$ 11,361,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_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="ro">
<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">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="re">
<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_UnrecognizedTaxBenefits', window );">Reserve for tax uncertainties</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,700,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_EffectiveIncomeTaxRateReconciliationMigrationOfAcquiredIntellectualPropertyDollar', window );">Effective Income Tax Rate Reconciliation, Migration of Acquired Intellectual Property Dollar</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 28,528,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_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>num: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://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 3: 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=84230637&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=84230637&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=84230637&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=84230637&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=84230637&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=116825942&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 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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>num: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=84230637&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=116825942&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>num: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=84230637&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=84230637&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>num: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://fasb.org/us-gaap/role/ref/legacyRef<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)(i))<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=116825942&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://fasb.org/us-gaap/role/ref/legacyRef<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)(i))<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=116825942&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=84230637&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=84230637&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_IncomeTaxReconciliationTaxSettlementsOther">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 other income 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=84230637&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_IncomeTaxReconciliationTaxSettlementsOther</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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=121583591&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=121586364&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=121586364&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=121586364&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=121586364&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_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 tax expense (benefit) for measurement period adjustment from accounting for tax effect pursuant to Tax Cuts and Jobs 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/disclosureRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -SubTopic 10<br> -Section S99<br> -Paragraph 2A<br> -Subparagraph (SAB Topic 5.EE.Q2(f))<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=SL116722634-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_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 tax expense from transition tax on accumulated earnings of controlled foreign corporation deemed repatriated pursuant to Tax Cuts and Jobs 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/2009/role/commonPracticeRef<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=84230637&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_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 liability from transition tax on accumulated earnings of controlled foreign corporation deemed repatriated pursuant to Tax Cuts and Jobs 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/2009/role/commonPracticeRef<br> -Publisher FASB<br> -Name Accounting Standards Codification<br> -Topic 740<br> -URI http://asc.fasb.org/topic&amp;trid=2144680<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_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=120406818&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=84230637&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=84230637&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=84230637&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_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>112
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502803675288">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 160<span></span>
</td>
<td class="nump">$ 15,854<span></span>
</td>
<td class="nump">$ 10,624<span></span>
</td>
</tr>
<tr class="re">
<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">921<span></span>
</td>
<td class="nump">2,108<span></span>
</td>
<td class="num">(879)<span></span>
</td>
</tr>
<tr class="ro">
<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">13,197<span></span>
</td>
<td class="nump">30,670<span></span>
</td>
<td class="nump">6,307<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">14,278<span></span>
</td>
<td class="nump">48,632<span></span>
</td>
<td class="nump">16,052<span></span>
</td>
</tr>
<tr class="ro">
<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">(18,266)<span></span>
</td>
<td class="nump">352,808<span></span>
</td>
<td class="num">(1,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_DeferredStateAndLocalIncomeTaxExpenseBenefit', window );">State</a></td>
<td class="num">(556)<span></span>
</td>
<td class="nump">183<span></span>
</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_DeferredForeignIncomeTaxExpenseBenefit', window );">Foreign</a></td>
<td class="nump">15,269<span></span>
</td>
<td class="num">(442,494)<span></span>
</td>
<td class="num">(28)<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">(3,553)<span></span>
</td>
<td class="num">(89,503)<span></span>
</td>
<td class="num">(745)<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">$ 10,725<span></span>
</td>
<td class="num">$ (40,871)<span></span>
</td>
<td class="nump">$ 15,307<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://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=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<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 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=84230637&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 740<br> -SubTopic 10<br> -Section 50<br> -Paragraph 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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 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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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=116825942&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 9<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&amp;loc=d3e32639-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 S99<br> -Paragraph 1<br> -Subparagraph (SAB Topic 6.I.Fact.2)<br> -URI http://asc.fasb.org/extlink&amp;oid=116825942&amp;loc=d3e330036-122817<br><br>Reference 4: http://fasb.org/us-gaap/role/ref/legacyRef<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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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 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 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=116825942&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=84230637&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://fasb.org/us-gaap/role/ref/legacyRef<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 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=116825942&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=84230637&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=116825942&amp;loc=d3e330036-122817<br><br>Reference 2: http://fasb.org/us-gaap/role/ref/legacyRef<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 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=84230637&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=116825942&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=116825942&amp;loc=d3e330036-122817<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<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 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=116825942&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=121586364&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=84230637&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=84230637&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=116825942&amp;loc=d3e330036-122817<br><br>Reference 3: http://fasb.org/us-gaap/role/ref/legacyRef<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></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><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=116825942&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=84230637&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=120311839&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=109234566&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=120385591&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=109234566&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>113
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785836040">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">2.00%<span></span>
</td>
<td class="nump">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_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential', window );">Foreign tax rate differential</a></td>
<td class="num">(6.00%)<span></span>
</td>
<td class="num">(9.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">(1.00%)<span></span>
</td>
<td class="num">(1.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_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent', window );">Discrete tax benefit related to employee stock options</a></td>
<td class="num">(7.00%)<span></span>
</td>
<td class="num">(4.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">(5.00%)<span></span>
</td>
<td class="nump">0.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">1.00%<span></span>
</td>
<td class="nump">0.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">18.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_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate', window );">Discrete tax (benefit) related to change in tax structure</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(268.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_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">214.00%<span></span>
</td>
<td class="nump">0.00%<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_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent', window );">Discrete tax expense (benefit) related to Tax Act</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(3.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_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent', window );">Other discrete tax events</a></td>
<td class="nump">0.00%<span></span>
</td>
<td class="num">(1.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_EffectiveIncomeTaxRateReconciliationOtherAdjustments', window );">Other</a></td>
<td class="nump">2.00%<span></span>
</td>
<td class="nump">3.00%<span></span>
</td>
<td class="nump">1.00%<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_EffectiveIncomeTaxRateContinuingOperations', window );">Income tax expense (benefit)</a></td>
<td class="nump">6.00%<span></span>
</td>
<td class="num">(25.00%)<span></span>
</td>
<td class="nump">7.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_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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, Discrete Tax Expense, 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_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent</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>num: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_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>num: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>num: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=84230637&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>num: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=116825942&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 12<br> -URI http://asc.fasb.org/extlink&amp;oid=84230637&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>num: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=116825942&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=84230637&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>num: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=84230637&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=116825942&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>num: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=84230637&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=116825942&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>num: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>num: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=84230637&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>num: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=116825942&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=84230637&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>num: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=84230637&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=116825942&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>num: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=84230637&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=116825942&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>num: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=84230637&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=116825942&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>num: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>114
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782492776">
<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="8">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Sep. 27, 2020</div></th>
<th class="th"><div>Jun. 28, 2020</div></th>
<th class="th"><div>Mar. 29, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Sep. 29, 2019</div></th>
<th class="th"><div>Jun. 30, 2019</div></th>
<th class="th"><div>Mar. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments', window );">Income before income tax expense</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="nump">$ 186,911<span></span>
</td>
<td class="nump">$ 162,994<span></span>
</td>
<td class="nump">$ 234,574<span></span>
</td>
</tr>
<tr class="re">
<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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">10,725<span></span>
</td>
<td class="num">(40,871)<span></span>
</td>
<td class="nump">15,307<span></span>
</td>
</tr>
<tr class="ro">
<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">$ 69,345<span></span>
</td>
<td class="nump">$ 87,506<span></span>
</td>
<td class="num">$ (1,142)<span></span>
</td>
<td class="nump">$ 20,477<span></span>
</td>
<td class="nump">$ 80,327<span></span>
</td>
<td class="nump">$ 41,685<span></span>
</td>
<td class="nump">$ 48,749<span></span>
</td>
<td class="nump">$ 33,104<span></span>
</td>
<td class="nump">$ 176,186<span></span>
</td>
<td class="nump">$ 203,865<span></span>
</td>
<td class="nump">$ 219,267<span></span>
</td>
</tr>
<tr class="re">
<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">$ 0.40<span></span>
</td>
<td class="nump">$ 0.50<span></span>
</td>
<td class="num">$ (0.01)<span></span>
</td>
<td class="nump">$ 0.12<span></span>
</td>
<td class="nump">$ 0.47<span></span>
</td>
<td class="nump">$ 0.24<span></span>
</td>
<td class="nump">$ 0.28<span></span>
</td>
<td class="nump">$ 0.19<span></span>
</td>
<td class="nump">$ 1.02<span></span>
</td>
<td class="nump">$ 1.19<span></span>
</td>
<td class="nump">$ 1.27<span></span>
</td>
</tr>
<tr class="ro">
<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">$ 0.39<span></span>
</td>
<td class="nump">$ 0.49<span></span>
</td>
<td class="num">$ (0.01)<span></span>
</td>
<td class="nump">$ 0.12<span></span>
</td>
<td class="nump">$ 0.46<span></span>
</td>
<td class="nump">$ 0.24<span></span>
</td>
<td class="nump">$ 0.28<span></span>
</td>
<td class="nump">$ 0.19<span></span>
</td>
<td class="nump">$ 1.00<span></span>
</td>
<td class="nump">$ 1.16<span></span>
</td>
<td class="nump">$ 1.24<span></span>
</td>
</tr>
<tr class="re">
<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 449,519<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ 449,519<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_DeferredIncomeTaxLiabilities', window );">Deferred tax liabilities</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">332,344<span></span>
</td>
<td class="text">&#160;<span></span>
</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">332,344<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_RetainedEarningsAccumulatedDeficit', window );">Retained Earnings (Accumulated Deficit)</a></td>
<td class="nump">$ 487,912<span></span>
</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">753,268<span></span>
</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">$ 487,912<span></span>
</td>
<td class="nump">753,268<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments', window );">Income before income tax expense</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="nump">162,994<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_IncomeTaxExpenseBenefit', window );">Income tax expense (benefit)</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="num">(393,317)<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ 556,311<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 );">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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ 3.25<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_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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ 3.17<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_DeferredTaxAssetsGross', window );">Deferred tax 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="text">&#160;<span></span>
</td>
<td class="nump">469,621<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ 469,621<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_DeferredIncomeTaxLiabilities', window );">Deferred tax liabilities</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">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="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_RetainedEarningsAccumulatedDeficit', window );">Retained Earnings (Accumulated Deficit)</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">1,105,714<span></span>
</td>
<td class="text">&#160;<span></span>
</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,105,714<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments', window );">Income before income tax expense</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="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_IncomeTaxExpenseBenefit', window );">Income tax expense (benefit)</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="nump">352,446<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ (352,446)<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 );">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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ (2.06)<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_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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ (2.01)<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_DeferredTaxAssetsGross', window );">Deferred tax 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="text">&#160;<span></span>
</td>
<td class="num">(20,102)<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ (20,102)<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_DeferredIncomeTaxLiabilities', window );">Deferred tax liabilities</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">332,344<span></span>
</td>
<td class="text">&#160;<span></span>
</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">332,344<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_RetainedEarningsAccumulatedDeficit', window );">Retained Earnings (Accumulated Deficit)</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="num">$ (352,446)<span></span>
</td>
<td class="text">&#160;<span></span>
</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">$ (352,446)<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_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=84230637&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=84230637&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 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22583-107794<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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-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 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1448-109256<br><br>Reference 4: 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=109234566&amp;loc=d3e22595-107794<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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1337-109256<br><br>Reference 7: 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=120380238&amp;loc=d3e4984-109258<br><br>Reference 8: 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 9: 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=120380238&amp;loc=d3e3842-109258<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 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22644-107794<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=6371337&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 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=120395209&amp;loc=SL114868664-224227<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 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1252-109256<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 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=SL5780133-109256<br><br>Reference 15: 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>num: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=120380238&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=109234566&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=120380238&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=121326447&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=109234566&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=109234566&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=109234566&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=121326447&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 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 10: 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=6371337&amp;loc=d3e3550-109257<br><br>Reference 11: 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 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 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-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 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1337-109256<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=120395209&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>num: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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 before deduction of income tax expense (benefit) and income (loss) attributable to noncontrolling interest, and addition of income (loss) from equity method investments.</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 (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 32<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8906-108599<br><br>Reference 4: 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=120311839&amp;loc=d3e8924-108599<br><br>Reference 5: http://fasb.org/us-gaap/role/ref/legacyRef<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)(i))<br> -URI http://asc.fasb.org/extlink&amp;oid=120395691&amp;loc=d3e23780-122690<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 22<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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=116825942&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=84230637&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=120311839&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=109234566&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=120385591&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=109234566&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://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=121641772&amp;loc=SL7669619-108580<br><br>Reference 2: 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=120311839&amp;loc=d3e8924-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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<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 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 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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 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 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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22595-107794<br><br>Reference 9: 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=121641772&amp;loc=SL7669625-108580<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=120311839&amp;loc=d3e8736-108599<br><br>Reference 11: 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 12: 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=120395209&amp;loc=SL114868664-224227<br><br>Reference 13: 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=121586364&amp;loc=d3e3602-108585<br><br>Reference 14: 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=109234566&amp;loc=d3e22499-107794<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=109234566&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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=75031198&amp;loc=d3e14064-108612<br><br>Reference 17: 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=120311839&amp;loc=d3e8906-108599<br><br>Reference 18: 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=109234566&amp;loc=d3e22583-107794<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://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=121326447&amp;loc=SL5780133-109256<br><br>Reference 21: 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 22: 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=120311839&amp;loc=d3e8933-108599<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=109234566&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_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/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 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)(23)(a)(4))<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 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (h)(2)<br> -URI http://asc.fasb.org/extlink&amp;oid=121370832&amp;loc=SL117420844-207641<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 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 944<br> -SubTopic 40<br> -Section 65<br> -Paragraph 2<br> -Subparagraph (g)(2)(i)<br> -URI http://asc.fasb.org/extlink&amp;oid=121370832&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>115
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708632696">
<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, 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_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">$ 11,591<span></span>
</td>
<td class="nump">$ 7,294<span></span>
</td>
</tr>
<tr class="re">
<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="text">&#160;<span></span>
</td>
<td class="nump">199<span></span>
</td>
</tr>
<tr class="ro">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_UnrecognizedTaxBenefitsPeriodIncreaseDecrease', window );">Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods</a></td>
<td class="nump">162<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_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">3,383<span></span>
</td>
<td class="nump">5,259<span></span>
</td>
</tr>
<tr class="ro">
<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">(1,184)<span></span>
</td>
<td class="num">(1,161)<span></span>
</td>
</tr>
<tr class="re">
<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>
</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=120406818&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=84230637&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_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=84230637&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=84230637&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_UnrecognizedTaxBenefitsPeriodIncreaseDecrease">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 unrecognized tax benefits attributable to uncertain tax positions taken in 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/2009/role/commonPracticeRef<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=84230637&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_UnrecognizedTaxBenefitsPeriodIncreaseDecrease</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_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=84230637&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>116
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502783069416">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Income Taxes - Constituents of Deferred Tax Assets (Details) - USD ($)<br> $ in Thousands</strong></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>Non-current gross deferred tax 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 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">$ 424,156<span></span>
</td>
<td class="nump">$ 437,500<span></span>
</td>
</tr>
<tr class="re">
<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">13,294<span></span>
</td>
<td class="nump">15,042<span></span>
</td>
</tr>
<tr class="ro">
<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">10,171<span></span>
</td>
<td class="nump">8,491<span></span>
</td>
</tr>
<tr class="re">
<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">5,976<span></span>
</td>
<td class="nump">2,934<span></span>
</td>
</tr>
<tr class="ro">
<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">4,932<span></span>
</td>
<td class="nump">1,609<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">4,211<span></span>
</td>
<td class="nump">3,522<span></span>
</td>
</tr>
<tr class="ro">
<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">602<span></span>
</td>
<td class="nump">4,286<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">4,342<span></span>
</td>
<td class="nump">3,550<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 non-current deferred tax assets</a></td>
<td class="nump">467,684<span></span>
</td>
<td class="nump">476,934<span></span>
</td>
</tr>
<tr class="re">
<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,568)<span></span>
</td>
<td class="num">(7,312)<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">459,116<span></span>
</td>
<td class="nump">469,622<span></span>
</td>
</tr>
<tr class="re">
<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>Non-current gross deferred tax 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 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">(339,325)<span></span>
</td>
<td class="num">(350,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_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome', window );">Other GILTI tax basis differences</a></td>
<td class="nump">39<span></span>
</td>
<td class="nump">2,446<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_DeferredTaxLiabilitiesWithJurisdictionalNettingGross', window );">Deferred Tax Liabilities, Gross, Current</a></td>
<td class="nump">$ 339,364<span></span>
</td>
<td class="nump">$ 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_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_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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, Other 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_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome</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_DeferredTaxLiabilitiesWithJurisdictionalNettingGross">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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, 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_DeferredTaxLiabilitiesWithJurisdictionalNettingGross</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=84230637&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=84230637&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=84230637&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=84230637&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=84230637&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=84230637&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=84230637&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_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=84230637&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=84230637&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=84230637&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=84230637&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=84230637&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>117
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502786905192">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">173,489<span></span>
</td>
<td class="nump">171,194<span></span>
</td>
<td class="nump">172,333<span></span>
</td>
</tr>
<tr class="re">
<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,103<span></span>
</td>
<td class="nump">4,075<span></span>
</td>
<td class="nump">5,073<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">176,592<span></span>
</td>
<td class="nump">175,269<span></span>
</td>
<td class="nump">177,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_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=6371337&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=6371337&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=121326447&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=6371337&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=121326447&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>118
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502708480568">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">4,371,194<span></span>
</td>
<td class="nump">5,735,608<span></span>
</td>
<td class="nump">2,650,164<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">3,826<span></span>
</td>
<td class="nump">13,092<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_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=6371337&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>119
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785233352">
<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="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<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>
<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_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>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<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>
<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">14.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_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>
<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>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<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">13.00%<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">15.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>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<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>
<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">19.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_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>
<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>
<td class="text">&#160;<span></span>
</td>
</tr>
<tr class="ro">
<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">20.00%<span></span>
</td>
<td class="nump">24.00%<span></span>
</td>
<td class="nump">30.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=120311839&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=121572278&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=121572278&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>num: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=120311839&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>120
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502837210360">
<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="8">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th">
<div>Dec. 31, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Sep. 27, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jun. 28, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Mar. 29, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Dec. 31, 2019 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Sep. 29, 2019 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jun. 30, 2019 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Mar. 31, 2019 </div>
<div>USD ($)</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>
<div>Segment</div>
</th>
<th class="th">
<div>Dec. 31, 2018 </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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 223,615<span></span>
</td>
<td class="nump">$ 251,073<span></span>
</td>
<td class="nump">$ 169,097<span></span>
</td>
<td class="nump">$ 167,235<span></span>
</td>
<td class="nump">$ 169,769<span></span>
</td>
<td class="nump">$ 183,325<span></span>
</td>
<td class="nump">$ 199,047<span></span>
</td>
<td class="nump">$ 173,484<span></span>
</td>
<td class="nump">$ 811,020<span></span>
</td>
<td class="nump">$ 725,625<span></span>
</td>
<td class="nump">$ 806,338<span></span>
</td>
</tr>
<tr class="re">
<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">86,967<span></span>
</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">95,276<span></span>
</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">$ 86,967<span></span>
</td>
<td class="nump">$ 95,276<span></span>
</td>
<td class="nump">95,321<span></span>
</td>
</tr>
<tr class="ro">
<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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="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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</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="nump">$ 280,205<span></span>
</td>
<td class="nump">$ 247,689<span></span>
</td>
<td class="nump">231,760<span></span>
</td>
</tr>
<tr class="ro">
<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">60,911<span></span>
</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">68,496<span></span>
</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">60,911<span></span>
</td>
<td class="nump">68,496<span></span>
</td>
<td class="nump">67,156<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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</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="nump">208,787<span></span>
</td>
<td class="nump">227,738<span></span>
</td>
<td class="nump">311,914<span></span>
</td>
</tr>
<tr class="ro">
<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">20,014<span></span>
</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,691<span></span>
</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">20,014<span></span>
</td>
<td class="nump">21,691<span></span>
</td>
<td class="nump">23,948<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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</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="nump">168,287<span></span>
</td>
<td class="nump">115,061<span></span>
</td>
<td class="nump">123,708<span></span>
</td>
</tr>
<tr class="ro">
<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">1,278<span></span>
</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,487<span></span>
</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,278<span></span>
</td>
<td class="nump">1,487<span></span>
</td>
<td class="nump">1,482<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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</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="nump">153,741<span></span>
</td>
<td class="nump">135,137<span></span>
</td>
<td class="nump">138,956<span></span>
</td>
</tr>
<tr class="ro">
<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">$ 4,764<span></span>
</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">$ 3,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="nump">$ 4,764<span></span>
</td>
<td class="nump">$ 3,602<span></span>
</td>
<td class="nump">$ 2,735<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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=121604090&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=120311839&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=120311839&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=120311839&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=121604090&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>121
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502789876216">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Acquisitions - Sualab Co., Ltd. Narrative (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="1"></th>
<th class="th" colspan="4">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>Apr. 12, 2017</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Sep. 27, 2020</div></th>
<th class="th"><div>Jun. 28, 2020</div></th>
<th class="th"><div>Mar. 29, 2020</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
<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">$ 0<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="nump">$ 19,571<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_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>
<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>
<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_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount', window );">Tax deductible goodwill</a></td>
<td class="nump">$ 104,609<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_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>
<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_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>
<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>
<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>
<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>
<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="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>
<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] | Maximum [Member] | In-process Technology [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>
</tr>
<tr class="re">
<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>
<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_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Intangible assets, useful life</a></td>
<td class="text">6 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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 Technology [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>
</tr>
<tr class="ro">
<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>
<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_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Intangible assets, useful life</a></td>
<td class="text">8 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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 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>
<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>
<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_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Intangible assets, useful life</a></td>
<td class="text">7 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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] | Trademarks [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>
</tr>
<tr class="ro">
<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>
<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_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Intangible assets, useful life</a></td>
<td class="text">2 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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] | Non-compete agreements | 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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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>
<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_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Intangible assets, useful life</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">6 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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] | Non-compete agreements | 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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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>
<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_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife', window );">Intangible assets, useful life</a></td>
<td class="text">7 years<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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>
<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>
<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="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>
<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>
<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>
<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="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>
<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_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 amortization period of finite-lived intangible assets acquired either individually or as part of a group of 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>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 1<br> -Subparagraph (a)(3)<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_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife</td>
</tr>
<tr>
<td style="padding-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_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_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 goodwill arising from a business combination that is expected to be deductible for tax purposes.</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 (d)<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_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_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=121586364&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=121586364&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_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=121586364&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_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_IndefiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_InprocessTechnologyMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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=cgnx_InprocessTechnologyMember</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_CompletedTechnologyMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_CompletedTechnologyMember</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_CustomerRelationshipsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_CustomerRelationshipsMember</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_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_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_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>122
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502789332136">
<tr>
<th class="tl" colspan="1" rowspan="1"><div style="width: 200px;"><strong>Acquisitions - Sualab Co., Ltd. Purchase Price Allocation (Details) - USD ($)<br> $ in Thousands</strong></div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Oct. 16, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
</tr>
<tr class="ro">
<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">$ 244,078<span></span>
</td>
<td class="nump">$ 243,445<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 113,208<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>
</tr>
<tr class="ro">
<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>
</tr>
<tr class="re">
<td class="pl " style="border-bottom: 0px;" valign="top"><a class="a" href="javascript:void(0);" onclick="top.Show.showAR( this, 'defref_us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents', window );">Cash and cash equivalents</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 3,691<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities', window );">Current investments</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">9,487<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables', window );">Accounts receivable</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">1,200<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory', window );">Inventories</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">115<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets', window );">Prepaid expenses and other current assets</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">252<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment', window );">Property, plant, and equipment</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">726<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset', window );">Operating lease assets</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">2,792<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets', window );">Deferred income tax asset</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">3,087<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets', window );">Other assets</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">513<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable', window );">Accounts payable</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(28)<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities', window );">Accrued expenses</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(2,633)<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits', window );">Deferred revenue and customer deposits</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(764)<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent', window );">Operating lease liabilities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(448)<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent', window );">Non-current operating lease liabilities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(2,344)<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue', window );">Deferred income tax liabilities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(7,926)<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther', window );">Other liabilities</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="num">(10)<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_Goodwill', window );">Goodwill</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">129,138<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet', window );">Purchase price</a></td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">169,598<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 Technology [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_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>
</tr>
<tr class="re">
<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">18,300<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 Technology [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_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>
</tr>
<tr class="ro">
<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">8,200<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 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>
</tr>
<tr class="ro">
<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>
</tr>
<tr class="re">
<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,800<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] | Non-compete agreements</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_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>
</tr>
<tr class="ro">
<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">340<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] | Trademarks [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_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>
</tr>
<tr class="re">
<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">$ 110<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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities, Deferred Revenue and Customer Deposits</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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits</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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Liability, 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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent</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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Liability, Noncurrent</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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent</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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></td></tr>
<tr><td><div class="body" style="padding: 2px;">
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">- Definition</a><div><p>Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Right-of-Use 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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset</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_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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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, acquired at the acquisition date. 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.</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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 investments in debt and equity securities, including, but not limited to, held-to-maturity, trading and available-for-sale expected to be converted to cash, sold or exchanged within one year or the normal operating cycle, if longer, 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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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, 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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 due from customers or clients for goods or services, including trade receivables, that have been delivered or sold in the normal course of business, and amounts due from others, including related parties expected to be converted to cash, sold or exchanged within one year or the normal operating cycle, if longer, 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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 due within one year or within the normal operating cycle, if longer, assumed 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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 incurred for goods and services received that are used in an entity's business and related party payables, assumed 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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 revenue expected to be recognized as such within one year or the normal operating cycle, if longer, assumed 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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 asset attributable to deductible temporary differences and carryforwards 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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 inventory recognized as of 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=121647850&amp;loc=d3e4845-128472<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 10<br> -Section 55<br> -Paragraph 37<br> -URI http://asc.fasb.org/extlink&amp;oid=121600890&amp;loc=d3e2207-128464<br></p></div>
<a href="javascript:void(0);" onclick="top.Show.toggleNext( this );">+ Details</a><div style="display: none;"><table border="0" cellpadding="0" cellspacing="0">
<tr>
<td><strong> Name:</strong></td>
<td style="white-space:nowrap;">us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 assets expected to be realized or consumed after one year or the normal operating cycle, if longer, 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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 liabilities due after one year or the normal operating cycle, if longer, assumed 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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 property, plant, and equipment recognized as of 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 10<br> -Section 55<br> -Paragraph 37<br> -URI http://asc.fasb.org/extlink&amp;oid=121600890&amp;loc=d3e2207-128464<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 20<br> -Section 50<br> -Paragraph 1<br> -Subparagraph (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.Show.hideAR();">X</a></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 assets, including goodwill, in excess of (less than) the aggregate liabilities assumed.</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=121647850&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_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet</td>
</tr>
<tr>
<td style="padding-right: 4px;white-space:nowrap;"><strong> Namespace Prefix:</strong></td>
<td>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_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://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_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_FiniteLivedIntangibleAssetsByMajorClassAxis=cgnx_CompletedTechnologyMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_CompletedTechnologyMember</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_InprocessTechnologyMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_InprocessTechnologyMember</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_CustomerRelationshipsMember">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_CustomerRelationshipsMember</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>123
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502710591912">
<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="4">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>Dec. 31, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Sep. 27, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Jun. 28, 2020 </div>
<div>USD ($)</div>
</th>
<th class="th">
<div>Mar. 29, 2020 </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>Dec. 31, 2018 </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>
<td class="text">&#160;<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="text">&#160;<span></span>
</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">$ 875<span></span>
</td>
<td class="nump">$ 251<span></span>
</td>
<td class="nump">$ 14,798<span></span>
</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="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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</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>
<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>num: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://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> -Subparagraph (b)<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 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121586364&amp;loc=d3e3602-108585<br><br>Reference 4: 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))<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>124
<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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502785260088">
<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="4">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Sep. 27, 2020</div></th>
<th class="th"><div>Jun. 28, 2020</div></th>
<th class="th"><div>Mar. 29, 2020</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
<td class="text">&#160;<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_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="nump">$ 875<span></span>
</td>
<td class="nump">$ 251<span></span>
</td>
<td class="nump">$ 14,798<span></span>
</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="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>
<td class="text">&#160;<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_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>
<td class="text">&#160;<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_RestructuringCharges', window );">Restructuring charges</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">10,159<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_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>
<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>
<td class="text">&#160;<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_RestructuringCharges', window );">Restructuring charges</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">5,207<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_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>
<td class="text">&#160;<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_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>
<td class="text">&#160;<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_RestructuringCharges', window );">Restructuring charges</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">$ 558<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_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://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> -Subparagraph (b)<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 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121586364&amp;loc=d3e3602-108585<br><br>Reference 4: 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))<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>125
<FILENAME>R111.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502782672568">
<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="4">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Sep. 27, 2020</div></th>
<th class="th"><div>Jun. 28, 2020</div></th>
<th class="th"><div>Mar. 29, 2020</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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>
<td class="text">&#160;<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_RestructuringCharges', window );">Restructuring charges</a></td>
<td class="nump">$ 875<span></span>
</td>
<td class="nump">$ 251<span></span>
</td>
<td class="nump">$ 14,798<span></span>
</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="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>
<td class="text">&#160;<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_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>
<td class="text">&#160;<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_RestructuringCharges', window );">Restructuring charges</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">10,159<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_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>
<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>
<td class="text">&#160;<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_RestructuringCharges', window );">Restructuring charges</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">5,207<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_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>
<td class="text">&#160;<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_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>
<td class="text">&#160;<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_RestructuringCharges', window );">Restructuring charges</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">558<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_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>
<td class="text">&#160;<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_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>
<td class="text">&#160;<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_RestructuringReserve', window );">Balance as of December 31, 2019</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>
<td class="nump">0<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">17,185<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_PaymentsForRestructuring', window );">Cash payments</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="num">(9,597)<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_RestructuringReserveSettledWithoutCash2', window );">Non-cash restructuring charges</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="num">(4,163)<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_RestructuringReserveAccrualAdjustment1', window );">Restructuring adjustments</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="num">(1,261)<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_RestructuringReserveTranslationAdjustment', window );">Foreign exchange rate changes</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">225<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, 2020</a></td>
<td class="nump">2,389<span></span>
</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,389<span></span>
</td>
<td class="nump">0<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] | 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>
<td class="text">&#160;<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_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>
<td class="text">&#160;<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_RestructuringReserve', window );">Balance as of December 31, 2019</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>
<td class="nump">0<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">11,329<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_PaymentsForRestructuring', window );">Cash payments</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="num">(8,717)<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_RestructuringReserveSettledWithoutCash2', window );">Non-cash restructuring charges</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">0<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_RestructuringReserveAccrualAdjustment1', window );">Restructuring adjustments</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="num">(1,170)<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_RestructuringReserveTranslationAdjustment', window );">Foreign exchange rate changes</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">182<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, 2020</a></td>
<td class="nump">1,624<span></span>
</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,624<span></span>
</td>
<td class="nump">0<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] | 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>
<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>
<td class="text">&#160;<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_RestructuringReserve', window );">Balance as of December 31, 2019</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>
<td class="nump">0<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">5,220<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_PaymentsForRestructuring', window );">Cash payments</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="num">(317)<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_RestructuringReserveSettledWithoutCash2', window );">Non-cash restructuring charges</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="num">(4,163)<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_RestructuringReserveAccrualAdjustment1', window );">Restructuring adjustments</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="num">(13)<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_RestructuringReserveTranslationAdjustment', window );">Foreign exchange rate changes</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">23<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, 2020</a></td>
<td class="nump">750<span></span>
</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">750<span></span>
</td>
<td class="nump">0<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] | 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>
<td class="text">&#160;<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_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>
<td class="text">&#160;<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_RestructuringReserve', window );">Balance as of December 31, 2019</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>
<td class="nump">0<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="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="nump">636<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_PaymentsForRestructuring', window );">Cash payments</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="num">(563)<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_RestructuringReserveSettledWithoutCash2', window );">Non-cash restructuring charges</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">0<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_RestructuringReserveAccrualAdjustment1', window );">Restructuring adjustments</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="num">(78)<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_RestructuringReserveTranslationAdjustment', window );">Foreign exchange rate changes</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">20<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, 2020</a></td>
<td class="nump">$ 15<span></span>
</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">$ 15<span></span>
</td>
<td class="nump">$ 0<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_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=121586364&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://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> -Subparagraph (b)<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 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121586364&amp;loc=d3e3602-108585<br><br>Reference 4: 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))<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://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))<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://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)<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_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://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><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> -Subparagraph (b)<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_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://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_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>126
<FILENAME>R112.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502828621576">
<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. 11, 2021 </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.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_DividendsPayableDateDeclaredDayMonthAndYear', window );">Dividends Payable, Date Declared</a></td>
<td class="text">Mar. 12,  2021<span></span>
</td>
</tr>
<tr class="ro">
<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">Feb. 26,  2021<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=121583591&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>num: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 CCYY-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=121583591&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 CCYY-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>127
<FILENAME>R113.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502706846536">
<tr>
<th class="tl" colspan="1" rowspan="2"><div style="width: 200px;"><strong>Selected Quarterly Financial Data (Unaudited) (Details) - USD ($)<br> $ / shares in Units, $ in Thousands</strong></div></th>
<th class="th" colspan="8">3 Months Ended</th>
<th class="th" colspan="3">12 Months Ended</th>
</tr>
<tr>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Sep. 27, 2020</div></th>
<th class="th"><div>Jun. 28, 2020</div></th>
<th class="th"><div>Mar. 29, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Sep. 29, 2019</div></th>
<th class="th"><div>Jun. 30, 2019</div></th>
<th class="th"><div>Mar. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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_QuarterlyFinancialInformationDisclosureAbstract', window );"><strong>Quarterly Financial Information 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>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<span></span>
</td>
<td class="text">&#160;<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_RevenueFromContractWithCustomerExcludingAssessedTax', window );">Revenue</a></td>
<td class="nump">$ 223,615<span></span>
</td>
<td class="nump">$ 251,073<span></span>
</td>
<td class="nump">$ 169,097<span></span>
</td>
<td class="nump">$ 167,235<span></span>
</td>
<td class="nump">$ 169,769<span></span>
</td>
<td class="nump">$ 183,325<span></span>
</td>
<td class="nump">$ 199,047<span></span>
</td>
<td class="nump">$ 173,484<span></span>
</td>
<td class="nump">$ 811,020<span></span>
</td>
<td class="nump">$ 725,625<span></span>
</td>
<td class="nump">$ 806,338<span></span>
</td>
</tr>
<tr class="re">
<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="nump">168,455<span></span>
</td>
<td class="nump">191,332<span></span>
</td>
<td class="nump">118,777<span></span>
</td>
<td class="nump">126,035<span></span>
</td>
<td class="nump">124,898<span></span>
</td>
<td class="nump">135,693<span></span>
</td>
<td class="nump">148,080<span></span>
</td>
<td class="nump">127,200<span></span>
</td>
<td class="nump">604,599<span></span>
</td>
<td class="nump">535,871<span></span>
</td>
<td class="nump">600,286<span></span>
</td>
</tr>
<tr class="ro">
<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">875<span></span>
</td>
<td class="nump">251<span></span>
</td>
<td class="nump">14,798<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="nump">15,924<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_ImpairmentOfIntangibleAssetsExcludingGoodwill', window );">Intangible asset impairment charges</a></td>
<td class="nump">0<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>
<td class="text">&#160;<span></span>
</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">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_OperatingIncomeLoss', window );">Operating income</a></td>
<td class="nump">59,085<span></span>
</td>
<td class="nump">96,635<span></span>
</td>
<td class="num">(6,142)<span></span>
</td>
<td class="nump">20,951<span></span>
</td>
<td class="nump">17,607<span></span>
</td>
<td class="nump">43,092<span></span>
</td>
<td class="nump">51,756<span></span>
</td>
<td class="nump">30,147<span></span>
</td>
<td class="nump">170,529<span></span>
</td>
<td class="nump">142,602<span></span>
</td>
<td class="nump">221,142<span></span>
</td>
</tr>
<tr class="re">
<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">$ 69,345<span></span>
</td>
<td class="nump">$ 87,506<span></span>
</td>
<td class="num">$ (1,142)<span></span>
</td>
<td class="nump">$ 20,477<span></span>
</td>
<td class="nump">$ 80,327<span></span>
</td>
<td class="nump">$ 41,685<span></span>
</td>
<td class="nump">$ 48,749<span></span>
</td>
<td class="nump">$ 33,104<span></span>
</td>
<td class="nump">$ 176,186<span></span>
</td>
<td class="nump">$ 203,865<span></span>
</td>
<td class="nump">$ 219,267<span></span>
</td>
</tr>
<tr class="ro">
<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">$ 0.40<span></span>
</td>
<td class="nump">$ 0.50<span></span>
</td>
<td class="num">$ (0.01)<span></span>
</td>
<td class="nump">$ 0.12<span></span>
</td>
<td class="nump">$ 0.47<span></span>
</td>
<td class="nump">$ 0.24<span></span>
</td>
<td class="nump">$ 0.28<span></span>
</td>
<td class="nump">$ 0.19<span></span>
</td>
<td class="nump">$ 1.02<span></span>
</td>
<td class="nump">$ 1.19<span></span>
</td>
<td class="nump">$ 1.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_EarningsPerShareDiluted', window );">Diluted net income (loss) per share (in dollars per share)</a></td>
<td class="nump">$ 0.39<span></span>
</td>
<td class="nump">$ 0.49<span></span>
</td>
<td class="num">$ (0.01)<span></span>
</td>
<td class="nump">$ 0.12<span></span>
</td>
<td class="nump">$ 0.46<span></span>
</td>
<td class="nump">$ 0.24<span></span>
</td>
<td class="nump">$ 0.28<span></span>
</td>
<td class="nump">$ 0.19<span></span>
</td>
<td class="nump">$ 1.00<span></span>
</td>
<td class="nump">$ 1.16<span></span>
</td>
<td class="nump">$ 1.24<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_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 250<br> -SubTopic 10<br> -Section 50<br> -Paragraph 3<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22583-107794<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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-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 45<br> -Paragraph 10<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1448-109256<br><br>Reference 4: 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=109234566&amp;loc=d3e22595-107794<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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 260<br> -SubTopic 10<br> -Section 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1337-109256<br><br>Reference 7: 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=120380238&amp;loc=d3e4984-109258<br><br>Reference 8: 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 9: 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=120380238&amp;loc=d3e3842-109258<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 7<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22644-107794<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=6371337&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 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=120395209&amp;loc=SL114868664-224227<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 45<br> -Paragraph 2<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1252-109256<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 60B<br> -Subparagraph (d)<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=SL5780133-109256<br><br>Reference 15: 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>num: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=120380238&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=109234566&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=120380238&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=121326447&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=109234566&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=109234566&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=109234566&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=121326447&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 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 10: 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=6371337&amp;loc=d3e3550-109257<br><br>Reference 11: 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 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 11<br> -Subparagraph (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-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 45<br> -Paragraph 7<br> -URI http://asc.fasb.org/extlink&amp;oid=121326447&amp;loc=d3e1337-109256<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=120395209&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>num: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_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/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 2: 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=120311839&amp;loc=d3e8924-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 30<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8906-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(g)(1)(ii))<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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 22<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8736-108599<br><br>Reference 6: 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=75031198&amp;loc=d3e14064-108612<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 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&amp;loc=d3e8933-108599<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.1,2)<br> -URI http://asc.fasb.org/extlink&amp;oid=120395209&amp;loc=SL114868664-224227<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 (c)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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=121586364&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_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://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=121641772&amp;loc=SL7669619-108580<br><br>Reference 2: 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=120311839&amp;loc=d3e8924-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 11<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22694-107794<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 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 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 (a)<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&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 280<br> -SubTopic 10<br> -Section 50<br> -Paragraph 32<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=120311839&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 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 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 4<br> -URI http://asc.fasb.org/extlink&amp;oid=109234566&amp;loc=d3e22595-107794<br><br>Reference 9: 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=121641772&amp;loc=SL7669625-108580<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=120311839&amp;loc=d3e8736-108599<br><br>Reference 11: 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 12: 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=120395209&amp;loc=SL114868664-224227<br><br>Reference 13: 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=121586364&amp;loc=d3e3602-108585<br><br>Reference 14: 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=109234566&amp;loc=d3e22499-107794<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=109234566&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 825<br> -SubTopic 10<br> -Section 50<br> -Paragraph 28<br> -Subparagraph (f)<br> -URI http://asc.fasb.org/extlink&amp;oid=75031198&amp;loc=d3e14064-108612<br><br>Reference 17: 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=120311839&amp;loc=d3e8906-108599<br><br>Reference 18: 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=109234566&amp;loc=d3e22583-107794<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://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=121326447&amp;loc=SL5780133-109256<br><br>Reference 21: 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 22: 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=120311839&amp;loc=d3e8933-108599<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=109234566&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_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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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_QuarterlyFinancialInformationDisclosureAbstract">
<tr><td class="hide"><a style="color: white;" href="javascript:void(0);" onclick="top.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_QuarterlyFinancialInformationDisclosureAbstract</td>
</tr>
<tr>
<td style="padding-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_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://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> -Subparagraph (b)<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 230<br> -SubTopic 10<br> -Section 45<br> -Paragraph 28<br> -Subparagraph (b)<br> -URI http://asc.fasb.org/extlink&amp;oid=121586364&amp;loc=d3e3602-108585<br><br>Reference 4: 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))<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=120311839&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=120311839&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=120311839&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=120311839&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=120311839&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=121604090&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=120311839&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=120311839&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=120311839&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=121604090&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>
</div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>128
<FILENAME>R114.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502784829688">
<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, 2020</div></th>
<th class="th"><div>Dec. 31, 2019</div></th>
<th class="th"><div>Dec. 31, 2018</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">$ 530<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">831<span></span>
</td>
<td class="nump">$ 530<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">530<span></span>
</td>
<td class="nump">596<span></span>
</td>
<td class="nump">$ 387<span></span>
</td>
</tr>
<tr class="re">
<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">600<span></span>
</td>
<td class="nump">215<span></span>
</td>
<td class="nump">282<span></span>
</td>
</tr>
<tr class="ro">
<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">(300)<span></span>
</td>
<td class="num">(286)<span></span>
</td>
<td class="num">(61)<span></span>
</td>
</tr>
<tr class="re">
<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">1<span></span>
</td>
<td class="nump">5<span></span>
</td>
<td class="num">(12)<span></span>
</td>
</tr>
<tr class="ro">
<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">831<span></span>
</td>
<td class="nump">530<span></span>
</td>
<td class="nump">596<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,050<span></span>
</td>
<td class="nump">1,181<span></span>
</td>
</tr>
<tr class="ro">
<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">225<span></span>
</td>
<td class="nump">182<span></span>
</td>
</tr>
<tr class="re">
<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="num">(282)<span></span>
</td>
</tr>
<tr class="ro">
<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">16<span></span>
</td>
<td class="num">(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_ValuationAllowancesAndReservesBalance', window );">Balance&#160;at End 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="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="re">
<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">7,312<span></span>
</td>
<td class="nump">6,112<span></span>
</td>
<td class="nump">5,309<span></span>
</td>
</tr>
<tr class="re">
<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,256<span></span>
</td>
<td class="nump">1,200<span></span>
</td>
<td class="nump">803<span></span>
</td>
</tr>
<tr class="ro">
<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">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_ValuationAllowancesAndReservesBalance', window );">Balance&#160;at End 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>
</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_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>129
<FILENAME>R9999.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.20.4</span><table class="report" border="0" cellspacing="2" id="idm140502710218344">
<tr>
<th class="tl" colspan="1">Label</th>
<th class="tl"><strong>Element</strong></th>
<th class="th" colspan="1">Value</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_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss', window );">Debt Securities, Available-for-sale, Allowance for Credit Loss</a></td>
<td class="th" style="border-bottom: 0px;">us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss</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=121582814&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=121582814&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=121645371&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=121558606&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></div>
</body>
</html>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>EXCEL
<SEQUENCE>130
<FILENAME>Financial_Report.xlsx
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 Financial_Report.xlsx
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
M&"1)0W$SD[YX)A]%:;PJH*"H<?H=RIP.%K23K@LNQ$=-GP8F*;M^"*A)L)9
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
MQ3*AR8K*&M#W6$KSO+$.ZED]^ -02P,$%     @ Y(!+4D,M?1].!P  '1\
M !@   !X;"]W;W)K<VAE971S+W-H965T-2YX;6R]F6%OVS80AO\*X05;!SBQ
M2$JBE"8!TB1;"W1)D+3;9T9F8J&2Z$ETDN[7[R@YECR>: \8U@^-)1_/[YW(
M>X[4R8NNOS4+I0QY+8NJ.9TLC%D>SV9-ME"E;([T4E7PS:.N2VG@LGZ:-<M:
MR7D[J"QF+ CB62GS:G)VTMZ[K<].],H4>:5N:]*LRE+6WS^H0K^<3NCD[<9=
M_K0P]L;L[&0IG]2],E^7MS5<S39>YGFIJB;7%:G5X^GDG!Y?\-0.:"U^S]5+
M,_A,;"@/6G^S%Y_FIY/ *E*%RHQU(>'/L[I016$]@8X_UTXGF]^T X>?W[S_
MT@8/P3S(1EWHXH]\;A:GDV1"YNI1K@ISIU\^JG5 D?67Z:)I_R<O:]M@0K)5
M8W2Y'@P*RKSJ_LK7=2(& \ //H"M![!]!_#U -X&VBEKP[J41IZ=U/J%U-8:
MO-D/;6[:T1!-7MG'>&]J^#:'<>;LXN;Z_N;SI\OS+U>7Y,/YY_/KBRMR__'J
MZLL].21?[R_)NX.?3V8&?LH.F&5KMQ\ZMVS$[:7*C@BG4\("%B##+_8>3M/M
MX3,(<!,EVT3)6G]\+,I57:O*$-DTRC3''H]\XY&W'L,QC[)9$%G-268_J#]7
M^;,LX"<:+%>=JZAU9=?5\QF+TT#P((#</ _3XEI204-.AY9;>L.-WM"O=YV!
MO'I6C2FMTBF1I:Y-_I>"*'1CB'XD!S1@4Q8E;6@'C$?3F 8PJ'V.[4W[1*:P
M@)NE:E=@\1W\%% -9)4I G6%9+6:YX84&I+=M$Y=#UB6N@#B8>P!9V'@9LFU
M!+-0!*-9BC99BKQ9.L\RO8+40'R9@B?Z4*C=T26<=NF*^*Y486%';M@LBM/8
M#1NQ#'C8QHV''6_"CKUA?ZT>\J* :5"K9U6M%"8S=GX\BCES1;IVH4C8J$2Q
MD2B\$C_!O*V,KG.%KC#A_&H<)!R9.I@AB\?75[+1EWCUW=9J*?,Y4:\ 6#LS
M[ 309J%@QFP5'TQ]XHCB@C%$O6O(XB0<G_?I1GWJ5?]%&UGL(31%LD?CE+I*
M,4O!/(6,!CVQ J_8:UT=9GN6,YX&TY"*;GU"'9W&G/]/Y6P=Q=9332-8VVZR
M$-.0\S :7S9TP'>Z8V)"RU<;"&M9R,I,6\V65TN;M2FIE$'54T>22"F&+,0R
M2<.0CVOOJ4V95_L-*)<FKYY(H:!5\TS,M:.ME0$80^H38DE%Q#RI[EL"ZN\)
M?M5Z_@*%%!7($6:%@4@0A9@IU/EH7&+?!5!_&_"I,K)ZRH%KY+Q-YI1<PU[A
MW=5K5JSF-M-O0>!-'\+H"/XA0;B6/ W3\5)%>T93/Z0OU:."U3^'59CI4A$C
M7W$H4!>8D$<1A(A<Q#2$U9J.Z^WA2OUTO6DIX)F[+C*%2#&1"(,3[EEH/5RI
MGZY=_?=(=+%)8>:* %M@F&T2I=PS?WO*TF2O1K[();0LN8%VP-?-TQZ U$_
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
M'O5 &@-\OQ9"/TW,8:(Z/$[^ %!+ P04    " #D@$M2.:Z$N)$(   ")0
M&    'AL+W=O<FMS:&5E=',O<VAE970W+GAM;)5:VV[;.!#]%<+8AQ:H:_&B
M6Y$$2.QT-T#;!$V[^ZS(M*VM+7HE.9=^_0XE6W+((9.\Q+)S2/%P.',.*9T\
MJ.I7O9*R(8^;=5F?CE9-L_TTF=3Y2FZR^J/:RA+^LU#5)FO@:[6<U-M*9O.V
MT68]84$0339948[.3MK?;JJS$[5KUD4I;RI2[S:;K'JZD&OU<#JBH\,/WXOE
MJM$_3,Y.MME2WLKFY_:F@F^3OI=YL9%E7:B25')Q.CJGGV:"Z08MXN]"/M1'
MUT13N5/JE_YR-3\=!7I$<BWS1G>1P<>]G,KU6O<$X_AOW^FHOZ=N>'Q]Z/US
M2Q[(W&6UG*KU/\6\69V.DA&9RT6V6S??U<-?<D\HU/WE:EVW?\G#'AN,2+ZK
M&[79-X81;(JR^\P>]Q-QU(!&C@9LWX"9#82C =\WX*]M(/8-1#LS'95V'F99
MDYV=5.J!5!H-O>F+=C+;UD"_*'7<;YL*_EM N^9L>OWM]OK+U>S\Q^6,W/Z
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
MK0'P_X52S>&+OD'_VM/9_U!+ P04    " #D@$M2[D@+:]L*  #$.   &
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
MT<V725P06;X6"/KQ^@Q2KY^79]!&Z[DRDZ=9/)F1=%+N[AWU55;,R/=5E!5
MH<%0O;WU#ENQ_LZ[M'.9/91OB.= 62""XP-?G:S;V]O7T,_*]W?W[@_IX!*[
M'[#!B"'WQVP08O<#/AAQ3)\/0NQ^( 8C@>F+08C=#^S!R,;T[4&(W0^<P<C!
M])U!B-T/W,'(Q?3=08C=#[S!R,/TO4&(W0_\P<C']/U!B-T/J#48K5_2WK<
M28A* DK!!LOF&"0A*@DH))JBF09)B$H""LFF:+9!$J*2@$+"*9IQD(2H)*"0
M=(IF'20A*@DH))ZBF0=)B$H""LFG:/9!$J*2@ ( *(H D(2H)*   HJB "0A
M*@D8X("A. !)B$H"!CA@* Y $J*2@*D-C^]XM>51'##  4-Q )(0E00,<,!0
M'( D1"4! QPP% <@"5%)P  '#,4!2$)4$C#  4-Q )(0E00,<,!0'( D1"4!
M QPP% <@"5%)P $'',4!2$)4$G#  4=Q )(0E00<<,!1'( D1"4!5X<_?OJK
MXQ_% 0<<<!0'( E12< !!QS% 4A"5!)PP %'<0"2$)5 HPXV* Y $J*2@ ,.
M.(H#D(2H)."  X[B "0A*@D$X$"@. !)B$H" 3@0* Y $J*20  .!(H#D(2H
M)!"  X'B "0A*@&B#38X$U!4 ,6! !P(% <@"5')J7 &[P66;2")("ESVJ^X
MU/K_^SY$V4.\R$DB[X%76>]<X+?9^E_FUE^*=%G^V]+7M"C2>7DYD]%49DH!
MY/=I6CQ_41-L_W'QY/]02P,$%     @ Y(!+4DR#7K+P @  MP<  !@   !X
M;"]W;W)K<VAE971S+W-H965T.2YX;6RE56U/VS 0_BM6A+1-&J1)7U:FME(A
M12#Q-E(V3=,^N,FE\7#L8CLM[-?O[(2LL+8@[4O\=L]S]_CBN\%*JCN= QCR
M4'"AAUYNS.*S[^LDAX+J [D @2>95 4UN%1S7R\4T-2!"NZ'K5;/+R@3WFC@
M]J[5:"!+PYF :T5T6114/1X!EZNA%WA/&S=LGAN[X8\&"SJ'&,SMXEKARF]8
M4E: T$P*HB ;>N/@<]2S]L[@*X.57IL3JV0FY9U=G*5#KV4# @Z)L0P4AR4<
M ^>6",.XKSF]QJ4%KL^?V$^<=M0RHQJ.)?_&4I,/O;Y'4LAHR<V-7)U"K:=K
M^1+)M?N256W;\DA2:B.+&HP1%$Q4(WVH[V$-$/2V ,(:$+X$=+8 VC6@_59
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
MY']XWRE3Y+LMGC@F"E;OH2+/-K*$\G1'D%UMR)(IAQ*H)9;+63$\C5)B!YL
M>C?.10YJ>CCC$:JWJJ"!P?ZG9'%M1R"+K=T./EQFRNLN;/_L_?!F)KA*(4K<
M1(=#+?Q@.XK'(\'E;.4-"PTSS(Y=W0[I\VI&",=A9F<+FQE?B;^Q'H2I(7,.
M_&)E@6#"T!8\!DZK9"8CV6PO8O$QS:GW&Y,=.1JAZ3#M'FC75)XNL*B<8T^(
M'!I6S5NA7:U9LU<?)2?(X("J6H6Z**<('4<E/F8_$/-.,!AHF]<,'E&8-Q.]
M21V])NT7Q/O6J=+@BU?L.'?'$*UGERA2_')-,W$8F?=;DLOT:6R8N7P[2(1
M-(2)23"?)*XW&PNG, 2T9_TPKNI$3)(TLF"%27(^M>3!;.X;=Q*SN@>JV%;
MKUUCFEQPT4]GY;01<^&8SPO))I8G(O)-M/RYO<R6@ZVE:\C$0BKX.8-+6>($
MK+C#;BUXRN^*9@;QD9M;;$W&W1:W)6@ULPF'?=^-N[TYP^(N1YP>6QY'H#"X
M=ZN:M8.,.,S42RT1.<,8AN:/,1B]M>\T1&<#0"%8_NG5)(@+/4JTMZG@#?HH
M#\Y!BXYL<2J3^L)N C9&!TV@AJJ;3GF,VJFRI[6!S<NQ-:L/K9V(,]=O:@^N
MPA<K4!X,KU-(^VKTMP/I-2'HC(CJ] <U)IEP#@=<<N)^J2S@D9R<PJK0EN-I
M8HD%W?Q^AQ=\>5O5^)?@(;+<R;4* G.^%RR'N]K,?I0K) 0*<C0(TUL2PLP^
M(1[Z4[SN-J4YL*'E>E;*E0"V'7RNG*D'YP>I$,$!:+ <G')S3K#X<_'PZ:.4
M=N#\V8)2D$O7^WU]M+G9H]><-!7##1-_-!A5DBJ1D^/WQ<.K=!F2+Q(M2$[
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
M=,B\+/[:W0(_*Z5AKF;O^/^YBQR^>*[J!C6;/(WSE7'&^V5=WH^2%T@X!)"
M?NF\<)*C94!B P:=@F A7&_)<.YBH(V0.Q.&0:2( I(QWI!^,.DDH8D9A@^!
M(>^JDKH<C8&9FJ?=^J!8D5IV.@LNG,LH8QR/>D_-# FI0]J*TM@X+2;\2RF1
MN4+)$4!E1%&3Y*:)J;DV9^1ZY<YIU9GA(7.=/5=D9FI^QI(FF&74A[S\)"X:
M8F[L9;LH&ZB567FXY+ZLC->I=!D6M!]!7RCD@IA(I$2J;$-0:IPS4^;"E_G]
M?)^8K>84^:>9K:_4;#V'34B6#V:V?LYS8_9<3-Z5/=]?\@6G#:<_3,V37.W(
M"E? I<$N O,,U\#R\R<Y_PQ,FDP5+%XMK68+X+0P(2Q%=H<6[%LA*W-_\LQ=
MCIT42%C$!9E5UKCAEGU6J-&V?.:515M2LSRW0Y SM@VD(UB8("F49,4FI+B"
M=O=6^=[2/"T+3(>F(49J(L+88,@7*^]IKGW).:6V#_%4<2A.DMS.# U)J'!4
M<N"+CJQ)M+O(V]@A4EWPT1KDRZZE1&4]:,II=OJ29\4MB^_CL>+0E3!?L+9A
MC_*.?$8(,TD2+#_2J@EI2:K0G+HR&@[X@$+?<Y10-SWK[Y*T48/1*D2::2=W
M$FQBTTQ,65:%&+EZA&R)IJ33G;.3\SY=F>6:D]$]Z?5-&_+NN5BRE7K%-CV)
MK K$-G$1Z\[D>/E(>6))%I'883CLD*MNMC[K(QE:I#<+*(6;U')H5AF+2]A:
MVD(OU O/#B\GVQ GO^<E2+A?.9,MH9E"L%@6W!4+;ODONUEJ043_1\0RMU)G
MS$J=';?=6#H#"\F,A]"K)ZF*UA4290E!8=X-H@?-TMH2:%_2O.;R)Z^!76B+
MS4^L:Y'_D>N*7J^WD@-(H&%9^9X\=57L33<.6$]C;1-^HO>!KUZ A[THPEC3
M9N%+^[#<_U5290_S5FRY@%4;B@RB%NO$[T+[HIA/F'DE+!IE5)JY:HW_WZ
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
ME.4#6L;S >^@8K9RR56*UBZ&&:7RBRTOZ=LN%M?#^M)=KN3U'>'M+G:\2:8
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
MI\Q/7&VHADNQQE'W=!G-F.H^#W8/1C;VDQPN<D96=KD5/!>*"/!^+:49'DC
M^(WVZC]02P,$%     @ Y(!+4F7RGK1B @  $04  !D   !X;"]W;W)K<VAE
M971S+W-H965T,30N>&ULG51+;]LP#/XKA+'#!KBU(^?5( G0M"O60X&BQ=;#
ML(-BT[906?(DN6G__2@Y\3)@S8!=+)+B]_%A4LN=-L^V1G3PVDAE5U'M7+M(
M$IO7V'![KEM4=%-JTW!'JJD2VQKD10 U,F%I.DT:+E2T7@;;O5DO=>>D4'AO
MP'9-P\W;!J7>K:)1=# \B*IVWI"LERVO\!'=U_;>D)8,+(5H4%FA%1@L5]'E
M:+$9>__@\$W@SA[)X"O9:OWLE=MB%:4^(928.\_ Z7C!*Y32$U$:/_><T1#2
M X_E _M-J)UJV7*+5UH^B<+5JV@>08$E[Z1[T+LON*]GXOER+6WXPJ[WS5@$
M>6>=;O9@RJ 1JC_YZ[X/1X!Y^@Z [0$LY-T'"EE><\?72Z-W8+PWL7DAE!K0
ME)Q0_J<\.D.W@G!N?:M>4#EM!-IEXHC0FY-\#][T8/8.>,3@3BM76_BL"BS^
M)$@HDR$==DAGPTXR7F-^#MDH!I:R] 1?-I27!;[L'^6]P;6PN=2V,PC?+[?6
M&9J''R<BC(<(XQ!A_'\-/ GV&[>P+<]Q%=%*630O&!TSPK&<:UH%Z[  78*K
M$4HM::>$JN"C4&31G>6JL)\60&W$9HMF:"5]1A?PP'<T.PZ-X-+"!V#3>)ZF
M7IC%;#Z!)UJ@,Z'.6J-SM!;&\6R>PB2>I!G<""5HS JHM"XLL(N835(/',\R
M8IBF\3Q+>X%-1_"WSB9'8]J@J<(R^KHZY?J)':S#OE_V8_[;O7\L[KBIA+(@
ML21H>CZ;1&#Z!>P5I]LP]%OM:(6"6-.;A<8[T'VIM3LH/L#P"JY_ 5!+ P04
M    " #D@$M25T+E4Z<#  "["   &0   'AL+W=O<FMS:&5E=',O<VAE970Q
M-2YX;6RM5DUOVS@0_2L#HX<&("R1DBPIL W$28M=8 ,8[6Y[6.R!EBB+J"0J
M)%4G_[Y#RI:=H@D";"_FU\R;-V]$CI<'I;^96@@+CVW3F=6LMK:_#@)3U*+E
M9JYZT>%)I73++2[U/C"]%KST3FT3L#!<!"V7W6R]]'M;O5ZJP3:R$UL-9FA;
MKI\VHE&'U8S.3AN?Y+ZV;B-8+WN^%Y^%_:??:EP%$THI6]$9J3K0HEK-;NCU
M)G;VWN"+% =S,0>7R4ZI;V[Q9[F:A8Z0:$1A'0+'X;NX%4WC@)#&PQ%S-H5T
MCI?S$_I'GSOFLN-&W*KFJRQMO9IE,RA%Q8?&?E*'/\0QG\3A%:HQ_A<.HVV,
M$8O!6-4>G7'=RFX<^>-1APN'+'S!@1T=F.<]!O(L[[CEZZ56!]#.&M'<Q*?J
MO9&<[%Q1/EN-IQ+]['JKL;[:/A'8-KRS!'A7PH>'0?:HO%T&%F,XRZ XXFU&
M//8"'F5PKSI;&_C0E:)\#A @N8DA.S'<L%<1[T0QAX@28"$+7\&+IHPCCQ>]
M+>/G"<._-SMC-7XK_[T2*IY"Q3Y4_-O$_3]X<#[NS\=B.BX47B5C10FJ EL+
MJ%2#=U)V>W@O.]Q1@T$/<W4-J+EH=T)/NN,/S>$O!_@.(I(G=!HW@VQ*!#'
M8I)$T6DX[8-L>ZV^"\?!0)R0/,T@S@G+$%#@A:I54SXWHHPL,@8T)&D>PJUJ
M^\$BF9KK\L"U\'D955F_2#)"%PP6*8G3&.YY-U18OD&[T%88>Z$ RTE&%RXI
MAAP^#KJ3:#CB5?+1S0TL2)0B',G"$&A&29S'0/.84)H@7V.N\24IAG9HN).R
M%/@6%I+[)^8]#1F)&+URLY@L4G:%,J4YH6F$DRPG<1S!WRB]RXEW3U!*TRLS
MEJ1_O7P':6O@6$5,"=\A:9S/.X9$,:T0R3KS%ZEYVQBU3[TMUMN5E>"[:O#]
M\F7")Q(:949<2K*$.=,YW'F.O#$G+QR+9L#;#<VOZ^>8*/S"-'!CA-LP1CDF
MZ.+34%4E"P$%AG.:SW^O)AG)LNAMDF0D2?*S(C1_69$(Y?-ZG#_X20>-9'@S
ML7V)5QB^L5!),AIZOY\N(\V=7 CY<U!?##B@$UX6;!4C]O$BH+Y&X M0PL/
MM;M-B.R*.?_5.Q=<-)16Z+UOFP;S&3H[]I9I=^K,-V-#.IN/;?V>Z[WL#+*K
MT#6<I\D,]-@JQX55O6]/.V6QV?EIC?\NA'8&>%XI94\+%V#ZO[+^ 5!+ P04
M    " #D@$M2A)V94DT&  #['   &0   'AL+W=O<FMS:&5E=',O<VAE970Q
M-BYX;6SM66UOVS80_BN$D6(MH-FR[-A.D01(T@T;L*Y%LQ<,PS[0$FT1I42/
MI.*XOW[/D9(L.TZ:!?WH#[;$E[M[[GAOA,[7VGRVN1".W1>JM!>]W+G5V\'
MIKDHN.WKE2BQLM"FX Y#LQS8E1$\\T2%&B1Q/!D47):]RW,_]]%<GNO**5F*
MCX;9JBBXV5P+I=<7O6&OF?@DE[FCB<'E^8HOQ:UPOZ\^&HP&+9=,%J*T4I?,
MB,5%[VKX]OJ4]OL-?TBQMIUW1IK,M?Y,@Y^SBUY,@(02J2,.'(\[<2.4(D:
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
M@.\K@Z/'\, !]K?KJ_\ 4$L#!!0    ( .2 2U)B/MBN+0,  ",'   9
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
M>NSP]6(7 W#>6AN>%[' ]#W<_ -02P,$%     @ Y(!+4KQR/QU&!   M H
M !D   !X;"]W;W)K<VAE971S+W-H965T,C$N>&ULS59-;QLW$/TKA KTY$BR
M[-1&*@NPG;3-P8"1M,FAZ&&T.ZMES(\-R96L?Y\WW-5*=FP?@J+H12*Y,V]F
MWLR0,]_X<!=KYJ3NK7'Q8E2GU+R93&)1LZ4X]@T[?*E\L)2P#:M); )3F96L
MF<RFTU\FEK0;+>;Y[#8LYKY-1CN^#2JVUE+87K'QFXO1\6AW\$&OZB0'D\6\
MH15_Y/17<QNPFPPHI;;LHO9.!:XN1I?';ZY.13X+?-*\B0=K)9$LO;^3S?OR
M8C05A]APD02!\+?F:S9&@.#&UQYS-)@4Q</U#OVW'#MB65+D:V\^ZS+5%Z/S
MD2JYHM:D#W[S!_?QO!:\PIN8?]6FDYV=C531QN1MKPP/K';=/]WW/!PHG$^?
M49CU"K/L=V<H>_F6$BWFP6]4$&F@R2*'FK7AG':2E(\IX*N&7EJ\=R5;IRM=
M4&;I-OBU%L;C?)* +U*3HL>ZZK!FSV =S]2-=ZF.ZAU0RX< $S@V>#?;>7<U
M>Q'Q+1=C=7)\I&;3V?0%O),AVI.,=_(,WN\M!7*).:J_+Y<Q!13%/R_@G@ZX
MIQGW]%]A\4>QU+O[@IND*"JCK4Y<JN56W5",5-1MY)3P@39'*M6,+Z^PCLI7
M>7OM;4-NBS[ZVNK 2B>5O-*]K:TJ."2T,$HN!'9)^:"DXSFH$N)%\B$> 0M>
ML:S(E8IM8_Q6N'QD@U9 BDGQ/:Z.B._:9=CL+@2M$D/>N;XS-SK5BA&#:H(O
MF$OM5B*RJ37.  QG4.%*"]+:FS60P $AF(CF$_.1PUJT(%E37LD)Y,32+C1J
MJ-!)<QRKQR0#VGDPNR9M:&FX\PGX#7P4INC0-QC'4><>B*RQ7S+CBBF_M*5
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
MWUO^V45[G<N,-XTU#U#%L=.P:4O\>>;-$YDKZV6AHI>?[(9K^2L/NQ,KI2Y
M*TX$D4$(NJU7PI+$/D)$DN:#4(KH>8B#K:VIX7% )2 #Y;/][0G[ !_+4I+A
MA)D_($ZN2S"4\]R+< \/QSK@3<;^+K2P7.WP;4+@-PJ:MI4L*D::98D P;6D
MOP=$ZJ!N#P1_X%+QE1([2%:/+!L$^(Y#'2@8'NE2ZDU<1I(CH."J])0-TFY%
M86S)8J $F=&"/1@O""&N%%C'>X+ M:M:XK*D1;Q;,@JX*^ Q='UYC?&$6UPY
ML_,E*"TEX:!+!V"$#NC*-;BV4)RJ%<$>,G9M./R')V\E8O&&3 ZV%0L-!R6X
ML2)F"14.FA$!U$.Y/Z*9 #%;\O; \J-&*1CNG"DD)PAM?(^@Q=<&VBG7O*!,
M<%T(- -?D0V)C A;N_  B46VM-AR%6JY,%IW36ZW'O5M8GUUF3GFTRAH4$K)
MUI(R,=RL5\,]+2%]&\N]?'E+TX*5DJZB KP35F+-._9/L!'*^X:3F&RP%&_?
MM'6K./7G9VS71W0GL!L\!@<R=$>VZ:(C0]355G"%I7CV$?AB [1.>.\21C]D
M!+NJ4Q5!3UB#%%K\4DXB&0J [GK,?J_/1+=A=[8-X?!5V$*Z?I-T*?\+75/-
MY.GK@8*PG\/C[/5?L9/7:Q$&EP%/G89:?35.VS=2=JA.OYW"'P6?"24QM$3
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
MMM<*0W&H6]E)WQ@>!<[@P1Q=-BF#%$>4!'.$0^%CEQY<<-"#<S<[=K<UW;M
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
M1'"1Q$3.<Q%&(G"^QFJ! *,K)G)YZ"G#+RX,9*L,E,D)@I(O$'Z"/>!ME/4
MUPI5;]7ZQ..KDC8?.T**.+UI:0<]4/_/&JS/% N_4GF&;<$X;4>UZ1IID^(2
M(INJ'QQ\)'-8[JV:N%TT%C_+$MF757S(\IR8@%@M%\U(PEGC9I/0)CFW=4,>
MP<J#60S9Q_$P"B_ D(WN[$H9!]O+*(]$L%&9I,[5-M.Y$9<\!I2_;TF9$ 3N
MR^W3K32(&]BM3XPPJFPL-8:CD,"LGEKV-/ %K3-HK;YYND !&LC859JQ5ZW/
M,CFKR8-@_H9.XGDPG4Q<;+\C-R(KNKW'849FM0#P:95O]S/N B,=6VU%]I8Y
MAV#@XUJ$4Y/)&-::,$BL=.$=6_0'BL3R) B LMZ;%&?LR KB8D,;3:NU25*D
M$DOY2)5B1U8853O9.#/+-6EN)1&V36U/]853D@T/)*TI6(JLS(JVH''?;@,'
MC1Y/[>"GXWC*-N 7I2G:+0::D-!G7)QE@J\SD6'^Z,T8B/4YR$FK,.XG<>]F
M/=1=X>#4N4QONYJ23_..<M77 #X!&$!VX;+2+6"2&VW&T@(6G5-<0G ^*1-/
MMR-' K.;O?V>$0XH2WL:0=&05<*-$IVYOLD]-"-7 6PY%C\UZ_%)G. 6"UG6
MM5>& RA5\S:SZ7:%;)8A69G0 O_?VN59)[TN6A<4Q@13SV3R;'(!'LB3#H?G
M3-$BF$8+XTN'79;N_)1NX[#-6W.[]RDH.SE\8-"6]BDA>U9Q!\FAZ[GAC3#I
MN[8QD.P/U4IS:P8+T! QLKV:&_8M#9T89584PIW5%I>D+(].,8!BD7@3*X #
MDH<:[O1\71W8R*3X\XBH/?3B)\YMFZVY*#M6"Z[1= SK#/:>FPCI8\\OBO(T
M'@^#B;&9;9EDVC2(Z)2"B@B3\:M2/<=GNVF-+Q,I_->6B!NRJ4T(<LBB*UR,
M@_4PMY7-.4DO+UD6UL?U75/J(@N08CD)XFEH0L- &XXW>H"RJ&1QS+(<C[-R
MG3UDZY81F:N9@A.6."H]H<-X,C\]2@F6\5!!$P:+9-X_1B%E?'08Y=C.T:Y3
MYO8-J:'?Z#Y&M&U=:0LGH#9>"MS)G#9/8!//Y;:.ZPA E$N+T71\?5H64S$Z
M#Z)E(GYD#F1!A:TV0,+HB^4@%^E*(R^LG\=5*K0J8UP"ZY]4>2Q);?TBPN7R
M_WD]+N]L*K&=RFD030>6=6[QC<MR<;K/ZMY!CMQS:Y  @3D#4;Q$GA690]\C
ME/XSKXGS[29;BI!.^<)_KL5FT3_?8G$0+^)_"XLMDO^%Q2(^XT3].XU\"-B=
MWEV.#R;Y?D5\X"-A./C"G#I?8.,LIU_3N>G4A#/@7:U1+%.^82!7E<^=/?I
M]/J8<(XIRBC;M5R0B/SY WFTAX:?_=\I(:*M<5D)%,?/E(#M-(O_=4HPKDW,
M/B7@D6&S69"Y5L8CW96 (+89R_%G$=HEIZ1A ^K!TK9NRJD4W@R>./<W,><G
MW6K;\K3I_M*&\@\0+7 \DN(M2I69$;&K_0]5FZ]-=9@K1E 7:B)O( SA $"O
M@38 G$]C0X?,AV5@]FHN)R68;^SI,Y>Q]*#V8HPO17HJA?-&P[4'4<[D6CV:
MTZO/C*F =0BB6 M#D]=19V\NFTUO^W,CFH/*L:\*O@+4KT&IRP*O9)OQB:+\
MS;9*?VOK3%.WDFTB]7F3+7!5L<%%W-$R;ZELL?'\9,;/\'J9[EJXOO/]XU6!
M8QL:V28:3[_S*V]Z1>:178G;'O6QCOWZ"PA4783?\?):]9KK?<RXD0]5;8I[
M<_!I5QJH3$%R1KZ5P@_H!&A?992K*)9U.VUY8<"J0I7':9V%9$3IU<;&1@@(
M!9N)/:Q#YHS'R7(Y:HQ<D!<VC\<&HVNH "*3E3-V&X#[$JYH-R <ZH'ZJ'F5
M@L &U8L[148L.C2[P#;+SU8%W!85X_2^K_":U.Z^O.Y8_'K11=Q9LZG9N0IL
M=G75;G?NL),N,0JZ[\CW-#Y+Z*775+LS+;D<D/Q!4?OO'EN/6K"CJ[N/]U<W
M+- #*C@ZR-&-=0V26K; U'5FZM5?3AF9?0LCCOXY9;+.D-[PV$0"OP*L^(3V
M]#R!7 (Y!]:&6E=TW@%]FZ3%AC)'\J80E2U=?W&J^7C?U6).-M9QS^.Z/JS/
M27;LQ[(M.9ZMCQU97@=QM7P\!CNOK64[*6Z@ WB^LW1QG0[6<M.)TKKE>$ !
M(S\F%D/#G/6;G#@V9G\Z:0XE"PKBUW%BVV>  C/SCE.H!1)=47@L TVQWL^4
M[Z3>B;W,UN>PL*D:2?Q?QW$P6Y[># 0T3$S7_J363,(@B2?]8K,[.^42W+0D
M:/!/WC'JT)$LC?&.6NFTC1N%IEDK+?0PUS'@+KYS!M]R%_#"U;$_>D#(+#4
MAU[X-U1, WJ@(7?I6M"U2*(D"*=T8&Z;TP@KPQV7S@&@>RI^@9TG2=3=$^2S
M&!<:W!VR5-;U(TQ[D#451),@G(=B$21+NOU#MX0HW]#,V@8>AW.FP7(^$U&P
MC!/QMBJ1_C3GKP+^;< $S3)!H<=D0CT($0:SR1)ZA<'2S'T1A2'*HVD4=??A
M^-*<N='!)PB:"J39)*+!BYGMJ21!##'IZN+$UE5?0*@BF<V#V2(1R7S& OQ%
MYJT]LR$7X(IHM " ICN1\R .([KPF$R70<A7%\SQ?_0E!_!<\X5WU^?\>M W
M.<0HCI=!'/&]S)%ME+M;7D\M,HKI"J$]E7=D9LE-[[3^S:4BJ^G%:FK?/0PH
MC8*$\3':B+)&Z#<WCA!-JCU'8N\<TK3/2<T&\/%YB=0</+T;3\A$W0$*09>Q
MN-\QLC0XU!'#F!9!EFOF<W@<]+I6YU'<I^2A;;ZJY:J3+L+OJ+KG8'V*8KC@
MMV126?:8@ASV<-5RID^NB?H.,_YZ4WRUPD]VN^VSQC-359W>4,6\#L@;S+7-
M+"R@:J9+NAP/_5/S7W<90IVYKG"V][IE!MP',<-<)*.Q;6TBL[6[B=E%'T,J
M0\1>(7,>8NK9KDX9"@"DHR$0:HQ:T"6M//M$J "/&8ITYM7*$3D]VN..-SZD
M.W-0U>5RS;P?%):$[QV9]DX8\! RI=2LKS/IM0>&ZE101ES.4G/PLD']9F0.
MCKVFNOI-I=W1N-L)_<'NQDB>/9A:T-N:P6#H[05UWY?\+=GYYD82Y*G$5I6,
M^%!,;S99FAD&U7,NMYFE@>L@K*]"/AH%VS,G<CYX^RK/@$H&' B&Y?L4S673
MNR8Z"<51 H&VWO)YNE->=;Q"V-_WW*8S#F...(9^PW'K_22&KQ'0#W^X2"X;
M\^N8[FGWVZ(WYB<UQ^'FATD_@S.Z'9*K#:9.QO/IE;FAX#XTU9Y_8(-RJZD*
M?KM3@+0U#<#WFPI5O/U "W2_N'K]=U!+ P04    " #D@$M2J1;N'DL#   H
M"   &0   'AL+W=O<FMS:&5E=',O<VAE970R."YX;6S%5MMNW#80_96!GEJ
M7MWV:NPNX(U=M \!#+M-$!1]X$JC%6&*5$C*&_]]AI16V22V Z0%^B)>-'/F
MS!EQJ/51FP=;(SKXU$AE-U'M7'L9Q[:HL>%VHEM4]*;2IN&.EN80V]8@+X-3
M(^,L2>9QPX6*MNNP=VNV:]TY*13>&K!=TW#SM$.ICYLHC4X;=^)0.[\1;]<M
M/^ ]NK_:6T.K>$0I18/*"JW 8+6)KM++W=3;!X-W H_V; X^D[W6#W[Q1[F)
M$D\()1;.(W :'O$-2NF!B,;' 3,:0WK'\_D)_;>0.^6RYQ;?:/E>E*[>1,L(
M2JQX)]V=/OZ.0SXSCU=H:<,3CKUMGD10=-;I9G F!HU0_<@_#3J<.2Q?<L@&
MARSP[@,%EM?<\>W:Z",8;TUH?A)2#=Y$3BA?E'MGZ*T@/[=]'VAC"5>/:*@*
M<%]S@W8=.P+W)G$Q .UZH.P%H#2#MUJYVL*-*K'\&B F5B.U[$1ME[V*>(W%
M!/*4099DR2MX^9AJ'O#R%_!NN%%"'2S<HNG3A+^O]M89^C+^>05_.N)/ _[T
MWTOY4T!PVK_@P[[M]X](J11<%IWDWHU;J+2DXV;A%Z' U;JS7)7VUTOX@-ST
M!0*2%YL]27&2F![IRC^6L.-6%(3[3;Q"-PV=I"$L'7'K")<TA721L^ER16/*
MTM64QHSE>0XW547'#W0%I9"=/X! GW3Q /S(36DA9VF2PY0EBQG,Z)G#M;<C
M>B\%IX##] (_=N*12U3N>4IS-EME-,Y8-O?4%FR:S.$^Q->M;PH6G(:V,T5-
M!YMHY#U]1EP6^8S-DR4+ 3,VGR4LG4_'0-4HAH=CX)E]SYGZA;"L+] Y-ZJ*
M5YP%R8<0I#NC-F=;#(U*/C'8=Z[W5=J13R$[7[A0TB\%][WM7%^%P58W""U5
M-Q"&/1:\HQ3)\:F'Y,J)BY/3!.Z0#H(HO/)]@3HEG)?'<>D9YVR9S0/1-&<)
MR?J?"G%28/4_*O!G[3>'8%^_]*2>4^<LDQ\D'O),EY/GVDQ\UKT;-(=P1UF2
MM5.N;^3C[G@-7O7=_XMY?X>^Y>8@Z*N66)%K,EG,(C#]O=0OG&[#7;#7CFZ6
M,*WI*D?C#>A]I;4[+7R \>=@^QE02P,$%     @ Y(!+4L"P1)3Y P  A @
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
M4Z)\W:'5R#\0.0''S79LC^-V@9;(DG=5P1["%+@7,!^"[2+8+#SA,=((:+M
MWP:8_B!5U'?GV<V_ \1-Z^#]%FF]3H%EY16=34@4Z:H @RRW9453"R(!W5E]
M^SQ[.076Y"0)7&&Z\31U4Y]-3O6Z4]UGJ$'MT>5PQ$/%+^ ACJ^>;=H<%-I)
M!+(FQ%(@0$I<HFB(%X*6X]#V "44X3VUX@=N1(O@H QD2H!O[G+@U,#ASH"+
MG_F\<H%<HG76&2ZPX'G[&B:IB(0V@'+A\:#3H'A(%*9_H[:4O3LU)V]G7JUZ
MJX#BEOF]6R%IBX0B(H_<?F;(!5L+O*L(1;1;Y?@$Q47-8C0GD(YA ;NRWZ&<
M&&X^*-D$&A["%2S=BRV)\%M4/8IL1J9_I K.C36E;A,M_XU1=O\6O0*P^R68
MIIZ,IB%$0+R!EZ/R3[N0$Q* "$O?>6L((P"KUA7 '/X)!CANG4HZ$#T.+//7
M_)&8*<S-HD.>(=:T!@W-DVF_DD%)B%<5?Q;KW2F,)&V(,P@]NP'[0J%<!B-'
MWUK@)Q!N"JU=#_O)T&!L#N2<R&GSNW1:5&O,RZBW>'( M 7:DZC#QA$01E!Z
M#);8IX$*"5ND1I"BRHJ.]<%"%NI>^(.)5^1J9"CBY@!T 0$,SB4P\016=LST
M3O"+^@*I#7P0P>*#@X=##H6U'PZ$R)H1X)<7T65],2O"7T</R:0G^MYO9_;O
M5+"I ="R;\JS"$-^Q.R*=#G%%_Z<:C+,-F"XNLA;WA2RB,FCL-^WS4=U&['[
MB1X 7DA.5;*^6]^=E7">^2]4P!Z_>OWJS9/ ;_X^ 8N*%U4>08$&W4&\A:OH
MI03* U[?'I$.6O9DJKMHP4<$1O9@FB^K(Q[ HEQU- O#22C9[2O'+ <X%DCY
MO%I$!PB2 O&/<VOU!7&G/BXZDD!#OY,;$<C=K;8U*LYD (BFV9#QT0!8*["N
M73(B^M,P4&-&!&X"!,M: 9AW?$0+XZE#@>B9'.VXR$C(&VF4\[$6O.[)05Z
M?E 7"W6?\Z)+XV(350X.3U$FGC<\]8A>4A ]NP1A""=LK6V/N%V!V1EOH/ #
M.*?39 C\4J@I 3+E>H$R )Z"02/GOF+O !S+G17-H5:3@LZ\>.D3U$>O,Q.
MJ&&$TLZ9,?L]R2\^'$'6G=[3HG&>5!<9%Y^633.$L]L!6<)**N#011\,$GC!
MEV)]$.?S*/>)IY?V_90#PLL<; .%@K09<>^0#DO.8 03N6UW0'>>(!K1B]X?
M$$=XV!CAY]EO*##B5-O<LQ,0D8MZ&*)7&#>S:]^OMD('ZL/&;4-?)\9M'&L+
MM3M8.47V=>2_-C30M[0?8*[%I2RLXBE[JV("A P899NMZGHUAGHJT/]0U@$I
M;U =78NKG2BWL#2#?KX("1 $XG3.6+LTX<G+66[]MD6_&TKAMU6./C1$.9I2
M>Y1CD^S_7QDPBS_OX\\N_)P*B2 7P,P!5)9#C1&X @:%SQ &X=M9<R<LGET:
M07L-'!M,^'5?@1)PAQOXHB\K-,C#@_9G N?9-ZS7H\>?GX6S@1$_UN9.OA<,
M@JB.)L\(D^_1  !UNSCD$ACTS;K##XM!R*\CMX6BBD==]RUHC!I27)<?.V*P
M+3%V5M .#7/^8)[\ J*'E/MD'6)R1#P'1/HM6A>MZFW3F$0IPN2KAAVRHZ#L
M53@GZ;JHJ]>LRQ&_WH-BQ)-+#*E W1:/-YEXQ7>!C[)(&<&\RO=EQZ;!>?;K
MGI(9NE+=A*TP.='>20@H5:FV#">[WXD]$C"06@QXW(O@)2.;:]?<6258@Q1B
M=K'L5 \V:JUD-S<^=4NK&6N<WW/'^BH>ZZO94_ASTQ2'LJHF#_#]7M5_285(
MCF0J31P[YIP7\="A]88R;X=;J\[:C8Z6UW5/0LWEJ&N#?@38 IV"2 QW!7??
M(>UA)*\CPEJ5+>P0:GNL8Q7D #DAT?';,-LN/Y*D6W)$$ ,3(-'3!0#J,0:,
MG)PMI9S,?=QL[T?P3UIA:UP%ND'CFO&T$J\ 4>M0MH(Z>)Z]@M.,]IVX&8/A
MIY)(-$C,+HC3:\!MEZ_:!E91-SLPDZWJ R@!Z0JB(E6-:$@-3-+B80$Q\"0+
MI\/X> E6?2!'' :.V>]DZ#U9B*8H_N  -,K'#KVYFV/R"!^RG9XZ]@#+-HGP
M!8RBDJ4Q5PNV'F=1;U^+9G%B:Y08!*4ER74PUH#EE!] =U%YVT4SS=AW R]H
M7_/[49U#.SPEL2DQ#ZAB'U"C.&5:0CV9(1X0!C J,45X9?%!R@H![6,Q 6J,
MQ%M@*4J**@SQG2F H]=9J3@8_X/CP[XL?Z^Y4T0$30>YM%TN1[\'+"/8"N.)
M2G)C)(N,$E^\3&3A(?N(AD1PZZ")KLX+((3"X6+K($12J'LO, CQZ<!J2@IN
M_13J<;/[956NJN-9A_Y#3A?(ZY"#82/5H,TUU1T9K1)R48,0'5@PEN_W.+P<
M'MPQ3R\F(;/!^F=E14S,NGSV"8,]Y$!<TWF<%!H/'"-[/<RL.*7;1=?* U6W
MZ1E<R7ZQ,&I9LZ"G)*E&=K+BTV;<7'@&,=:3>+:&Z2'(RN;USP5J$*ZFTT9V
M&>IO3 ^)%.,#,50(DXPN8)"4/&JU.8?Q(!@4@:?_L=?XX?)XE/CR;Y&[,M0I
MJ?L*0\TEIDR=X9*+"2A"!-%X+:P7-SV_ZZ;BS4,U]PQLQ#WS8B^QSI$X)EY
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
M(*0,:M4\S2 5=2@%L!XED<?G)_WZ)U=BXP=VWA8/"Q>SY=1HH",=<..X8T/
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
M\228<5518QI;1*6<*<02.$AKYC/.+=.E(C#5"<(\Q81/M%L$-DKQ1-D %^*
M <>I/:+(]=8O0?E"456R#='_17P+FH<M]:5^GQ%#*N74";T^A<HT+FDR56*O
M5PE&8#"Y+<Y0I3R&U"[J(;H2SQ<<R:(!<BYS7&KI[5-;;=[ 70DEBU>N:&.W
MKFD7#;B(67*JIQ+QYKX[PYR4LV5_E%X)"XP4:J=.I7M*QY$49,+ ;^0J/VJH
M/H7.@*27$R@J:*?I!D(MG,&;<HN^P@W]#=U<FUQT."R5)-&H[YJQ@"U(I;<T
M!$MKT7/-;I<;%R;;AJS!C&F3;3";U/KO8B;UP86>9^@%7%$2_P@L21I0MSN[
MX*9AY9M><LG1@$T.2<]\6JD'=-^N@O*@B9%P4(NF#0YHKRZFX*Z3PC'REL:U
MILU"R5PAG^*=N(USJK?@5N1MSY'C9.(S!D?F7\CB#/!"(MK>0^&N@ QKYL7\
M:DC9QA=BJDK:"AEH [T.Z75B+B]"+3?%C]U!T4'B@/MO2W6^HO>#.YI>!$)]
M:"=PA_P(?VS#D*Y .J#"NX2ADE*[M>99]A,[OE([.J#<5JX"6O=UD:,$RROE
M+5Q5@^#+.8V56M<6\2)L94=XM8!L7$H$V!9>IZ<XK^L&*X+ESCR4;-QE#INL
M8\EL4(:6>?T!)UT=S55?1!,+V1[J9@ F-'?#E,XMJ1R)<>'8T3Q' V"=WS7<
M6$XN3T@J!/AR"-LAW=MM)-6*%"GIHC9L8$^U'P<G%X2I;X,$)7Q9 .1Y%W X
MHD6F9A].-I=5T5T"LDE]&[;'4BQ3(1:V$HV.29=DIW31KZ2KES0?F.W]?!4;
MO%W-=V9["?S[CI?Q.FJSD\KRYPQDOK7*LGH *0P]98B\D/ME;[<4>QO>B9*V
M#QXWX!OZ?4,?9! .^"+?ZC=Y721\<>!;0C3??'2)SZOA.]2QFVVMA][G<RK&
M#1*A.($[KP4QP9O-(8^F'<4"2;OM$@1]$MF2\I8FL(DDI?7ON'Q#ZD*L\\Y
M/&[!115(G*+?LH DZJY\P_H'ER!BB;@I3-T1FT'+DX[ZJ ")4M?CD!PQD808
M>$D383#AZZQKSB3Q2R\7L<DQ+ 1X&NWO1*'@.Q: M=OPRN+-)-,PZ#V8H8^F
MM"X\>1"B3JV\FC#%%VD>[T%/=*/=*^YM*KXK?5G=J4-P\#LZ"WCEKMN=9S_K
M_2$+UK_L!18<4 UQ(+V&M:SML$;U/;%6#HT/PM=U%OW^TO[F84N>98.QE>/5
M?"O&%WH_\XVYGWF2"]YSG.MX#9BW9]PD'<0"%%NCP0YB"=OFDQ='C]*/I)EI
M2)2(UP>QK EWBE/JE02)5])<:!PMMG6.<M-EHF\RS;.4PP$UCZ'A4X_^R!!)
MHAYP ABP"AQLIDO;Y#79IB63N5PM7.&Q-K0ZN6#N^\M70+G]B9:!@@[0:+!!
MX"@AULS+EW-B)T#;F8]U08P(A/;CTDLMMSVG+=)M%HA!//L0L(7@Z?%C:W:+
M2@GR^_M-/[7GG)V'+OZ8T&;2DN/][T.$_#=E&*?S_[]/+3:+BJZEZ":R_7;_
M]<;S[R=>30BYY]3U'1T;>QE6<J-67+,4)HI#1I[C\'MZEVFXY5 0=YZ%UK3#
M:KUA'HN]3G*.=(Q)B6V*B&.<A2N5DVL% Y&E,T\D#2WT:C=C01B&%7!RGOTO
MEZ*L]T'<>C="GK-0)J7$<A\IN:S#K;N8IE)N&V5&V])1[WYUM.Y*T-8[]+UH
MS(:1S7DWXO%-BJK#/;YJN/"@TL_A_794+* &]+TW+>0#3?=BXMZ>M@M3O.70
M:L)O.K[/F8,-0EL/UH'MY3%I7L );J-JCIAQD^0RKB-D!<^8F/?DBN=)-Z#Y
M>J)9;20V0;Z:;U\<;PE=9&])^YI4168'^?,*Y#^O0/[S"N0_KT#^\PKD/Z]
M_O,*Y,^X ODJ%O9?S5?C_X)6,9PBNBMQVFOPJ0$H@_O:]OMK;,_4-!-XPH<0
MNRWE'"%LVMC3(><;%4\6K4]TPAB^2Z;2J)E"1\EI);EQ8HMS:;4B03]],!G[
MSAWE&AWMR:D=((R=8ZW8,"HWKQ U%1_B$OBT!6ZB"4YD0*0]^>2VEK7VA$_@
MXN8O0[#B"K7/W\FN)\'UO'2U6U.EDKV\)QE0@GVA$B.LLL?=NU]345-H&*^3
MY3T,MU+QQUB!LM;OO&8'2\, Q\WW+Z\&VEF(^8TN$I;@FKR<@A:-=5;>R>R1
MCB$<GN6:HF1(8^,R]XV&&4U'5Q++0^QA#*79<GNI<>7;#FR5_!8CINCE!55I
M^$,,CDER)8BTG!,,S.6D%%((;9[V<G-MN,OT?IN7.,/(8)F !\ARP\?*&(S#
MM9CV-X,?^0@Q@2(Y*H3VE 3]T1OBP69I)2^8O]+&FUP?A>\) 42/FW;T"K>X
M*RP[)T%%,NC8)V=H)[3RC&T FW!IE6NE3RP?FB9!82AP*<;DR+=_Q.\V?.=0
ML@-*<DF0<GKBX4T%97)3NYK_U+"**9(O$$EARLJXV[O\=Z2=O VU'%'O#WRD
M*M?N)#(>3Y^WW [-<O.KY_\1>BM]WF1/^**3DSJ1N6F,ERN59:JF4,2^++#F
M@]\+O0U'5008@*V(^^AE5R?Y[3@8>%\DC8<<C,>(^^9BA+A[S,E*$Z ,7L5;
M728?8F6/N0WK]Z+"4]Q=RZ)'Q8+DB:^;)";=^^""KRBI8**D/A*AQ/QJ"NB)
M1AM.[K*YX\@X6!8#AA[91!QO&-41W>--;9X9,8#Q_:"<XFX%%UDP \DEEH-D
M+((=YIQXR.R;)K<Y<IKTPBRM=AI,P!R#,G93$J9BJ!&",83!K?%FUPK2K?=F
MU))20NE>1VTV+_?_/./)%3K11L@XB'U_DK."HGGT< AB\TW7X>(O4C*%#*C^
M+S33MEU_9)[24LTV+Z2\SM6B!(D';7#-ME8ZI$0G=Q+&C8I;*F?])%NQ%Q6&
M[3!^]6@AQ]0YN_)ET[8LG-IA.P]3^W;J>768M-+]/)C2(VG N-1<$.R,A_R#
M!LOB;5NTVDA("8TU?!E,J#$CA2II44P^D#/2S;)?&DSPPR)#UV(N3O:&RC6+
M[!V"^OB7UR_>O'O"!35Y=O4?2=JQ!TSG6*R<GMI0K&?V1-J])]A_4"L2RW7>
MG_ YV,.+R8#1_R'Z>3I#"JR8U'QUA[/#ALUJ+#,RI&=[)D[19MH(/QC^6C(=
M9@X3V1'G;,W8,.MJOMD5;2^ZQ7X%P&ZES]FLEWAVO&DOL4YRUIM)LN3;T&(-
M\P;U;_6DBX>IYB:EW,/,<4\!;K'H0O,%H/S0D8"+].FXRB)KE/7LGBIB9%7G
M^T]O&Z0M4 2:IGU ZECXSXX1RN82B:ZO"_G%1 <LZ9+KOYI6R^#:N+RP$NG*
M($ B.OAF$!][38G$IMA-N-0G-J'5C.KI3F_OF?>AWZ7&7K1RN[H\'2X1H5*"
M/5W[BL/:*B[..S,*@5^,;35_! -LIS%&\>]+$F3A@*MX+5/@+> &(=Z9G.:0
MAIEL4:DM[#X1+.$-B*V(D]Z!@\6:GG[UNMSTVIARU104^-_F;<$$B?VWJ\KD
MXX?K?%\. 5P$+3U":F27#2"CA4K;G8A5"L=*'\0L;=1L B7 ']JFXLBV_)WV
M6^2&3-+H!1TR#7NTM?/L\().L821*$@B8+_.T4*F4)Y<L=6*MD][EW<Y>V9:
M'\)<0HGPYQE61K-$I(T:;H[T5P^9]VP8?RY9W.@62+J+HX1.,C?I3KYN_GSX
MV--)( H.8VH6K-U_ZW#3F PPFGG%3I'D+@'S/#&_Q&K0B24RE!?2P:5CIE87
MI*"0NDLYUXM9#V3L&G@UW^I/VAX.J.2GCR6II"_I3F@@W>N08-5BS\ZN[271
M=%)PS$^9O(\9F2W&BM_4CG*'8^,KRW.""\SHA#E7WX:10A(8<6Y%?:%7B1-3
M1W%NAK6MO'9]7:[4IQ]/%)E\DA<8G])XLJ0)/@GU!#ZQ*$?>##8B(EDA][D+
MJ2W:]H8R>^E^2<F36C%+TCL?0[7_B74M@K>"?C1W,Y* "=DN<95LH.H0TH80
M3-/?FV6PU;1-/MZNWM>KQ+M62L%(9/GLJ!-34X@[38(*\-FT&%(4J26ZX%!V
M/KD.@=SU:X"H),L(&PA4,?DIUL+&2_#"Z8I(T6OFV2KNZ]@SI$O20C29P:);
MNYV@+4?AG8A)K9:VLTOG-FTS%EK(\I5V$>O4!J(M]&XHOJ5-,3(Z"DT[Z%4B
MIM1XPJ4[-K7M3 +/NMI4X6#KA]2I>W+60:9%2"X;!D7#I1ZC,P/& OH@#R5R
MLSS5D4U$IE1WRJEQTKJ,L2<E#ASS0>R2.!^$N&U8#^@&Y((+-H?8C,,.<3<I
M4<Q.;C/6N5FI95JA)AJC3)7D!V,'),>K0S)W]^-[>X MW'5BO#7JQ>Z#EX+<
MAT1[%!?GL#>8?ECG57 ( Y.>>S6EXJ4MT8/# @YFZWWH2\R>:U))!L$+*?-:
M??#V@CUN 4]->6(J*,A%$W4:&'2'%ID?)O(=R$'ZAVL;F^_#BP@>D_/LIY"A
MU<3+OQ(Z"#>9][NT7X*><FD.+C5NN39H4Y<G94<$@@E3A).E"9L#BU"CD<I\
MAU4- \_4;8Q/FD9JHUZ[CNZ[G5JG'U%BK(PY39,S2L:SV,SOV7Q3OFL-3KP+
MM8M3>L/#1TE"#Q0) DM*W!.DR&!3^J;W@XN5DW;6,<>R-L6A0E!PK&.=4KC,
M]3P+L(1Z+5O-(-W?0G!^?*VSZ4JD28F@LA3](-1J)>-D='ZJ/'8<I-=PBXG<
MQN<9H%S\.6R_AN+30>E;O<'\FG7L16ZF#;J4P81T Q_> A'*3^*AQV-%0LU<
M297&9Q:A*WG@+9S4RU>LQ-T1!20$5 @C;I73*5]JB)09>V)L*;%PUDW(:'TW
M0)6R(&#-)DNB]#;U0?9=[J=426]:M_&N@QJE%W7K[5GJ&4L:#JIOE]-@0]="
M@>0,(1ENJ#WHN5X:$N)LACZFDAOD\3(M3)ZLQ1XFZ=SRE0YAMZ2_0(&J!WL%
M[H+QYA^8P#/%C)X2?WP)<OO'[X'&-NZ&[OHF2']XA!V>PK< ]QK[J'][??7H
M*;P9'__Q^STHY'^3^K_*K>'5B_.OGC]B6:@?NF:/0Z(I"01-?V[!4G,M/@"_
MKYNFTP\XP:%I/Q!X/_Y?4$L#!!0    ( .2 2U)X!.L+?P@   L9   9
M>&PO=V]R:W-H965T<R]S:&5E=#,V+GAM;,U9;4_C2!+^*ZU\.9" A,#<LC.
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
MJ02L)6#>T$8S;]9;8<79B5;WH-UIY.86WC>>&JTI:A?%*ZOQ;8%T]FPLS)R
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
M1K&F;8[&.]#[2FMW47R"^?^P_0]02P,$%     @ Y(!+4L[>]QIH @  !P4
M !D   !X;"]W;W)K<VAE971S+W-H965T-#$N>&UL?91?;YLP$,"_R@GM8950
M 4/^-$J0DG;5)JU2U':;IFD/#AP!%6QFFZ;]]CL;PC*IS0O<V7<_WYWOO#Q(
M]:1+1 ,O32WTRBN-:1=!H+,2&ZXO98N"=@JI&FY(5?M MPIY[IR:.F!A. T:
M7@DO7;JUK4J7LC-U)7"K0'=-P]7K!FMY6'F1=URXK_:EL0M!NFSY'A_0?&NW
MBK1@I.15@T)74H#"8N6MH\4FL?;.X'N%!WTB@\UD)^635;[D*R^T 6&-F;$$
M3K]GO,:ZMB *X\_ ],8CK>.I?*3?NMPIEQW7>"WK'U5NRI4W]R#'@G>UN9>'
MSSCD,[&\3-;:?>'0V[*9!UFGC6P&9XJ@J43_YR]#'4X<YN$[#FQP8"[N_B 7
MY0TW/%TJ>0!EK8EF!9>J\Z;@*F$OY<$HVJW(SZ1?D5+2\/&1[VK4%\O $-1N
M!=D V/0 ]@X@8G GA2DU?!(YYO\# HIF#(D=0]JPL\0;S"XACGQ@(0O/\.(Q
MQ=CQXO,I_EKOM%'4!;_/,).1F3AF\@[S@88C[VH$64!M^=#R5^I5H]^JX%F6
M';N%;GF&*X_F2J-Z1B^][4RG"-^BXJ82^^&4C.MR/ HX67 -A:QIMN@2*P&F
ME)WF(M<7"_B)7/6W E13;':H7%W7C>R$L>6-X -<^5$8687!U)]/8RO&,/'#
M&;-B HS$Q(H3B/PXFL%CB33_A2%<XE]-0X*P*S^>S^"MR@8GS=F@VKL1U)#9
M&/H^'5?'*5_WS?W/O'\B[KC:5T)3+0IR#2]G$P]4/W:]8F3K6GTG#0V.$TMZ
MJ5!9 ]HOI#1'Q1XPOGWI7U!+ P04    " #D@$M2:VH1_K8"  #V!0  &0
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
M-+Z>T4G1_1W2;ZQJ_7][IRS= GY9T[6+VCG0]THI>]JX!.-%OOX74$L#!!0
M   ( .2 2U+N2.BNI04  & 0   9    >&PO=V]R:W-H965T<R]S:&5E=#0U
M+GAM;.58;6_;-A#^*P>O&!) J"79LN0L,9"WOFQ]">J^H!CV@9'.-C%)=$DJ
M3O;K=T?)LM(Y:MKMVX! %JGC\;F[YX[''&^4_M.L$"W<%GEI3@8K:]='PZ%)
M5U@(\U2ML:0O"Z4+86FHET.SUB@RMZC(AZ'O3X:%D.5@=NSFKO3L6%4VER5>
M:3!540A]=X:YVIP,@L%VXIU<KBQ/#&?':['$.=H/ZRM-HV&K)9,%ED:J$C0N
M3@:GP=%9PO).X*/$C>F\ UMRK=2?/'B9G0Q\!H0YII8U"/JYP7/,<U9$,+XT
M.@?MEKRP^[[5_LS93K9<"X/G*O\D,[LZ&20#R' AJMR^4YL7V-@3L;Y4Y<8]
M8=/(^@-(*V-5T2PF!(4LZU]QV_CA,0O"9D'H<-<;.907PHK9L58;T"Q-VOC%
MF>I6$SA9<E#F5M-72>OL[ *UO!'L&7A9&JLK<K@U</!>7.=H#H^'EC9AT6':
M*#RK%88/* Q">*U*NS)P66:8W5<P)'0MQ' +\2SLU7B!Z5,8!1Z$?NCWZ!NU
M)H^<OM'WF2S*#%Y@MI3E$DZ9*])*-' A39HK4VF$WT^O29QX]$</BG&+8NQ0
MC!] ,:?TRJH<02W@C6*&BAQ."U4Q%II[6UEC"1/#Z2"^4D:RL-D7F=X=.;V/
MS%JD>#*@_#6H;W P>[]".%?%6I1WL!(96!HO5$ZYRANK#@@J !NA,T@INNP$
M(HDL25Y5AB3,X1'!3+&X1MT&Z^N98 KGE=98IG<[FS^*O$+X,+^ RR\5F9E3
M-+[Q=></PY(T-G)9"HL9"-,&L1/<([BLM(+(]WS?AR<P";S1.(0@:<:A[X7C
M*;S&6YF*$J[0* BBR'V-O3B>0%(O'7MA.(+?%-6_$CY159EXT["6FWBC.(:
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
M\.C2PX5Q&%C5^TO:4EE4D?^L\8XMM-N ZRNE[&[@'.QO[;._ 5!+ P04
M" #D@$M2M8 [-U@%   %#0  &0   'AL+W=O<FMS:&5E=',O<VAE970T-RYX
M;6R-5UESVS80_BL[:MK:,S3%FY1C>T9VG#8/:3QVCNED\@"1*PECDF !4++Z
MZ[L *4I.924/(D%@CV]/K"[60CZJ):*&IZJLU>5HJ75S/AZK?(D54ZYHL*:3
MN9 5T_0I%V/52&2%9:K*<>!YR;ABO!Y=7=B].WEU(5I=\AKO)*BVJIC<7&,I
MUI<C?[3=N.>+I38;XZN+ABWP ?6GYD[2UWB04O *:\5%#1+GEZ.I?WZ=&GI+
M\)GC6NVMP5@R$^+1?+PK+D>> 80EYMI(8/1:X0V6I1%$,/[I98X&E89Q?[V5
M_M;:3K;,F,(;47[AA5Y>CK(1%#AG;:GOQ?I/[.V)C;Q<E,H^8=W3>B/(6Z5%
MU3,3@HK7W9L]]7[X&8:@9P@L[DZ11?F&:79U(<4:I*$F:69A3;7<!([7)B@/
M6M(I)SY]]:!%_GAV3785<",JBK5BUETG']FL1'5Z,=:DQA"/\U[D=2<R>$&D
M'\![4>NE@MNZP.*Y@#'A&T &6Y#7P5&);S!W(?0="+S .R(O'(P.K;SP):.7
M3.+9S!I]QS:48QJF4K)Z@7;]=3I36E+"?#NB+!J41599])*R+MU!S,$Z&SXT
MUL%3DX]<;PXY^+C$CTN$N2BIGGB] &WBU!<5_Q<5:#HVH63UYK=?LL!/7RM0
M5K-H=I5 FL_!.D+!%YN[6)SMK::+A<0%TP@?6JTTJPNCC"EC!\4#JQG*/B;^
M!/S R283> 5AZDYB^(-\25+ =X(HACARDPQNGU#FW+C\)'+B)#Z%('7C"*BX
MYL@-M9" 3PV7AB3Q)J<0>VZ0_5A_X$'F3%*/U$>1FX:0NKYOL/B9D]%GK]GZ
MZ24!H>.'L>$)W70"L9L8:7X4.REM=Q%3L$*UPTEMA=9:V-U>;N8$5@K!\#*"
MX1D8P21S?#^#$_\4WI'WBX+;,!"K"=56:*?#V0]?KT8!@T9(RT1*#$%;/V?;
MX="@1(5$SRF1>6VIYZUN);J#'?]'+Q%R5N9MR<SV; .L:<J-]7@-1,$K>S#O
M8D7"0)K4Z$WX'HU[I&SBH6SBHTD^9.)TA9*N!Y@JRO'>@$\FC<BXVPZ9P?F6
M<0F?6=FB^K[4U#8?#Y7:<12VU(SDU2!YOY04+/I,)S#(\B4T*+DH@"Y(A?9@
MC>2LG0=;96OV606OMZ:RWE2V,_4<_D8FNTYZ(&UM\=$C@WNN'L_F$OO(^&X$
MOT+@IO8YH>?M-N@%%7^!=0$;CF4!GAOY=.RYX:1[Q?O$*T$IP4OJ%E3:=- ]
MGLG3*"LX(0=L"*DZA<3UJ(!"^D5'\B 9\B Y&H&_Q#:Y[NDEN5791;?O7MM&
M"E_ME04?\4G#=4D4WPX%_*@Z,P.=JX;E>#FR,90K'!UJN.J%CON[@ON'3T=:
M[#:==W:]V%-CV]$R-PF'AAI%"<2!ZTW@<\=L.WSP>G@?[J918)MIXO](+:54
M3#WY%<2^&Z1P)'[I$+_T^/7WTH!A\J=6>"A$1R7^=(BV1=C%QY9M?^?G^SBP
MPV&:7LZZ"W)N?'>PFD7=![M6HN0%ZY*17I551 []0#RLZPTGMOV*5M'EI4Y_
MNI)O!'5DDB1QA76+YAYRPB2V[]@SP0F<*$I-/9# ?.G0%+JBZ;HQ&!QJV 5@
MO2"G$7CRA1\Z8992-CEIE-&5YL1I!@\T!M.A PNL"6_9L;&")DQN1A\S*M/]
M[$PHTX+,":GL@\CQ+(HH<)+$7&QT.\:9N?0CW_$FWL%L&>^-IA7*A1W %46@
MK74WI0Z[PXP_[4;;'7GW!^$]DV25@A+GQ.JY*;5NV0W=W8<6C1UT9T+3V&R7
M2_J?@M(0T/E<"+W], J&?SY7_P%02P,$%     @ Y(!+4HEWZK-."    AD
M !D   !X;"]W;W)K<VAE971S+W-H965T-#@N>&ULS5EY;R.W%?\JA.IM)(!K
MS7!NQS9@>S>)@28Q[$V*HN@?U(B2V)T9*B3'1S]]W^,<&JWE6;M%TP"6- ??
M_>,[Z-,'I3^;C1"6/)9%9<XF&VNW)_.YR3>BY.98;44%;U9*E]S"K5[/S58+
MOG1$93%GGA?/2RZKR?FI>W:CST]5;0M9B1M-3%V67#]=BD(]G$W\2??@5JXW
M%A_,ST^W?"WNA/UE>Z/A;MYS6<I25$:JBFBQ.IM<^"=7*:YW"WZ5XL$,K@E:
MLE#J,]Y<+\\F'BHD"I%;Y,#AYUY<B:) 1J#&;RW/22\2"8?7'??OG.U@RX(;
M<:6*O\JEW9Q-T@E9BA6O"WNK'GX0K3T1\LM58=PW>6C7>A.2U\:JLB4&#4I9
M-;_\L?7#:PA82\!>2Q"T!($SM-',F?6!6WY^JM4#T;@:N.&%\XVC!FMDA5&\
MLQK>2J"SY]=5KDI!/O%'8<CT$U\4PLQ.YQ98XX)YWK*Y;-BP%]CXC/RH*KLQ
MY&.U%,M]!G/0J5>,=8I=LE&.'T1^3 *?$N8Q[X!"5Z\F][,1=8+>3X'C%WS5
M3^2#-'FA3*T%^?O%PE@-4/S'B(BP%Q$Z$>$+(JY49:RTM:BL(6I%;K2ZEVZW
MP&8EPT =BL\H;\P%)V;+<W$V@<UNA+X7D\XF"S:)1T@+1I#I0E1B)>V,Y*"-
M-%8L416[$:!$ 5M>5FLRE14\4;7AU=+,3LC?!-=-W FX790+H?O(.?_C5TJN
M:JW!MA/RG5@*S0MR1/S8P^^(IE&(%QZ-64CN++>"9,PGC/I>2J9IDLT([%K8
MDQ7Q ^IG"0E@;>*1F 9>0OR0LB0E84KC@ %7ZD4,=%D)D+C<"9SZ*65Q/"-!
MQ&B*G'V@\V>MQ&D4P3L_#4@$ZO3R(J#)R#0,&0VS<$:F+(6O@$91 +]I1B,/
M+Y(PFC4V)"R"BVGHT129.P-1RQ&,1#U&HE&,W J(2RX+R5T2;$/S2R4Q4,X*
MTUN+M[55^HE<*;U5&DU$_-[BA56.\DJ56UX]?0/[=K42+J7NUNRA;@?'0^@;
MU_H"\OU!O8_OCLFJ5=?TZN:]N@A-_5S=/_\I97[RK2%R!,$4]1>]51TK2AZX
M(?#7X-F\&KX'=@NW;S !X/QN\-5 ;F> ,)144+7!-1V[UA("^P ^'1Y[ADL)
MQN&.D@AM0.XT:SX8K1R #Z13P!]^G,?8MRYW:=&JU?'7HN"('W"R*+>%>A("
M3%'Y9Z*V&"XH# FP"9O/'HOG>6/ S&DJ;*TA@T'HJS4PBG:Z'-2I8SA@\[V
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
MEDKH_?2/Q\%%Z^#".KAXP<%-EH'=F9I550NJ+!>4/8!4>O<K^5Q6_9!QA)Z
M".F)KM]&U_="+<@C+>OR(!X3G<H!);RL"'O23U!%A&(@9$ZKYX+U>^B?1]$[
M3Z2#-M*!%V=>TR(U--TOH%R#\'$S;#&'7O*70JN?4$]G:%F8JB L13<_:UK9
M1-Q_T=/1G8)2^IQ=MLXNO0OP.CM#WR1D=8&^T R>2[(?NS<ZNB-&;9BC;GF^
M*RO!'\#NT2Y)CR,G2='ITQX?*&!\PL0? >]0BS%VD6(OV)6NN5J!0)^)2+=$
M@(UUQ3-E.WL2T+]H09FMVRZ\."F,_5KX9WAQPAC[9>R5O/C!\7%:G$;&?@G[
M!5IV<MJ%%B=\\> -:'&:& ]/28L?O$NY.$&-_:JW(*S.]&M:OU6U7OVE7V"'
M>?F]8G$R&8].SPIVFHFC$[)R!/QXL6"GMM@OB)U)Z5XJV DHQF] BA-,W#LE
M*7[P_G%2G-1BOQK>UH)134FC7+?TT;3E;]8(=L*)^V] AQ-*[/]$?"4=?O .
M->(D%OM5L ,=OU =3B_QY1O0X102^[\D7TF'']Q3'>'!:;D$L;%W A+9<UYS
M<&Y'VWN'67/:=M.;2XL%$1O*)"H@TZ;1^5#O=]'< S0=Q2M[]EYSI4_RMID#
M24&8"?IYQKG:=XR#]C9F^A]02P,$%     @ Y(!+4N+YFO)W P  EA$  !D
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
M]FWCS0[*5$MK$QS/[:S<:VF><F.GIY\8E^@[2PM -\!4(<&47"OT 9TK!6;
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
M=X[.C1&%K8RY0U# *N8ZW7#GH_D]Q6-R.C\;'^#[)UPR/C;W&LDYM5"?7HK
MD67-N$(A7<%4;KT-;&5ZSY"^:+%-3JT+H>$,G#QN* %?&0'XOA)"'U[,!/EM
M3_]_4$L#!!0    ( .2 2U*8)O0=  4  -T8   9    >&PO=V]R:W-H965T
M<R]S:&5E=#8S+GAM;-5978_:.!3]*Q::AU:"P1_Y(!6#-,/L:BMU5J-.N_M0
M[8,)!J))8FH;Z/37KQ,R,<1.8*4*[;Q '.Z].;XYOL?7C'=</,L58PK\R-)<
MWO162JT_#(<R7K&,RFN^9KG^9<%%1I4>BN50K@6C\](I2X<8PF"8T23O3<;E
MO4<Q&?.-2I.</0H@-UE&Q<L=2_GNIH=ZKS<^)\N5*FX,)^,U7;(GIKZN'X4>
M#>LH\R1CN4QX#@1;W/1NT8<I\0J'TN*OA.WDP34HIC+C_+D8?)S?]&"!B*4L
M5D4(JK^V;,K2M(BD<7RO@O;J9Q:.A]>OT7\O)Z\G,Z.237GZ=S)7JYO>J ?F
M;$$WJ?K,=W^P:D)^$2_FJ2P_P:ZRA3T0;Z3B6>6L$61)OO^F/ZI$'#@@K\4!
M5P[X7 =2.9!RHGMDY;3NJ:*3L> [( IK':VX*'-3>NO9)'GQ&I^4T+\FVD]-
MIE2N^J#X!+]]WR1;FK)<24#S.?B8;YE463D>@"G/UCPO!WP!SG1[=\\43=+W
MVO_KTSUX=_4>7($D!U]6?".UL1P/E9Y$ 6485X#O]H!Q"^![%E\#@OH 0PP=
M[M.SW5%T[#[4J:OSA^O\X3(>:8TW4^")Q1N1J(3)/KC=Z@G36<H&>HT-I$X,
M^/9).X&/BF7RGXY'DOJ1I'RDU_'*7'G;>_FE5[%ZMQ,<! '4L]P>YL<V0[[O
M1:/:[ B45X/R.D$]:&Z\:&**9UUZDEPJL2DIX *ZCQ0< O4"KP'3-D)^1(@;
MI5^C]$^FKB1I7%PPPUP73-^&&40P) V@MAD*D4>0&VE0(PVZD6Z$T,!T*NO5
MU <TXT(E/YG&SZ4JUN$5@KB/_5$YJ2M,_'Z 8+'"BM51WBQXWM<%5ZY963'3
M%QTGU=6;YC$#FJ,@%FR>*)!R*5FYN*_L"*[\!/;$(<$>;.3'-M,V7@C=^0GK
M_(2=^?F3YX/8SI$+9V@!()&/L-_ :9MYA'@^=N,<U3A'G3B_<$53%ZJ1];@P
M"#TR:J"RS4:>3_R6=1#5J*)N5%KQY4:\@+LD327X]L"R&1-=Q0E!(RCP4A41
M':@8>NO+I9K!$0]]#S;+B<,LPA'RW"\<&9U"N#-#GWB^'"@FLE/+I8IS!"#P
M_"8Q'688!7K%M  UZH:ZY>U6YU4-[FC\K%^<X=%9)#5JA;R+D=2(#SJA/F^
MI [1\U'0K.D.,[W5&+74=&1$#W6KWODDM54E"*%-4MM,[S1@2_5$1GQ0M_I,
MN5AS014#=USO8L_BIE$,-+H8-XT@H&Y%> O<C.P"BD/4W#@ZS (_P"UU"1M=
MP_#7<+.*<[2&(/%PDYP..Z39&;8A-6*(N\7PB6^9T/UK?CX[\4&_<[&&!QM-
MP"=:GO\_.ZL9'.W4 JMP.JP"'+6]<2-GN+O[.I^;=EM%/&O+[K#2&@#]%IA&
M '&W #YL\B1.UC3]#\0TVH&#BQ'3" $^(01O@)AV8X.(M>UT6'D!:1%T;+0,
M=[<_YQ/3;G3\D#1[-(<5)KBE1<-&_/ )\6/Z?2V26 MZF=E[MN92Y_H,?A*C
M'^1B?1$Q4D#>?%]$[(:G68\<)A[!+2=6Q$@9Z6Z);I<LCU_.KT7DX(2.7.Q=
M&Q$@OT@$JCA'1X 1A$$SZ[:9;S>BPX.SY^+@_X&*99)+D+*%=H/7H?87^[/T
M_4#Q=7D</>-*\:R\7#$Z9Z(PT+\O.%>O@^*$N_Y'8_(O4$L#!!0    ( .2
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
MA#AB#3C#?IX](L]MJH54./P#T[ ?:H_)\[!OGA.@&@F&Y_G!QKV1"\8=C"%
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
MI:^O57,-- %A O3[)>?JI6/NL,U_%K/?4$L#!!0    ( .2 2U)=T>+LY0(
M ,('   9    >&PO=V]R:W-H965T<R]S:&5E=#<P+GAM;)U546_:,!#^*U:T
MAU;JFI 02"M  MIIE58)M>OV,.W!Q(98=>S4=DK[[W=V@D<AH&DO8#MWWWW?
MW=DWVDCUK M*#7HKN=#CH#"FN@Y#G1>TQ/I25E3 EY54)3:P5>M05XIBXIQ*
M'L91- A+S$0P&;FSA9J,9&TX$W2AD*[+$JOW&>5R,PYZP?;@@:T+8P_"R:C"
M:_I(S5.U4+ +/0IA)16:28$478V#:>]ZGEE[9_"#T8W>62.K9"GEL]W<D7$0
M64*4T]Q8! Q_KW1..;= 0..EQ0Q\2.NXN]ZB?W':0<L2:SJ7_"<CIA@'68 (
M7>&:FP>Y^4I;/:G%RR77[A=M6MLH0'FMC2Q;9V!0,M'\X[<V#SL.O<$1A[AU
MB/<=^D<<DM8A<4(;9D[6#39X,E)R@Y2U!C2[<+EQWJ"&"5O%1Z/@*P,_,UDH
M: AEWB_0@F-A$!8$W;[4K()*&?0930EA-M^8HSO1-(W-_MD--9AQ?0XF3X\W
MZ.S3.?J$F$#?"UEK -&CT  ]&R3,6RJSADI\A$HO1O=2F$*C6T$H^0@0@BXO
M+MZ*F\4G$6]H?HF2W@6*HSCJ(#3_9_?>U0DZB<]UXO"2_\KUK^E2&P5M_?M$
MJ+X/U7>A^L>H,UU)C;FV-8&@3)*N@C0@J0.Q]_UU$@^R&+2^[F;IT"K+LL0;
M?2"8>H+I28(/E-3-198KN,MY7=8<&TK@"L)KE+.FS4A-D9&(;-5T:6CB#'8U
M]*^&PST-AU99FEYU:QAX#8.3&F8UXX2)M4URSFM"X5D3!FY*U1:ZJ^4&AT2B
MJ)O'T/,8GN0Q/9*^KO##PVRE:7?XS(?/3H;_)K5&MEBN2FQ;U,IW>^6[G6Z[
MO:N0V4&;];(TWJOCH5$2]_?XASO/84G5VDT)C7)9"],\'O[4#Z*I>W_WSF<P
MH)IY\A>FF6[W6*V9T(C3%4!&ET-@I)J)T6R,K-RCNY0&GG"W+&#(4F4-X/M*
M2K/=V !^;$_^ %!+ P04    " #D@$M2$U2.A&P$  "M$   &0   'AL+W=O
M<FMS:&5E=',O<VAE970W,2YX;6S-6%UOVS84_2N$T0$IT$8B95ERX!A([ SK
MT'1!TFX/Q1X8B;:(2J1'TG&\7S^24B1;HI1X>]E+K(][#L^]XN4A,]MQ\4-F
MA"CP7.1,7HXRI387GB>3C!18GO,-8?K-BHL"*WTKUI[<"()3"RIR#_G^Q"LP
M9:/YS#Z[$_,9WZJ<,G(G@-P6!1;[:Y+SW>4(CEX>W--UILP#;S[;X#5Y(.K;
MYD[H.Z]F26E!F*2< 4%6EZ,K>'&#? .P$;]3LI,'U\"D\LCY#W/S*;T<^481
MR4FB# 76/T]D0?+<,&D=?U6DHWI, SR\?F'_V2:ODWG$DBQX_@=-578YBD<@
M)2N\S=4]W_U"JH1"PY?P7-J_8%?&1M$()%NI>%&!M8*"LO(7/U>%. "@H >
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
MP.?0V)Y<H2(T.]6@^^D5G'PYA2\&]COEA20LD0-7:6UF!S>N=8PK'<$'.OP
M;CA3J82O+,%DD\#53C6>!2O/QL%!QBN,6Q#Z9Q!X@;='T.1HN-\_("=L AU:
MOO"S0#_><?W4.5@2D?P]P!PUS)%ECCYA/H,Q+BACYLS&)",LQGWG4)&U+9FY
MY"^C( JCJ#UP7]:CLVOF^V'@]1JS#:WM1FO[H%;MMKY8#/ UMMD&@BB$:KPW
M:RJZSKJ,3MC=TKIKU&_OU]EI=':.C*E.QT\"VMG9/8@BK]O;$KG/;"/N&T*[
MC=#N0:'30@N;P82WSN"G2EKP>(/Y#,6AQ.HUW+W_G++]AKE_5'AU%7\NJ, $
MDD*8,)O"LT1!>;+OQO9W<S+T_"C8'T+?>Z^!WI&G_4L+$'#-8MT2)9I"5XU.
M]U8T;T?/N>]YT98<=ZTZYR@6MFE)B'G!5%7.FM6F,5[:=K"U/C8-TU;]=YJJ
MV]X0H6^^A SGFM)K=;4F436P:J+XTO: &5>ZH]AAJIL^"F.@O\\Y5ZN)V:#Y
MC1C] U!+ P04    " #D@$M2X3DO?R4"  ![!   &0   'AL+W=O<FMS:&5E
M=',O<VAE970W-"YX;6R%5-MNVS ,_17"Z$,+;/$ER384CH%<=NE#@:!9MX=A
M#XK-V$)ER9/HN/W[2;+C9<#2O=@B19YS2%%*.Z6?3(5(\%P+:19!1=3<AJ')
M*ZR9F:@&I=TY*%TSLJ8N0]-H9(5/JD681-&[L&9<!EGJ?5N=I:HEP25N-9BV
MKIE^6:%0W2*(@Y/C@9<5.4>8I0TK<8?TV&RUM<(1I> U2L.5!(V'1;",;U<S
M%^\#OG'LS-D:7"5[I9Z<<5<L@L@)0H$Y.01F?T=<HQ .R,KX-6 &(Z5+/%^?
MT#_YVFTM>V9PK<1W7E"U"#X$4."!M8(>5/<%AWKF#B]7PO@O='WLW ;GK2%5
M#\E60<UE_V?/0Q_.$I+X0D(R)"1>=T_D56X8L2S5J@/MHBV:6_A2?;85QZ4[
ME!UIN\MM'F6?E2HZ+@2\A651<-<I)N!.]L?M^G:]06)<W, 5< E?*]4:)@N3
MAF3I'4B8#U2KGBJY0!4G<*\D508^R@*+OP%"JWL4GYS$KY)7$3>83V :OX$D
M2J+'W0:NKVY>@9V./9EZV.G_>F+KM*T@)DN^%PA+8Y ,;+C)A3*M1OBQW!O2
M=K)^OD([&VEGGG9V@7:MT1X D()R$/"O'O<8<X_A;MPQBZ-HEH;'<^;P;"!J
MU*4?>P.Y:B7ULS%ZQYNU[ ?J3WA_+>^9+KDT(/!@4Z/)>TNM^U'O#5*-'Z^]
M(CNL?EG9UP&U"[#[!Z7H9#B"\;W)?@-02P,$%     @ Y(!+4GGRH'SF!
M51D  !D   !X;"]W;W)K<VAE971S+W-H965T-S4N>&ULO9EM;]HZ%,>_BH7V
MHI6V)GZ )!-%8JFV6VF;JK;;?3'=%R:X8"V)F6W*MD]_G4!CP$E(I8B^* DY
MY_COD^.?'QAOA/RIEHQI\#M+<W4]6&J]>N]Y*EFRC*HKL6*Y>?(D9$:UN94+
M3ZTDH_/2*4L]Y/LC+Z,\'TS&Y7=W<C(6:YWRG-U)H-991N6?#RP5F^L!'+Q\
M<<\72UU\X4W&*[I@#TQ_6]U)<^=54>8\8[GB(@>2/5T/IO!]3'#A4%I\YVRC
M]JY!T969$#^+F]OY]< O%+&4);H(0<W',XM9FA:1C(Y?NZ"#JLW"<?_Z)?K'
MLO.F,S.J6"S2?_E<+Z\'X0#,V1-=I_I>;/YANPX-BWB)2%7Y'VQVMOX )&NE
M1;9S-@HRGF\_Z>]=(O8<(&EP0#L'U-4![QS*S'E;966W;JBFD[$4&R +:Q.M
MN"AS4WJ;WO"\>(T/6IJGW/CIR6VN:;[@LY2!J5),*_ .3#,A-?_+YL!]>G'#
M-.7II3'[]G #+MY<@C> Y^!Q*=:*YG,U]K21503WDIV$#UL)J$'"#4NN (9O
M ?*17^,>=W:'T:&[9Y)19015&4%E/-P0[R//N6;O/IOJJDO C\_&'MQJEJG_
M6EK#56NX;(TTM/9)"J5 3*7\P_,%^$[3-:M+X3;*L(Q2#,WG28!'P7#L/>]G
MRK6*, E(974@D5022:O$:9*LLW5*M<G'KC1H,03K9&XCC?8$#$-8O-4#F356
M. H;9 XKF<-6F<ZK>@N^&@Q>W.9)NIX7R?TDQ'S#T_2R3OG0T02'YJ]>TZC2
M-&K55 @X_6Y')YK>)LVUPA&)_'J!024P.)$T<"=%PDP-WC/%J$R6P(QB<,.>
M#>%7AM<:_/C"LAF3;=4>5LV%9QA;4=5:U,?8BB,GLZ&9!>L3"WT+5O]$:LUL
MLNUOVM#?:?)KS26;UT+/?XVJ/=S#5E4W7&G)9^MR#C7E6:X7NKQB:/D)SP%0
M: D*^T'H+LS!" K]T3&<3IH=RK04A?UA%+J$K)5ZRNQ0JB4I;$=I-VQ!%YF.
MP#:30W$6J;"=J;'(5BDKLOC(DF4N4K'@K%L)6RK"X!PE;+$(PWY*.'3RB0B"
MP7':73,,HS!H2+WE*6P'ZJM*V*4J1#ARI+IF$6RJ8&3AB]KAVZV"D<M8"$-G
MN5)CAE"(&M*)+(M1.XOC<GG/I)EZTS*/:LE7G2H9[2UFSP%C9&&,^H$Q<BD+
M_6$0'J>^QHP0ORGU%L:H/Q@CE[(!=%A<8S4B/FH0:E&,^D Q<CF+"722Z5J%
MOM^PQ$46R*@=R#VM(9&E,SH'G9&E,VJG\RN*)48N>IM@9K&+VK'[5>3O$C/K
MF4D/T(5DK$BI:MM\6DYB_QR;78L\W(Z\SMM=6#/F&A*)+0PQZFW4[T+M*R!X
MU*!@;[??CL=NPQF[U$--NWALF8?;F?<HZ9QEM.-Z'UM$X>$Y:LCR!K?SIG,-
MU>RKX3&V3Q@=2K2$PNW;ZE<56N!.',>KI!H;V#"U8(LUW(ZUCK48.F=*!!_+
M<Z$7A0WR+/5P=^I-*^IU*5UB\4?.@3]B\4=ZP5],7H$_8O%'>L-?3%S\X6&3
M HL_T@/^8N(>8V)G2^#MG7D7/SA\H7+!<P52]F2\_*O N,OM&?[V1HM5>0P^
M$]JLNLO+)3-$E(6!>?XDA'ZY*4[6JU]2)O\#4$L#!!0    ( .2 2U(H9HO?
MI (  #\'   9    >&PO=V]R:W-H965T<R]S:&5E=#<V+GAM;(V5;6^;,!#'
MOXJ%]J*5MO(4"%0$*4W:K2\V54W;:9KVPH%+L&IP9IO2[M//-A1E@S3-"_##
M_>]W=S'GI&'\410 $CV7M!(SJY!R=V[;(BN@Q.*,[:!2.QO&2RS5E&]ML>.
M<R,JJ>TY3FB7F%16FIBU&YXFK):45'##D:C+$O.7"Z"LF5FN];IP2[:%U MV
MFNSP%E8@[W<W7,WLWDM.2J@$817BL)E9<_=\$6M[8_! H!%[8Z0S63/VJ"?7
M^<QR=$! (9/: U:O)U@ I=J1"N-WY]/JD5JX/W[U?F5R5[FLL8 %H]])+HN9
M%5DHAPVNJ;QES1?H\@FTOXQ189ZHZ6P="V6UD*SLQ"J"DE3M&S]W==@3N),#
M J\3>.\5^)W -XFVD9FTEECB-.&L05Q;*V]Z8&ICU"H;4NE_<26YVB5*)]/K
M2N)J2]84T%P(D )]0I="$E4@R-&\9%R2/]A4_/)9'1T!:%5G&4!.JBVZ(B+#
M%/T S 4Z68+$A)XJ#_>K)3KY<(H^(%*ANX+5 E>Y2&RI(M9<.^NBNVBC\PY$
MMX3L#/GN1^0YGC,B7[Q;[L;_RFU5I[Y87E\LS_CS#_C[S%C>$$J1R@8-*[=4
MU:!,U!S0S_E:2*[.Z*\WL'Z/]0UV<@"KDG?':M>J J/27^M3ZH=!F-A/(ZQ)
MSYH<8WECK%85[K.\Z  KZ%G!,98_Q@H&+"^()^.LL&>%QUB3,58X9#F1,\Z:
M]JSI,58PQIH.6.XTF(ZSHIX5O<FZ*T U[XT$/D:,AMFYD3=.C'MB_";QF[I:
M%ICS%]T 'C"M88P<#\ZF&ZA?CVX_WZ&5'T_B_\MO[[4W?;5\Q7Q+*H$H;)3.
M.9LJ![QMU^U$LIWI>&LF5?\TPT+=<,"U@=K?,"9?)[J)]G=F^A=02P,$%
M  @ Y(!+4N.+4(AA!   *Q0  !D   !X;"]W;W)K<VAE971S+W-H965T-S<N
M>&ULO5A=;Z,X%/TK5C0/,]),P";AHTHCI4V39M6NJLG,[L-H'QQP QJP6=MI
M9E;[X]<8"C0!PNZV>4G W'.N[SW7U^#)GO'O(B1$@A])3,7E()0RO3 ,X8<D
MP6+(4D+5DT?&$RS5+=\:(N4$!QJ4Q 8R3=M(<$0'TXD>>^#3"=O).*+D@0.Q
M2Q+,?UZ1F.TO!W#P// YVH8R&S"FDQ1OR9K(K^D#5W=&R1)$":$B8A1P\G@Y
MF,&+%1IG &WQ6T3VHG8-LE VC'W/;E;!Y<#,9D1BXLN, JN_)W)-XCAC4O/X
MLR =E#XS8/WZF7VA@U?!;+ @URS^/0ID>#EP!R @CW@7R\]L?TN*@/0$?18+
M_0OVN:TS&@!_)R1+"K":01+1_!__*!)1 RB>9@ J .@0T.;!*@!67\"H (SZ
M L8%8'P(L%L =@&P^WIP"H#3%^ 6 /<08+4 O +@Z7+(]=/BS['$TPEG>\ S
M:\667>@*TFBE>42S8E]+KIY&"B>G*RHQW4:;F("9$$0*\ G\BCG'60V"]W,B
M<12+#VKTZWH.WK_[ -Z!B((O(=L)3 ,Q,:2:1<9E^(7'J]PC:O%H@7M&92C
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
MNVE+,6DH@B,4?H >.%.%1'<L@^RC@*M#ZN(*MG%-@I.*,TBO4.A_08$7>#U
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
MV8,BG=)#T0FS=HBR=H@BK-: O:7BK<0'CV*KGW:L%JJ:4=6(JK[>9+]]$O?
M-2<>:R-K&5EK?=X"^8PQPM^%W5B\J& 7G'ET[W-9MXF1>H0,7[A>QH9JFJ/A
M2[$-Q$'A_C2/LI&N*$HY<%:G0=4V+*L<]EG"@P:T=:@7B*4:Z%D-]-8:?-P'
MM(M:1L8SCJR6F9'-HZMU'B,A+!0N5*$BPR0.,XIR055#Y:A/$ABTZIK68:)S
M:+9<)RL;O=4Z^AN\PSYA!'PEG5:7G7'M(^L%E7QWK!Q_?27,8OET2ZDLB(LD
M"J*B9$I=V9D,AVQ8CIK+<+I96J_E&A3>$&!K#6;DA[,2IC@GK-,Z@[G90G1L
MY7++A>HO4$ZME=HT3:-<ZFD25;(\7>*,$IJ&D%J.NI/0+*59MKPSP/;6<!XX
MW&%;,!>#77?2+3=<J!];M]Q\H?$+=#/JAH6L2DN[2J*@6NI!IEZ5K0Y3=<,N
M1]W+8,ALE"UO$;"]1USM_0T.'+'>Q%NW4WAS;JMN;L'0.K9RN0U#^Q<H9]?7
MB&9KY6)?)E%0*^TR5)E9UGG(-BIM\(N,9YG-JP[E#0.U-XP'[!SB+C>EKHN#
M+O*AW(H1/+)\J+#S;=_Z_I1\"=,HZ5(M]W425;0XU5+4ZL*3P9!><=^%#&9J
M>I-R><- [0UC@GV\#M==#^%R,T;:L87+W1BU[W]_3CB]7FL%5E;3;1)5ZG3(
MJNDF8U57YE+&4AL77-XO4'N_6#C"+W?BM:V/;KD;(_/8NN5>C-KWPS^GFU6O
M(JSJ=B.+THR:;O4H U6VJ0^2($O3*ZH-"U] A[_#S7"P<7P&7/(LLI3WID@/
MXI^VXA-.=]%WTD^4<^I%AUN"UR0( \3]9TIY>A)^S9W]P#C^'U!+ P04
M" #D@$M2Q@=+M,8"  "4"   &0   'AL+W=O<FMS:&5E=',O<VAE970X,RYX
M;6RU5EU/VS 4_2M7T1Y 8B1-^@5J*T$[!!)L%1WL ?'@)K>-A6-WMM,R:3]^
MMI-F8?V 2?"2V,D]Q^>>>QVGMQ+R2:6(&IXSQE7?2[5>G/J^BE/,B#H6"^3F
MS4S(C&@SE7-?+222Q($RYH=!T/8S0KDWZ+EG8SGHB5PSRG$L0>591N2O<V1B
MU?<:WOK!+9VGVC[P![T%F>,$]=UB+,W,KU@2FB%75'"0..M[9XW382.P !=Q
M3W&E:F.PJ4R%>+*3JZ3O!581,HRUI2#FML0A,F:9C(Z?):E7K6F!]?&:_<(E
M;Y*9$H5#P7[01*=]K^M!@C.2,WTK5I=8)M2R?+%@REUA5<8&'L2YTB(KP49!
M1GEQ)\^E$35 H[D#$): \*V J 1$+M%"F4MK1#09]*18@;31ALT.G#<.;;*A
MW)9QHJ5Y2PU.#T8HZ9)8*^&**RUS4R*MX#.<$T9XC#!QS70M8N)L/QBA)I2I
M0Q-R-QG!P:=#^ 24P_=4Y(KP1/5\;719=C\N-9P7&L*=&N)CB!I'$ 9AL 4^
M?#.\<?(2[ALW*DO"RI+0\46O6J*.X()0"?>$Y0@/UR80KC1FZG'/,E&U3.26
M:>Y8YJNQE60BYQK$#(A2:'PW6U&9 F"RS<6"K^7X[/9<#L)VJ^<OZU9MQG1;
MG2KFA=!F);3Y'T(9)5/*J*;XBMJ"M%U3$G7_$;L9$D;;M;8JK:W]6H6&$2HZ
MY\3(,J[")29SRN>U[H:'&\RF*!_A-XPE+@A-X,NS^2XJDY+I8/BF4Y0PS*6T
MT6=%9=:@/95O5R+;']E@G6J9SCLW6&>S'AL-MAFSL\&ZE=#NNQ;M+(YECK6B
MO:$V)Y66DX^L32/X^]T-/F)7E:RM?=MJ2\S&OO)K1X8]KV^(-(XK8#@SH."X
M8]"R. *+B18+=XI,A39GDANFYK<!I0TP[V="Z/7$'DS5C\C@#U!+ P04
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
MA!4 ^7Y%J=@U"@?U5>#L-U!+ P04    " #D@$M2:U5**-<"  #+!P  &0
M 'AL+W=O<FMS:&5E=',O<VAE970X."YX;6R-E=]OVC 0Q_^54]2'5FH;DD"@
M%2#Q8],JK5)%U_5AVH-)CL2J8S/;0/??SW9"1B%D>P';N?O>YRX7WW GY)O*
M$36\%XRKD9=KO;[W?97D6!!U*];(S9.5D 719BLS7ZTEDM0Y%<P/.YW8+PCE
MWGCHSI[D>"@VFE&.3Q+4IBB(_#U%)G8C+_#V!PN:Y=H>^./AFF3XC/IE_23-
MSJ]54EH@5U1PD+@:>9/@?C:P]L[@.\6=.EB#S60IQ)O=/*0CKV.!D&&BK0(Q
M?UN<(6-6R&#\JC2].J1U/%SOU3^[W$TN2Z)P)M@K374^\@8>I+@B&Z878O<%
MJWQZ5B\13+E?V%6V'0^2C=*BJ)P-04%Y^4_>JSH<. 3Q&8>P<@B/';IG'*+*
M(7*)EF0NK3G19#R48@?26ALUNW"U<=XF&\KM6WS6TCREQD^/%[A%OD%88"(R
M3EUI;V#"S-LE/$$P?0(SB2G5\%4H!9=SU(0R=66L7I[G<'EQ!1= .7S+Q481
MGJJAKPV75?>3BF%:,H1G&((0'@77N8)//,7THX!O$JJS"O=93<-6Q3DFMQ %
MUQ!VPDX#T.R_W8.[%IRH+G+D]*(S>I,D$1NNE:TRTBU9,KQNJ?&/A6 ,3)?N
MB$Q_ML3OUO&[+G[W3/PI9I1SRC/3\<R&;'I'I43/2=AO?SON1:9VV\.R-=C<
MQ;7-![9>S=9K97O@B;E]%"K0 G2.0#[4)2GKPDQ=L+&U2O7X "GN'&.?VH1!
MKQD[KK'C5NQ7237>B-6J$2H^"7@3G5 U&(6#,]7LUUC]5BS3-.;BXH#O24YX
MAB")1BC7C:3]$XC@"//4XDSI!C7CH)71?.3_:,7!29L-HF.L4YO#=BW!_(-[
ML4"9N7&AP'V,Y652G]83:>(NXJ/SJ9E4Y6#Y*U..N4<BS;>E@.'*2'9N^X9(
MEJ.CW&BQ=K?O4FASE[ME;J8M2FM@GJ^$T/N-#5#/[_$?4$L#!!0    ( .2
M2U)]IS\OXP(  .4'   9    >&PO=V]R:W-H965T<R]S:&5E=#@Y+GAM;(V5
M;6_:,!#'OXH5]44KM>012"M *K!IDU:IHNOVVB1'8C6QF6V@_?8[.R%+(41[
M WZX^_MWE[-O<A#R3>4 FKR7!5=3)]=Z^^"Z*LFAI&H@ML!Q9R-D235.9>:J
MK02:6J>R< //&[DE9=R93>S:LYQ-Q$X7C,.S)&I7EE1^S*$0AZGC.\>%%<MR
M;1;<V61+,W@!_;I]ECAS&Y64E< 5$YQ(V$R=1_]A$1M[:_"+P4&UQL1$LA;B
MS4R^IU/',T!00**- L6_/2R@*(P08ORI-9WF2./8'A_5O]K8,98U5; 0Q6^6
MZGSJQ Y)84-WA5Z)PS>HXQD:O404ROZ20VWK.239*2W*VAD)2L:K?_I>YZ'E
MX(\N. 2U0W#J$%UP"&N'T 9:D=FPEE33V42* Y'&&M7,P.;&>F,TC)NO^*(E
M[C+TT[,5[('O@*P@$1EG-K5W9 D;D!)2<MRF/"4+2P,2=[=",:W(2A2FD Y4
MIN1Z"9JR0MV@^^O+DEQ?W9 KPCCYF8N=0G\U<34"FV/=I(:;5W#!!3@_($^"
MZUR1+SR%]+. BY$VX0;'<.=!K^(2D@$)_5L2>('7 ;3X;W?_O@<G;+(?6KWP
M@EZ3T@6&*;&D%?G!Z)H53'_<8L+Q&W#=<T[4G!/9<Z(+Y\PA8YPSGF')%Y0G
MT/4M*HFAE3"7?S_SHR@,)NZ^G:!SJ_LX&C9&G_"&#=ZP%Z\I-]DJM^28F[0N
MMR[F2G?49L;WRXM/H,_-AF$4!-W4HX9ZU$O=OC)B<V3OHAR='7_G^Y'G1R>8
M'791/ Z];LYQPSGNY<3G#A\S3N ]R2G/@$BJ@53CSJ2.SS#BZ#2CYS9WOG>A
M#.(&-.X%Q4O>5Y_Q6>4%?C ^S>&YU><JKLC<UHN)-9;91J)((G9<5Z])L]KT
MJD?[1)^LS[&'52WGGTS5 )^HQ$NG2 $;E/0&8V2255.I)EIL[;N\%AH+W0YS
M[,,@C0'N;X30QXDYH.GLL[]02P,$%     @ Y(!+4BW$.H*A!0  '!P  !D
M  !X;"]W;W)K<VAE971S+W-H965T.3 N>&ULM5EM;YLZ%/XK5C3I;E)7L DO
MF=)(6]*NW=HM6K7=#]/]X(+;H '.C-.N5_?'7P,.D!H[[MU-/K1 SGE\7I]C
MD^D#93_*%2$<_,JSHCP9K3A?OW&<,EZ1')?'=$T*\<TM93GFXI;=.>6:$9S4
M2GGF(-<-G!RGQ6@VK9\MV6Q*-SQ+"[)DH-SD.6:/[TA&'TY&<+1]\"6]6_'J
M@3.;KO$=N2;\ZWK)Q)W3HB1I3HHRI05@Y/9D]!:^67JU0BWQ+24/9>\:5*[<
M4/JCNKE(3D9N91')2,PK""S^W9,YR;(*2=CQ4X*.VC4KQ?[U%OVL=EXX<X-+
M,J?9GVG"5R>C: 02<HLW&?]"'\Z)=,BO\&*:E?5?\-#(!MX(Q)N2TUPJ"POR
MM&C^XU\R$#T%!#4*2"J@IPJA1L&3"IZMPE@JC&T5?*G@VRH$4B%XHC#6.1U*
MA?")@J=;(9(*D6U8)U)A8JL W6WF7&N5-ME*MEV=RC;=4,FW=I5MPJ&2<:W*
M-N50R;G6L&W2H9)UK<HV[;#.N],T2=UA"\SQ;,KH V"5O,"K+NHVK?5%8Z5%
MQ2C7G(EO4Z''9]<KS,B*9@EAY1_@].<FY8_@-7B;)&G5\3@#%T7#6U7_OUP0
MCM/LU=3A8NT*P8GE.N^:=9!FG06)CP&*C@!RD?OU>@%>OAA"F9M1SLC-%@5&
M$J6L/"@'L!9FK"O,!-9DQR(MUJF%=QZTL^O,C/5V+>QR+;'>6]O5^OB-<O("
M.*#!U"*?VWL\D<@6J!?/C^, R@>+S$*TK]8^FE$^QWQ;'R9;+BVRB?P&11N6
M*XNR=_>&Y9.%*4U88*A'^6SC4-."@=:AI0U(J =Q!(VU7(9:+D,UJJ=!G6>X
M+ &]!=><QC_ ]TOQ/;C@)"__,J![+;I7HX]U-F_XBK+T;Y+((@?_ 'U?-EA!
MC57MZNYG8[?Z3)W[?I/M%=LQ==R:.C::NA2[,L)896D=B35FX!YG&P)>I@5(
M:)9A5H(U88T#KX0G7>\.>=,L%_;,=(]=^,27/4([GOBM)[[1DSG-<S%W:C>.
MMG''729,*?"5V'JN_#RQW%KRTEKRLRH)!P67JB!2('=B%[2Q"ZQCUY7 $1@J
M@;T5T"PUV4VNBYX$<I_4CA]AZT=H]*,:6( 4/.69R+C8C ""XQ6(I7NU^>*L
M5')<)&EQ)URI-(:<"-6<#)L6M:9%1M.^D/6&Q2MQHJEH)^X%?&CY!LOO+>]#
MUPO4>E0% QA,U-JY4 61ZT4(:6MGTCHV,3,(?A3'1EZS:9+>IPDIDJ&Z>#=1
M+/!\.$:18NO[B=HZ$]=W5<GS04PT5MT?@(11X&N]AVZW*W9M$[MD]([A'(B9
ME6;U[ 3?KTA^0YAIJL#>!AP>8&K!;BA"](P:[7'GGG+])''] 0K3Q;>;I= \
M3#GEXF@A^9RU%AH)_0RJTQ*&X['>G&Y>0O/ U/?QD<6P/Y/H?<,BU]/;U4T_
M:!Y_S^*7,PG63]C81Z9\=:,$FF?)0#^(32G;8/98;TJM6J(C?!@>HB4ZUH;/
MH6W[EKB"*N%"W]P2'>-",^7^7@W.X1 9AOKF0!T7(FLNW%^$<PEF#E%#WU(T
ML!]?J&-5!)];L.) 1T6)6M<KZIT[#G'P0!U;(C-;_M=Z?2]Q^\D(Q8!$2BX^
M#DCNV8:BCEW1(=EU@51VA0CZB@^G X)HEX:;_<40H#>)])YV?(W^1[Y>()6O
MAS>$IP.248#4-)X/"&JVC@.2^YJOFQ;HV=/B"HL']0L9J];K1@4ZQ*A W:A
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
M.P-ZOU'*G@<N0-,@S_\%4$L#!!0    ( .2 2U(U'CSU^0@  ( J   9
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
MM7<-EKL.<M?810JH)XNVT6-_HQ^Q7TN6*U&W$9"H^'X<EUE9T^!-LU/B3.;
M?I3+(Z<?KH[O[1JVF6-_,_]_.0)5^P"EZSQ373<V=,GE,B#1.!DAMK<3?V_O
M8=S."#>=7)%A[X5^!P@P;H?MOL3??7L<PP3UJJY+",VGL09,''TUP@L'<KDD
M<>1A<\2V8.)OP;O=>\=F]!Y]8B)7U>N4!/T#R@,V*>CKZ?TI^NV&9P]<^D[P
M2>=-P5%?%1#;"<F>\_=3]/.XVQ2[#WG)L F&9+GP%);M@L3?!;OY^=B WGOT
MQ:Q/J'QT*T7,T64+D@<ER#8K,CMJ@FP_(/Y^</0$N3K!;+R3$=L)B+\3M.<>
M_01UT_8KF Y[79LD=5"6+(:3Y5'?N%FPI7ZP/7:6Z!"@%W1\!T@M.E,_.ILM
M*Y/Q%HV&:G\^J(54BH^:#XN?U+\?^3,$GPZW'=\3_+Y5G1>S?K"]UZ8<VI!?
M K$PZT*:>Q:ZMNR0<%N$I-%1PVW1D.YYU^@*M_D<U[/'G=GA%]E$P!G]X7%;
M&)+9>$.G%DKI8:\935@N2[TM)+"R-N+HOY"99Y[#%G559)E0YN8+EV#NM3FL
MS0];"A8=Z>*HN;$82/T\]H!71'LTA/@T\K]LMS@9'?:N;C0%]1*Y3#*1"Z7M
M=048T*#G:BMR=D@N(@N"47C,7$06_R(_I3P@%WLTX&C?Q0>+D=$>C-R]+G8G
MPS>'1;R('C6RG6L<!Q^)C$;6KV'O:\G(PF'DA\/[DJ7L 6#D] 1]ULE!>X/(
MPE@T/VI,+41%?@+WHW=C5I'CG'[N.;"++(A%?@BRY,K>9T-W=3?MDZN;[B6G
MR]TEI^ON):?;YI(36A=IRJ33D^&^'+:?KG.%:>=J7L;E8W7%4:'8,+GZHEO[
MM+U&>5E='OSN^57X85U?AK1JZKN9-TP^FDUGRC>@,CB=@UFRONY8?]'%4W4!
M\*'0NLBJCUO.$BZ- /R^*0J]^V(F:"^=7OP/4$L#!!0    ( .2 2U*DF%^U
MBP,  %4,   9    >&PO=V]R:W-H965T<R]S:&5E=#DX+GAM;)U76V^C.!C]
M*Q::AU::%FPPERJ)-$UVM'T8J9IV=I_=\"5! W;6=IKLOQ]C"$G 055?&@SG
M')_CZ]?)7LC?:@.@T:$JN9IZ&ZVW#[ZOEANHF+H76^#FRTK(BFG3E&M?;26P
MW)*JTB=!$/L5*[@WF]AWSW(V$3M=%AR>)5*[JF+R_T<HQ7[J8>_XXF>QWNCZ
MA3^;;-D:7D#_VCY+T_([E;RH@*M"<"1A-?6^X8<%#FN"1?Q3P%Z=/:,ZRIL0
MO^O&4S[U@MH1E+#4M00S/^\PA[*LE8R/_UI1K^NS)IX_']6_V_ FS!M3,!?E
MOT6N-U,O]5 .*[8K]4^Q_QO:0+366XI2V;]HWV(##RUW2HNJ)1L'5<&;7W9H
M!^*,@.,K!-(22)\072&$+2'\*"%J"9$=F2:*'8<%TVPVD6*/9(TV:O6#'4S+
M-O$+7L_[BY;F:V%X>O;$EZ("],H.H- =F@NN=*%WP+5"8H6>I7@O[!R;)88N
MP#<+T*PHU:VA_7I9H)LOM^@+*CAZW8B=8CQ7$U\;AW4__K)U\]BX(5?<8()^
M"*XW"OW%<\@O!7P3K<M'COD>R:CB I;W*,1?$0E(X# T_S =9P[ZXN/T="1-
MV,U6:/7"*WKSG91F:AY&I*).*K)2T16I[Y"#9*5KCAHBM<3ZW'B?X=B,W?OY
ML#DP-*71)6KA0 4Q.:$NG-/..1UU_J*9!I?OAA:?]981W/,]Q! <I#W;0]!=
MFF1NUW'G.AX?;R'-&<1=ON-!=SC$6=)S/D2%09STYF4Q1,5AD+BM)YWU9-1Z
MN^K,WK;;7[,#@H.Y>!2@FS?@L"KT[5?T*K1[.27#>!%)>F,^'Z*B- Y)+YY#
M*PXH<>=+NWSIZ*Y:P I,PGQL6V6=5O;9;94-5Q5.21SW!F(("RE)!VO4I482
M[!X)')RN@^!SFZOE771(:=^\ X73L&?= :+TRJ& SRXR_-D-UC(O7%$29WWS
M0]A=%)$HZQ]K+B!)KP0@IP!D-,!Q&7YVG[7R%ZY"2L-^2@<LS6@PF"4'+HGH
ME92G&PR'HRF?1L,MS>U?\%W!U\B4MI+5M:$:RQPZ;IB$T'[F(>PN"M($]S,[
MY.CP_/3/ZJT*Y-K6K<J8WW'=E";=VZXV_F8KPM[[Q[IFMG7<2:8IN'\PN2ZX
M0B6LC&1PGQA/LJEAFX866UO5O0EM:D3[N#%U/\@:8+ZOA-#'1MU!]Y_$[ ]0
M2P,$%     @ Y(!+4@-E)6B)!   J10  !D   !X;"]W;W)K<VAE971S+W-H
M965T.3DN>&ULI5AM;R(W$/XK%E)53DK9%PB0$T%*H-<B]5247-H/53\XNP-8
MV;4YVX3DWW=LEEWVM/9"^@5V;3\SGL?C\;.>[(5\41L 3=[RC*O;SD;K[><@
M4,D&<JIZ8@L<>U9"YE3CJUP':BN!IA:49T$<AL,@IXQWIA/;MI33B=CIC'%8
M2J)V>4[E^SUD8G_;B3K'A@>VWFC3$$PG6[J&1]!/VZ7$MZ"TDK(<N&*"$PFK
MV\Y=]'D>C0S COB+P5Z=/!,3RK,0+^9ED=YV0C,CR"#1Q@3%OU>809892SB/
M[X713NG3 $^?C]:_V. QF&>J8":ROUFJ-[>=<8>DL**[3#^(_>]0!'1M["4B
M4_:7[(NQ88<D.Z5%7H!Q!CGCAW_Z5A!Q HB&#D!< .(? 0,'H%\ ^N<"!@5@
M8)DYA&)YF%--IQ,I]D2:T6C-/%@R+1K#9]RL^Z.6V,L0IZ<+GH@<R#?Z!HK\
M0AX@$3QA&:-V5<2*Z V0)\XTI.114XVCOD *DF;V=:>%?"<S(;="8J>Q0Q[,
M@Q;8FF\I?_]9D5]7*[#K6_4+22K79"G%*[.IU)V#IBQ3GR:!QO#,)(.D".7^
M$$KL""6*R5?!]0;]\132NH$ >2G)B8_DW,=>BW-(>J0?79$XC,.&"<W.AD<W
M#?#Y^?"Q)YI^N=1]:Z_?NM1DSE22";630/ZY>U9:XO;[U^-B4+H86!<#OPN-
M+N -2Y,"0C5YZCWVR*K(&E5F35)FC1EO'IK6W.\PCGIA^%/3TGP0-[\<5V/J
MNF3JVFO([B7"2KY 71&.91YWW)&I9^"P8KJ)%+]M)R=^6.RBY&)O-4:&)2-#
MKQTLXUBD>9D,)&58-B1PS6C61(+?7'=HYM541F8MP!L7</X!8(V*44G%R&O)
M;-%$0MJ\^'YL-W+&_5'@W \,6Q)@7$8]]MHQ14E"40Z*Y$=ID5%S]N!Y ODV
M$^\ 6$)$\D+$UAQ1JHDAOY_NR,E0"W#@9.@#P!I'-R5'-^=S="RQW8*L3Z=L
MV6T$>B<Y6>%YSM>-3/F]=:^=3/F!#2EQX.EB6(VE**Q43>BU5"F.DU//"H^Z
MPKFR':AN=0:H9O45*<K0%5F"3+"E48?XG3OK;PO.R=KEN#IM)V(PNCR]3I(J
M9VM9*D.:?-\QK%)DL6PDR>_*%>RL!1>-G2Q=[+#.4ERQ%)_/4N/F2S:4K\WQ
M;H>@OMHEN!,;]4V++S=-?EPW'HZ=U>IRGW6F*L49]?]7/OVV^./;@C#\3DBL
M]+F$-[]G-V]^7!P-G/EUL<<Z:Y6(COPB\_PB;XK77=)<H_P^W/Q\##=OP77[
M;4=@5$GGR*\X_\1O4HGR\)2E5RS5C2=<BRTW#WZ<1RU=[K'.0R68([_@M#PT
MQNS'N83^K 77=ZZ]']?VA1!5NCCR2\V&[\MR7S02X3<W=!+1(I5CIS":MT!'
M+BZ"DSN<'.3:WH4I_$C><7VXL2A;R_NV.WO+]$/[O;F'LW=#E9G#)=Y7*M>,
M*Y+!"DV&O1$FJCS<BQU>M-C:FZ)GH;7([>,&*'Z-F@'8OQ)"'U^,@_)V<OH?
M4$L#!!0    ( .2 2U*,])/H.@8  *P>   :    >&PO=V]R:W-H965T<R]S
M:&5E=#$P,"YX;6R]65UOXC@4_2L6FH>.-(78^:XH4H%V6J KU,[L/HSV(8"!
M["0Q&YNV(^V/7^>C^;"=-%*9OI0D/>?Z7/OF^"89/I/X)]UCS,!+&$3TLK=G
M[' Q&-#U'H<>[9,#COA_MB0./<9/X]V 'F+L;5)2& R0IEF#T/.CWFB87EO&
MHR$YLL"/\#(&]!B&7OQKC /R?-F#O=<+#_YNSY(+@]'PX.WP(V;?#\N8GPV*
M*!L_Q!'U201BO+WL7<&+A9X24L2?/GZFE6.0I+(BY&=R<K>Y[&F)(AS@-4M"
M>/SG"4]P$"21N(Y_\Z"]8LR$6#U^C7Z3)L^367D43TCPE[]A^\N>TP,;O/6.
M 7L@S[<X3\A,XJU)0-._X#G':CVP/E)&PIS,%81^E/UZ+_E$5 @\CIJ <@(2
M"48#0<\)>E>"D1.,K@0S)YA="59.L+H2[)Q@=R4X.<'I2G!S@BL2K*:%TUY7
M3NLZ!BP66UKM1LKK<L-TO0=98:55.?68-QK&Y!G$"9['2P[2TD[YO!C]*+D+
M'UG,_^MS'AO=16L28O#->\$4G(-'?I=OC@$&9 LF>R_:8>!'X&J])L>(^=$.
M+$G@KW^!LREFGA_0SYSS_7$*SCY]!I_  -"]%_- G/,]\AG]PB_RXV][<J1>
MM*'# >.:DY$'ZUS?.-.'&O3IX)Y$;$_!=;3!&P5_ULZ'J"7 @$]6,6/H=<;&
MJ#7B%*_[0(=? -*0IA T::<_XD,?(+N1/FVGSXX1ISN-].MV^KT7<[K;2+_I
MG#MT%?2O77)W&^FW'7+7M4;Z78?<6\3/WK?N\_=-W:([W6FI8KVX[_4TGMX0
M3WES7U/F\XT-@Q\+#@=W#(?T[Y;!C&(P(QW,:#>9%>9=0S)F>L:\%X!?>#=!
ML6HQLHAF&C%I)9Y&T+%<"(>#I^JD*V 6<EVC#EO(,*0;IEW":GF915YFE[PJ
MF8"S%8[PUF>?53EET:RJ6,U&II"2C#HW-,<6,E\H@IFZ9JLSLHJ,K-:,_N!]
M7[8^*JNVI%FT7#Z-=6$3&>78IF;545,9=0ZA@>JH:QF%-,.VZZ@;Q8B:C@34
M5QEE0,L1U-\J4(YMN'74G8S2=:@)53>34="V>!D+"ZY*4G<L0=E" 8,NLAI6
MW"Y6W&Y=\;%'_36(BG4'9P&A?%\_X#C;S<$9-XD-"0(OIN5557V/LY'LBD*M
M+\S)1(41,IW*F'.MKPDWP+4J$A0*Z$8I2:P,%0@)PF^5($>H"Z4FH7AF,@CV
M-4'X7 42(RU4(-10$$Y1$$YK04S]X,CPYD0EX2@F1!?2F*A XBTWE4&JHE"%
MDHI".9YP5WY5@:2B4(+$HE!J$HO"D;U"J @Y#*\(0?5"!4(-VYQ;5(3;7A%X
MB^.8ET2RT7F48J9JY&]<V3D-UQ03G;\)JVF$6OD@HW57&?C>R@]\YF.EU#R4
M5?-OWA$(RSM_&U<76WGJ@JUB'Y+'IXB+O?;BB+=>%)SQ/NP8'@,ON?=X+OY:
MW42,\\C"#N5*19[CJMIM4T>64)VSCO'F;\>KSP4JYP*USL4RQD\^?T ,?H$'
M?"!Q,@$_[G&XPG%;\PG+5A=^0*\+RV87GKS;G><A:]U<O8^MBRD[5'C2%G4.
M%=VG[O+FIF%7@65G"=_16LZAW-V8IJ57^OWZL&5[ S^LOYE#>;_5^Y7^O2ZQ
MW'#A!^ZX<RAO 7J_<?G*/0">9!/(HU3KQ[!<"XF;&51L W5<_>5,N0V@TVT#
M2+9W3=#9"JE++,T?_2[SOT&R"4.HF384=ZX.P+KZTJY1NUT_<+=.W\&3+5C&
M/HG!$O.?S1=PM?GG2%F((U;X-_BO\AK1*]WWD+Y&;'L;5[H[^@!W1Z6[H].[
M.Y+=O:F(2F-'IS5V)!N[;B*CTO;6A92^CM[CZTCQG-\Z;FGLZ..,'2F>.%%?
M:])8.COZ2&='BD<@5'T$JJLLK1V=Q-J1;.WG2(/2DRN2K5W U=]8EM:NG\[:
M]8X=_MNXNMC2Y/7?9O*ZW)&+]TPN_FU@IGY0^4 4XGB7?O:D(+7+[)UQ<;7X
MM'J5?F 2KH_AQ1U47)_!BT7VX;0,GWW'O??BG1]1$. M'TKKVUQMG'T:S4X8
M.:2?IU:$,1*FAWOL;7"< /C_MX2PUY-D@.(#]>A_4$L#!!0    ( .2 2U*[
MSZ%O8P,  !(*   :    >&PO=V]R:W-H965T<R]S:&5E=#$P,2YX;6S-5M]O
MVS80_E<(H0\MT$:6Y%\J; .QTVU]*! X3?LP](&6SA81BM3(4^SMK]^14C3'
MEH.U0+$!040>[SY]W_%\NME>FP=; " [E%+9>5 @5N_#T&8%E-Q>Z0H4G6RU
M*3G2UNQ"6QG@N0\J91@/!N.PY$(%BYFWW9K%3-<HA8);PVQ=EMS\N02I]_,@
M"IX,:[$KT!G"Q:SB.[@#O*]N#>W"#B47)2@KM&(&MO/@.GJ_2IV_=_@B8&^/
MULPIV6C]X#8?\WDP<(1 0H8.@=/C$58@I0,B&G^TF$'W2A=XO'Y"_\5K)RT;
M;F&EY5>18S$/I@'+8<MKB6N]_PU:/2.'EVEI_7^V;WT' <MJB[IL@XE!*53S
MY(<V#T<!T?A"0-P&Q*<!PPL!21N0>*$-,R_KAB-?S(S>,^.\"<TM?&Y\-*D1
MRMWB'1HZ%12'BX\JTR6PS_P EKUCJX*K':V$8E@ 6X,%\PB,JH4=>[YE'PZ9
MK'.A=F1',&"1<96S6U!<HB"$US> 7$C[AE#O[V[8ZU=OV"N'^[G0M25?.PN1
M!#@:8=:2739DXPMDHYA]T@H+RSZH'/+G "$I[^3'3_*7\8N(-Y!=L21ZR^)!
M/.@AM/K7X5'Z IVDNXW$XR47\-:0:94)*;BO<;UE]\J0;:?$7Y"[W+,E*-@*
M?'8%UZ6N%5K*OJ&<*V="3>><"J8-6P/61EGV^UI+R>@7L.<F__8"Y6%'>>@I
M#R]07G+)50:.JSFJ%M%4"[IJZ;OH!G3D05VG>5Q$T2B-9N'C<?;/O29Q.NR<
MGA$>=81'+Q+^U6AK&6]31K2)*O4_VU1]?9QO8L\V;;X9IS\GD?J#BW)GE;;"
M792EW0,H%U\90>HKH$=OA:\:<N-CX6G:KVC<*1K_CQ4MQ^>*QG&_HDFG:/(?
M*G*=+:N- 86MKCY9DS-923)-3@KTW&D4CRY<Y[03/_T^\3G\D'A2"8=*F*Z7
M. NO*BDROI' +'*L$?PKI"@%>L?>*YZ>R7P71=/A23)ZO<91?S;2+AOIS^@O
MZ7E_2=)1?,*XQ^M9%VH8AT>?UQ+,SD\=EF7N@II/36?M!IMK_ST_L2]IX&GF
MDW]@FFGI$S<[034J84N0@ZL)<3+-!-)L4%?^([[12".!7Q8TM(%Q#G2^U1J?
M-NX%W1BX^!M02P,$%     @ Y(!+4K^1C0 R!   + X  !H   !X;"]W;W)K
M<VAE971S+W-H965T,3 R+GAM;*676V_;.@R _XH0[&$#VMKR-2[2 &N"[138
MV2G6;GM6'281:DLYDMRT_WZ4XSJI+7L#]I)8-B\?:9J49GNI'O46P)#GLA#Z
M:K(U9G?I>3K?0LGTA=R!P"=KJ4IF<*DVGMXI8*M:J2R\P/<3KV1<3.:S^MZM
MFL]D90HNX%81794E4R_74,C]U81.7F]\XYNML3>\^6S'-G 'YOON5N'*:ZVL
M> E"<RF(@O75Y".]7-#4*M02/SCL]<DUL:$\2/EH%S>KJXEOB:" W%@3#/^>
M8 %%82TAQ_^-T4GKTRJ>7K]:_U0'C\$\, T+6?SD*[.]FDPG9 5K5A7FF]S_
M TU L;67RT+7OV3?R/H3DE?:R+)11H*2B\,_>VX2<:) HP&%H%$(_E0A;!3"
M.M #61W6DADVGRFY)\I*HS5[4>>FUL9HN+"O\<XH?,I1S\QO1"Y+(/?L&30Y
M)PLIM.&F F$TD6NRA#4H!2LK0#YJ#7C[_1(,XX7^@/+?[Y;D_;L/Y!WA@MQO
M9:696.F99Q#-.O#R!N/Z@!$,8"PAOR A/2.!'_@.]<4?J]/LK;J'"6FS$K19
M"6I[X8"]KU*<YQ4&+@S9**FUK8Q#(@PF@M6)N!QQ%+:.PMI1-)A^P\2&/Q1P
M,&K3F$LAFB+?<[,E^19%P#ZQOK5156XJ!:XD'YS%M3/[ 3_-HR"B<3+SGDZ3
MZ1 +T]CW6[$WL41M+-%H+'=&YH_G]IM:80PE-AK-ZBC@V5X[@0\6DQ,2&@99
MU.%U2,5^%+AQXQ8W'L7]!"M0K"!8L)A49J!.;X[OF!N2,Z5>L$GNF7*7<]Q'
M\FE*.^!]J6F443=WTG(GORF9)RQ+J5YJ<@6XJ@#_"PQAY4)->A!QEG9+HB\4
M9&'D)DU;TG24]%J*2H,^L]50<FT[/RXLM31;4&^*Q 6>]IBB+ PZX'TAFOB9
M&WS:@D]'P9> (S'G@V#3/EA N^^^+Q3&P4#-9BU8-EZS4N%<$D1@I\!)KI!0
M;$B!#0J<59KU&!*_F\"^3!1,$S<G]8]CQ1\E_<^^8><<\/O^PJ@+Y9 *XWB@
M0=&384='J3[7O5R<='='7W=2TSYUDB;3;J=RR:7)X)=$CP.)!J/D/UA1';HI
M*W#KQ43N[*>-E5/_Y],XF78Q'6)I2 >JDQZG&1T?9X[MPAGY"@9_I&A2[L0.
M^VF+,TJ[7<HEEV3)T&=%CZ.+1G\S\ O.'GC!#8?1J4^/LX>.#Y_/-U_N;VK3
M."\Y>N-K= ?X5O5?;@%H?^:<AR'VS;B;2Y<@;@*&M@'T.*#H^(2JOWTR$J*3
MNS^!PJR+[)A24334JXYCBH[/J3=5^^7XJL](W2_.R&*D<M/>7LIF.^DU!H=<
M[(#W3K;R]ASU+U,;+C0I8(V*_D6*%M3A:')8&+FK=_</TN!9H;[<XG$.E!7
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
M%13>KS;>X0'O?P:B"QSO#$#;&5; )V;X9<HD'.9POP(^-<.G..@"UU%P:%?
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
M0G9$O8SE9 =,"<CO2TK%9J,4U+/B\"]02P,$%     @ Y(!+4@V<\WA0 P
M= P  !H   !X;"]W;W)K<VAE971S+W-H965T,3$P+GAM;+V7;6^;,!#'OXJ%
M]F*3MO(4 JF22$O2K)M6K6KV\&+:"Q<N 0WLS#;-]NUW-I0F*6%(J_HFP>9^
M_[//9_L8[[CX*5, 17X7.9,3*U5J>V[;,DZAH/*,;X'AFS47!578%!M;;@70
MQ$!%;GN.,[0+FC%K.C9]UV(ZYJ7*,P;7@LBR**CX,X.<[R:6:]UWW&2;5.D.
M>SK>T@VL0'W97@MLV8U*DA7 9,89$;">6&_=\TO7UX"Q^)K!3NX]$SV56\Y_
MZL;[9&(Y>D200ZRT!,6_.YA#GFLE',>O6M1J?&IP__E>?6DFCY.YI1+F//^6
M)2J=6)%%$EC3,E<W?'<)]80"K1?S7)I?LJMM'8O$I52\J&$<09&QZI_^K@.Q
M!Z!..^#5@'<,#$X ?@WX?8%!#0SZ D$-!,? \ 0PK(%A7P]A#81]@:@&(K.Z
MU7*8M5Q01:=CP7=$:&M4TP\F(0R-2Y@QG;LK)?!MAIR:WH!4HHQ5*3*V(?.4
MB@U(\H:L<),D90Z$K\FA#64)]N1404+F7"I)7BY T2R7KY#[LEJ0ER]>D1<D
M8^1SRDN)]G)L*QRK]FC'];AFU;B\$^/RR15G*I7D@B60M/#+;M[U.@1L#%(3
M*>\^4C.O4W$!\1GQW=?$<SRG94#S;GP%VS/BA2?Q13?^H62(1R?QBV[\B@K$
M1R?QY?_-_5UOW!VUX)?]\:AC)?TFYWVCY_?+><SA.JDEB#L@WS^B/7FOH) _
M.KP-&F\#XVW0RUM<[;"V#5')!$9&7SEWTR@,QO;=?HX]MO$"]]!F\=C&'82C
MZ-#JXK&5<VBQ;-$)1M[@T.K=/W4NNRP.(AHT$0TZ(_J)P1N%%RCY# */1&HN
MP1DP6&=X&GV_@N(61-?2#1M'PV=(E+#Q%CY)HBPKF>'^PCBX-.U!C1KO4:?W
M.9Z6 BN)@Z#VB.6HT1\]0RQ=Y^%><YXFFK7.?C@#SPG;H^GNW:MN=Y*J%,31
MU=DCG*[WX,![CH ^')JN_T0!]1]M^""(CN)I[Y4L!:"4+E\EB7G)5'62-[U-
MB?S6%(9'_3/W_,)MZ5_JDMJ42 _R53V.=^$F8Y+DL$97SEF((Q55B5LU%-^:
M@NF6*RR_S&.*GP4@M &^7W.N[AO:0?.A,?T+4$L#!!0    ( .2 2U(M70'"
MNP4   @@   :    >&PO=V]R:W-H965T<R]S:&5E=#$Q,2YX;6RUF5UOVS84
MAO\*8?2B!>;8_-!7X!BHDSCIL&Q%TFX7Q2X8B8ZU2J)'T7$#[,>/DA71MD1:
M=N.;1)+/>\[1(?F0(D<K+K[G<\8D^)$F67[1FTNY.!\,\G#.4IJ?\07+U"\S
M+E(JU:UX&N0+P6A4BM)D@(9#=Y#2..N-1^6SSV(\XDN9Q!G[+$"^3%,J7B8L
MX:N+'NR]/KB/G^:R># 8CQ;TB3TP^77Q6:B[0>TEBE.6Y3'/@&"SB]Y'>'Y+
M@D)06OP9LU6^<0V*5WGD_'MQ\RFZZ V+C%C"0EFXH.K?,[MD25)X4GG\6SGM
MU3$+X>;UJ_=I^?+J91YISBYY\E<<R?E%S^^!B,WH,I'W?'7+JA=R"G\A3_+R
M+UA5ML,>")>YY&DE5AFD<;;^3W]4A=@0*#_M E0)T*Z & 2X$N"N E()2%>!
M4PF<78%K$+B5P.T:P:L$7E>!7PG\LG77S5&VY165=#P2? 5$8:V\%1=EARC5
MJ@GCK.B[#U*H7V.ED^-[EDNQ#.52Q-D3N)Q3\<1RT </:I!$RX0!/@/;-NJ.
MB6<&'E_ EY=%:7#)<_G^BDD:)_D')?[Z< 7>O_L WH$X U_F?)G3+,I' ZD2
M+L(.PBJYR3HY9$@.@SN>R7D.KK.(12WZJ5T/D<7!0%6J+A=Z+=<$63U>L? ,
M8/@+0$,T;$GHTBY_8(LS@#RC_,HN_W69*;EOE%_;Y7=4*'E@E$]_[MUO.LMA
MT"*_[2[W+2V)ZXZ/2W^X4\=_[=3?[GF2 $7%%171WY8PI Y#RC"D4YAP/;[:
M1L+:C5.Z*2:<Y['O.:/!\V;G:MH@!V[;7#5M(/$"?]OJNFDUW+:8MOAQ D2V
MK6[V^KFU66Q5U*DKZE@K^D?&^E)-G^ +$PJ(M)P")RQCLUCFX-L=2Q^9L#6=
M6P=R3]E#O#J,]R8]9+IVXVZVR%"U27LU_3JZ;XU^J?@HU )BJYH=BAC4_H-3
M%A$.]3PV?)LR5GXVZ^B@H==>1K@QCT)[MY1S)G:FR@YUA$@'0">MI 8CQ&]4
M2=RLI.,;"JF!">W$_!B&8LDB\%M,'^,DEC'K-*JAY@=T3EI(S0_H6M]D0A.:
MA0S0O%@DJ0FL? G;''A=>70M8+::;&>J$03?B$&P!4(>]!U# II"< ^&:#X'
M"_JBOHID>V"_$;@?.(%IV&H\P< :^'>>]<,BN.A<@J"9"8$N;L\$:8"A0P!&
MHW_4XM]8#M2$6!\B%QJ2T!1#=HJI_J^^]C+ ?J@*9$\,""H96%^W)P(;B2!D
MZ Y(LPZAXT=.Z^)S4GG<2@3[P<[@Z61UTV)E&&)(4Q79J6K#&O@/_/2J!FG
M(G)*_B$-6F1?J1W!O\JCC7]6D^U,-:F1G=2=^8>:\(40(\,B#&D (SN ]_(/
M-<';]SUHX!_2X$5V\![./]0DL:G^FL+(3N'#V-<"8 @]0Q)8 QC; 7PP^W 3
MPM!'AC0T@K$=P4>P#S<A#-W=;[5I)ZN;%BM3937.L1WG>]AW[#<(WOC6/^G'
M/M9LQ?;%ZQ'(JSS:D&<UV<Y4PQG;X=P9>;C)6P<A4WR-7&Q'[E[BX29J^]@$
M/*Q)B^VD/1QXN 6]Y@4?UNC%=O0>!#W<LOZ%IA0T=[&=NX<CK\E>9,B":/ 2
M.WB/(!YIHM=S&EM8'8QN6HP,?9MHA!,[PO>M]8[;*B":M^2D6P5$<Y78%[5'
MX*[R:-UZ;.XKF)ID8QOV;?9AIZ3)6A>[AO":ML1.V[VT(TW*]AT38XBF++%3
M]G#:D<[;"T0SEQRRO;"'=*0%MYYA5XEHV!([; \F'6D"US3I$<U;8N?M,:0+
M6C;B=P?,?IN;%IO=UQEL'".F3'60XD@Y!R%?9G)]L%(_K8^M/Y:'M3O/)_#\
M&K8\G\+SV_6AM':_/B._4_TQSG*0L)D*-3SS5)YB?>R\OI%\41YB/G(I>5I>
MSAF-F"@,U.\SSN7K31&@/OP?_P]02P,$%     @ Y(!+4I VCZDK @  - 4
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
MVJ5QD L9>3T\$MP>:4#M.*2VBZD8_1!2:5K5N %(MB6/:<Z10J[4+!XUA])
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
MW68W0.^H>D> WE'UC@"]H^H= 7I'U3L"](ZJ=P3HG53O!- [J=X)H'=2O1-
M[Z1Z)X#>2?5. +U3]V<E0.^D>B> WDGU3@"]D^J= 'HGU3L!],ZJ=P;HG57O
M#- [J]X9H'=6O3- [ZQZ9X#>6?7. +US=]@$H'=6O3- [ZQZ9X#>6?7. +V+
MZET >A?5NP#T+JIW >A=5.\"T+NHW@6@=U&]"T#OHGH7@-ZE.RP(T+NHW@6@
M=U&]"T#OJGI7@-Y5]:X O:OJ70%Z5]6[ O2NJG<%Z%U5[PK0NZK>%:!W5;TK
M0._:'?8&Z%U5[PK0NZG>#:!W4[T;0.^F>C> WDWU;@"]F^K= 'HWU;L!]&ZJ
M=P/HW53O!M"[J=X-H'?KRCH O<WU=1V W^:ZPHX#"&ZNJ^PX@.'FNM*. RAN
MKJOM.(#CYKKBC@-(;JZK[CB Y>:Z\HX#:&ZNJ^\X@.?FN@*/(XC>%S 9#<R^
M@DD0O2]A(EJ8?0T3T</LBYB()F9?Q?S6+N8TOVW'Z3/1Q[H+\)UZS^?OCI_/
M?U]^W.Q?K7>NAZ\QIIN_4$L#!!0    ( .2 2U)%#P3^B0(  -E    3
M6T-O;G1E;G1?5'EP97-=+GAM;,W<3V^;,!C'\;<2<:T"M@$;IJ:7=M>MA[T!
M!DZ#PC]AMTO?_1S25MK41:LR:=]+4&+[^3W8TN?F7'][GJQ;'?IN<)MHY_WT
M*4E<O;-]Y>)QLD,8V8YS7_GP=7Y(IJK>5P\V44+HI!X';P>_]L<:T<WUG=U6
MCYU??3Z$GUT[#IMHMIV+5K>GB<>L351-4]?6E0_CR=/0_):R?DF(P\IECMNU
MD[L*$Z+DW83CR)\#7M9]?;+SW#9V=5_-_DO5AUG)H4N<?^ZLB\^7>*?'<;MM
M:]N,]6,?EL1NFFW5N)VUON_B4]&K\\D^[+ ]?<J+\Y<RYP+#S/MYG%PXL=E^
M/.[U2(ZKUU,H9&??GG_%M\10^N+WL\?3;FSSE]EA>W^,\WXY#Y<LC\OW^-<S
M?JO_P3X4I(\4TD<&Z2.']*$A?1A('P6DCQ+2AQ241BBB2@JIDF*JI* J*:I*
M"JN2XJJDP"HILBJ*K(HBJZ+(JBBR*HJLBB*KHLBJ*+(JBJR*(FM*D36ER)I2
M9$TILJ8465.*K"E%UI0B:TJ1-:7(FE%DS2BR9A19,XJL&476C")K1I$UH\B:
M463-*++F%%ESBJPY1=:<(FM.D36GR)I39,TILN8467.*K)HBJZ;(JBFR:HJL
MFB*KILBJ*;)JBJR:(JNFR&HHLAJ*K(8BJZ'(:BBR&HJLAB*KH<AJ*+(:BJP%
M1=:"(FM!D;6@R%I09"THLA8460N*K 5%UH(B:TF1M:3(6E)D+2FREA192XJL
M)476DB)K29&UI,@J!856*2BV2D'!50J*KE)0>)6"XJL4%&"EH @K!858*3#&
M@JYC88SE7,CBW,CB7,GZKW>ROH_C_A_'+\^XK]KA-3]9_M'@YB=02P$"% ,4
M    " #D@$M2!T%-8H$   "Q    $               @ $     9&]C4')O
M<',O87!P+GAM;%!+ 0(4 Q0    ( .2 2U(#J[<?[@   "L"   1
M      "  :\   !D;V-0<F]P<R]C;W)E+GAM;%!+ 0(4 Q0    ( .2 2U*9
M7)PC$ 8  )PG   3              "  <P!  !X;"]T:&5M92]T:&5M93$N
M>&UL4$L! A0#%     @ Y(!+4K2ER[NH!0  !A@  !@              ("!
M#0@  'AL+W=O<FMS:&5E=',O<VAE970Q+GAM;%!+ 0(4 Q0    ( .2 2U)$
MN9UE_@8  $4;   8              " @>L-  !X;"]W;W)K<VAE971S+W-H
M965T,BYX;6Q02P$"% ,4    " #D@$M2?-GH_!0$   3#0  &
M    @($?%0  >&PO=V]R:W-H965T<R]S:&5E=#,N>&UL4$L! A0#%     @
MY(!+4NI^T$/O @  MP<  !@              ("!:1D  'AL+W=O<FMS:&5E
M=',O<VAE970T+GAM;%!+ 0(4 Q0    ( .2 2U)#+7T?3@<  !T?   8
M          " @8X<  !X;"]W;W)K<VAE971S+W-H965T-2YX;6Q02P$"% ,4
M    " #D@$M2/6,2-"L#  !("@  &               @($2)   >&PO=V]R
M:W-H965T<R]S:&5E=#8N>&UL4$L! A0#%     @ Y(!+4CFNA+B1"    B4
M !@              ("!<R<  'AL+W=O<FMS:&5E=',O<VAE970W+GAM;%!+
M 0(4 Q0    ( .2 2U+N2 MKVPH  ,0X   8              " @3HP  !X
M;"]W;W)K<VAE971S+W-H965T."YX;6Q02P$"% ,4    " #D@$M23(->LO "
M  "W!P  &               @(%+.P  >&PO=V]R:W-H965T<R]S:&5E=#DN
M>&UL4$L! A0#%     @ Y(!+4OBJ9$K1*   /X4  !D              ("!
M<3X  'AL+W=O<FMS:&5E=',O<VAE970Q,"YX;6Q02P$"% ,4    " #D@$M2
MK:2V,VL(  #M&   &0              @(%Y9P  >&PO=V]R:W-H965T<R]S
M:&5E=#$Q+GAM;%!+ 0(4 Q0    ( .2 2U)&%-05)P<  %<2   9
M      " @1MP  !X;"]W;W)K<VAE971S+W-H965T,3(N>&UL4$L! A0#%
M  @ Y(!+4I:\Q3)-"   KQ4  !D              ("!>7<  'AL+W=O<FMS
M:&5E=',O<VAE970Q,RYX;6Q02P$"% ,4    " #D@$M29?*>M&("   1!0
M&0              @(']?P  >&PO=V]R:W-H965T<R]S:&5E=#$T+GAM;%!+
M 0(4 Q0    ( .2 2U)70N53IP,  +L(   9              " @9:"  !X
M;"]W;W)K<VAE971S+W-H965T,34N>&UL4$L! A0#%     @ Y(!+4H2=F5)-
M!@  ^QP  !D              ("!=(8  'AL+W=O<FMS:&5E=',O<VAE970Q
M-BYX;6Q02P$"% ,4    " #D@$M2E243F[@$  #5"@  &0
M@('XC   >&PO=V]R:W-H965T<R]S:&5E=#$W+GAM;%!+ 0(4 Q0    ( .2
M2U*P ^W#A08  &D/   9              " @>>1  !X;"]W;W)K<VAE971S
M+W-H965T,3@N>&UL4$L! A0#%     @ Y(!+4F(^V*XM P  (P<  !D
M         ("!HY@  'AL+W=O<FMS:&5E=',O<VAE970Q.2YX;6Q02P$"% ,4
M    " #D@$M22)Q8OT4#   ;!P  &0              @($'G   >&PO=V]R
M:W-H965T<R]S:&5E=#(P+GAM;%!+ 0(4 Q0    ( .2 2U*\<C\=1@0  +0*
M   9              " @8.?  !X;"]W;W)K<VAE971S+W-H965T,C$N>&UL
M4$L! A0#%     @ Y(!+4H736+D1!@  ;0\  !D              ("! *0
M 'AL+W=O<FMS:&5E=',O<VAE970R,BYX;6Q02P$"% ,4    " #D@$M2+[=Z
MNMX&   7$0  &0              @(%(J@  >&PO=V]R:W-H965T<R]S:&5E
M=#(S+GAM;%!+ 0(4 Q0    ( .2 2U+W;;.Q@ <  (,5   9
M  " @5VQ  !X;"]W;W)K<VAE971S+W-H965T,C0N>&UL4$L! A0#%     @
MY(!+4@_/1WNV"   JQ8  !D              ("!%+D  'AL+W=O<FMS:&5E
M=',O<VAE970R-2YX;6Q02P$"% ,4    " #D@$M2K4"5!SP#   _!P  &0
M            @($!P@  >&PO=V]R:W-H965T<R]S:&5E=#(V+GAM;%!+ 0(4
M Q0    ( .2 2U(9&>AB[1$  'TU   9              " @73%  !X;"]W
M;W)K<VAE971S+W-H965T,C<N>&UL4$L! A0#%     @ Y(!+4JD6[AY+ P
M* @  !D              ("!F-<  'AL+W=O<FMS:&5E=',O<VAE970R."YX
M;6Q02P$"% ,4    " #D@$M2P+!$E/D#  "$"   &0              @($:
MVP  >&PO=V]R:W-H965T<R]S:&5E=#(Y+GAM;%!+ 0(4 Q0    ( .2 2U+!
M!1J$>P<  .@1   9              " @4K?  !X;"]W;W)K<VAE971S+W-H
M965T,S N>&UL4$L! A0#%     @ Y(!+4AB6E5I]!@  \P\  !D
M     ("!_.8  'AL+W=O<FMS:&5E=',O<VAE970S,2YX;6Q02P$"% ,4
M" #D@$M2"[]ZS58"   L!0  &0              @(&P[0  >&PO=V]R:W-H
M965T<R]S:&5E=#,R+GAM;%!+ 0(4 Q0    ( .2 2U*$)2VVL0,  ',(   9
M              " @3WP  !X;"]W;W)K<VAE971S+W-H965T,S,N>&UL4$L!
M A0#%     @ Y(!+4IX3T/QN P  ]@<  !D              ("!)?0  'AL
M+W=O<FMS:&5E=',O<VAE970S-"YX;6Q02P$"% ,4    " #D@$M21)U*2=0Q
M  "@LP  &0              @('*]P  >&PO=V]R:W-H965T<R]S:&5E=#,U
M+GAM;%!+ 0(4 Q0    ( .2 2U)X!.L+?P@   L9   9              "
M@=4I 0!X;"]W;W)K<VAE971S+W-H965T,S8N>&UL4$L! A0#%     @ Y(!+
M4MR@74?< P  R D  !D              ("!BS(! 'AL+W=O<FMS:&5E=',O
M<VAE970S-RYX;6Q02P$"% ,4    " #D@$M2%9Y9% 8&  #D$@  &0
M        @(&>-@$ >&PO=V]R:W-H965T<R]S:&5E=#,X+GAM;%!+ 0(4 Q0
M   ( .2 2U+*?Y(I:0(   X%   9              " @=L\ 0!X;"]W;W)K
M<VAE971S+W-H965T,SDN>&UL4$L! A0#%     @ Y(!+4E01J>+Q @  *P8
M !D              ("!>S\! 'AL+W=O<FMS:&5E=',O<VAE970T,"YX;6Q0
M2P$"% ,4    " #D@$M2SM[W&F@"   '!0  &0              @(&C0@$
M>&PO=V]R:W-H965T<R]S:&5E=#0Q+GAM;%!+ 0(4 Q0    ( .2 2U)K:A'^
MM@(  /8%   9              " @4)% 0!X;"]W;W)K<VAE971S+W-H965T
M-#(N>&UL4$L! A0#%     @ Y(!+4H& T.G# P  M0@  !D
M ("!+T@! 'AL+W=O<FMS:&5E=',O<VAE970T,RYX;6Q02P$"% ,4    " #D
M@$M2>5LB^E@#  #4!P  &0              @($I3 $ >&PO=V]R:W-H965T
M<R]S:&5E=#0T+GAM;%!+ 0(4 Q0    ( .2 2U+N2.BNI04  & 0   9
M          " @;A/ 0!X;"]W;W)K<VAE971S+W-H965T-#4N>&UL4$L! A0#
M%     @ Y(!+4A-I2^)*!   P0L  !D              ("!E%4! 'AL+W=O
M<FMS:&5E=',O<VAE970T-BYX;6Q02P$"% ,4    " #D@$M2M8 [-U@%   %
M#0  &0              @($56@$ >&PO=V]R:W-H965T<R]S:&5E=#0W+GAM
M;%!+ 0(4 Q0    ( .2 2U*)=^JS3@@   (9   9              " @:1?
M 0!X;"]W;W)K<VAE971S+W-H965T-#@N>&UL4$L! A0#%     @ Y(!+4IAP
M[9NI @  P 4  !D              ("!*6@! 'AL+W=O<FMS:&5E=',O<VAE
M970T.2YX;6Q02P$"% ,4    " #D@$M23>0/;T,#  #;!@  &0
M    @($):P$ >&PO=V]R:W-H965T<R]S:&5E=#4P+GAM;%!+ 0(4 Q0    (
M .2 2U)6-;4?J0,  + '   9              " @8-N 0!X;"]W;W)K<VAE
M971S+W-H965T-3$N>&UL4$L! A0#%     @ Y(!+4O4#%8FO P  L @  !D
M             ("!8W(! 'AL+W=O<FMS:&5E=',O<VAE970U,BYX;6Q02P$"
M% ,4    " #D@$M2.P;(I,<#  "("   &0              @(%)=@$ >&PO
M=V]R:W-H965T<R]S:&5E=#4S+GAM;%!+ 0(4 Q0    ( .2 2U);7CHCN0,
M )D1   9              " @4=Z 0!X;"]W;W)K<VAE971S+W-H965T-30N
M>&UL4$L! A0#%     @ Y(!+4N+YFO)W P  EA$  !D              ("!
M-WX! 'AL+W=O<FMS:&5E=',O<VAE970U-2YX;6Q02P$"% ,4    " #D@$M2
M$WAG\4X"   N!@  &0              @('E@0$ >&PO=V]R:W-H965T<R]S
M:&5E=#4V+GAM;%!+ 0(4 Q0    ( .2 2U+DZ2;Z40(  %L&   9
M      " @6J$ 0!X;"]W;W)K<VAE971S+W-H965T-3<N>&UL4$L! A0#%
M  @ Y(!+4MN;S"5/ @  P04  !D              ("!\H8! 'AL+W=O<FMS
M:&5E=',O<VAE970U."YX;6Q02P$"% ,4    " #D@$M2LM000F<#  "2"@
M&0              @(%XB0$ >&PO=V]R:W-H965T<R]S:&5E=#4Y+GAM;%!+
M 0(4 Q0    ( .2 2U*N_2PY900  #L4   9              " @1:- 0!X
M;"]W;W)K<VAE971S+W-H965T-C N>&UL4$L! A0#%     @ Y(!+4MZKEP%U
M P  K P  !D              ("!LI$! 'AL+W=O<FMS:&5E=',O<VAE970V
M,2YX;6Q02P$"% ,4    " #D@$M2[PO<,RT$  #Y$0  &0
M@(%>E0$ >&PO=V]R:W-H965T<R]S:&5E=#8R+GAM;%!+ 0(4 Q0    ( .2
M2U*8)O0=  4  -T8   9              " @<*9 0!X;"]W;W)K<VAE971S
M+W-H965T-C,N>&UL4$L! A0#%     @ Y(!+4J-"$-[M @  ) @  !D
M         ("!^9X! 'AL+W=O<FMS:&5E=',O<VAE970V-"YX;6Q02P$"% ,4
M    " #D@$M2B@/\KXX&   *+0  &0              @($=H@$ >&PO=V]R
M:W-H965T<R]S:&5E=#8U+GAM;%!+ 0(4 Q0    ( .2 2U(X@A-EH0(  +P&
M   9              " @>*H 0!X;"]W;W)K<VAE971S+W-H965T-C8N>&UL
M4$L! A0#%     @ Y(!+4GKMSZ W!0  ^AL  !D              ("!NJL!
M 'AL+W=O<FMS:&5E=',O<VAE970V-RYX;6Q02P$"% ,4    " #D@$M2U0)$
M]5\"   Y!@  &0              @($HL0$ >&PO=V]R:W-H965T<R]S:&5E
M=#8X+GAM;%!+ 0(4 Q0    ( .2 2U(427FLQ ,  +\0   9
M  " @;ZS 0!X;"]W;W)K<VAE971S+W-H965T-CDN>&UL4$L! A0#%     @
MY(!+4EW1XNSE @  P@<  !D              ("!N;<! 'AL+W=O<FMS:&5E
M=',O<VAE970W,"YX;6Q02P$"% ,4    " #D@$M2$U2.A&P$  "M$   &0
M            @('5N@$ >&PO=V]R:W-H965T<R]S:&5E=#<Q+GAM;%!+ 0(4
M Q0    ( .2 2U*$C:WO4 (  $H&   9              " @7B_ 0!X;"]W
M;W)K<VAE971S+W-H965T-S(N>&UL4$L! A0#%     @ Y(!+4JR'BVKX @
M4@@  !D              ("!_\$! 'AL+W=O<FMS:&5E=',O<VAE970W,RYX
M;6Q02P$"% ,4    " #D@$M2X3DO?R4"  ![!   &0              @($N
MQ0$ >&PO=V]R:W-H965T<R]S:&5E=#<T+GAM;%!+ 0(4 Q0    ( .2 2U)Y
M\J!\Y@0  %49   9              " @8K' 0!X;"]W;W)K<VAE971S+W-H
M965T-S4N>&UL4$L! A0#%     @ Y(!+4BAFB]^D @  /P<  !D
M     ("!I\P! 'AL+W=O<FMS:&5E=',O<VAE970W-BYX;6Q02P$"% ,4
M" #D@$M2XXM0B&$$   K%   &0              @(&"SP$ >&PO=V]R:W-H
M965T<R]S:&5E=#<W+GAM;%!+ 0(4 Q0    ( .2 2U+<GO>RSP(  $H(   9
M              " @1K4 0!X;"]W;W)K<VAE971S+W-H965T-S@N>&UL4$L!
M A0#%     @ Y(!+4F5I:GS7 @  3P<  !D              ("!(-<! 'AL
M+W=O<FMS:&5E=',O<VAE970W.2YX;6Q02P$"% ,4    " #D@$M23XU@X/H!
M  #_ P  &0              @($NV@$ >&PO=V]R:W-H965T<R]S:&5E=#@P
M+GAM;%!+ 0(4 Q0    ( .2 2U*2-RNJ*P(  .<$   9              "
M@5_< 0!X;"]W;W)K<VAE971S+W-H965T.#$N>&UL4$L! A0#%     @ Y(!+
M4CH3'9=T!0  ;!P  !D              ("!P=X! 'AL+W=O<FMS:&5E=',O
M<VAE970X,BYX;6Q02P$"% ,4    " #D@$M2Q@=+M,8"  "4"   &0
M        @(%LY $ >&PO=V]R:W-H965T<R]S:&5E=#@S+GAM;%!+ 0(4 Q0
M   ( .2 2U(B756NRP(  %8(   9              " @6GG 0!X;"]W;W)K
M<VAE971S+W-H965T.#0N>&UL4$L! A0#%     @ Y(!+4N:X*1ZJ @  E@8
M !D              ("!:^H! 'AL+W=O<FMS:&5E=',O<VAE970X-2YX;6Q0
M2P$"% ,4    " #D@$M21>4A8A$"  "%!   &0              @(%,[0$
M>&PO=V]R:W-H965T<R]S:&5E=#@V+GAM;%!+ 0(4 Q0    ( .2 2U(-LA=?
MBP0  !84   9              " @93O 0!X;"]W;W)K<VAE971S+W-H965T
M.#<N>&UL4$L! A0#%     @ Y(!+4FM52BC7 @  RP<  !D
M ("!5O0! 'AL+W=O<FMS:&5E=',O<VAE970X."YX;6Q02P$"% ,4    " #D
M@$M2?:<_+^,"  #E!P  &0              @(%D]P$ >&PO=V]R:W-H965T
M<R]S:&5E=#@Y+GAM;%!+ 0(4 Q0    ( .2 2U(MQ#J"H04  !P<   9
M          " @7[Z 0!X;"]W;W)K<VAE971S+W-H965T.3 N>&UL4$L! A0#
M%     @ Y(!+4O#K^R-0!@  EAP  !D              ("!5@ " 'AL+W=O
M<FMS:&5E=',O<VAE970Y,2YX;6Q02P$"% ,4    " #D@$M2O=_>TG $  #"
M$0  &0              @('=!@( >&PO=V]R:W-H965T<R]S:&5E=#DR+GAM
M;%!+ 0(4 Q0    ( .2 2U)P=@/&&P,  (\)   9              " @80+
M @!X;"]W;W)K<VAE971S+W-H965T.3,N>&UL4$L! A0#%     @ Y(!+4L;7
MM@^  P  "0L  !D              ("!U@X" 'AL+W=O<FMS:&5E=',O<VAE
M970Y-"YX;6Q02P$"% ,4    " #D@$M2D4P'4@($  #J#@  &0
M    @(&-$@( >&PO=V]R:W-H965T<R]S:&5E=#DU+GAM;%!+ 0(4 Q0    (
M .2 2U+LRJXJ4 ,  "P+   9              " @<86 @!X;"]W;W)K<VAE
M971S+W-H965T.38N>&UL4$L! A0#%     @ Y(!+4C4>//7Y"   @"H  !D
M             ("!31H" 'AL+W=O<FMS:&5E=',O<VAE970Y-RYX;6Q02P$"
M% ,4    " #D@$M2I)A?M8L#  !5#   &0              @(%](P( >&PO
M=V]R:W-H965T<R]S:&5E=#DX+GAM;%!+ 0(4 Q0    ( .2 2U(#925HB00
M *D4   9              " @3\G @!X;"]W;W)K<VAE971S+W-H965T.3DN
M>&UL4$L! A0#%     @ Y(!+4HSTD^@Z!@  K!X  !H              ("!
M_RL" 'AL+W=O<FMS:&5E=',O<VAE970Q,# N>&UL4$L! A0#%     @ Y(!+
M4KO/H6]C P  $@H  !H              ("!<3(" 'AL+W=O<FMS:&5E=',O
M<VAE970Q,#$N>&UL4$L! A0#%     @ Y(!+4K^1C0 R!   + X  !H
M         ("!##8" 'AL+W=O<FMS:&5E=',O<VAE970Q,#(N>&UL4$L! A0#
M%     @ Y(!+4BGZS&3. @  P@<  !H              ("!=CH" 'AL+W=O
M<FMS:&5E=',O<VAE970Q,#,N>&UL4$L! A0#%     @ Y(!+4J8 TZ#7 @
M(@@  !H              ("!?#T" 'AL+W=O<FMS:&5E=',O<VAE970Q,#0N
M>&UL4$L! A0#%     @ Y(!+4K+ XS@R P  X0P  !H              ("!
MBT " 'AL+W=O<FMS:&5E=',O<VAE970Q,#4N>&UL4$L! A0#%     @ Y(!+
M4J.%9M$I!0  +!@  !H              ("!]4," 'AL+W=O<FMS:&5E=',O
M<VAE970Q,#8N>&UL4$L! A0#%     @ Y(!+4E=4\:/G!   N1@  !H
M         ("!5DD" 'AL+W=O<FMS:&5E=',O<VAE970Q,#<N>&UL4$L! A0#
M%     @ Y(!+4JWY0V06!0  -!8  !H              ("!=4X" 'AL+W=O
M<FMS:&5E=',O<VAE970Q,#@N>&UL4$L! A0#%     @ Y(!+4M6M[Q0L P
M-PH  !H              ("!PU," 'AL+W=O<FMS:&5E=',O<VAE970Q,#DN
M>&UL4$L! A0#%     @ Y(!+4@V<\WA0 P  = P  !H              ("!
M)U<" 'AL+W=O<FMS:&5E=',O<VAE970Q,3 N>&UL4$L! A0#%     @ Y(!+
M4BU= <*[!0  ""   !H              ("!KUH" 'AL+W=O<FMS:&5E=',O
M<VAE970Q,3$N>&UL4$L! A0#%     @ Y(!+4I VCZDK @  - 4  !H
M         ("!HF " 'AL+W=O<FMS:&5E=',O<VAE970Q,3(N>&UL4$L! A0#
M%     @ Y(!+4D93$^2+!0  QA<  !H              ("!!6," 'AL+W=O
M<FMS:&5E=',O<VAE970Q,3,N>&UL4$L! A0#%     @ Y(!+4E:HR-NJ!
M2!4  !H              ("!R&@" 'AL+W=O<FMS:&5E=',O<VAE970Q,30N
M>&UL4$L! A0#%     @ Y(!+4G@PAH+J 0  -00  !H              ("!
MJFT" 'AL+W=O<FMS:&5E=',O<VAE970Q,34N>&UL4$L! A0#%     @ Y(!+
M4D9-$XF3 @  < \   T              ( !S&\" 'AL+W-T>6QE<RYX;6Q0
M2P$"% ,4    " #D@$M2EXJ[',     3 @  "P              @ &*<@(
M7W)E;',O+G)E;'-02P$"% ,4    " #D@$M2U)89>R@(  !.2P  #P
M        @ %S<P( >&PO=V]R:V)O;VLN>&UL4$L! A0#%     @ Y(!+4C"4
M&E<S P  @D,  !H              ( !R'L" 'AL+U]R96QS+W=O<FMB;V]K
M+GAM;"YR96QS4$L! A0#%     @ Y(!+4D4/!/Z) @  V4   !,
M     ( !,W\" %M#;VYT96YT7U1Y<&5S72YX;6Q02P4&     'L >P#D(0
&[8$"

end
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>XML
<SEQUENCE>131
<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>132
<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>133
<FILENAME>FilingSummary.xml
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
<XML>
<?xml version='1.0' encoding='utf-8'?>
<FilingSummary>
  <Version>3.20.4</Version>
  <ProcessingTime/>
  <ReportFormat>html</ReportFormat>
  <ContextCount>319</ContextCount>
  <ElementCount>580</ElementCount>
  <EntityCount>1</EntityCount>
  <FootnotesReported>true</FootnotesReported>
  <SegmentCount>106</SegmentCount>
  <ScenarioCount>0</ScenarioCount>
  <TuplesReported>false</TuplesReported>
  <UnitCount>17</UnitCount>
  <MyReports>
    <Report instance="cgnx-20201231.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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R2.htm</HtmlFileName>
      <LongName>100010002 - Statement - CONSOLIDATED STATEMENTS OF OPERATIONS</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS</Role>
      <ShortName>CONSOLIDATED STATEMENTS OF OPERATIONS</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>2</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R3.htm</HtmlFileName>
      <LongName>100030004 - 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>3</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R4.htm</HtmlFileName>
      <LongName>100040005 - 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>4</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R5.htm</HtmlFileName>
      <LongName>100050006 - Statement - CONSOLIDATED BALANCE SHEETS</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CONSOLIDATEDBALANCESHEETS</Role>
      <ShortName>CONSOLIDATED BALANCE SHEETS</ShortName>
      <MenuCategory>Statements</MenuCategory>
      <Position>5</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R6.htm</HtmlFileName>
      <LongName>100060007 - 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>6</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R7.htm</HtmlFileName>
      <LongName>100070008 - 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>7</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R8.htm</HtmlFileName>
      <LongName>100080009 - 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>8</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R9.htm</HtmlFileName>
      <LongName>100090010 - 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>9</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R10.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>10</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R11.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>11</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R12.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>12</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R13.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>13</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R14.htm</HtmlFileName>
      <LongName>210231005 - Disclosure - Inventories</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/Inventories</Role>
      <ShortName>Inventories</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>14</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R15.htm</HtmlFileName>
      <LongName>210261006 - 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>15</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R16.htm</HtmlFileName>
      <LongName>210301007 - Disclosure - Leases Leases</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/LeasesLeases</Role>
      <ShortName>Leases Leases</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>16</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R17.htm</HtmlFileName>
      <LongName>210341008 - Disclosure - Goodwill</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/Goodwill</Role>
      <ShortName>Goodwill</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>17</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R18.htm</HtmlFileName>
      <LongName>210381009 - Disclosure - Intangible Assets</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IntangibleAssets</Role>
      <ShortName>Intangible Assets</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>18</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R19.htm</HtmlFileName>
      <LongName>210431010 - Disclosure - Accrued Expenses</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/AccruedExpenses</Role>
      <ShortName>Accrued Expenses</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>19</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R20.htm</HtmlFileName>
      <LongName>210471011 - Disclosure - Commitments and Contingencies</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/CommitmentsandContingencies</Role>
      <ShortName>Commitments and Contingencies</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>20</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R21.htm</HtmlFileName>
      <LongName>210491012 - Disclosure - Indemnification Provisions</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IndemnificationProvisions</Role>
      <ShortName>Indemnification Provisions</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>21</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R22.htm</HtmlFileName>
      <LongName>210501013 - Disclosure - Derivative Instruments</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/DerivativeInstruments</Role>
      <ShortName>Derivative Instruments</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>22</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R23.htm</HtmlFileName>
      <LongName>210571014 - Disclosure - Revenue Recognition</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RevenueRecognition</Role>
      <ShortName>Revenue Recognition</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>23</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R24.htm</HtmlFileName>
      <LongName>210631015 - Disclosure - Shareholders' Equity</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/ShareholdersEquity</Role>
      <ShortName>Shareholders' Equity</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>24</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R25.htm</HtmlFileName>
      <LongName>210651016 - Disclosure - Stock-Based Compensation</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/StockBasedCompensation</Role>
      <ShortName>Stock-Based Compensation</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>25</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R26.htm</HtmlFileName>
      <LongName>210721017 - Disclosure - Employee Savings Plan</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/EmployeeSavingsPlan</Role>
      <ShortName>Employee Savings Plan</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>26</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R27.htm</HtmlFileName>
      <LongName>210741018 - Disclosure - Income Taxes</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/IncomeTaxes</Role>
      <ShortName>Income Taxes</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>27</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R28.htm</HtmlFileName>
      <LongName>210821019 - Disclosure - Weighted Average Shares</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/WeightedAverageShares</Role>
      <ShortName>Weighted Average Shares</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>28</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R29.htm</HtmlFileName>
      <LongName>210861020 - 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>29</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R30.htm</HtmlFileName>
      <LongName>210901021 - Disclosure - Acquisitions</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/Acquisitions</Role>
      <ShortName>Acquisitions</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>30</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R31.htm</HtmlFileName>
      <LongName>210941022 - Disclosure - Restructuring Charges</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/RestructuringCharges</Role>
      <ShortName>Restructuring Charges</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>31</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R32.htm</HtmlFileName>
      <LongName>210991023 - Disclosure - Subsequent Events</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SubsequentEvents</Role>
      <ShortName>Subsequent Events</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>32</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R33.htm</HtmlFileName>
      <LongName>211011024 - Disclosure - Selected Quarterly Financial Data (Unaudited)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SelectedQuarterlyFinancialDataUnaudited</Role>
      <ShortName>Selected Quarterly Financial Data (Unaudited)</ShortName>
      <MenuCategory>Notes</MenuCategory>
      <Position>33</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R34.htm</HtmlFileName>
      <LongName>211041025 - 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-20201231.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-20201231.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-20201231.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-20201231.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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R39.htm</HtmlFileName>
      <LongName>230243003 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R40.htm</HtmlFileName>
      <LongName>230273004 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R41.htm</HtmlFileName>
      <LongName>230313005 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R42.htm</HtmlFileName>
      <LongName>230353006 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R43.htm</HtmlFileName>
      <LongName>230393007 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R44.htm</HtmlFileName>
      <LongName>230443008 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R45.htm</HtmlFileName>
      <LongName>230513009 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R46.htm</HtmlFileName>
      <LongName>230583010 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R47.htm</HtmlFileName>
      <LongName>230663011 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R48.htm</HtmlFileName>
      <LongName>230753012 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R49.htm</HtmlFileName>
      <LongName>230833013 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R50.htm</HtmlFileName>
      <LongName>230873014 - 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-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R51.htm</HtmlFileName>
      <LongName>230913015 - Disclosure - Acquisitions Acquisitions - (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/AcquisitionsAcquisitionsTables</Role>
      <ShortName>Acquisitions Acquisitions - (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <Position>51</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R52.htm</HtmlFileName>
      <LongName>230953016 - 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>52</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R53.htm</HtmlFileName>
      <LongName>231023017 - Disclosure - Selected Quarterly Financial Data (Unaudited) (Tables)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedTables</Role>
      <ShortName>Selected Quarterly Financial Data (Unaudited) (Tables)</ShortName>
      <MenuCategory>Tables</MenuCategory>
      <ParentRole>http://cognex.com/role/SelectedQuarterlyFinancialDataUnaudited</ParentRole>
      <Position>53</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R54.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>54</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R55.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>55</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R56.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>56</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R57.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>57</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R58.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>58</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R59.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>59</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R60.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>60</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R61.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>61</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R62.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>62</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R63.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>63</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R64.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>64</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R65.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>65</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R66.htm</HtmlFileName>
      <LongName>240214013 - 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>66</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R67.htm</HtmlFileName>
      <LongName>240224014 - 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>67</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R68.htm</HtmlFileName>
      <LongName>240254015 - Disclosure - Inventories - Inventories (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/InventoriesInventoriesDetail</Role>
      <ShortName>Inventories - Inventories (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>68</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R69.htm</HtmlFileName>
      <LongName>240284016 - 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>69</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R70.htm</HtmlFileName>
      <LongName>240294017 - 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>70</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R71.htm</HtmlFileName>
      <LongName>240324018 - 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>71</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R72.htm</HtmlFileName>
      <LongName>240334019 - 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>72</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R73.htm</HtmlFileName>
      <LongName>240364020 - 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>73</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R74.htm</HtmlFileName>
      <LongName>240374021 - Disclosure - Goodwill - Additional Information (Detail)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/GoodwillAdditionalInformationDetail</Role>
      <ShortName>Goodwill - Additional Information (Detail)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>74</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R75.htm</HtmlFileName>
      <LongName>240404022 - 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>75</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R76.htm</HtmlFileName>
      <LongName>240414023 - 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>76</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R77.htm</HtmlFileName>
      <LongName>240424024 - 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>77</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R78.htm</HtmlFileName>
      <LongName>240454025 - 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>78</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R79.htm</HtmlFileName>
      <LongName>240464026 - 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>79</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R80.htm</HtmlFileName>
      <LongName>240484027 - 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>80</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R81.htm</HtmlFileName>
      <LongName>240524028 - 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>81</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R82.htm</HtmlFileName>
      <LongName>240534029 - 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>82</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R83.htm</HtmlFileName>
      <LongName>240544030 - 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>83</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R84.htm</HtmlFileName>
      <LongName>240554031 - 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>84</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R85.htm</HtmlFileName>
      <LongName>240564032 - 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>85</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R86.htm</HtmlFileName>
      <LongName>240594033 - 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>86</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R87.htm</HtmlFileName>
      <LongName>240604034 - 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>87</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R88.htm</HtmlFileName>
      <LongName>240614035 - 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>88</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R89.htm</HtmlFileName>
      <LongName>240624036 - 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>89</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R90.htm</HtmlFileName>
      <LongName>240644037 - 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>90</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R91.htm</HtmlFileName>
      <LongName>240674038 - 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>91</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R92.htm</HtmlFileName>
      <LongName>240684039 - 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>92</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R93.htm</HtmlFileName>
      <LongName>240694040 - 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>93</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R94.htm</HtmlFileName>
      <LongName>240704041 - 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>94</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R95.htm</HtmlFileName>
      <LongName>240714042 - 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>95</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R96.htm</HtmlFileName>
      <LongName>240734043 - 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>96</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R97.htm</HtmlFileName>
      <LongName>240764044 - 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>97</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R98.htm</HtmlFileName>
      <LongName>240774045 - 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>98</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R99.htm</HtmlFileName>
      <LongName>240784046 - 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>99</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R100.htm</HtmlFileName>
      <LongName>240794047 - 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>100</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R101.htm</HtmlFileName>
      <LongName>240804048 - 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>101</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R102.htm</HtmlFileName>
      <LongName>240814049 - 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>102</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R103.htm</HtmlFileName>
      <LongName>240844050 - 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>103</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R104.htm</HtmlFileName>
      <LongName>240854051 - 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>104</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R105.htm</HtmlFileName>
      <LongName>240884052 - 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>105</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R106.htm</HtmlFileName>
      <LongName>240894053 - 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>106</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R107.htm</HtmlFileName>
      <LongName>240924054 - Disclosure - Acquisitions - Sualab Co., Ltd. Narrative (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails</Role>
      <ShortName>Acquisitions - Sualab Co., Ltd. Narrative (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>107</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R108.htm</HtmlFileName>
      <LongName>240934055 - Disclosure - Acquisitions - Sualab Co., Ltd. Purchase Price Allocation (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails</Role>
      <ShortName>Acquisitions - Sualab Co., Ltd. Purchase Price Allocation (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <Position>108</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R109.htm</HtmlFileName>
      <LongName>240964056 - 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>109</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R110.htm</HtmlFileName>
      <LongName>240974057 - 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>110</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R111.htm</HtmlFileName>
      <LongName>240984058 - 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>111</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R112.htm</HtmlFileName>
      <LongName>241004059 - 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>112</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R113.htm</HtmlFileName>
      <LongName>241034060 - Disclosure - Selected Quarterly Financial Data (Unaudited) (Details)</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails</Role>
      <ShortName>Selected Quarterly Financial Data (Unaudited) (Details)</ShortName>
      <MenuCategory>Details</MenuCategory>
      <ParentRole>http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedTables</ParentRole>
      <Position>113</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R114.htm</HtmlFileName>
      <LongName>241054061 - 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>114</Position>
    </Report>
    <Report instance="cgnx-20201231.htm">
      <IsDefault>false</IsDefault>
      <HasEmbeddedReports>false</HasEmbeddedReports>
      <HtmlFileName>R9999.htm</HtmlFileName>
      <LongName>Uncategorized Items - cgnx-20201231.htm</LongName>
      <ReportType>Sheet</ReportType>
      <Role>http://xbrl.sec.gov/role/uncategorizedFacts</Role>
      <ShortName>Uncategorized Items - cgnx-20201231.htm</ShortName>
      <MenuCategory>Cover</MenuCategory>
      <Position>115</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-20201231.htm">cgnx-20201231.htm</File>
    <File>cgnx-20201231.xsd</File>
    <File>cgnx-20201231_cal.xml</File>
    <File>cgnx-20201231_def.xml</File>
    <File>cgnx-20201231_lab.xml</File>
    <File>cgnx-20201231_pre.xml</File>
    <File>cgnx-20201231xexhibit21.htm</File>
    <File>cgnx-20201231xexhibit231.htm</File>
    <File>cgnx-20201231xexhibit311.htm</File>
    <File>cgnx-20201231xexhibit312.htm</File>
    <File>cgnx-20201231xexhibit321.htm</File>
    <File>cgnx-20201231xexhibit322.htm</File>
  </InputFiles>
  <SupplementalFiles>
    <File>cgnx-20201231_g1.jpg</File>
  </SupplementalFiles>
  <BaseTaxonomies>
    <BaseTaxonomy>http://fasb.org/us-gaap/2020-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://xbrl.sec.gov/currency/2020-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://xbrl.sec.gov/country/2020-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://fasb.org/srt/2020-01-31</BaseTaxonomy>
    <BaseTaxonomy>http://xbrl.sec.gov/dei/2020-01-31</BaseTaxonomy>
  </BaseTaxonomies>
  <HasPresentationLinkbase>true</HasPresentationLinkbase>
  <HasCalculationLinkbase>true</HasCalculationLinkbase>
</FilingSummary>
</XML>
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>JSON
<SEQUENCE>136
<FILENAME>MetaLinks.json
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
{
 "instance": {
  "cgnx-20201231.htm": {
   "axisCustom": 1,
   "axisStandard": 32,
   "contextCount": 319,
   "dts": {
    "calculationLink": {
     "local": [
      "cgnx-20201231_cal.xml"
     ]
    },
    "definitionLink": {
     "local": [
      "cgnx-20201231_def.xml"
     ],
     "remote": [
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-eedm-def-2020-01-31.xml",
      "http://xbrl.fasb.org/srt/2020/elts/srt-eedm1-def-2020-01-31.xml"
     ]
    },
    "inline": {
     "local": [
      "cgnx-20201231.htm"
     ]
    },
    "labelLink": {
     "local": [
      "cgnx-20201231_lab.xml"
     ],
     "remote": [
      "https://xbrl.sec.gov/dei/2020/dei-doc-2020-01-31.xml",
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-doc-2020-01-31.xml",
      "http://xbrl.fasb.org/srt/2020/elts/srt-doc-2020-01-31.xml"
     ]
    },
    "presentationLink": {
     "local": [
      "cgnx-20201231_pre.xml"
     ]
    },
    "referenceLink": {
     "remote": [
      "http://xbrl.fasb.org/srt/2020/elts/srt-ref-2020-01-31.xml",
      "https://xbrl.sec.gov/dei/2020/dei-ref-2020-01-31.xml",
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-ref-2020-01-31.xml"
     ]
    },
    "schema": {
     "local": [
      "cgnx-20201231.xsd"
     ],
     "remote": [
      "http://xbrl.fasb.org/srt/2020/elts/srt-2020-01-31.xsd",
      "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/dtr/type/numeric-2009-12-16.xsd",
      "http://www.xbrl.org/dtr/type/nonNumeric-2009-12-16.xsd",
      "http://www.xbrl.org/2005/xbrldt-2005.xsd",
      "http://www.xbrl.org/2006/ref-2006-02-27.xsd",
      "http://xbrl.fasb.org/srt/2020/elts/srt-types-2020-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-gaap-2020-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-roles-2020-01-31.xsd",
      "http://xbrl.fasb.org/srt/2020/elts/srt-roles-2020-01-31.xsd",
      "https://xbrl.sec.gov/country/2020/country-2020-01-31.xsd",
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-types-2020-01-31.xsd",
      "https://xbrl.sec.gov/currency/2020/currency-2020-01-31.xsd",
      "https://xbrl.sec.gov/dei/2020/dei-2020-01-31.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",
      "http://www.xbrl.org/lrr/role/deprecated-2009-12-16.xsd",
      "http://xbrl.fasb.org/us-gaap/2020/elts/us-parts-codification-2020-01-31.xsd"
     ]
    }
   },
   "elementCount": 818,
   "entityCount": 1,
   "hidden": {
    "http://cognex.com/20201231": 10,
    "http://fasb.org/us-gaap/2020-01-31": 62,
    "http://xbrl.sec.gov/dei/2020-01-31": 7,
    "total": 79
   },
   "keyCustom": 67,
   "keyStandard": 513,
   "memberCustom": 31,
   "memberStandard": 70,
   "nsprefix": "cgnx",
   "nsuri": "http://cognex.com/20201231",
   "report": {
    "R1": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "dei:DocumentType",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R10": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SignificantAccountingPoliciesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R100": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240794047 - 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-20201231.htm",
      "contextRef": "ifbdf0ae819594cb49f4c1e2f90ad10af_D20190101-20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R101": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:SummaryOfIncomeTaxContingenciesTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i75e8b9e5dee441478b9993822d16dbea_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:UnrecognizedTaxBenefits",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240804048 - 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-20201231.htm",
      "contextRef": "i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R102": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240814049 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:DeferredTaxAssetsIntangibleAssetChangeinTaxStructure",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R103": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:WeightedAverageNumberOfSharesOutstandingBasic",
      "reportCount": 1,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240844050 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R104": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i7d5054231975477bbc455390b1195587_D20200101-20201231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240854051 - 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-20201231.htm",
      "contextRef": "i7d5054231975477bbc455390b1195587_D20200101-20201231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R105": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NumberOfReportableSegments",
      "reportCount": 1,
      "unitRef": "segment",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240884052 - 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": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i3181f39a9ece4d42a19fcf211f42e203_D20200101-20201231",
      "decimals": "2",
      "lang": "en-US",
      "name": "us-gaap:ConcentrationRiskPercentage1",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R106": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:QuarterlyFinancialInformationTextBlock",
       "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240894053 - 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-20201231.htm",
      "contextRef": "iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:NoncurrentAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R107": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:QuarterlyFinancialInformationTextBlock",
       "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240924054 - Disclosure - Acquisitions - Sualab Co., Ltd. Narrative (Details)",
     "role": "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
     "shortName": "Acquisitions - Sualab Co., Ltd. Narrative (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ib3b9e3e754784b8a883740beb69647f9_I20191016",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R108": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfGoodwillTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240934055 - Disclosure - Acquisitions - Sualab Co., Ltd. Purchase Price Allocation (Details)",
     "role": "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails",
     "shortName": "Acquisitions - Sualab Co., Ltd. Purchase Price Allocation (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ib3b9e3e754784b8a883740beb69647f9_I20191016",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R109": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ib391e5eb31594e308bef2a25810dbf65_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": "240964056 - 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-20201231.htm",
      "contextRef": "ib391e5eb31594e308bef2a25810dbf65_I20200526",
      "decimals": "2",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringAndRelatedCostNumberOfPositionsEliminatedInceptionToDatePercent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R11": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R110": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:QuarterlyFinancialInformationTextBlock",
       "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringCharges",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240974057 - 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
    },
    "R111": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:QuarterlyFinancialInformationTextBlock",
       "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringCharges",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240984058 - 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-20201231.htm",
      "contextRef": "i910901a831a74c5a94efe291993cb6db_D20200101-20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:RestructuringCharges",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R112": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ibe2a9b71d2a34641867e257f72e7ac89_I20210211",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DividendsPayableAmountPerShare",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usdPerShare",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "241004059 - 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-20201231.htm",
      "contextRef": "ibe2a9b71d2a34641867e257f72e7ac89_I20210211",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DividendsPayableAmountPerShare",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usdPerShare",
      "xsiNil": "false"
     }
    },
    "R113": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:QuarterlyFinancialInformationTextBlock",
       "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "241034060 - Disclosure - Selected Quarterly Financial Data (Unaudited) (Details)",
     "role": "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails",
     "shortName": "Selected Quarterly Financial Data (Unaudited) (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:QuarterlyFinancialInformationTextBlock",
       "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i6b2233602b0647a2b609b79e4cf097f7_D20200629-20200927",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:GrossProfit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R114": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i8e972664ec3c438389db17b50d0ad10f_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ValuationAllowancesAndReservesBalance",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "241054061 - 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-20201231.htm",
      "contextRef": "ie9684df3af564d50a07cfe28f4f69336_I20171231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:ValuationAllowancesAndReservesBalance",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R12": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FairValueDisclosuresTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R13": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InvestmentsInDebtAndEquityInstrumentsCashAndCashEquivalentsUnrealizedAndRealizedGainsLossesTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R14": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210231005 - Disclosure - Inventories",
     "role": "http://cognex.com/role/Inventories",
     "shortName": "Inventories",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R15": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210261006 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R16": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeasesOfLessorDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210301007 - Disclosure - Leases Leases",
     "role": "http://cognex.com/role/LeasesLeases",
     "shortName": "Leases Leases",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:LesseeOperatingLeasesTextBlock",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeasesOfLessorDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R17": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:GoodwillDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210341008 - Disclosure - Goodwill",
     "role": "http://cognex.com/role/Goodwill",
     "shortName": "Goodwill",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:GoodwillDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R18": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IntangibleAssetsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210381009 - Disclosure - Intangible Assets",
     "role": "http://cognex.com/role/IntangibleAssets",
     "shortName": "Intangible Assets",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IntangibleAssetsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R19": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210431010 - Disclosure - Accrued Expenses",
     "role": "http://cognex.com/role/AccruedExpenses",
     "shortName": "Accrued Expenses",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R2": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:QuarterlyFinancialInformationTextBlock",
       "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100010002 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:CostOfGoodsAndServicesSold",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R20": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210471011 - Disclosure - Commitments and Contingencies",
     "role": "http://cognex.com/role/CommitmentsandContingencies",
     "shortName": "Commitments and Contingencies",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CommitmentsAndContingenciesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R21": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:IndemnificationProvisionsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210491012 - Disclosure - Indemnification Provisions",
     "role": "http://cognex.com/role/IndemnificationProvisions",
     "shortName": "Indemnification Provisions",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:IndemnificationProvisionsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R22": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210501013 - Disclosure - Derivative Instruments",
     "role": "http://cognex.com/role/DerivativeInstruments",
     "shortName": "Derivative Instruments",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R23": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210571014 - Disclosure - Revenue Recognition",
     "role": "http://cognex.com/role/RevenueRecognition",
     "shortName": "Revenue Recognition",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R24": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210631015 - Disclosure - Shareholders' Equity",
     "role": "http://cognex.com/role/ShareholdersEquity",
     "shortName": "Shareholders' Equity",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockholdersEquityNoteDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R25": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210651016 - Disclosure - Stock-Based Compensation",
     "role": "http://cognex.com/role/StockBasedCompensation",
     "shortName": "Stock-Based Compensation",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R26": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210721017 - Disclosure - Employee Savings Plan",
     "role": "http://cognex.com/role/EmployeeSavingsPlan",
     "shortName": "Employee Savings Plan",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PensionAndOtherPostretirementBenefitsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R27": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210741018 - Disclosure - Income Taxes",
     "role": "http://cognex.com/role/IncomeTaxes",
     "shortName": "Income Taxes",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R28": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210821019 - Disclosure - Weighted Average Shares",
     "role": "http://cognex.com/role/WeightedAverageShares",
     "shortName": "Weighted Average Shares",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EarningsPerShareTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R29": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210861020 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SegmentReportingDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R3": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100030004 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R30": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210901021 - Disclosure - Acquisitions",
     "role": "http://cognex.com/role/Acquisitions",
     "shortName": "Acquisitions",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:BusinessCombinationDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R31": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringAndRelatedActivitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210941022 - Disclosure - Restructuring Charges",
     "role": "http://cognex.com/role/RestructuringCharges",
     "shortName": "Restructuring Charges",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RestructuringAndRelatedActivitiesDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R32": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SubsequentEventsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "210991023 - Disclosure - Subsequent Events",
     "role": "http://cognex.com/role/SubsequentEvents",
     "shortName": "Subsequent Events",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:SubsequentEventsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R33": {
     "firstAnchor": {
      "ancestors": [
       "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:QuarterlyFinancialInformationTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "211011024 - Disclosure - Selected Quarterly Financial Data (Unaudited)",
     "role": "http://cognex.com/role/SelectedQuarterlyFinancialDataUnaudited",
     "shortName": "Selected Quarterly Financial Data (Unaudited)",
     "subGroupType": "",
     "uniqueAnchor": {
      "ancestors": [
       "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:QuarterlyFinancialInformationTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R34": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "srt:ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "211041025 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230243003 - Disclosure - Inventories (Tables)",
     "role": "http://cognex.com/role/InventoriesTables",
     "shortName": "Inventories (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R4": {
     "firstAnchor": null,
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100040005 - Statement - CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME (Parenthetical)",
     "role": "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical",
     "shortName": "CONSOLIDATED STATEMENTS OF COMPREHENSIVE INCOME (Parenthetical)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": null
    },
    "R40": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230273004 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R41": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230313005 - Disclosure - Leases (Tables)",
     "role": "http://cognex.com/role/LeasesTables",
     "shortName": "Leases (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfGoodwillTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230353006 - Disclosure - Goodwill (Tables)",
     "role": "http://cognex.com/role/GoodwillTables",
     "shortName": "Goodwill (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230393007 - Disclosure - Intangible Assets (Tables)",
     "role": "http://cognex.com/role/IntangibleAssetsTables",
     "shortName": "Intangible Assets (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230443008 - Disclosure - Accrued Expenses (Tables)",
     "role": "http://cognex.com/role/AccruedExpensesTables",
     "shortName": "Accrued Expenses (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230513009 - Disclosure - Derivative Instruments (Tables)",
     "role": "http://cognex.com/role/DerivativeInstrumentsTables",
     "shortName": "Derivative Instruments (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DisaggregationOfRevenueTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230583010 - Disclosure - Revenue Recognition (Tables)",
     "role": "http://cognex.com/role/RevenueRecognitionTables",
     "shortName": "Revenue Recognition (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230663011 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230753012 - Disclosure - Income Taxes (Tables)",
     "role": "http://cognex.com/role/IncomeTaxesTables",
     "shortName": "Income Taxes (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230833013 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfWeightedAverageNumberOfSharesTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R5": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CashAndCashEquivalentsAtCarryingValue",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100050006 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:AccountsReceivableNetCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R50": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230873014 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "230913015 - Disclosure - Acquisitions Acquisitions - (Tables)",
     "role": "http://cognex.com/role/AcquisitionsAcquisitionsTables",
     "shortName": "Acquisitions Acquisitions - (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R52": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_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": "230953016 - Disclosure - Restructuring Charges (Tables)",
     "role": "http://cognex.com/role/RestructuringChargesTables",
     "shortName": "Restructuring Charges (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfRestructuringAndRelatedCostsTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R53": {
     "firstAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "231023017 - Disclosure - Selected Quarterly Financial Data (Unaudited) (Tables)",
     "role": "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedTables",
     "shortName": "Selected Quarterly Financial Data (Unaudited) (Tables)",
     "subGroupType": "tables",
     "uniqueAnchor": {
      "ancestors": [
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R54": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:InvestmentPolicyTextBlock",
       "us-gaap:CashAndCashEquivalentsPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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:InvestmentPolicyTextBlock",
       "us-gaap:CashAndCashEquivalentsPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:AvailableforsaleSecuritiesDebtMaturitiesEffectiveTermMaximum",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R55": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:IntangibleAssetsFiniteLivedPolicy",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "if36850dcbd1740589493383b1e09703b_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "if36850dcbd1740589493383b1e09703b_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FiniteLivedIntangibleAssetUsefulLife",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R56": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:StandardProductWarrantyPolicy",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i4cb9bac3005844c5b3ae926944c6a28e_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "i4cb9bac3005844c5b3ae926944c6a28e_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:ProductWarrantyPeriod",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R57": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i4cb9bac3005844c5b3ae926944c6a28e_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "i4cb9bac3005844c5b3ae926944c6a28e_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:RevenuePaymentTerms",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R58": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:AdvertisingCostsPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AdvertisingExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R59": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "us-gaap:ComprehensiveIncomePolicyPolicyTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R6": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PreferredStockSharesAuthorized",
      "reportCount": 1,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100060007 - Statement - CONSOLIDATED BALANCE SHEETS (Parenthetical)",
     "role": "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
     "shortName": "CONSOLIDATED BALANCE SHEETS (Parenthetical)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": null
    },
    "R60": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i3105dceca27c41bea714c34ef0d49b64_I20201231",
      "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-20201231.htm",
      "contextRef": "i3105dceca27c41bea714c34ef0d49b64_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:MoneyMarketInstrumentsFairValueDisclosure",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R61": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i75e8b9e5dee441478b9993822d16dbea_I20191231",
      "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-20201231.htm",
      "contextRef": "i4fb853a9f1a949509cbf8fc704fad5a9_D20190101-20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:LiabilitiesFairValueAdjustment",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R62": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "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": null
    },
    "R63": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "cgnx:ComponentsOfCashCashEquivalentsAndInvestmentsTableTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:MoneyMarketFundsAtCarryingValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R64": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:DueFromForeignBanks",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R65": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAvailableForSaleSecuritiesReconciliationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AvailableForSaleDebtSecuritiesAmortizedCostBasis",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R66": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock",
       "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i75e8b9e5dee441478b9993822d16dbea_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240214013 - 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-20201231.htm",
      "contextRef": "i75e8b9e5dee441478b9993822d16dbea_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R67": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:InvestmentsClassifiedByContractualMaturityDateTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240224014 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R68": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfInventoryCurrentTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryRawMaterialsNetOfReserves",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240254015 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:InventoryRawMaterialsNetOfReserves",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R69": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:PropertyPlantAndEquipmentTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240284016 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R7": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:NetIncomeLoss",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100070008 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:StockOptionPlanExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R70": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisposals",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240294017 - 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": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PropertyPlantAndEquipmentDisposals",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R71": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseRightOfUseAsset",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240324018 - Disclosure - Leases (Details)",
     "role": "http://cognex.com/role/LeasesDetails",
     "shortName": "Leases (Details)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:OperatingLeaseExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R72": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock",
       "ix:continuation",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240334019 - 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",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R73": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i75e8b9e5dee441478b9993822d16dbea_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:Goodwill",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240364020 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:GoodwillForeignCurrencyTranslationGainLoss",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R74": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PaymentsForProceedsFromPreviousAcquisition",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240374021 - Disclosure - Goodwill - Additional Information (Detail)",
     "role": "http://cognex.com/role/GoodwillAdditionalInformationDetail",
     "shortName": "Goodwill - Additional Information (Detail)",
     "subGroupType": "details",
     "uniqueAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PaymentsForProceedsFromPreviousAcquisition",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R75": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfFiniteLivedIntangibleAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240404022 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FiniteLivedIntangibleAssetsGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R76": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240414023 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R77": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:QuarterlyFinancialInformationTextBlock",
       "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240424024 - 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-20201231.htm",
      "contextRef": "if0dc89428d034c9082662b3998a327f0_D20200330-20200628",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:ImpairmentOfIntangibleAssetsExcludingGoodwill",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R78": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfAccruedLiabilitiesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccruedBonusesCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240454025 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AccruedBonusesCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R79": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i75e8b9e5dee441478b9993822d16dbea_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ProductWarrantyAccrual",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240464026 - 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-20201231.htm",
      "contextRef": "iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:ProductWarrantyAccrual",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R8": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ib740d5d51df04ae39bc1007f04b7006f_I20171231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100080009 - 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-20201231.htm",
      "contextRef": "ib740d5d51df04ae39bc1007f04b7006f_I20171231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:StockholdersEquity",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R80": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240484027 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PurchaseCommitmentRemainingMinimumAmountCommitted",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R81": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "if37f3b9e731b4d1e91e114764a70d4e3_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240524028 - 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-20201231.htm",
      "contextRef": "if37f3b9e731b4d1e91e114764a70d4e3_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:MaximumRemainingMaturityOfForeignCurrencyDerivatives1",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R82": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i256cacfc43da44b1a64b0b147f385a07_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeAssetNotionalAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240534029 - 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-20201231.htm",
      "contextRef": "i256cacfc43da44b1a64b0b147f385a07_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeAssetNotionalAmount",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R83": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:OffsettingAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeAssets",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240544030 - 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-20201231.htm",
      "contextRef": "id2536238c18941b1b330f426e3f204c1_I20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:DerivativeAssets",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R84": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:OffsettingAssetsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeFairValueOfDerivativeAsset",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240554031 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeFairValueOfDerivativeAsset",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R85": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "us-gaap:ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock",
       "div",
       "us-gaap:ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "iab20f4d47e244a76ace9b260b5743e28_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeGainLossOnDerivativeNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240564032 - 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-20201231.htm",
      "contextRef": "iab20f4d47e244a76ace9b260b5743e28_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DerivativeGainLossOnDerivativeNet",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R86": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CapitalizedContractCostGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240594033 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "0",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CapitalizedContractCostGross",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R87": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:QuarterlyFinancialInformationTextBlock",
       "us-gaap:ScheduleOfQuarterlyFinancialInformationTableTextBlock",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ic2a942828c2a44139ac97717f4ba97b7_D20200928-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240604034 - 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-20201231.htm",
      "contextRef": "i7ef1b2f387074286a1f393195b0d6023_D20200101-20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R88": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i75e8b9e5dee441478b9993822d16dbea_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:AllowanceForDoubtfulAccountsReceivable",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240614035 - 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-20201231.htm",
      "contextRef": "iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:AllowanceForDoubtfulAccountsReceivable",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R89": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i75e8b9e5dee441478b9993822d16dbea_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ContractWithCustomerLiabilityCurrent",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240624036 - 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-20201231.htm",
      "contextRef": "iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:ContractWithCustomerLiabilityCurrent",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R9": {
     "firstAnchor": null,
     "groupType": "statement",
     "isDefault": "false",
     "longName": "100090010 - Statement - CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY (Parenthetical)",
     "role": "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical",
     "shortName": "CONSOLIDATED STATEMENTS OF SHAREHOLDERS' EQUITY (Parenthetical)",
     "subGroupType": "parenthetical",
     "uniqueAnchor": null
    },
    "R90": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:PreferredStockSharesAuthorized",
      "reportCount": 1,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240644037 - 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-20201231.htm",
      "contextRef": "id6b1384256a24d76b0b52d56219d0b4e_I20180425",
      "decimals": "INF",
      "lang": "en-US",
      "name": "us-gaap:CommonStockSharesAuthorized",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R91": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:NumberOfGroupsWithinEmployeePopulation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "group",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240674038 - 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-20201231.htm",
      "contextRef": "i2929afbc60be4803907a61e4c5f55328_I20201231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:NumberOfGroupsWithinEmployeePopulation",
      "reportCount": 1,
      "unique": true,
      "unitRef": "group",
      "xsiNil": "false"
     }
    },
    "R92": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i75e8b9e5dee441478b9993822d16dbea_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240684039 - 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-20201231.htm",
      "contextRef": "i75e8b9e5dee441478b9993822d16dbea_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R93": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231",
      "decimals": "3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240694040 - 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-20201231.htm",
      "contextRef": "i368f9eb389bf44adbc815e7aa2868e04_D20200101-20201231",
      "decimals": "3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R94": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:NonvestedRestrictedStockSharesActivityTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "id2ec20935d9d4d07b547537940241758_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240704041 - 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-20201231.htm",
      "contextRef": "id2ec20935d9d4d07b547537940241758_I20191231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber",
      "reportCount": 1,
      "unique": true,
      "unitRef": "shares",
      "xsiNil": "false"
     }
    },
    "R95": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "div",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1",
      "reportCount": 1,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240714042 - 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-20201231.htm",
      "contextRef": "if426f384a9bb46cbacd084e8d71c197a_D20200101-20201231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:AllocatedShareBasedCompensationExpense",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R96": {
     "firstAnchor": {
      "ancestors": [
       "ix:continuation",
       "span",
       "div",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:MinimumAgeToBeEligibleToDefinedContributionPlan",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240734043 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": null,
      "first": true,
      "lang": "en-US",
      "name": "cgnx:MinimumAgeToBeEligibleToDefinedContributionPlan",
      "reportCount": 1,
      "unique": true,
      "unitRef": null,
      "xsiNil": "false"
     }
    },
    "R97": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "2",
      "first": true,
      "lang": "en-US",
      "name": "cgnx:EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty",
      "reportCount": 1,
      "unitRef": "number",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240764044 - 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-20201231.htm",
      "contextRef": "i9fff755b6c964c4bb8475318c4c49aa3_D20190101-20191231",
      "decimals": "-3",
      "lang": "en-US",
      "name": "us-gaap:IncomeTaxReconciliationForeignIncomeTaxRateDifferential",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R98": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240774045 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:CurrentFederalTaxExpenseBenefit",
      "reportCount": 1,
      "unique": true,
      "unitRef": "usd",
      "xsiNil": "false"
     }
    },
    "R99": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "INF",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate",
      "reportCount": 1,
      "unitRef": "number",
      "xsiNil": "false"
     },
     "groupType": "disclosure",
     "isDefault": "false",
     "longName": "240784046 - 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-20201231.htm",
      "contextRef": "ie28d7d4d82cf4926b2eb2f5b46e79f89_D20200101-20201231",
      "decimals": "2",
      "lang": "en-US",
      "name": "us-gaap:EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes",
      "reportCount": 1,
      "unique": true,
      "unitRef": "number",
      "xsiNil": "false"
     }
    },
    "R9999": {
     "firstAnchor": {
      "ancestors": [
       "span",
       "td",
       "tr",
       "table",
       "div",
       "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock",
       "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock",
       "ix:continuation",
       "body",
       "html"
      ],
      "baseRef": "cgnx-20201231.htm",
      "contextRef": "iacb76d21d3ae4e4785c7f9a4e6d27fdd_I20181231",
      "decimals": "-3",
      "first": true,
      "lang": "en-US",
      "name": "us-gaap:DebtSecuritiesAvailableForSaleAllowanceForCreditLoss",
      "reportCount": 1,
      "unitRef": "usd",
      "xsiNil": "false"
     },
     "groupType": "",
     "isDefault": "false",
     "longName": "Uncategorized Items - cgnx-20201231.htm",
     "role": "http://xbrl.sec.gov/role/uncategorizedFacts",
     "shortName": "Uncategorized Items - cgnx-20201231.htm",
     "subGroupType": "",
     "uniqueAnchor": null
    }
   },
   "segmentCount": 106,
   "tag": {
    "cgnx_AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Accounting Standards Update 2016-09, Statutory Tax Withholding Component [Member]",
        "label": "Accounting Standards Update 2016-09, Statutory Tax Withholding Component [Member]",
        "terseLabel": "Accounting Standards Update 2016-09, Statutory Tax Withholding Component [Member]"
       }
      }
     },
     "localname": "AccountingStandardsUpdate201609StatutoryTaxWithholdingComponentMember",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 12.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities, Deferred Revenue and Customer Deposits",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities, Deferred Revenue and Customer Deposits",
        "negatedTerseLabel": "Deferred revenue and customer deposits"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedCurrentLiabilitiesDeferredRevenueandCustomerDeposits",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 13.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Liability, Current",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Liability, Current",
        "negatedTerseLabel": "Operating lease liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityCurrent",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 14.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Liability, Noncurrent",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Liability, Noncurrent",
        "negatedTerseLabel": "Non-current operating lease liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseLiabilityNoncurrent",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 7.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Right-of-Use Asset",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Operating Lease, Right-of-Use Asset",
        "terseLabel": "Operating lease assets"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredandLiabilitiesAssumedOperatingLeaseRightofUseAsset",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_CompletedTechnologyMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Completed Technology [Member]",
        "label": "Completed Technology [Member]",
        "terseLabel": "Completed Technology [Member]"
       }
      }
     },
     "localname": "CompletedTechnologyMember",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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"
       }
      }
     },
     "localname": "ContractWithCustomerLiabilityCurrentAndPriorPeriodRevenueRecognized",
     "nsuri": "http://cognex.com/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "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/20201231",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDeferredRevenueandCustomerDepositsRollforwardDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "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/20201231",
     "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/20201231",
     "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/20201231",
     "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 non-current deferred tax assets"
       }
      }
     },
     "localname": "DeferredTaxAssetsWithJurisdictionalNettingGross",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActGlobalIntangibleLowTaxIncome": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 1.0,
       "parentTag": "cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross",
       "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/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": 2.0,
       "parentTag": "cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross",
       "weight": 1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred Tax Liabilities, Tax Cuts And Jobs Act, Other Global Intangible Low Tax Income",
        "label": "Deferred Tax Liabilities, Tax Cuts And Jobs Act, Other Global Intangible Low Tax Income",
        "terseLabel": "Other GILTI tax basis differences"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesTaxCutsAndJobsActOtherGlobalIntangibleLowTaxIncome",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_DeferredTaxLiabilitiesWithJurisdictionalNettingGross": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Deferred Tax Liabilities, With Jurisdictional Netting, Gross",
        "label": "Deferred Tax Liabilities, With Jurisdictional Netting, Gross",
        "totalLabel": "Deferred Tax Liabilities, Gross, Current"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesWithJurisdictionalNettingGross",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent": {
     "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, Discrete Tax Expense, Percent",
        "label": "Effective Income Tax Rate Reconciliation, Discrete Tax Expense, Tax And Jobs Act, Percent",
        "terseLabel": "Discrete tax expense (benefit) related to Tax Act"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationDiscreteTaxExpenseTaxAndJobsActPercent",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "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/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "cgnx_EffectiveIncomeTaxRateReconciliationMigrationofAcquiredIntellectualProperty": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 7.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/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "cgnx_EffectiveIncomeTaxRateReconciliationTaxCutsandJobsActGlobalIntangibleLowTaxIncomePercent": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 9.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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/IndemnificationProvisions"
     ],
     "xbrltype": "textBlockItemType"
    },
    "cgnx_InprocessTechnologyMember": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "In-process Technology [Member]",
        "label": "In-process Technology [Member]",
        "terseLabel": "In-process Technology [Member]"
       }
      }
     },
     "localname": "InprocessTechnologyMember",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "integerItemType"
    },
    "cgnx_OpenTaxYearStateAuthorities": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Open Tax Year State Authorities",
        "label": "Open Tax Year State Authorities",
        "terseLabel": "Open tax year state authorities"
       }
      }
     },
     "localname": "OpenTaxYearStateAuthorities",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "cgnx_OpentaxyearUnitedStatesInternalRevenueService": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Open tax years open to examination within the United States by the Internal Revenue Service",
        "label": "Open tax year United States Internal Revenue Service",
        "terseLabel": "Open tax year united states internal revenue service"
       }
      }
     },
     "localname": "OpentaxyearUnitedStatesInternalRevenueService",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "cgnx_Opentaxyearvarioustaxingauthorities": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Open tax year, various taxing authorities",
        "label": "Open tax year, various taxing authorities",
        "terseLabel": "Open tax year, various taxing authorities"
       }
      }
     },
     "localname": "Opentaxyearvarioustaxingauthorities",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "cgnx_RepurchaseProgramApril2017Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Repurchase Program April 2017",
        "label": "Repurchase Program April 2017 [Member]",
        "terseLabel": "Repurchase Program April 2017 [Member]"
       }
      }
     },
     "localname": "RepurchaseProgramApril2017Member",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_RepurchaseProgramFebruary2018Member": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Repurchase Program February 2018",
        "label": "Repurchase Program February 2018 [Member]",
        "terseLabel": "Repurchase Program February 2018 [Member]"
       }
      }
     },
     "localname": "RepurchaseProgramFebruary2018Member",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_Repurchasedsharestotalcost": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Repurchased shares, total cost",
        "label": "Repurchased shares, total cost",
        "terseLabel": "Repurchased shares, total cost"
       }
      }
     },
     "localname": "Repurchasedsharestotalcost",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "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/20201231",
     "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_Stateresearchandexperimentationtaxcarryforwards": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "State research and experimentation tax carryforwards",
        "label": "State research and experimentation tax carryforwards",
        "terseLabel": "State research and experimentation tax carryforwards"
       }
      }
     },
     "localname": "Stateresearchandexperimentationtaxcarryforwards",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "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/20201231",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails",
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail",
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "cgnx_TaxYearsCoveredThroughAdvancedPricingAgreement": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tax years covered through Advanced Pricing Agreement.",
        "label": "Tax Years Covered Through Advanced Pricing Agreement",
        "terseLabel": "Tax years covered through advanced pricing agreement"
       }
      }
     },
     "localname": "TaxYearsCoveredThroughAdvancedPricingAgreement",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "cgnx_TaxyearsforAPAagreement": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tax years for APA agreement",
        "label": "Tax years for APA agreement",
        "terseLabel": "Tax years for APA agreement"
       }
      }
     },
     "localname": "TaxyearsforAPAagreement",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "durationStringItemType"
    },
    "cgnx_Totalsharesrepurchased": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "total shares repurchased",
        "label": "total shares repurchased",
        "terseLabel": "total shares repurchased"
       }
      }
     },
     "localname": "Totalsharesrepurchased",
     "nsuri": "http://cognex.com/20201231",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "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/20201231",
     "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/20201231",
     "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/20201231",
     "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/20201231",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "integerItemType"
    },
    "country_US": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "UNITED STATES",
        "terseLabel": "United States [Member]"
       }
      }
     },
     "localname": "US",
     "nsuri": "http://xbrl.sec.gov/country/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_CityAreaCode": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Area code of city",
        "label": "City Area Code",
        "terseLabel": "City Area Code"
       }
      }
     },
     "localname": "CityAreaCode",
     "nsuri": "http://xbrl.sec.gov/dei/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "gMonthDayItemType"
    },
    "dei_DocumentAnnualReport": {
     "auth_ref": [
      "r762",
      "r763",
      "r764"
     ],
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "gYearItemType"
    },
    "dei_DocumentPeriodEndDate": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The end date of the period reflected on the cover page if a periodic report. For all other reports and registration statements containing historical data, it is the date up through which that historical data is presented.  If there is no historical data in the report, use the filing date. 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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "dateItemType"
    },
    "dei_DocumentTransitionReport": {
     "auth_ref": [
      "r765"
     ],
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "stateOrProvinceItemType"
    },
    "dei_EntityCentralIndexKey": {
     "auth_ref": [
      "r766"
     ],
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityEmergingGrowthCompany": {
     "auth_ref": [
      "r766"
     ],
     "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/2020-01-31",
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "fileNumberItemType"
    },
    "dei_EntityFilerCategory": {
     "auth_ref": [
      "r766"
     ],
     "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/2020-01-31",
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "edgarStateCountryItemType"
    },
    "dei_EntityInteractiveDataCurrent": {
     "auth_ref": [
      "r767"
     ],
     "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/2020-01-31",
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "monetaryItemType"
    },
    "dei_EntityRegistrantName": {
     "auth_ref": [
      "r766"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_EntityShellCompany": {
     "auth_ref": [
      "r766"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntitySmallBusiness": {
     "auth_ref": [
      "r766"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "booleanItemType"
    },
    "dei_EntityTaxIdentificationNumber": {
     "auth_ref": [
      "r766"
     ],
     "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/2020-01-31",
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_EntityWellKnownSeasonedIssuer": {
     "auth_ref": [],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "yesNoItemType"
    },
    "dei_IcfrAuditorAttestationFlag": {
     "auth_ref": [
      "r762",
      "r763",
      "r764"
     ],
     "lang": {
      "en-us": {
       "role": {
        "label": "ICFR Auditor Attestation Flag",
        "terseLabel": "ICFR Auditor Attestation Flag"
       }
      }
     },
     "localname": "IcfrAuditorAttestationFlag",
     "nsuri": "http://xbrl.sec.gov/dei/2020-01-31",
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "normalizedStringItemType"
    },
    "dei_Security12bTitle": {
     "auth_ref": [
      "r760"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CoverPage"
     ],
     "xbrltype": "securityTitleItemType"
    },
    "dei_SecurityExchangeName": {
     "auth_ref": [
      "r761"
     ],
     "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/2020-01-31",
     "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/2020-01-31",
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_CumulativeEffectPeriodOfAdoptionAdjustmentMember": {
     "auth_ref": [
      "r135",
      "r146",
      "r255",
      "r455",
      "r456",
      "r457",
      "r502",
      "r503"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Increase (decrease) to financial statements for cumulative-effect adjustment in period of adoption of amendment to accounting standards.",
        "label": "Cumulative Effect, Period of Adoption, Adjustment [Member]",
        "terseLabel": "Cumulative Effect, Period of Adoption, Adjustment"
       }
      }
     },
     "localname": "CumulativeEffectPeriodOfAdoptionAdjustmentMember",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_CumulativeEffectPeriodOfAdoptionAxis": {
     "auth_ref": [
      "r135",
      "r146",
      "r255",
      "r455",
      "r456",
      "r457",
      "r502",
      "r503"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by cumulative-effect adjustment to financial statements in period of adoption of amendment to accounting standards.",
        "label": "Cumulative Effect, Period of Adoption [Axis]",
        "terseLabel": "Cumulative Effect, Period of Adoption [Axis]"
       }
      }
     },
     "localname": "CumulativeEffectPeriodOfAdoptionAxis",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_CumulativeEffectPeriodOfAdoptionDomain": {
     "auth_ref": [
      "r135",
      "r146",
      "r255",
      "r455",
      "r456",
      "r457",
      "r502",
      "r503"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Cumulative-effect adjustment to financial statements in period of adoption of amendment to accounting standards.",
        "label": "Cumulative Effect, Period of Adoption [Domain]",
        "terseLabel": "Cumulative Effect, Period of Adoption [Domain]"
       }
      }
     },
     "localname": "CumulativeEffectPeriodOfAdoptionDomain",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_MajorCustomersAxis": {
     "auth_ref": [
      "r218",
      "r375",
      "r380",
      "r711"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_MaximumMember": {
     "auth_ref": [
      "r411",
      "r413",
      "r638",
      "r639",
      "r640",
      "r641",
      "r642",
      "r643",
      "r663",
      "r708",
      "r712"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Upper limit of the provided range.",
        "label": "Maximum [Member]",
        "terseLabel": "Maximum [Member]"
       }
      }
     },
     "localname": "MaximumMember",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "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": [
      "r411",
      "r413",
      "r638",
      "r639",
      "r640",
      "r641",
      "r642",
      "r643",
      "r663",
      "r708",
      "r712"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Lower limit of the provided range.",
        "label": "Minimum [Member]",
        "terseLabel": "Minimum [Member]"
       }
      }
     },
     "localname": "MinimumMember",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "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": [
      "r218",
      "r375",
      "r380",
      "r711"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ProductOrServiceAxis": {
     "auth_ref": [
      "r214",
      "r375",
      "r378",
      "r667",
      "r707",
      "r709"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ProductsAndServicesDomain": {
     "auth_ref": [
      "r214",
      "r375",
      "r378",
      "r667",
      "r707",
      "r709"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_RangeAxis": {
     "auth_ref": [
      "r391",
      "r411",
      "r413",
      "r638",
      "r639",
      "r640",
      "r641",
      "r642",
      "r643",
      "r663",
      "r708",
      "r712"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "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": [
      "r391",
      "r411",
      "r413",
      "r638",
      "r639",
      "r640",
      "r641",
      "r642",
      "r643",
      "r663",
      "r708",
      "r712"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "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": [
      "r131",
      "r132",
      "r133",
      "r134",
      "r138",
      "r139",
      "r144",
      "r145",
      "r146",
      "r148",
      "r149",
      "r151",
      "r152",
      "r169"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_RestatementAxis": {
     "auth_ref": [
      "r131",
      "r132",
      "r133",
      "r134",
      "r138",
      "r139",
      "r144",
      "r145",
      "r146",
      "r148",
      "r149",
      "r150",
      "r151",
      "r152",
      "r169",
      "r258",
      "r259",
      "r459",
      "r503",
      "r715",
      "r716",
      "r717",
      "r718",
      "r719",
      "r720",
      "r721",
      "r722",
      "r723",
      "r724"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_RestatementDomain": {
     "auth_ref": [
      "r131",
      "r132",
      "r133",
      "r134",
      "r138",
      "r139",
      "r144",
      "r145",
      "r146",
      "r148",
      "r149",
      "r150",
      "r151",
      "r152",
      "r169",
      "r258",
      "r259",
      "r459",
      "r503",
      "r715",
      "r716",
      "r717",
      "r718",
      "r719",
      "r720",
      "r721",
      "r722",
      "r723",
      "r724"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ScenarioPreviouslyReportedMember": {
     "auth_ref": [
      "r131",
      "r133",
      "r134",
      "r138",
      "r139",
      "r144",
      "r145",
      "r146",
      "r148",
      "r149",
      "r151",
      "r152",
      "r169",
      "r258",
      "r259",
      "r459",
      "r503",
      "r715",
      "r716",
      "r717",
      "r718",
      "r719",
      "r720",
      "r721",
      "r722",
      "r723",
      "r724"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_ScheduleOfValuationAndQualifyingAccountsDisclosureTextBlock": {
     "auth_ref": [
      "r129",
      "r770"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccounts"
     ],
     "xbrltype": "textBlockItemType"
    },
    "srt_SegmentGeographicalDomain": {
     "auth_ref": [
      "r215",
      "r216",
      "r375",
      "r379",
      "r710",
      "r750",
      "r751",
      "r752",
      "r753",
      "r754",
      "r755",
      "r756",
      "r757"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Geographical area.",
        "label": "Geographical [Domain]",
        "terseLabel": "Geographical [Domain]"
       }
      }
     },
     "localname": "SegmentGeographicalDomain",
     "nsuri": "http://fasb.org/srt/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "srt_StatementGeographicalAxis": {
     "auth_ref": [
      "r215",
      "r216",
      "r375",
      "r379",
      "r710",
      "r743",
      "r750",
      "r751",
      "r752",
      "r753",
      "r754",
      "r755",
      "r756",
      "r757",
      "r758",
      "r768",
      "r769"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by geographical components.",
        "label": "Geographical [Axis]",
        "terseLabel": "Geographical [Axis]"
       }
      }
     },
     "localname": "StatementGeographicalAxis",
     "nsuri": "http://fasb.org/srt/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "srt_ValuationAndQualifyingAccountsDisclosureTable": {
     "auth_ref": [
      "r129",
      "r770"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock": {
     "auth_ref": [
      "r44"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpenses"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_AccountsPayableCurrent": {
     "auth_ref": [
      "r43"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccountsReceivableMember": {
     "auth_ref": [],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccountsReceivableNetCurrent": {
     "auth_ref": [
      "r3",
      "r21",
      "r220",
      "r221"
     ],
     "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 $831 and $530 in 2020 and 2019, respectively"
       }
      }
     },
     "localname": "AccountsReceivableNetCurrent",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccretionAmortizationOfDiscountsAndPremiumsInvestments": {
     "auth_ref": [
      "r105"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedBonusesCurrent": {
     "auth_ref": [
      "r6",
      "r7",
      "r46"
     ],
     "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": "Company bonuses"
       }
      }
     },
     "localname": "AccruedBonusesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedIncomeTaxesCurrent": {
     "auth_ref": [
      "r13",
      "r678",
      "r695"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedIncomeTaxesNoncurrent": {
     "auth_ref": [
      "r14",
      "r678",
      "r695"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedLiabilitiesCurrent": {
     "auth_ref": [
      "r46"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccruedLiabilitiesMember": {
     "auth_ref": [
      "r46"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AccruedSalariesCurrent": {
     "auth_ref": [
      "r6",
      "r7",
      "r46"
     ],
     "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, commissions, and payroll taxes"
       }
      }
     },
     "localname": "AccruedSalariesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccruedVacationCurrent": {
     "auth_ref": [
      "r6",
      "r46",
      "r390"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment": {
     "auth_ref": [
      "r40",
      "r314"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax": {
     "auth_ref": [
      "r70"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentNetOfTax": {
     "auth_ref": [
      "r63",
      "r68",
      "r70",
      "r71",
      "r585"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossNetOfTax": {
     "auth_ref": [
      "r24",
      "r68",
      "r70",
      "r71",
      "r697",
      "r720",
      "r724"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeLossTable": {
     "auth_ref": [
      "r600",
      "r601",
      "r602",
      "r603",
      "r604",
      "r606"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AccumulatedOtherComprehensiveIncomeMember": {
     "auth_ref": [
      "r67",
      "r71",
      "r74",
      "r131",
      "r132",
      "r134",
      "r547",
      "r715",
      "r716"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife": {
     "auth_ref": [
      "r297"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Weighted average amortization period of finite-lived intangible assets acquired either individually or as part of a group of assets, in 'PnYnMnDTnHnMnS' format, for example, 'P1Y5M13D' represents the reported fact of one year, five months, and thirteen days.",
        "label": "Acquired Finite-lived Intangible Assets, Weighted Average Useful Life",
        "terseLabel": "Intangible assets, useful life"
       }
      }
     },
     "localname": "AcquiredFiniteLivedIntangibleAssetsWeightedAverageUsefulLife",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_AdditionalPaidInCapitalCommonStock": {
     "auth_ref": [
      "r22"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdditionalPaidInCapitalMember": {
     "auth_ref": [
      "r131",
      "r132",
      "r134",
      "r455",
      "r456",
      "r457"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AdjustmentForLongTermIntercompanyTransactionsNetOfTax": {
     "auth_ref": [
      "r595",
      "r602"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesComprehensiveIncomeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AdjustmentsForNewAccountingPronouncementsAxis": {
     "auth_ref": [
      "r138",
      "r139",
      "r140",
      "r142",
      "r252",
      "r253",
      "r254",
      "r255",
      "r258",
      "r259",
      "r451",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r459",
      "r500",
      "r501",
      "r502",
      "r503",
      "r669",
      "r670",
      "r671",
      "r713",
      "r714",
      "r715",
      "r716",
      "r717",
      "r718",
      "r719",
      "r720",
      "r721",
      "r722",
      "r723",
      "r724"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Information by amendment to accounting standards.",
        "label": "Accounting Standards Update [Axis]",
        "terseLabel": "Adjustments for New Accounting Pronouncements [Axis]"
       }
      }
     },
     "localname": "AdjustmentsForNewAccountingPronouncementsAxis",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue": {
     "auth_ref": [
      "r415",
      "r417",
      "r462",
      "r463"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AdvertisingCostsPolicyTextBlock": {
     "auth_ref": [
      "r466"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_AdvertisingExpense": {
     "auth_ref": [
      "r467"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdvertisingCostsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllocatedShareBasedCompensationExpense": {
     "auth_ref": [
      "r417",
      "r447",
      "r461"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AllowanceForCreditLossesOnFinancingReceivablesTableTextBlock": {
     "auth_ref": [
      "r224",
      "r266"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivable": {
     "auth_ref": [
      "r227",
      "r260",
      "r262",
      "r265"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AllowanceForDoubtfulAccountsReceivableWriteOffs": {
     "auth_ref": [
      "r264"
     ],
     "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"
       }
      }
     },
     "localname": "AllowanceForDoubtfulAccountsReceivableWriteOffs",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AmortizationOfIntangibleAssets": {
     "auth_ref": [
      "r104",
      "r295",
      "r303"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount": {
     "auth_ref": [
      "r165"
     ],
     "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",
        "verboseLabel": "Stock not included in calculation of diluted net loss per share (in shares)"
       }
      }
     },
     "localname": "AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails",
      "http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis": {
     "auth_ref": [
      "r165"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AntidilutiveSecuritiesNameDomain": {
     "auth_ref": [
      "r165"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageSharesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_AssetBackedSecuritiesMember": {
     "auth_ref": [
      "r243",
      "r392"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_Assets": {
     "auth_ref": [
      "r116",
      "r200",
      "r204",
      "r210",
      "r251",
      "r543",
      "r548",
      "r591",
      "r677",
      "r694"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AssetsCurrent": {
     "auth_ref": [
      "r4",
      "r5",
      "r55",
      "r116",
      "r251",
      "r543",
      "r548",
      "r591"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis": {
     "auth_ref": [
      "r235",
      "r270"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax": {
     "auth_ref": [
      "r238"
     ],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail": {
       "order": 1.0,
       "parentTag": "us-gaap_AvailableForSaleDebtSecuritiesAmortizedCostBasis",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before tax of unrealized gain in accumulated other comprehensive income (AOCI) on investments in debt and equity securities classified as available-for-sale.",
        "label": "Available-for-sale Securities, Accumulated Gross Unrealized Gain, before Tax",
        "terseLabel": "Gross Unrealized Gains"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesAccumulatedGrossUnrealizedGainBeforeTax",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax": {
     "auth_ref": [],
     "calculation": {
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail": {
       "order": 2.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 investments in debt and equity securities classified as available-for-sale.",
        "label": "Available-for-sale Securities, Accumulated Gross Unrealized Loss, before Tax",
        "negatedLabel": "Gross Unrealized Losses"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesAccumulatedGrossUnrealizedLossBeforeTax",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesDebtMaturitiesWithinOneYearFairValue": {
     "auth_ref": [
      "r239",
      "r241",
      "r691"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesDebtSecurities": {
     "auth_ref": [
      "r233",
      "r236",
      "r270",
      "r682"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesDebtSecuritiesCurrent": {
     "auth_ref": [
      "r234",
      "r270"
     ],
     "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 $102,258 and $235,610 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesDebtSecuritiesCurrent",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesDebtSecuritiesNoncurrent": {
     "auth_ref": [
      "r234",
      "r270"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesGrossRealizedGains": {
     "auth_ref": [],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This item represents the gross profit realized on the sale of debt or equity securities categorized neither as held-to-maturity nor trading securities.",
        "label": "Available-for-sale Securities, Gross Realized Gains",
        "terseLabel": "Gross realized gains on sale of debt securities"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesGrossRealizedGains",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AvailableForSaleSecuritiesGrossRealizedLosses": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "This item represents the gross loss realized on the sale of debt or equity securities categorized neither as held-to-maturity nor trading securities.",
        "label": "Available-for-sale Securities, Gross Realized Losses",
        "terseLabel": "Gross realized losses on sale of debt securities"
       }
      }
     },
     "localname": "AvailableForSaleSecuritiesGrossRealizedLosses",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_AwardTypeAxis": {
     "auth_ref": [
      "r418",
      "r449"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BalanceSheetLocationDomain": {
     "auth_ref": [
      "r558",
      "r562"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BuildingImprovementsMember": {
     "auth_ref": [
      "r313"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BuildingMember": {
     "auth_ref": [
      "r313"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_BusinessAcquisitionAcquireeDomain": {
     "auth_ref": [
      "r410",
      "r412"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails",
      "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": [
      "r410",
      "r412",
      "r521",
      "r522"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails",
      "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount": {
     "auth_ref": [
      "r538"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of goodwill arising from a business combination that is expected to be deductible for tax purposes.",
        "label": "Business Acquisition, Goodwill, Expected Tax Deductible Amount",
        "terseLabel": "Tax deductible goodwill"
       }
      }
     },
     "localname": "BusinessAcquisitionPurchasePriceAllocationGoodwillExpectedTaxDeductibleAmount",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationConsiderationTransferred1": {
     "auth_ref": [
      "r531",
      "r532",
      "r534"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationArrangementsChangeInAmountOfContingentConsiderationLiability1": {
     "auth_ref": [
      "r103",
      "r539"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueHigh": {
     "auth_ref": [
      "r537"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationArrangementsRangeOfOutcomesValueLow": {
     "auth_ref": [
      "r537"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationContingentConsiderationLiability": {
     "auth_ref": [
      "r530",
      "r533",
      "r536"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationDisclosureTextBlock": {
     "auth_ref": [
      "r540"
     ],
     "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": "Acquisitions"
       }
      }
     },
     "localname": "BusinessCombinationDisclosureTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/Acquisitions"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 1.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "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, acquired at the acquisition date. Includes other kinds of accounts that have the general characteristics of demand deposits. Also includes short-term, highly liquid investments that are both readily convertible to known amounts of cash and so near their maturity that they present insignificant risk of changes in value because of changes in interest rates.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Cash and Equivalents",
        "terseLabel": "Cash and cash equivalents"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCashAndEquivalents",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 2.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of investments in debt and equity securities, including, but not limited to, held-to-maturity, trading and available-for-sale expected to be converted to cash, sold or exchanged within one year or the normal operating cycle, if longer, acquired at the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Assets, Marketable Securities",
        "terseLabel": "Current investments"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsMarketableSecurities",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 5.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "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, acquired at the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Assets, Prepaid Expense and Other Assets",
        "terseLabel": "Prepaid expenses and other current assets"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsPrepaidExpenseAndOtherAssets",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 3.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount due from customers or clients for goods or services, including trade receivables, that have been delivered or sold in the normal course of business, and amounts due from others, including related parties expected to be converted to cash, sold or exchanged within one year or the normal operating cycle, if longer, acquired at the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Assets, Receivables",
        "terseLabel": "Accounts receivable"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentAssetsReceivables",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 11.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liabilities due within one year or within the normal operating cycle, if longer, assumed at the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities",
        "negatedTerseLabel": "Accrued expenses"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilities",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 10.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of liabilities incurred for goods and services received that are used in an entity's business and related party payables, assumed at the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities, Accounts Payable",
        "negatedTerseLabel": "Accounts payable"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesAccountsPayable",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 15.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred revenue expected to be recognized as such within one year or the normal operating cycle, if longer, assumed at the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Current Liabilities, Deferred Revenue",
        "negatedTerseLabel": "Deferred income tax liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedCurrentLiabilitiesDeferredRevenue",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 8.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax asset attributable to deductible temporary differences and carryforwards acquired at the acquisition date.",
        "label": "Business Combination Recognized Identifiable Assets Acquired and Liabilities Assumed, Deferred Tax Assets",
        "terseLabel": "Deferred income tax asset"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedDeferredTaxAssets",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedIntangibleAssetsOtherThanGoodwill": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 17.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      }
     },
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory": {
     "auth_ref": [
      "r523",
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 4.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of inventory recognized as of the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Inventory",
        "terseLabel": "Inventories"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedInventory",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 9.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of assets expected to be realized or consumed after one year or the normal operating cycle, if longer, acquired at the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Noncurrent Assets",
        "terseLabel": "Other assets"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentAssets",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 16.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": -1.0
      }
     },
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of other liabilities due after one year or the normal operating cycle, if longer, assumed at the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Noncurrent Liabilities, Other",
        "negatedTerseLabel": "Other liabilities"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedNoncurrentLiabilitiesOther",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment": {
     "auth_ref": [
      "r523",
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 6.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of property, plant, and equipment recognized as of the acquisition date.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired and Liabilities Assumed, Property, Plant, and Equipment",
        "terseLabel": "Property, plant, and equipment"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredAndLiabilitiesAssumedPropertyPlantAndEquipment",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet": {
     "auth_ref": [
      "r524"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount recognized for assets, including goodwill, in excess of (less than) the aggregate liabilities assumed.",
        "label": "Business Combination, Recognized Identifiable Assets Acquired, Goodwill, and Liabilities Assumed, Net",
        "totalLabel": "Purchase price"
       }
      }
     },
     "localname": "BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_BusinessCombinationsPolicy": {
     "auth_ref": [
      "r111",
      "r520"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CapitalizedContractCostGross": {
     "auth_ref": [
      "r285"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionNarrativesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Cash": {
     "auth_ref": [
      "r36",
      "r726",
      "r727"
     ],
     "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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_CashAndCashEquivalentsAtCarryingValue": {
     "auth_ref": [
      "r1",
      "r36",
      "r106"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashAndCashEquivalentsPolicyTextBlock": {
     "auth_ref": [
      "r10",
      "r107",
      "r111"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents": {
     "auth_ref": [
      "r101",
      "r106",
      "r110"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect": {
     "auth_ref": [
      "r101",
      "r599"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CertificatesOfDepositMember": {
     "auth_ref": [
      "r692"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Short to medium-term investment available at banks and savings and loan institutions where a customer agrees to lend money to the institution for a certain amount of time and is paid a predetermined rate of interest. Certificates of deposit (CD) are typically Federal Deposit Insurance Corporation (FDIC) insured.",
        "label": "Certificates of Deposit [Member]",
        "terseLabel": "Certificates of Deposit [Member]"
       }
      }
     },
     "localname": "CertificatesOfDepositMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ChangeInAccountingEstimateByTypeAxis": {
     "auth_ref": [
      "r147",
      "r172"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ChangeInAccountingEstimateTypeDomain": {
     "auth_ref": [
      "r147",
      "r172"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ClassOfStockDomain": {
     "auth_ref": [
      "r114",
      "r116",
      "r158",
      "r159",
      "r160",
      "r162",
      "r164",
      "r178",
      "r179",
      "r180",
      "r251",
      "r591"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CommitmentsAndContingencies": {
     "auth_ref": [
      "r49",
      "r335",
      "r684",
      "r701"
     ],
     "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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_CommitmentsAndContingenciesDisclosureTextBlock": {
     "auth_ref": [
      "r332",
      "r333",
      "r334",
      "r342"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CommitmentsandContingencies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CommitmentsAndContingenciesPolicyTextBlock": {
     "auth_ref": [
      "r111",
      "r347",
      "r744",
      "r745"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CommonStockDividendsPerShareCashPaid": {
     "auth_ref": [
      "r361"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockDividendsPerShareDeclared": {
     "auth_ref": [
      "r361"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockMember": {
     "auth_ref": [
      "r131",
      "r132"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CommonStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r20"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_CommonStockSharesAuthorized": {
     "auth_ref": [
      "r20"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesIssued": {
     "auth_ref": [
      "r20"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockSharesOutstanding": {
     "auth_ref": [
      "r20",
      "r354"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_CommonStockValueOutstanding": {
     "auth_ref": [
      "r20"
     ],
     "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 2020 and 2019, respectively, issued and outstanding: 175,790 and 172,440 shares in 2020 and 2019, respectively"
       }
      }
     },
     "localname": "CommonStockValueOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_ComprehensiveIncomeNetOfTax": {
     "auth_ref": [
      "r77",
      "r79",
      "r80",
      "r84",
      "r686",
      "r703"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ConcentrationRiskBenchmarkDomain": {
     "auth_ref": [
      "r187",
      "r188",
      "r218",
      "r588",
      "r589"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ConcentrationRiskByBenchmarkAxis": {
     "auth_ref": [
      "r187",
      "r188",
      "r218",
      "r588",
      "r589",
      "r725"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskByTypeAxis": {
     "auth_ref": [
      "r187",
      "r188",
      "r218",
      "r588",
      "r589",
      "r725"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskPercentage1": {
     "auth_ref": [
      "r187",
      "r188",
      "r218",
      "r588",
      "r589"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ConcentrationRiskTable": {
     "auth_ref": [
      "r185",
      "r187",
      "r188",
      "r189",
      "r588",
      "r590"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ConcentrationRiskTypeDomain": {
     "auth_ref": [
      "r187",
      "r188",
      "r218",
      "r588",
      "r589"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ConsolidationPolicyTextBlock": {
     "auth_ref": [
      "r111",
      "r545"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ContractTerminationMember": {
     "auth_ref": [],
     "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/2020-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": [
      "r366"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ContractWithCustomerLiabilityCurrent": {
     "auth_ref": [
      "r364",
      "r365",
      "r376"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CostOfGoodsAndServicesSold": {
     "auth_ref": [
      "r89",
      "r667"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CostsAssociatedWithExitOrDisposalActivitiesOrRestructuringsPolicy": {
     "auth_ref": [
      "r111",
      "r323",
      "r324",
      "r330"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_CurrentFederalTaxExpenseBenefit": {
     "auth_ref": [
      "r117",
      "r497",
      "r509"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentForeignTaxExpenseBenefit": {
     "auth_ref": [
      "r119",
      "r497"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CurrentIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r117",
      "r497",
      "r509",
      "r511"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_CurrentStateAndLocalTaxExpenseBenefit": {
     "auth_ref": [
      "r117",
      "r497",
      "r509"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_CustomerConcentrationRiskMember": {
     "auth_ref": [
      "r186",
      "r218"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_CustomerRelationshipsMember": {
     "auth_ref": [
      "r528"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Customer relationship that exists between an entity and its customer, for example, but not limited to, tenant relationships.",
        "label": "Customer Relationships [Member]",
        "terseLabel": "Customer Relationships [Member]"
       }
      }
     },
     "localname": "CustomerRelationshipsMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLoss": {
     "auth_ref": [
      "r237",
      "r270",
      "r275",
      "r278"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossRecovery": {
     "auth_ref": [
      "r277"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossTableTextBlock": {
     "auth_ref": [
      "r279"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff": {
     "auth_ref": [
      "r276"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of writeoff 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, Writeoff",
        "terseLabel": "Write-offs"
       }
      }
     },
     "localname": "DebtSecuritiesAvailableForSaleAllowanceForCreditLossWriteoff",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DebtSecuritiesAvailableForSaleChangeInPresentValueExpenseReversal": {
     "auth_ref": [
      "r271",
      "r274"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredFederalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r117",
      "r498",
      "r509"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredForeignIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r117",
      "r498",
      "r509"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxAssetsNet": {
     "auth_ref": [
      "r472",
      "r473"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r104",
      "r117",
      "r498",
      "r509",
      "r510",
      "r511"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilities": {
     "auth_ref": [
      "r16",
      "r17",
      "r487",
      "r679",
      "r693"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredIncomeTaxLiabilitiesNet": {
     "auth_ref": [
      "r472",
      "r473"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredStateAndLocalIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r117",
      "r498",
      "r509"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofProvisionforIncomeTaxesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsGross": {
     "auth_ref": [
      "r488"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsInventory": {
     "auth_ref": [
      "r495",
      "r496"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsLiabilitiesNet": {
     "auth_ref": [
      "r490"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails": {
       "order": null,
       "parentTag": null,
       "root": true,
       "weight": null
      }
     },
     "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/2020-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": "Non-current gross deferred tax assets:"
       }
      }
     },
     "localname": "DeferredTaxAssetsNetNoncurrentClassificationAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsDomestic": {
     "auth_ref": [
      "r495",
      "r496"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsOperatingLossCarryforwardsForeign": {
     "auth_ref": [
      "r495",
      "r496"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxCreditCarryforwardsResearch": {
     "auth_ref": [
      "r493",
      "r495",
      "r496"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsOther": {
     "auth_ref": [
      "r495",
      "r496"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost": {
     "auth_ref": [
      "r495",
      "r496"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxAssetsValuationAllowance": {
     "auth_ref": [
      "r489"
     ],
     "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/2020-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": "Non-current gross deferred tax liabilities:"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesConstituentsofDeferredTaxAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesGrossCurrent": {
     "auth_ref": [
      "r472",
      "r490"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of deferred tax liability attributable to taxable temporary differences classified as current.",
        "label": "Deferred Tax Liabilities, Gross, Current",
        "negatedTerseLabel": "Net non-current deferred tax liabilities"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesGrossCurrent",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DeferredTaxLiabilitiesGrossNoncurrent": {
     "auth_ref": [
      "r472",
      "r490"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Gross amount of noncurrent deferred tax liabilities, which result from applying the applicable tax rate to taxable temporary differences pertaining to each jurisdiction to which the entity is obligated to pay income tax.",
        "label": "Deferred Tax Liabilities, Gross, Noncurrent",
        "terseLabel": "Deferred tax liabilities, gross"
       }
      }
     },
     "localname": "DeferredTaxLiabilitiesGrossNoncurrent",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DefinedContributionPlanCostRecognized": {
     "auth_ref": [
      "r409"
     ],
     "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/2020-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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/EmployeeSavingsPlanAdditionalInformationDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_Depreciation": {
     "auth_ref": [
      "r104",
      "r312"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeAssetCollateralObligationToReturnCashOffset": {
     "auth_ref": [
      "r57",
      "r550"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeAssetNotionalAmount": {
     "auth_ref": [
      "r552",
      "r553",
      "r555"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeAssets": {
     "auth_ref": [
      "r58",
      "r61",
      "r587"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails",
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeFairValueOfDerivativeAsset": {
     "auth_ref": [
      "r56",
      "r62",
      "r561",
      "r645"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeFairValueOfDerivativeLiability": {
     "auth_ref": [
      "r56",
      "r62",
      "r561",
      "r645"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeGainLossOnDerivativeNet": {
     "auth_ref": [
      "r560"
     ],
     "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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_DerivativeInstrumentsAndHedgingActivitiesDisclosureTextBlock": {
     "auth_ref": [
      "r574"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstruments"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DerivativeInstrumentsGainLossByHedgingRelationshipByIncomeStatementLocationByDerivativeInstrumentRiskTable": {
     "auth_ref": [
      "r556",
      "r559",
      "r565",
      "r567",
      "r568",
      "r572",
      "r573"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DerivativeLiabilities": {
     "auth_ref": [
      "r58",
      "r61",
      "r587"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAssetsandliabilitiespresentedonanetbasisduetotherightofoffsetDetails",
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DerivativeLiabilityCollateralRightToReclaimCashOffset": {
     "auth_ref": [
      "r57",
      "r550"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsAdditionalDetailsDetails",
      "http://cognex.com/role/DerivativeInstrumentsOutstandingForwardContractsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DerivativeTable": {
     "auth_ref": [
      "r551",
      "r554",
      "r555",
      "r556",
      "r557",
      "r563",
      "r565",
      "r569",
      "r571",
      "r573"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DerivativesPolicyTextBlock": {
     "auth_ref": [
      "r111",
      "r120",
      "r551",
      "r554",
      "r556",
      "r557",
      "r570"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DevelopedTechnologyRightsMember": {
     "auth_ref": [
      "r529"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DisaggregationOfRevenueTable": {
     "auth_ref": [
      "r375",
      "r378",
      "r379",
      "r380",
      "r381",
      "r382",
      "r383",
      "r384"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesSummaryofSignificantAccountingPoliciesRevenueRecognitionDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_DisaggregationOfRevenueTableTextBlock": {
     "auth_ref": [
      "r375"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock": {
     "auth_ref": [
      "r465"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_DividendsCommonStockCash": {
     "auth_ref": [
      "r361"
     ],
     "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"
       }
      }
     },
     "localname": "DividendsCommonStockCash",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_DividendsPayableAmountPerShare": {
     "auth_ref": [
      "r109"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_DividendsPayableDateDeclaredDayMonthAndYear": {
     "auth_ref": [
      "r109"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Date the dividend to be paid was declared, in CCYY-MM-DD format.",
        "label": "Dividends Payable, Date Declared",
        "terseLabel": "Dividends Payable, Date Declared"
       }
      }
     },
     "localname": "DividendsPayableDateDeclaredDayMonthAndYear",
     "nsuri": "http://fasb.org/us-gaap/2020-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 CCYY-MM-DD format.",
        "label": "Dividends Payable, Date of Record",
        "terseLabel": "Dividends Payable, Date of Record"
       }
      }
     },
     "localname": "DividendsPayableDateOfRecordDayMonthAndYear",
     "nsuri": "http://fasb.org/us-gaap/2020-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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareBasic": {
     "auth_ref": [
      "r85",
      "r144",
      "r145",
      "r146",
      "r147",
      "r148",
      "r156",
      "r158",
      "r162",
      "r163",
      "r164",
      "r169",
      "r170",
      "r687",
      "r704"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails",
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerShareDiluted": {
     "auth_ref": [
      "r85",
      "r144",
      "r145",
      "r146",
      "r147",
      "r148",
      "r158",
      "r162",
      "r163",
      "r164",
      "r169",
      "r170",
      "r687",
      "r704"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails",
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EarningsPerSharePolicyTextBlock": {
     "auth_ref": [
      "r111",
      "r165",
      "r167"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_EarningsPerShareTextBlock": {
     "auth_ref": [
      "r165",
      "r167",
      "r168",
      "r171"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageShares"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents": {
     "auth_ref": [
      "r599"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateContinuingOperations": {
     "auth_ref": [
      "r475"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate": {
     "auth_ref": [
      "r475",
      "r513"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationChangeInEnactedTaxRate": {
     "auth_ref": [
      "r475",
      "r513"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 8.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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential": {
     "auth_ref": [
      "r475",
      "r513"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationOtherAdjustments": {
     "auth_ref": [
      "r475",
      "r513"
     ],
     "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 other adjustments.",
        "label": "Effective Income Tax Rate Reconciliation, Other Adjustments, Percent",
        "terseLabel": "Other"
       }
      }
     },
     "localname": "EffectiveIncomeTaxRateReconciliationOtherAdjustments",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationOtherReconcilingItemsPercent": {
     "auth_ref": [],
     "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 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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitAmount": {
     "auth_ref": [
      "r464",
      "r475"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationShareBasedCompensationExcessTaxBenefitPercent": {
     "auth_ref": [
      "r464",
      "r475"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationStateAndLocalIncomeTaxes": {
     "auth_ref": [
      "r475",
      "r513"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationTaxCredits": {
     "auth_ref": [
      "r475",
      "r513"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlements": {
     "auth_ref": [
      "r475",
      "r513"
     ],
     "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 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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_EffectiveIncomeTaxRateReconciliationTaxSettlementsForeign": {
     "auth_ref": [
      "r475",
      "r513"
     ],
     "calculation": {
      "http://cognex.com/role/IncomeTaxesReconciliationoftheUnitedStatesFederalStatutoryCorporateTaxRatetoCompanysEffectiveTaxRateorIncomeTaxProvisionDetails": {
       "order": 13.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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1": {
     "auth_ref": [
      "r448"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedStockOptions": {
     "auth_ref": [
      "r448"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeServiceShareBasedCompensationTaxBenefitFromCompensationExpense": {
     "auth_ref": [
      "r447"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_EmployeeStockOptionMember": {
     "auth_ref": [
      "r445"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_EquityComponentDomain": {
     "auth_ref": [
      "r131",
      "r132",
      "r134",
      "r139",
      "r149",
      "r152",
      "r177",
      "r255",
      "r354",
      "r361",
      "r455",
      "r456",
      "r457",
      "r502",
      "r503",
      "r600",
      "r601",
      "r602",
      "r603",
      "r604",
      "r606",
      "r715",
      "r716",
      "r717"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueAssetsAndLiabilitiesMeasuredOnRecurringAndNonrecurringBasisTable": {
     "auth_ref": [
      "r575",
      "r576",
      "r577",
      "r582"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueByFairValueHierarchyLevelAxis": {
     "auth_ref": [
      "r392",
      "r394",
      "r395",
      "r396",
      "r397",
      "r398",
      "r399",
      "r406",
      "r576",
      "r635",
      "r636",
      "r637"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueByMeasurementFrequencyAxis": {
     "auth_ref": [
      "r575",
      "r576",
      "r578",
      "r579",
      "r583"
     ],
     "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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueDisclosuresTextBlock": {
     "auth_ref": [
      "r581"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurements"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValueInputsLevel1Member": {
     "auth_ref": [
      "r392",
      "r394",
      "r399",
      "r406",
      "r576",
      "r635"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueInputsLevel2Member": {
     "auth_ref": [
      "r392",
      "r394",
      "r399",
      "r406",
      "r576",
      "r636"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueInputsLevel3Member": {
     "auth_ref": [
      "r392",
      "r394",
      "r395",
      "r396",
      "r397",
      "r398",
      "r399",
      "r406",
      "r576",
      "r637"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTable": {
     "auth_ref": [
      "r580",
      "r582"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FairValueLiabilitiesMeasuredOnRecurringBasisUnobservableInputReconciliationTextBlock": {
     "auth_ref": [
      "r580",
      "r582"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementWithUnobservableInputsReconciliationsRecurringBasisLiabilityValue": {
     "auth_ref": [
      "r580"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FairValueMeasurementsFairValueHierarchyDomain": {
     "auth_ref": [
      "r392",
      "r394",
      "r395",
      "r396",
      "r397",
      "r398",
      "r399",
      "r406",
      "r635",
      "r636",
      "r637"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueMeasurementsRecurringMember": {
     "auth_ref": [
      "r581",
      "r583"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FairValueOfFinancialInstrumentsPolicy": {
     "auth_ref": [
      "r111",
      "r584",
      "r586"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_FairValuesDerivativesBalanceSheetLocationByDerivativeContractTypeByHedgingDesignationTable": {
     "auth_ref": [
      "r558",
      "r563",
      "r572"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FinancialInstrumentAxis": {
     "auth_ref": [
      "r243",
      "r244",
      "r261",
      "r266",
      "r267",
      "r268",
      "r269",
      "r272",
      "r273",
      "r279",
      "r280",
      "r632",
      "r633",
      "r634",
      "r635",
      "r636",
      "r637",
      "r638",
      "r639",
      "r640",
      "r641",
      "r642",
      "r643",
      "r644",
      "r646",
      "r647",
      "r648",
      "r649",
      "r650",
      "r651",
      "r652",
      "r653",
      "r654",
      "r655",
      "r656",
      "r657",
      "r658",
      "r659",
      "r660",
      "r661",
      "r662"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAccumulatedAmortization": {
     "auth_ref": [
      "r302"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths": {
     "auth_ref": [
      "r304"
     ],
     "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": "2021"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFive": {
     "auth_ref": [
      "r304"
     ],
     "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": "2025"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFive",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearFour": {
     "auth_ref": [
      "r304"
     ],
     "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": "2024"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearFour",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearThree": {
     "auth_ref": [
      "r304"
     ],
     "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": "2023"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearThree",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo": {
     "auth_ref": [
      "r304"
     ],
     "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": "2022"
       }
      }
     },
     "localname": "FiniteLivedIntangibleAssetsAmortizationExpenseYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsEstimatedAmortizationExpenseSucceedingFiscalYearsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsByMajorClassAxis": {
     "auth_ref": [
      "r296",
      "r299",
      "r302",
      "r306",
      "r668",
      "r675"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsGross": {
     "auth_ref": [
      "r302",
      "r675"
     ],
     "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/2020-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/2020-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": [
      "r296",
      "r301"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_FiniteLivedIntangibleAssetsNet": {
     "auth_ref": [
      "r302",
      "r668"
     ],
     "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/2020-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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ForeignCurrencyGainLossMember": {
     "auth_ref": [
      "r566"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ForeignCurrencyTransactionGainLossBeforeTax": {
     "auth_ref": [
      "r592",
      "r594",
      "r596",
      "r598"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 2.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments",
       "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ForeignCurrencyTransactionsAndTranslationsPolicyTextBlock": {
     "auth_ref": [
      "r111",
      "r608"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_GainLossOnDispositionOfAssets1": {
     "auth_ref": [
      "r104"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GainLossOnSaleOfInvestments": {
     "auth_ref": [
      "r104"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GainLossOnSaleOfPropertyPlantEquipment": {
     "auth_ref": [
      "r104"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_Goodwill": {
     "auth_ref": [
      "r286",
      "r287",
      "r676"
     ],
     "calculation": {
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails": {
       "order": 18.0,
       "parentTag": "us-gaap_BusinessCombinationRecognizedIdentifiableAssetsAcquiredGoodwillAndLiabilitiesAssumedNet",
       "weight": 1.0
      },
      "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails",
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_GoodwillAcquiredDuringPeriod": {
     "auth_ref": [
      "r288"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase in asset representing future economic benefits arising from other assets acquired in a business combination that are not individually identified and separately recognized resulting from a business combination.",
        "label": "Goodwill, Acquired During Period",
        "terseLabel": "Goodwill acquired during the period"
       }
      }
     },
     "localname": "GoodwillAcquiredDuringPeriod",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_GoodwillAndIntangibleAssetsGoodwillPolicy": {
     "auth_ref": [
      "r111",
      "r291"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillDisclosureTextBlock": {
     "auth_ref": [
      "r293"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/Goodwill"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_GoodwillForeignCurrencyTranslationGainLoss": {
     "auth_ref": [
      "r289"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_GoodwillOtherIncreaseDecrease": {
     "auth_ref": [
      "r290"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_GrossProfit": {
     "auth_ref": [
      "r88",
      "r116",
      "r200",
      "r203",
      "r206",
      "r209",
      "r212",
      "r251",
      "r591"
     ],
     "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",
        "terseLabel": "Gross margin",
        "totalLabel": "Gross margin"
       }
      }
     },
     "localname": "GrossProfit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails"
     ],
     "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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_HedgingDesignationAxis": {
     "auth_ref": [
      "r556",
      "r568"
     ],
     "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/2020-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": [
      "r556"
     ],
     "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/2020-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": [
      "r104",
      "r307"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/FairValueMeasurementsAdditionalInformationDetails",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails",
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ImpairmentOfIntangibleAssetsIndefinitelivedExcludingGoodwill": {
     "auth_ref": [
      "r104",
      "r307"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesDomestic": {
     "auth_ref": [
      "r118",
      "r512"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesForeign": {
     "auth_ref": [
      "r118",
      "r512"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments": {
     "auth_ref": [
      "r118",
      "r200",
      "r203",
      "r206",
      "r209",
      "r212"
     ],
     "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 before deduction of income tax expense (benefit) and income (loss) attributable to noncontrolling interest, and addition of income (loss) from equity method investments.",
        "label": "Income (Loss) from Continuing Operations before Equity Method Investments, Income Taxes, Noncontrolling Interest",
        "totalLabel": "Income before income tax expense (benefit)",
        "verboseLabel": "Income before income tax expense"
       }
      }
     },
     "localname": "IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationAxis": {
     "auth_ref": [
      "r316"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails",
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeStatementLocationDomain": {
     "auth_ref": [],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsGainLossRecognizedinOtherComprehensiveIncomeLossDetails",
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxAuthorityAxis": {
     "auth_ref": [
      "r479"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IncomeTaxAuthorityNameAxis": {
     "auth_ref": [
      "r479"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_IncomeTaxDisclosureTextBlock": {
     "auth_ref": [
      "r476",
      "r485",
      "r492",
      "r507",
      "r514",
      "r517",
      "r518",
      "r519"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxes"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r117",
      "r151",
      "r152",
      "r199",
      "r474",
      "r508",
      "r516",
      "r706"
     ],
     "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/2020-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": [
      "r81",
      "r111",
      "r470",
      "r471",
      "r485",
      "r486",
      "r491",
      "r499",
      "r746"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IncomeTaxReconciliationForeignIncomeTaxRateDifferential": {
     "auth_ref": [
      "r475"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationTaxSettlementsForeign": {
     "auth_ref": [
      "r475"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxReconciliationTaxSettlementsOther": {
     "auth_ref": [
      "r475"
     ],
     "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 other income tax settlements.",
        "label": "Effective Income Tax Rate Reconciliation, Tax Settlement, Other, Amount",
        "terseLabel": "Effective income tax rate reconciliation, tax settlement, other, amount"
       }
      }
     },
     "localname": "IncomeTaxReconciliationTaxSettlementsOther",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncomeTaxesPaidNet": {
     "auth_ref": [
      "r108"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsPayable": {
     "auth_ref": [
      "r103"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccountsReceivable": {
     "auth_ref": [
      "r103"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccruedIncomeTaxesPayable": {
     "auth_ref": [
      "r103"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInAccruedLiabilities": {
     "auth_ref": [
      "r103"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInContractWithCustomerAsset": {
     "auth_ref": [
      "r103"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInContractWithCustomerLiability": {
     "auth_ref": [
      "r103"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInDeferredIncomeTaxes": {
     "auth_ref": [
      "r103"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInInventories": {
     "auth_ref": [
      "r103"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInOtherOperatingCapitalNet": {
     "auth_ref": [
      "r103"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IncreaseDecreaseInPrepaidDeferredExpenseAndOtherAssets": {
     "auth_ref": [
      "r103"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IndefiniteLivedIntangibleAssetsByMajorClassAxis": {
     "auth_ref": [
      "r298",
      "r305"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_IndefiniteLivedIntangibleAssetsExcludingGoodwill": {
     "auth_ref": [
      "r305"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of assets, excluding financial assets and goodwill, lacking physical substance and having a projected indefinite period of benefit.",
        "label": "Indefinite-lived Intangible Assets (Excluding Goodwill)",
        "terseLabel": "Indefinite-lived Intangible Assets Acquired"
       }
      }
     },
     "localname": "IndefiniteLivedIntangibleAssetsExcludingGoodwill",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_IndefiniteLivedIntangibleAssetsMajorClassNameDomain": {
     "auth_ref": [
      "r298",
      "r305"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/IntangibleAssetsNarrativeDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_IntangibleAssetsDisclosureTextBlock": {
     "auth_ref": [
      "r311"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssets"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IntangibleAssetsFiniteLivedPolicy": {
     "auth_ref": [
      "r111",
      "r301",
      "r664",
      "r665",
      "r666",
      "r668"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_IntangibleAssetsNetExcludingGoodwill": {
     "auth_ref": [
      "r294",
      "r300"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InterestReceivable": {
     "auth_ref": [
      "r54"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InternalUseSoftwarePolicy": {
     "auth_ref": [
      "r111",
      "r308",
      "r310"
     ],
     "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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_InventoryDisclosureTextBlock": {
     "auth_ref": [
      "r284"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/Inventories"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryFinishedGoodsNetOfReserves": {
     "auth_ref": [
      "r28",
      "r283"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/InventoriesInventoriesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryNet": {
     "auth_ref": [
      "r2",
      "r52"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/InventoriesInventoriesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryPolicyTextBlock": {
     "auth_ref": [
      "r9",
      "r53",
      "r111",
      "r173",
      "r281",
      "r282",
      "r284"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InventoryRawMaterialsNetOfReserves": {
     "auth_ref": [
      "r30",
      "r283"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/InventoriesInventoriesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InventoryWorkInProcessNetOfReserves": {
     "auth_ref": [
      "r29",
      "r283"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/InventoriesInventoriesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InvestmentIncomeNonoperating": {
     "auth_ref": [
      "r91"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 3.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments",
       "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_InvestmentPolicyTextBlock": {
     "auth_ref": [
      "r250",
      "r705"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_InvestmentTypeAxis": {
     "auth_ref": [
      "r728",
      "r729",
      "r730",
      "r731",
      "r732",
      "r733",
      "r734",
      "r735",
      "r736",
      "r737",
      "r738",
      "r739",
      "r740",
      "r741",
      "r742"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_InvestmentTypeCategorizationMember": {
     "auth_ref": [
      "r728",
      "r729",
      "r730",
      "r731",
      "r732",
      "r733",
      "r734",
      "r735",
      "r736",
      "r737",
      "r738",
      "r739",
      "r740",
      "r741",
      "r742"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestments"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LandMember": {
     "auth_ref": [
      "r378"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LeaseAndRentalExpense": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of rent expense incurred for leased assets, including but not limited to, furniture and equipment, that is not directly or indirectly associated with the manufacture, sale or creation of a product or product line.",
        "label": "Operating Leases, Rent Expense",
        "terseLabel": "Rent expense"
       }
      }
     },
     "localname": "LeaseAndRentalExpense",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LeaseholdImprovementsMember": {
     "auth_ref": [
      "r313"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_LeasesAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Leases [Abstract]",
        "terseLabel": "Leases [Abstract]"
       }
      }
     },
     "localname": "LeasesAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_LesseeLeasesPolicyTextBlock": {
     "auth_ref": [
      "r619"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityMaturityTableTextBlock": {
     "auth_ref": [
      "r623"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDue": {
     "auth_ref": [
      "r623"
     ],
     "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",
        "totalLabel": "Total"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDue",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueAfterYearFive": {
     "auth_ref": [
      "r623"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths": {
     "auth_ref": [
      "r623"
     ],
     "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": "2021"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFive": {
     "auth_ref": [
      "r623"
     ],
     "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": "2025"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFive",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearFour": {
     "auth_ref": [
      "r623"
     ],
     "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": "2024"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearFour",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearThree": {
     "auth_ref": [
      "r623"
     ],
     "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": "2023"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearThree",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeaseLiabilityPaymentsDueYearTwo": {
     "auth_ref": [
      "r623"
     ],
     "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": "2022"
       }
      }
     },
     "localname": "LesseeOperatingLeaseLiabilityPaymentsDueYearTwo",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesScheduleofPaymentsDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LesseeOperatingLeasesTextBlock": {
     "auth_ref": [
      "r625"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesLeases"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_Liabilities": {
     "auth_ref": [
      "r45",
      "r116",
      "r205",
      "r251",
      "r544",
      "r548",
      "r549",
      "r591"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LiabilitiesAndStockholdersEquity": {
     "auth_ref": [
      "r27",
      "r116",
      "r251",
      "r591",
      "r681",
      "r699"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LiabilitiesCurrent": {
     "auth_ref": [
      "r47",
      "r116",
      "r251",
      "r544",
      "r548",
      "r549",
      "r591"
     ],
     "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/2020-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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsAssetsandLiabilitiesMeasuredatFairValueonaRecurringBasisDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_LiabilityForUncertainTaxPositionsNoncurrent": {
     "auth_ref": [
      "r48"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_LongTermInvestments": {
     "auth_ref": [
      "r37"
     ],
     "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 $390,417 and $431,633 in 2020 and 2019, respectively, allowance for credit losses of $0 in 2020 and 2019",
        "totalLabel": "Non-current investments"
       }
      }
     },
     "localname": "LongTermInvestments",
     "nsuri": "http://fasb.org/us-gaap/2020-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/2020-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/2020-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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_NetCashProvidedByUsedInFinancingActivities": {
     "auth_ref": [
      "r101"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInInvestingActivities": {
     "auth_ref": [
      "r101"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetCashProvidedByUsedInOperatingActivities": {
     "auth_ref": [
      "r101",
      "r102",
      "r105"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NetIncomeLoss": {
     "auth_ref": [
      "r0",
      "r75",
      "r78",
      "r83",
      "r105",
      "r116",
      "r138",
      "r144",
      "r145",
      "r146",
      "r147",
      "r151",
      "r152",
      "r161",
      "r200",
      "r203",
      "r206",
      "r209",
      "r212",
      "r251",
      "r591",
      "r685",
      "r702"
     ],
     "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/2020-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",
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NewAccountingPronouncementsAndChangesInAccountingPrinciplesTextBlock": {
     "auth_ref": [
      "r136",
      "r137",
      "r140",
      "r141",
      "r153",
      "r154",
      "r155",
      "r256",
      "r257",
      "r385",
      "r386",
      "r387",
      "r388",
      "r458",
      "r504",
      "r505",
      "r506",
      "r672",
      "r673",
      "r674",
      "r719",
      "r720",
      "r721",
      "r722",
      "r724"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/NewPronouncements"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems": {
     "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": "New Accounting Pronouncements or Change in Accounting Principle [Line Items]",
        "terseLabel": "New Accounting Pronouncements or Change in Accounting Principle [Line Items]"
       }
      }
     },
     "localname": "NewAccountingPronouncementsOrChangeInAccountingPrincipleLineItems",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_NewAccountingPronouncementsOrChangeInAccountingPrincipleTable": {
     "auth_ref": [
      "r135",
      "r138",
      "r139",
      "r140",
      "r142",
      "r143",
      "r146",
      "r169",
      "r252",
      "r253",
      "r254",
      "r255",
      "r258",
      "r259",
      "r451",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r459",
      "r500",
      "r501",
      "r502",
      "r503",
      "r669",
      "r670",
      "r671",
      "r713",
      "r714",
      "r715",
      "r716",
      "r717",
      "r718",
      "r719",
      "r720",
      "r721",
      "r722",
      "r723",
      "r724"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Summarization of the changes in an accounting principle or a new accounting pronouncement, including the line items affected by the change and the financial effects of the change on those particular line items.",
        "label": "Accounting Standards Update and Change in Accounting Principle [Table]",
        "terseLabel": "New Accounting Pronouncements or Change in Accounting Principle [Table]"
       }
      }
     },
     "localname": "NewAccountingPronouncementsOrChangeInAccountingPrincipleTable",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/NewPronouncementsPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_NoncompeteAgreementsMember": {
     "auth_ref": [
      "r527"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_NoncurrentAssets": {
     "auth_ref": [
      "r216"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_NondesignatedMember": {
     "auth_ref": [
      "r556"
     ],
     "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/2020-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": [
      "r422"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_NumberOfReportableSegments": {
     "auth_ref": [
      "r194"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationAdditionalInformationDetail",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "integerItemType"
    },
    "us-gaap_OffsettingAssetsTableTextBlock": {
     "auth_ref": [
      "r59",
      "r60"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_OneTimeTerminationBenefitsMember": {
     "auth_ref": [
      "r318"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OperatingIncomeLoss": {
     "auth_ref": [
      "r200",
      "r203",
      "r206",
      "r209",
      "r212"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 1.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments",
       "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)",
        "terseLabel": "Operating income",
        "totalLabel": "Operating income"
       }
      }
     },
     "localname": "OperatingIncomeLoss",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseExpense": {
     "auth_ref": [
      "r617"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseImpairmentLoss": {
     "auth_ref": [
      "r614"
     ],
     "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",
        "verboseLabel": "Operating lease asset impairment charges"
       }
      }
     },
     "localname": "OperatingLeaseImpairmentLoss",
     "nsuri": "http://fasb.org/us-gaap/2020-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": [
      "r175",
      "r626",
      "r627"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiability": {
     "auth_ref": [
      "r616"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityCurrent": {
     "auth_ref": [
      "r616"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseLiabilityNoncurrent": {
     "auth_ref": [
      "r616"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeasePayments": {
     "auth_ref": [
      "r618",
      "r620"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseRightOfUseAsset": {
     "auth_ref": [
      "r615"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageDiscountRatePercent": {
     "auth_ref": [
      "r622",
      "r624"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_OperatingLeaseWeightedAverageRemainingLeaseTerm1": {
     "auth_ref": [
      "r621",
      "r624"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_OperatingLeasesOfLessorDisclosureTextBlock": {
     "auth_ref": [
      "r609",
      "r610",
      "r628"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesLeases"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_OtherAccruedLiabilitiesCurrent": {
     "auth_ref": [
      "r6",
      "r7",
      "r8",
      "r46"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherAssetsNoncurrent": {
     "auth_ref": [
      "r42"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeAvailableforsaleSecuritiesAdjustmentNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r541",
      "r542",
      "r546"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r541",
      "r542",
      "r546"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax": {
     "auth_ref": [
      "r63",
      "r69",
      "r593",
      "r597",
      "r605"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of tax expense (benefit), before 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": "OCI, Foreign Currency Transaction and Translation Gain (Loss), Arising During Period, Tax",
        "terseLabel": "Tax effect of foreign currency translation adjustment"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeForeignCurrencyTranslationGainLossArisingDuringPeriodTax",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossAvailableForSaleSecuritiesAdjustmentNetOfTax": {
     "auth_ref": [
      "r65",
      "r66",
      "r68"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax": {
     "auth_ref": [
      "r64",
      "r69"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of tax expense (benefit), after reclassification adjustments, of increase (decrease) in accumulated gain (loss) from derivative instruments designated and qualifying as the effective portion of cash flow hedges and an entity's share of an equity investee's increase (decrease) in deferred hedging gain (loss).",
        "label": "Other Comprehensive Income (Loss), Derivatives Qualifying as Hedges, Tax",
        "terseLabel": "Tax effect of unrealized gain on cash flow hedges",
        "verboseLabel": "Tax effect of unrealized gain on derivative instruments"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeLossDerivativesQualifyingAsHedgesTax",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOMEParenthetical",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax": {
     "auth_ref": [
      "r63"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossForeignCurrencyTranslationAdjustmentTax": {
     "auth_ref": [
      "r63",
      "r69",
      "r597",
      "r605"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossNetOfTaxPortionAttributableToParent": {
     "auth_ref": [
      "r76",
      "r79",
      "r541",
      "r542",
      "r546"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeLossReclassificationAdjustmentFromAOCIForSaleOfSecuritiesNetOfTax": {
     "auth_ref": [
      "r68",
      "r72",
      "r73",
      "r249"
     ],
     "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/2020-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": [
      "r65",
      "r68"
     ],
     "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 $981, $515, and ($188) in 2020 2019, and 2018, respectively"
       }
      }
     },
     "localname": "OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodNetOfTax",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCOMPREHENSIVEINCOME",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherComprehensiveIncomeUnrealizedHoldingGainLossOnSecuritiesArisingDuringPeriodTax": {
     "auth_ref": [
      "r66",
      "r69"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OtherLiabilitiesNoncurrent": {
     "auth_ref": [
      "r48"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherNonoperatingIncomeExpense": {
     "auth_ref": [
      "r92"
     ],
     "calculation": {
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS": {
       "order": 4.0,
       "parentTag": "us-gaap_IncomeLossFromContinuingOperationsBeforeIncomeTaxesMinorityInterestAndIncomeLossFromEquityMethodInvestments",
       "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_OtherRestructuringMember": {
     "auth_ref": [],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet": {
     "auth_ref": [],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of other than temporary impairment (OTTI) losses on equity securities, OTTI related to credit losses on debt securities, and OTTI losses on debt securities when the entity intends to sell the securities or it is more likely than not that the entity will be required to sell the securities before recovery of its amortized cost basis. Additionally, this item includes OTTI losses recognized during the period on investments accounted for under the cost method of accounting.",
        "label": "Other than Temporary Impairment Losses, Investments, Portion Recognized in Earnings, Net",
        "terseLabel": "Credit losses"
       }
      }
     },
     "localname": "OtherThanTemporaryImpairmentLossesInvestmentsPortionRecognizedInEarningsNet",
     "nsuri": "http://fasb.org/us-gaap/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_PaymentForContingentConsiderationLiabilityFinancingActivities": {
     "auth_ref": [
      "r99"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS",
      "http://cognex.com/role/FairValueMeasurementsLiabilitiesMeasuredonRecurringBasisUnobservableInputReconciliationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsForProceedsFromPreviousAcquisition": {
     "auth_ref": [
      "r121"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/GoodwillAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsForRepurchaseOfCommonStock": {
     "auth_ref": [
      "r98"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsForRestructuring": {
     "auth_ref": [
      "r100",
      "r320"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsOfDividends": {
     "auth_ref": [
      "r98"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsOfDividendsCommonStock": {
     "auth_ref": [
      "r98"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesGross": {
     "auth_ref": [
      "r94",
      "r535"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireBusinessesNetOfCashAcquired": {
     "auth_ref": [
      "r94"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquireInvestments": {
     "auth_ref": [
      "r96"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PaymentsToAcquirePropertyPlantAndEquipment": {
     "auth_ref": [
      "r95"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PensionAndOtherPostretirementBenefitsDisclosureTextBlock": {
     "auth_ref": [
      "r391",
      "r393",
      "r399",
      "r400",
      "r401",
      "r402",
      "r403",
      "r404",
      "r405",
      "r406",
      "r407",
      "r408",
      "r409",
      "r414"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_PreferredStockParOrStatedValuePerShare": {
     "auth_ref": [
      "r19"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_PreferredStockSharesAuthorized": {
     "auth_ref": [
      "r19"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockSharesIssued": {
     "auth_ref": [
      "r19"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockSharesOutstanding": {
     "auth_ref": [
      "r19"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_PreferredStockValueOutstanding": {
     "auth_ref": [
      "r19"
     ],
     "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 2020 and 2019, respectively, no shares issued and outstanding"
       }
      }
     },
     "localname": "PreferredStockValueOutstanding",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PrepaidExpenseAndOtherAssetsCurrent": {
     "auth_ref": [
      "r4",
      "r34",
      "r35"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsBalanceSheetLocationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions": {
     "auth_ref": [
      "r97",
      "r450"
     ],
     "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": "Issuance of common stock under stock plans"
       }
      }
     },
     "localname": "ProceedsFromIssuanceOfSharesUnderIncentiveAndShareBasedCompensationPlansIncludingStockOptions",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFCASHFLOWS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProceedsFromSaleMaturityAndCollectionsOfInvestments": {
     "auth_ref": [
      "r93"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ProductLiabilityContingencyTable": {
     "auth_ref": [
      "r335",
      "r336",
      "r337",
      "r338",
      "r339",
      "r340",
      "r341"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesWarrantyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ProductWarrantyAccrual": {
     "auth_ref": [
      "r348",
      "r349",
      "r683"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductWarrantyAccrualClassifiedCurrent": {
     "auth_ref": [
      "r46",
      "r343",
      "r344"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesConstituentsofAccruedExpensesDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductWarrantyAccrualPayments": {
     "auth_ref": [
      "r345"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesChangesinWarrantyObligationsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProductWarrantyAccrualWarrantiesIssued": {
     "auth_ref": [
      "r346"
     ],
     "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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentByTypeAxis": {
     "auth_ref": [
      "r40",
      "r315"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentDisclosureTextBlock": {
     "auth_ref": [
      "r317",
      "r747",
      "r748",
      "r749"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentGross": {
     "auth_ref": [
      "r39",
      "r313"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentNet": {
     "auth_ref": [
      "r11",
      "r12",
      "r315",
      "r700"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentPolicyTextBlock": {
     "auth_ref": [
      "r38",
      "r111",
      "r315",
      "r747",
      "r748"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTextBlock": {
     "auth_ref": [
      "r11",
      "r315"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_PropertyPlantAndEquipmentTypeDomain": {
     "auth_ref": [
      "r11",
      "r313"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation": {
     "auth_ref": [
      "r612",
      "r613"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The amount of accumulated depreciation, by major property class, recorded on property subject to or available for lease as of the balance sheet date.",
        "label": "Property Subject to or Available for Operating Lease, Accumulated Depreciation",
        "terseLabel": "Accumulated depreciation"
       }
      }
     },
     "localname": "PropertySubjectToOrAvailableForOperatingLeaseAccumulatedDepreciation",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PropertySubjectToOrAvailableForOperatingLeaseGross": {
     "auth_ref": [
      "r611",
      "r613"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount before accumulated depreciation of physical assets used in the normal conduct of business to produce goods and services subject to or available for lease.",
        "label": "Property Subject to or Available for Operating Lease, Gross",
        "terseLabel": "Buildings include rental property"
       }
      }
     },
     "localname": "PropertySubjectToOrAvailableForOperatingLeaseGross",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ProvisionForDoubtfulAccounts": {
     "auth_ref": [
      "r86",
      "r263"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RevenueRecognitionAllowanceforCreditLossDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_PurchaseCommitmentRemainingMinimumAmountCommitted": {
     "auth_ref": [
      "r15",
      "r680",
      "r696"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CommitmentsandContingenciesAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_QuarterlyFinancialInformationDisclosureAbstract": {
     "auth_ref": [],
     "lang": {
      "en-us": {
       "role": {
        "label": "Quarterly Financial Information Disclosure [Abstract]",
        "terseLabel": "Quarterly Financial Information Disclosure [Abstract]"
       }
      }
     },
     "localname": "QuarterlyFinancialInformationDisclosureAbstract",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_QuarterlyFinancialInformationTextBlock": {
     "auth_ref": [
      "r176"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "The entire disclosure for quarterly financial data. Includes, but is not limited to, tabular presentation of financial information for fiscal quarters, effect of year-end adjustments, and an explanation of matters or transactions that affect comparability of the information.",
        "label": "Quarterly Financial Information [Text Block]",
        "terseLabel": "Selected Quarterly Financial Data (Unaudited)"
       }
      }
     },
     "localname": "QuarterlyFinancialInformationTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnaudited"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ReceivablesPolicyTextBlock": {
     "auth_ref": [
      "r111",
      "r226",
      "r230",
      "r231",
      "r232"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Disclosure of accounting policy for receivable. Includes, but is not limited to, accounts receivable and financing receivable.",
        "label": "Receivable [Policy Text Block]",
        "terseLabel": "Accounts Receivable"
       }
      }
     },
     "localname": "ReceivablesPolicyTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RentalIncomeNonoperating": {
     "auth_ref": [
      "r91"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Income earned by providing the use of assets to an outside party in exchange for a payment or series of payments that is nonoperating in nature.",
        "label": "Rental Income, Nonoperating",
        "terseLabel": "Operating lease income"
       }
      }
     },
     "localname": "RentalIncomeNonoperating",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/LeasesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ResearchAndDevelopmentExpense": {
     "auth_ref": [
      "r468",
      "r759"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ResearchDevelopmentAndComputerSoftwarePolicyTextBlock": {
     "auth_ref": [
      "r41",
      "r111",
      "r308",
      "r309",
      "r759"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ResearchMember": {
     "auth_ref": [
      "r494"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_RestrictedStockMember": {
     "auth_ref": [
      "r165"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_RestructuringAndRelatedActivitiesDisclosureTextBlock": {
     "auth_ref": [
      "r331"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesAdditionalInformationDetails"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_RestructuringCharges": {
     "auth_ref": [
      "r104",
      "r319",
      "r324",
      "r329"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/RestructuringChargesAdditionalInformationDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails",
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RestructuringCostAndReserveAxis": {
     "auth_ref": [],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RestructuringReserve": {
     "auth_ref": [
      "r320",
      "r326"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RestructuringReserveAccrualAdjustment1": {
     "auth_ref": [
      "r319",
      "r325"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_RestructuringReserveSettledWithoutCash2": {
     "auth_ref": [
      "r319",
      "r325"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RestructuringReserveTranslationAdjustment": {
     "auth_ref": [
      "r320",
      "r328"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsAccumulatedDeficit": {
     "auth_ref": [
      "r23",
      "r361",
      "r459",
      "r698",
      "r719",
      "r724"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS",
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RetainedEarningsMember": {
     "auth_ref": [
      "r131",
      "r132",
      "r134",
      "r139",
      "r149",
      "r152",
      "r255",
      "r455",
      "r456",
      "r457",
      "r502",
      "r503",
      "r715",
      "r717"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerExcludingAssessedTax": {
     "auth_ref": [
      "r197",
      "r198",
      "r202",
      "r207",
      "r208",
      "r214",
      "r215",
      "r218",
      "r374",
      "r375",
      "r667"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/RevenueRecognitionDisaggregationbyGeographyandTypeDetails",
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail",
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_RevenueFromContractWithCustomerTextBlock": {
     "auth_ref": [
      "r366",
      "r367",
      "r368",
      "r369",
      "r370",
      "r371",
      "r372",
      "r373",
      "r377",
      "r389"
     ],
     "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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_RevenueRecognitionPolicyTextBlock": {
     "auth_ref": [
      "r112",
      "r113"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SalesRevenueNetMember": {
     "auth_ref": [
      "r187",
      "r218"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTable": {
     "auth_ref": [
      "r165"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfAvailableForSaleSecuritiesTable": {
     "auth_ref": [
      "r240",
      "r242",
      "r245",
      "r246",
      "r247",
      "r248",
      "r689",
      "r690"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfBusinessAcquisitionsByAcquisitionTable": {
     "auth_ref": [
      "r521",
      "r522"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfChangeInAccountingEstimateTable": {
     "auth_ref": [
      "r147",
      "r172"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesScheduleofChangeinAccountingPolicyDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfChangeInAccountingEstimateTextBlock": {
     "auth_ref": [
      "r147",
      "r172"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock": {
     "auth_ref": [
      "r499"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock": {
     "auth_ref": [
      "r490"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDerivativeInstrumentsEffectOnOtherComprehensiveIncomeLossTableTextBlock": {
     "auth_ref": [
      "r564"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDerivativeInstrumentsGainLossInStatementOfFinancialPerformanceTextBlock": {
     "auth_ref": [
      "r559",
      "r565",
      "r568"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfDerivativeInstrumentsInStatementOfFinancialPositionFairValueTextBlock": {
     "auth_ref": [
      "r563"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock": {
     "auth_ref": [
      "r475"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTable": {
     "auth_ref": [
      "r417",
      "r446",
      "r461"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseStockBasedCompensationExpenseDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfEmployeeServiceShareBasedCompensationAllocationOfRecognizedPeriodCostsTextBlock": {
     "auth_ref": [
      "r417",
      "r446",
      "r461"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfFairValueAssetsAndLiabilitiesMeasuredOnRecurringBasisTableTextBlock": {
     "auth_ref": [
      "r575",
      "r576"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/FairValueMeasurementsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfFiniteLivedIntangibleAssetsTable": {
     "auth_ref": [
      "r296",
      "r301",
      "r668"
     ],
     "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/2020-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": [
      "r296",
      "r301"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IntangibleAssetsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfGoodwillTable": {
     "auth_ref": [
      "r291",
      "r292"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/GoodwillChangesintheCarryingValueofGoodwillDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfGoodwillTextBlock": {
     "auth_ref": [
      "r291",
      "r292"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/GoodwillTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock": {
     "auth_ref": [
      "r298",
      "r525"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of characteristics and cost, by total and major class, of indefinite-lived intangible assets acquired as part of a business combination. Indefinite-lived intangible assets are assets that have no physical form, but have expected future economic benefit. The future benefit is not expected to diminish over a stated period of time. Acquired indefinite-lived intangible assets are disclosed by major class (assets that can be grouped together because they are similar, either by their nature or by their use in operations of the entity) and in total.",
        "label": "Schedule of Indefinite-lived Intangible Assets Acquired as Part of Business Combination [Table Text Block]",
        "terseLabel": "Schedule of Indefinite-lived Intangible Assets Acquired as Part of Business Combination"
       }
      }
     },
     "localname": "ScheduleOfIndefiniteLivedIntangibleAssetsAcquiredAsPartOfBusinessCombinationTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsAcquisitionsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfInventoryCurrentTableTextBlock": {
     "auth_ref": [
      "r9",
      "r31",
      "r32",
      "r33"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/InventoriesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfNotionalAmountsOfOutstandingDerivativePositionsTableTextBlock": {
     "auth_ref": [
      "r553"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/DerivativeInstrumentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfProductWarrantyLiabilityTableTextBlock": {
     "auth_ref": [
      "r350"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AccruedExpensesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfPropertyPlantAndEquipmentTable": {
     "auth_ref": [
      "r40",
      "r315"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/PropertyPlantandEquipmentPropertyPlantandEquipmentDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfQuarterlyFinancialInformationTableTextBlock": {
     "auth_ref": [
      "r174"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Tabular disclosure of quarterly financial data. Includes, but is not limited to, financial information for fiscal quarters, cumulative effect of a change in accounting principle and earnings per share data.",
        "label": "Quarterly Financial Information [Table Text Block]",
        "terseLabel": "Schedule of Selected Quarterly Financial Information Data"
       }
      }
     },
     "localname": "ScheduleOfQuarterlyFinancialInformationTableTextBlock",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfRestructuringAndRelatedCostsTable": {
     "auth_ref": [
      "r321",
      "r322",
      "r327"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringReservebyTypeofCostDetails",
      "http://cognex.com/role/RestructuringChargesScheduleofRestructuringandRelatedCostsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfRestructuringAndRelatedCostsTextBlock": {
     "auth_ref": [
      "r321",
      "r322",
      "r327"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfRestructuringReserveByTypeOfCostTextBlock": {
     "auth_ref": [
      "r320",
      "r328"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/RestructuringChargesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsByGeographicalAreasTableTextBlock": {
     "auth_ref": [
      "r87",
      "r217"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfRevenuesFromExternalCustomersAndLongLivedAssetsTable": {
     "auth_ref": [
      "r82",
      "r217"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformationScheduleofRevenuefromExternalCustomersandLongLivedAssetsbyGeographicalAreasDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationArrangementsByShareBasedPaymentAwardTable": {
     "auth_ref": [
      "r418",
      "r449"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationSharesAuthorizedUnderStockOptionPlansByExercisePriceRangeTable": {
     "auth_ref": [
      "r449"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock": {
     "auth_ref": [
      "r423",
      "r435",
      "r437"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock": {
     "auth_ref": [
      "r440"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfStockByClassTable": {
     "auth_ref": [
      "r50",
      "r114",
      "r178",
      "r179",
      "r351",
      "r352",
      "r353",
      "r355",
      "r356",
      "r357",
      "r358",
      "r359",
      "r360",
      "r361"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ScheduleOfUnrealizedLossOnInvestmentsTableTextBlock": {
     "auth_ref": [
      "r245"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleOfWeightedAverageNumberOfSharesTableTextBlock": {
     "auth_ref": [
      "r166"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageSharesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ScheduleofFiniteLivedIntangibleAssetsFutureAmortizationExpenseTableTextBlock": {
     "auth_ref": [
      "r301"
     ],
     "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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_SegmentReportingDisclosureTextBlock": {
     "auth_ref": [
      "r193",
      "r195",
      "r196",
      "r200",
      "r201",
      "r206",
      "r210",
      "r211",
      "r212",
      "r213",
      "r214",
      "r217",
      "r218",
      "r219"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SegmentandGeographicInformation"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SellingGeneralAndAdministrativeExpense": {
     "auth_ref": [
      "r90"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensation": {
     "auth_ref": [
      "r103"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardAwardVestingPeriod1": {
     "auth_ref": [
      "r419"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeitedInPeriod": {
     "auth_ref": [
      "r429"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsForfeituresWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r434"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriod": {
     "auth_ref": [
      "r432"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r432"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedNumber": {
     "auth_ref": [
      "r431"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsNonvestedWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r431"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriod": {
     "auth_ref": [
      "r433"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardEquityInstrumentsOtherThanOptionsVestedInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r433"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofRestrictedStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate": {
     "auth_ref": [
      "r443"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate": {
     "auth_ref": [
      "r442"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "percentItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate": {
     "auth_ref": [
      "r444"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail",
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardNumberOfSharesAvailableForGrant": {
     "auth_ref": [
      "r449"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber": {
     "auth_ref": [
      "r426"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableWeightedAverageExercisePrice": {
     "auth_ref": [
      "r426"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriod": {
     "auth_ref": [
      "r430"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresAndExpirationsInPeriodWeightedAverageExercisePrice": {
     "auth_ref": [
      "r430"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriod": {
     "auth_ref": [
      "r427"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue": {
     "auth_ref": [
      "r436"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseAdditionalInformationDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue": {
     "auth_ref": [
      "r449"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber": {
     "auth_ref": [
      "r425",
      "r449"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice": {
     "auth_ref": [
      "r424"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestExercisableNumber": {
     "auth_ref": [
      "r439"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue": {
     "auth_ref": [
      "r437"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageExercisePrice": {
     "auth_ref": [
      "r438"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationArrangementsByShareBasedPaymentAwardAwardTypeAndPlanNameDomain": {
     "auth_ref": [
      "r416",
      "r420"
     ],
     "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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "perShareItemType"
    },
    "us-gaap_ShareBasedCompensationOptionAndIncentivePlansPolicy": {
     "auth_ref": [
      "r111",
      "r418",
      "r421"
     ],
     "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/2020-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/2020-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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1": {
     "auth_ref": [
      "r441",
      "r460"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseWeightedAverageAssumptionsUsedinEstimatingFairValuesofStockOptionsGrantedDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsExercisableWeightedAverageRemainingContractualTerm1": {
     "auth_ref": [
      "r449"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2": {
     "auth_ref": [
      "r438"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingWeightedAverageRemainingContractualTerm1": {
     "auth_ref": [
      "r438"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "durationItemType"
    },
    "us-gaap_ShortTermInvestmentsMember": {
     "auth_ref": [
      "r739",
      "r740",
      "r741",
      "r742"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SignificantAccountingPoliciesTextBlock": {
     "auth_ref": [
      "r130"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_StandardProductWarrantyPolicy": {
     "auth_ref": [
      "r111",
      "r347"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_StatementClassOfStockAxis": {
     "auth_ref": [
      "r18",
      "r19",
      "r20",
      "r114",
      "r116",
      "r158",
      "r159",
      "r160",
      "r162",
      "r164",
      "r178",
      "r179",
      "r180",
      "r251",
      "r354",
      "r591"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementEquityComponentsAxis": {
     "auth_ref": [
      "r51",
      "r131",
      "r132",
      "r134",
      "r139",
      "r149",
      "r152",
      "r177",
      "r255",
      "r354",
      "r361",
      "r455",
      "r456",
      "r457",
      "r502",
      "r503",
      "r600",
      "r601",
      "r602",
      "r603",
      "r604",
      "r606",
      "r715",
      "r716",
      "r717"
     ],
     "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/2020-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/2020-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/2020-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/2020-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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_StatementTable": {
     "auth_ref": [
      "r131",
      "r132",
      "r134",
      "r177",
      "r667"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockIssuedDuringPeriodSharesStockOptionsExercised": {
     "auth_ref": [
      "r19",
      "r20",
      "r354",
      "r361",
      "r428"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/StockBasedCompensationExpenseSummaryofStockOptionActivityDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockIssuedDuringPeriodValueStockOptionsExercised": {
     "auth_ref": [
      "r51",
      "r354",
      "r361"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockOptionPlanExpense": {
     "auth_ref": [
      "r104"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockRepurchasedDuringPeriodShares": {
     "auth_ref": [
      "r19",
      "r20",
      "r354",
      "r361"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_StockRepurchasedDuringPeriodValue": {
     "auth_ref": [
      "r19",
      "r20",
      "r354",
      "r361"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITY",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_StockholdersEquity": {
     "auth_ref": [
      "r20",
      "r25",
      "r26",
      "r116",
      "r229",
      "r251",
      "r591"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_StockholdersEquityNoteDisclosureTextBlock": {
     "auth_ref": [
      "r115",
      "r361",
      "r363"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ShareholdersEquity"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_StockholdersEquityNoteStockSplitConversionRatio1": {
     "auth_ref": [
      "r362"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Ratio applied to the conversion of stock split, for example but not limited to, one share converted to two or two shares converted to one.",
        "label": "Stockholders' Equity Note, Stock Split, Conversion Ratio",
        "terseLabel": "Stock split"
       }
      }
     },
     "localname": "StockholdersEquityNoteStockSplitConversionRatio1",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONSParenthetical",
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFSHAREHOLDERSEQUITYParenthetical",
      "http://cognex.com/role/SelectedQuarterlyFinancialDataUnauditedDetails",
      "http://cognex.com/role/ShareholdersEquityAdditionalInformationDetail"
     ],
     "xbrltype": "pureItemType"
    },
    "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventMember": {
     "auth_ref": [
      "r607",
      "r630"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_SubsequentEventTable": {
     "auth_ref": [
      "r607",
      "r630"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventTypeAxis": {
     "auth_ref": [
      "r607",
      "r630"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEventsDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventTypeDomain": {
     "auth_ref": [
      "r607",
      "r630"
     ],
     "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/2020-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/2020-01-31",
     "xbrltype": "stringItemType"
    },
    "us-gaap_SubsequentEventsTextBlock": {
     "auth_ref": [
      "r629",
      "r631"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SubsequentEvents"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_SummaryOfIncomeTaxContingenciesTextBlock": {
     "auth_ref": [
      "r478",
      "r484",
      "r486"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesTables"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_TaxCreditCarryforwardAxis": {
     "auth_ref": [
      "r494"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TaxCreditCarryforwardNameDomain": {
     "auth_ref": [
      "r494"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TaxCreditCarryforwardTable": {
     "auth_ref": [
      "r494"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit": {
     "auth_ref": [
      "r515"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of income tax expense (benefit) for measurement period adjustment from accounting for tax effect pursuant to Tax Cuts and Jobs Act.",
        "label": "Tax Cuts and Jobs Act, Measurement Period Adjustment, Income Tax Expense (Benefit)",
        "terseLabel": "Tax cuts and jobs act, measurement period adjustment, income tax expense (benefit)"
       }
      }
     },
     "localname": "TaxCutsAndJobsActOf2017MeasurementPeriodAdjustmentIncomeTaxExpenseBenefit",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense": {
     "auth_ref": [
      "r499"
     ],
     "crdr": "debit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of income tax expense from transition tax on accumulated earnings of controlled foreign corporation deemed repatriated pursuant to Tax Cuts and Jobs Act.",
        "label": "Tax Cuts and Jobs Act, Transition Tax for Accumulated Foreign Earnings, Income Tax Expense",
        "terseLabel": "Tax cuts and jobs act, transition tax for accumulated foreign earnings, income tax expense"
       }
      }
     },
     "localname": "TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsIncomeTaxExpense",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability": {
     "auth_ref": [
      "r519"
     ],
     "crdr": "credit",
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of tax liability from transition tax on accumulated earnings of controlled foreign corporation deemed repatriated pursuant to Tax Cuts and Jobs Act.",
        "label": "Tax Cuts and Jobs Act, Transition Tax for Accumulated Foreign Earnings, Liability",
        "terseLabel": "Tax cuts and jobs act, transition tax for accumulated foreign earnings, liability"
       }
      }
     },
     "localname": "TaxCutsAndJobsActOf2017TransitionTaxForAccumulatedForeignEarningsLiability",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_TradeAndOtherAccountsReceivablePolicy": {
     "auth_ref": [
      "r222",
      "r223",
      "r225",
      "r226",
      "r228",
      "r230"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_TrademarksMember": {
     "auth_ref": [
      "r526"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/AcquisitionsSualabCoLtdNarrativeDetails",
      "http://cognex.com/role/AcquisitionsSualabCoLtdPurchasePriceAllocationDetails",
      "http://cognex.com/role/IntangibleAssetsAmortizedIntangibleAssetsDetail",
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesIntangibleAssetsDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TransfersAndServicingOfFinancialInstrumentsTypesOfFinancialInstrumentsDomain": {
     "auth_ref": [
      "r243",
      "r244",
      "r632",
      "r633",
      "r634",
      "r635",
      "r636",
      "r637",
      "r638",
      "r639",
      "r640",
      "r641",
      "r642",
      "r643",
      "r644",
      "r646",
      "r647",
      "r648",
      "r649",
      "r650",
      "r651",
      "r652",
      "r653",
      "r654",
      "r655",
      "r656",
      "r657",
      "r658",
      "r659",
      "r660",
      "r661",
      "r662"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TypeOfAdoptionMember": {
     "auth_ref": [
      "r138",
      "r139",
      "r140",
      "r142",
      "r252",
      "r253",
      "r254",
      "r255",
      "r258",
      "r259",
      "r451",
      "r452",
      "r453",
      "r454",
      "r455",
      "r456",
      "r457",
      "r459",
      "r500",
      "r501",
      "r502",
      "r503",
      "r669",
      "r670",
      "r671",
      "r713",
      "r714",
      "r715",
      "r716",
      "r717",
      "r718",
      "r719",
      "r720",
      "r721",
      "r722",
      "r723",
      "r724"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amendment to accounting standards.",
        "label": "Accounting Standards Update [Domain]",
        "terseLabel": "Type of Adoption [Domain]"
       }
      }
     },
     "localname": "TypeOfAdoptionMember",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_TypeOfRestructuringDomain": {
     "auth_ref": [],
     "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/2020-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": [
      "r688"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsComponentsofCashCashEquivalentsandInvestmentsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_USTreasurySecuritiesMember": {
     "auth_ref": [
      "r392",
      "r406",
      "r688"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsAmortizedCosttoFairValueDetail",
      "http://cognex.com/role/CashCashEquivalentsandInvestmentsEffectiveMaturityDatesofAvailableforSaleInvestmentsDetail"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_UnrecognizedTaxBenefits": {
     "auth_ref": [
      "r469",
      "r480"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails",
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestAccrued": {
     "auth_ref": [
      "r477"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncomeTaxPenaltiesAndInterestExpense": {
     "auth_ref": [
      "r477"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesAdditionalInformationDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromCurrentPeriodTaxPositions": {
     "auth_ref": [
      "r482"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsIncreasesResultingFromPriorPeriodTaxPositions": {
     "auth_ref": [
      "r481"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsPeriodIncreaseDecrease": {
     "auth_ref": [
      "r480"
     ],
     "lang": {
      "en-us": {
       "role": {
        "documentation": "Amount of increase (decrease) in unrecognized tax benefits attributable to uncertain tax positions taken in tax returns.",
        "label": "Unrecognized Tax Benefits, Period Increase (Decrease)",
        "terseLabel": "Gross amounts of increases in unrecognized tax benefits as a result of tax positions taken in prior periods"
       }
      }
     },
     "localname": "UnrecognizedTaxBenefitsPeriodIncreaseDecrease",
     "nsuri": "http://fasb.org/us-gaap/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations": {
     "auth_ref": [
      "r483"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/IncomeTaxesChangesintheReserveforIncomeTaxesExcludingInterestandPenaltiesDetails"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_UseOfEstimates": {
     "auth_ref": [
      "r181",
      "r182",
      "r183",
      "r184",
      "r190",
      "r191",
      "r192"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/SummaryofSignificantAccountingPoliciesPolicies"
     ],
     "xbrltype": "textBlockItemType"
    },
    "us-gaap_ValuationAllowanceOfDeferredTaxAssetsMember": {
     "auth_ref": [
      "r128"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesAdjustments": {
     "auth_ref": [
      "r129"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesBalance": {
     "auth_ref": [
      "r122",
      "r127"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDBALANCESHEETSParenthetical",
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesChargedToCostAndExpense": {
     "auth_ref": [
      "r125"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesDeductions": {
     "auth_ref": [
      "r126"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "monetaryItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesDomain": {
     "auth_ref": [
      "r122",
      "r123",
      "r124",
      "r126",
      "r127"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "domainItemType"
    },
    "us-gaap_ValuationAllowancesAndReservesTypeAxis": {
     "auth_ref": [
      "r122",
      "r123",
      "r124",
      "r126",
      "r127"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/ScheduleIIValuationandQualifyingAccountsDetail"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_WeightedAverageNumberDilutedSharesOutstandingAdjustment": {
     "auth_ref": [
      "r164"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail"
     ],
     "xbrltype": "sharesItemType"
    },
    "us-gaap_WeightedAverageNumberOfDilutedSharesOutstanding": {
     "auth_ref": [
      "r157",
      "r164"
     ],
     "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/2020-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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS"
     ],
     "xbrltype": "stringItemType"
    },
    "us-gaap_WeightedAverageNumberOfSharesOutstandingBasic": {
     "auth_ref": [
      "r156",
      "r164"
     ],
     "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/2020-01-31",
     "presentation": [
      "http://cognex.com/role/CONSOLIDATEDSTATEMENTSOFOPERATIONS",
      "http://cognex.com/role/WeightedAverageSharesCalculationofWeightedAverageSharesDetail"
     ],
     "xbrltype": "sharesItemType"
    }
   },
   "unitCount": 17
  }
 },
 "std_ref": {
  "r0": {
   "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"
  },
  "r1": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6676-107765"
  },
  "r10": {
   "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"
  },
  "r100": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3367-108585"
  },
  "r101": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3521-108585"
  },
  "r102": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3536-108585"
  },
  "r103": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3602-108585"
  },
  "r104": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3602-108585"
  },
  "r105": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3602-108585"
  },
  "r106": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3044-108585"
  },
  "r107": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121583591&loc=d3e4273-108586"
  },
  "r108": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121583591&loc=d3e4297-108586"
  },
  "r109": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121583591&loc=d3e4304-108586"
  },
  "r11": {
   "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"
  },
  "r110": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121583591&loc=SL98516268-108586"
  },
  "r111": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18780-107790"
  },
  "r112": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18823-107790"
  },
  "r113": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=84158767&loc=d3e18823-107790"
  },
  "r114": {
   "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"
  },
  "r115": {
   "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"
  },
  "r116": {
   "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"
  },
  "r117": {
   "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"
  },
  "r118": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.4-08.(h)(1)(i))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e23780-122690"
  },
  "r119": {
   "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"
  },
  "r12": {
   "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"
  },
  "r120": {
   "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"
  },
  "r121": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-04(a))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24072-122690"
  },
  "r122": {
   "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"
  },
  "r123": {
   "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"
  },
  "r124": {
   "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"
  },
  "r125": {
   "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"
  },
  "r126": {
   "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"
  },
  "r127": {
   "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"
  },
  "r128": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SX 210.12-09(ColumnA))",
   "Topic": "235",
   "URI": "http://asc.fasb.org/extlink&oid=120395691&loc=d3e24092-122690"
  },
  "r129": {
   "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"
  },
  "r13": {
   "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"
  },
  "r130": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "235",
   "URI": "http://asc.fasb.org/topic&trid=2122369"
  },
  "r131": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "23",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=115929471&loc=d3e21914-107793"
  },
  "r132": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "24",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=115929471&loc=d3e21930-107793"
  },
  "r133": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "27",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=115929471&loc=d3e22044-107793"
  },
  "r134": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=115929471&loc=d3e21711-107793"
  },
  "r135": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=115929471&loc=d3e21728-107793"
  },
  "r136": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r137": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(1)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r138": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(2)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r139": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(3)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r14": {
   "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"
  },
  "r140": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(4)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r141": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r142": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(2)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r143": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22499-107794"
  },
  "r144": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22694-107794"
  },
  "r145": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22694-107794"
  },
  "r146": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22583-107794"
  },
  "r147": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22595-107794"
  },
  "r148": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22644-107794"
  },
  "r149": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22644-107794"
  },
  "r15": {
   "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"
  },
  "r150": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22644-107794"
  },
  "r151": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22658-107794"
  },
  "r152": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=109234566&loc=d3e22663-107794"
  },
  "r153": {
   "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=112272810&loc=d3e31137-122693"
  },
  "r154": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Topic": "250",
   "URI": "http://asc.fasb.org/extlink&oid=112272810&loc=SL108384541-122693"
  },
  "r155": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "250",
   "URI": "http://asc.fasb.org/topic&trid=2122394"
  },
  "r156": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1448-109256"
  },
  "r157": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1505-109256"
  },
  "r158": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1252-109256"
  },
  "r159": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1278-109256"
  },
  "r16": {
   "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"
  },
  "r160": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "55",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e2626-109256"
  },
  "r161": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=SL5780133-109256"
  },
  "r162": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "60B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=SL5780133-109256"
  },
  "r163": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=121326447&loc=d3e1337-109256"
  },
  "r164": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3550-109257"
  },
  "r165": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3550-109257"
  },
  "r166": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3550-109257"
  },
  "r167": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=6371337&loc=d3e3630-109257"
  },
  "r168": {
   "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"
  },
  "r169": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=120380238&loc=d3e3842-109258"
  },
  "r17": {
   "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"
  },
  "r170": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "52",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "260",
   "URI": "http://asc.fasb.org/extlink&oid=120380238&loc=d3e4984-109258"
  },
  "r171": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "260",
   "URI": "http://asc.fasb.org/topic&trid=2144383"
  },
  "r172": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "270",
   "URI": "http://asc.fasb.org/extlink&oid=116846552&loc=d3e777-108305"
  },
  "r173": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "270",
   "URI": "http://asc.fasb.org/extlink&oid=116846552&loc=d3e543-108305"
  },
  "r174": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "270",
   "URI": "http://asc.fasb.org/extlink&oid=121640914&loc=d3e1280-108306"
  },
  "r175": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "270",
   "URI": "http://asc.fasb.org/extlink&oid=121640914&loc=SL77927221-108306"
  },
  "r176": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "270",
   "URI": "http://asc.fasb.org/topic&trid=2126967"
  },
  "r177": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "272",
   "URI": "http://asc.fasb.org/extlink&oid=6828210&loc=d3e70191-108054"
  },
  "r178": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "272",
   "URI": "http://asc.fasb.org/extlink&oid=6828210&loc=d3e70229-108054"
  },
  "r179": {
   "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"
  },
  "r18": {
   "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"
  },
  "r180": {
   "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"
  },
  "r181": {
   "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"
  },
  "r182": {
   "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"
  },
  "r183": {
   "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"
  },
  "r184": {
   "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"
  },
  "r185": {
   "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"
  },
  "r186": {
   "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"
  },
  "r187": {
   "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"
  },
  "r188": {
   "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"
  },
  "r189": {
   "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"
  },
  "r19": {
   "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"
  },
  "r190": {
   "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"
  },
  "r191": {
   "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"
  },
  "r192": {
   "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"
  },
  "r193": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8657-108599"
  },
  "r194": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "18",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8672-108599"
  },
  "r195": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8721-108599"
  },
  "r196": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8721-108599"
  },
  "r197": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r198": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r199": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(h)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r2": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6676-107765"
  },
  "r20": {
   "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"
  },
  "r200": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "22",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8736-108599"
  },
  "r201": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "26",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8844-108599"
  },
  "r202": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8906-108599"
  },
  "r203": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8906-108599"
  },
  "r204": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8906-108599"
  },
  "r205": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "30",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8906-108599"
  },
  "r206": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "31",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8924-108599"
  },
  "r207": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r208": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r209": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r21": {
   "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"
  },
  "r210": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r211": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r212": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "32",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8933-108599"
  },
  "r213": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "34",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e8981-108599"
  },
  "r214": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "40",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9031-108599"
  },
  "r215": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9038-108599"
  },
  "r216": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9038-108599"
  },
  "r217": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "41",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9038-108599"
  },
  "r218": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "42",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "280",
   "URI": "http://asc.fasb.org/extlink&oid=120311839&loc=d3e9054-108599"
  },
  "r219": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "280",
   "URI": "http://asc.fasb.org/topic&trid=2134510"
  },
  "r22": {
   "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"
  },
  "r220": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121593590&loc=d3e4428-111522"
  },
  "r221": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121593590&loc=d3e4531-111522"
  },
  "r222": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=d3e4975-111524"
  },
  "r223": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=SL6953423-111524"
  },
  "r224": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=SL6953423-111524"
  },
  "r225": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=d3e5212-111524"
  },
  "r226": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=d3e5033-111524"
  },
  "r227": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=d3e5074-111524"
  },
  "r228": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=121611835&loc=d3e5093-111524"
  },
  "r229": {
   "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=27010918&loc=d3e74512-122707"
  },
  "r23": {
   "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"
  },
  "r230": {
   "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"
  },
  "r231": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=84159169&loc=d3e10149-111534"
  },
  "r232": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "310",
   "URI": "http://asc.fasb.org/extlink&oid=84159169&loc=d3e10178-111534"
  },
  "r233": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121553693&loc=d3e26610-111562"
  },
  "r234": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121553693&loc=d3e26626-111562"
  },
  "r235": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27161-111563"
  },
  "r236": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(aa)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27161-111563"
  },
  "r237": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(aaa)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27161-111563"
  },
  "r238": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27161-111563"
  },
  "r239": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27161-111563"
  },
  "r24": {
   "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"
  },
  "r240": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27161-111563"
  },
  "r241": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27198-111563"
  },
  "r242": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27198-111563"
  },
  "r243": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27232-111563"
  },
  "r244": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=SL120269820-111563"
  },
  "r245": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27290-111563"
  },
  "r246": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27337-111563"
  },
  "r247": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27340-111563"
  },
  "r248": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)-(d)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27357-111563"
  },
  "r249": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "320",
   "URI": "http://asc.fasb.org/extlink&oid=121645371&loc=d3e27357-111563"
  },
  "r25": {
   "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"
  },
  "r250": {
   "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"
  },
  "r251": {
   "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"
  },
  "r252": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r253": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r254": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r255": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r256": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r257": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(2)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r258": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(3)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r259": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(4)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121646688&loc=SL121648383-210437"
  },
  "r26": {
   "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"
  },
  "r260": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599878&loc=SL82895884-210446"
  },
  "r261": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919244-210447"
  },
  "r262": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919249-210447"
  },
  "r263": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919249-210447"
  },
  "r264": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919249-210447"
  },
  "r265": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(f)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919249-210447"
  },
  "r266": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919249-210447"
  },
  "r267": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919253-210447"
  },
  "r268": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "16",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919258-210447"
  },
  "r269": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121599337&loc=SL82919230-210447"
  },
  "r27": {
   "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"
  },
  "r270": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121558606&loc=SL82898722-210454"
  },
  "r271": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121558606&loc=SL82922868-210454"
  },
  "r272": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121582814&loc=SL82922888-210455"
  },
  "r273": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121582814&loc=SL82922895-210455"
  },
  "r274": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121582814&loc=SL82922897-210455"
  },
  "r275": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121582814&loc=SL82922900-210455"
  },
  "r276": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(g)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121582814&loc=SL82922900-210455"
  },
  "r277": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(h)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121582814&loc=SL82922900-210455"
  },
  "r278": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(i)",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121582814&loc=SL82922900-210455"
  },
  "r279": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "326",
   "URI": "http://asc.fasb.org/extlink&oid=121582814&loc=SL82922900-210455"
  },
  "r28": {
   "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"
  },
  "r280": {
   "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"
  },
  "r281": {
   "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"
  },
  "r282": {
   "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"
  },
  "r283": {
   "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"
  },
  "r284": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "330",
   "URI": "http://asc.fasb.org/topic&trid=2126998"
  },
  "r285": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "340",
   "URI": "http://asc.fasb.org/extlink&oid=68051541&loc=SL49131252-203054"
  },
  "r286": {
   "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"
  },
  "r287": {
   "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"
  },
  "r288": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=121556970&loc=d3e13816-109267"
  },
  "r289": {
   "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"
  },
  "r29": {
   "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"
  },
  "r290": {
   "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"
  },
  "r291": {
   "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"
  },
  "r292": {
   "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"
  },
  "r293": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "20",
   "Topic": "350",
   "URI": "http://asc.fasb.org/subtopic&trid=2144439"
  },
  "r294": {
   "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"
  },
  "r295": {
   "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"
  },
  "r296": {
   "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"
  },
  "r297": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(a)(3)",
   "Topic": "350",
   "URI": "http://asc.fasb.org/extlink&oid=66006027&loc=d3e16265-109275"
  },
  "r298": {
   "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"
  },
  "r299": {
   "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"
  },
  "r3": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6676-107765"
  },
  "r30": {
   "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"
  },
  "r300": {
   "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"
  },
  "r301": {
   "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"
  },
  "r302": {
   "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"
  },
  "r303": {
   "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"
  },
  "r304": {
   "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"
  },
  "r305": {
   "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"
  },
  "r306": {
   "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"
  },
  "r307": {
   "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"
  },
  "r308": {
   "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"
  },
  "r309": {
   "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"
  },
  "r31": {
   "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"
  },
  "r310": {
   "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"
  },
  "r311": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "350",
   "URI": "http://asc.fasb.org/topic&trid=2144416"
  },
  "r312": {
   "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"
  },
  "r313": {
   "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"
  },
  "r314": {
   "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"
  },
  "r315": {
   "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"
  },
  "r316": {
   "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"
  },
  "r317": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "360",
   "URI": "http://asc.fasb.org/topic&trid=2155823"
  },
  "r318": {
   "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"
  },
  "r319": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=6394359&loc=d3e17939-110869"
  },
  "r32": {
   "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"
  },
  "r320": {
   "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"
  },
  "r321": {
   "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"
  },
  "r322": {
   "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"
  },
  "r323": {
   "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"
  },
  "r324": {
   "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"
  },
  "r325": {
   "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"
  },
  "r326": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 5.P.4(b))",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747"
  },
  "r327": {
   "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"
  },
  "r328": {
   "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"
  },
  "r329": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.P.4(b))",
   "Topic": "420",
   "URI": "http://asc.fasb.org/extlink&oid=115931487&loc=d3e140904-122747"
  },
  "r33": {
   "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"
  },
  "r330": {
   "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"
  },
  "r331": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "420",
   "URI": "http://asc.fasb.org/topic&trid=2175745"
  },
  "r332": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "440",
   "URI": "http://asc.fasb.org/extlink&oid=121559207&loc=d3e25336-109308"
  },
  "r333": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "440",
   "URI": "http://asc.fasb.org/extlink&oid=121559207&loc=d3e25336-109308"
  },
  "r334": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "440",
   "URI": "http://asc.fasb.org/topic&trid=2144648"
  },
  "r335": {
   "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"
  },
  "r336": {
   "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"
  },
  "r337": {
   "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"
  },
  "r338": {
   "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"
  },
  "r339": {
   "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"
  },
  "r34": {
   "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"
  },
  "r340": {
   "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"
  },
  "r341": {
   "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"
  },
  "r342": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "450",
   "URI": "http://asc.fasb.org/topic&trid=2127136"
  },
  "r343": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "10",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=68070138&loc=d3e11281-110244"
  },
  "r344": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=68068213&loc=d3e12524-110249"
  },
  "r345": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "((c)(2))",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=68068213&loc=d3e12565-110249"
  },
  "r346": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "((c)(3))",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=68068213&loc=d3e12565-110249"
  },
  "r347": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=68068213&loc=d3e12565-110249"
  },
  "r348": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(1)",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=68068213&loc=d3e12565-110249"
  },
  "r349": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)(5)",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=68068213&loc=d3e12565-110249"
  },
  "r35": {
   "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"
  },
  "r350": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "460",
   "URI": "http://asc.fasb.org/extlink&oid=68068213&loc=d3e12565-110249"
  },
  "r351": {
   "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=65877616&loc=d3e177068-122764"
  },
  "r352": {
   "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"
  },
  "r353": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=109259400&loc=d3e21553-112644"
  },
  "r354": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=109259400&loc=d3e21463-112644"
  },
  "r355": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=109259400&loc=d3e21475-112644"
  },
  "r356": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=109259400&loc=d3e21484-112644"
  },
  "r357": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=109259400&loc=d3e21488-112644"
  },
  "r358": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=109259400&loc=d3e21506-112644"
  },
  "r359": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=109259400&loc=d3e21521-112644"
  },
  "r36": {
   "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"
  },
  "r360": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=109259400&loc=d3e21538-112644"
  },
  "r361": {
   "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"
  },
  "r362": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB TOPIC 4.C)",
   "Topic": "505",
   "URI": "http://asc.fasb.org/extlink&oid=120397183&loc=d3e187143-122770"
  },
  "r363": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "505",
   "URI": "http://asc.fasb.org/topic&trid=2208762"
  },
  "r364": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121556615&loc=SL49130531-203044"
  },
  "r365": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121556615&loc=SL49130532-203044"
  },
  "r366": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130551-203045"
  },
  "r367": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045"
  },
  "r368": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045"
  },
  "r369": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045"
  },
  "r37": {
   "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"
  },
  "r370": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045"
  },
  "r371": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130554-203045"
  },
  "r372": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(2)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130556-203045"
  },
  "r373": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130558-203045"
  },
  "r374": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130543-203045"
  },
  "r375": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130545-203045"
  },
  "r376": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130549-203045"
  },
  "r377": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121604090&loc=SL49130550-203045"
  },
  "r378": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121551570&loc=SL49130690-203046-203046"
  },
  "r379": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121551570&loc=SL49130690-203046-203046"
  },
  "r38": {
   "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"
  },
  "r380": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121551570&loc=SL49130690-203046-203046"
  },
  "r381": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121551570&loc=SL49130690-203046-203046"
  },
  "r382": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121551570&loc=SL49130690-203046-203046"
  },
  "r383": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121551570&loc=SL49130690-203046-203046"
  },
  "r384": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "91",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "(g)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=121551570&loc=SL49130690-203046-203046"
  },
  "r385": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(g)(2)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=113356391&loc=SL49131195-203048"
  },
  "r386": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(i)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=113356391&loc=SL49131195-203048"
  },
  "r387": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(i)(2)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=113356391&loc=SL49131195-203048"
  },
  "r388": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(j)",
   "Topic": "606",
   "URI": "http://asc.fasb.org/extlink&oid=113356391&loc=SL49131195-203048"
  },
  "r389": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "606",
   "URI": "http://asc.fasb.org/topic&trid=49130388"
  },
  "r39": {
   "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"
  },
  "r390": {
   "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"
  },
  "r391": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(i)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r392": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(ii)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r393": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(d)(iii)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r394": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r395": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r396": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r397": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r398": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r399": {
   "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=118255775&loc=d3e1928-114920"
  },
  "r4": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6676-107765"
  },
  "r40": {
   "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"
  },
  "r400": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(l)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r401": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(o)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r402": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(p)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r403": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(q)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r404": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(r)(1)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r405": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(r)(2)",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118255775&loc=d3e1928-114920"
  },
  "r406": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "715",
   "URI": "http://asc.fasb.org/extlink&oid=118257860&loc=d3e4179-114921"
  },
  "r407": {
   "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"
  },
  "r408": {
   "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"
  },
  "r409": {
   "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"
  },
  "r41": {
   "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"
  },
  "r410": {
   "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"
  },
  "r411": {
   "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"
  },
  "r412": {
   "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"
  },
  "r413": {
   "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"
  },
  "r414": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "715",
   "URI": "http://asc.fasb.org/topic&trid=2235017"
  },
  "r415": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "10",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121326096&loc=d3e4534-113899"
  },
  "r416": {
   "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"
  },
  "r417": {
   "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"
  },
  "r418": {
   "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"
  },
  "r419": {
   "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"
  },
  "r42": {
   "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"
  },
  "r420": {
   "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"
  },
  "r421": {
   "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"
  },
  "r422": {
   "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"
  },
  "r423": {
   "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"
  },
  "r424": {
   "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"
  },
  "r425": {
   "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"
  },
  "r426": {
   "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"
  },
  "r427": {
   "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"
  },
  "r428": {
   "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"
  },
  "r429": {
   "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"
  },
  "r43": {
   "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"
  },
  "r430": {
   "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"
  },
  "r431": {
   "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"
  },
  "r432": {
   "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"
  },
  "r433": {
   "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"
  },
  "r434": {
   "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"
  },
  "r435": {
   "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"
  },
  "r436": {
   "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"
  },
  "r437": {
   "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"
  },
  "r438": {
   "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"
  },
  "r439": {
   "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"
  },
  "r44": {
   "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"
  },
  "r440": {
   "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"
  },
  "r441": {
   "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"
  },
  "r442": {
   "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"
  },
  "r443": {
   "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"
  },
  "r444": {
   "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"
  },
  "r445": {
   "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"
  },
  "r446": {
   "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"
  },
  "r447": {
   "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"
  },
  "r448": {
   "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"
  },
  "r449": {
   "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"
  },
  "r45": {
   "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"
  },
  "r450": {
   "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"
  },
  "r451": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r452": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r453": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r454": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=121322162&loc=SL121327923-165333"
  },
  "r455": {
   "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"
  },
  "r456": {
   "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"
  },
  "r457": {
   "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"
  },
  "r458": {
   "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"
  },
  "r459": {
   "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"
  },
  "r46": {
   "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"
  },
  "r460": {
   "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=115993241&loc=d3e301413-122809"
  },
  "r461": {
   "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=115993241&loc=d3e301413-122809"
  },
  "r462": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120383193&loc=d3e11149-113907"
  },
  "r463": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "718",
   "URI": "http://asc.fasb.org/extlink&oid=120383193&loc=d3e11178-113907"
  },
  "r464": {
   "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"
  },
  "r465": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "718",
   "URI": "http://asc.fasb.org/topic&trid=2228938"
  },
  "r466": {
   "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"
  },
  "r467": {
   "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"
  },
  "r468": {
   "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"
  },
  "r469": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120406818&loc=SL37586934-109318"
  },
  "r47": {
   "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"
  },
  "r470": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "25",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120406818&loc=d3e32247-109318"
  },
  "r471": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120406818&loc=d3e32280-109318"
  },
  "r472": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120406818&loc=d3e31917-109318"
  },
  "r473": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120406818&loc=d3e31931-109318"
  },
  "r474": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32672-109319"
  },
  "r475": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32687-109319"
  },
  "r476": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32705-109319"
  },
  "r477": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32718-109319"
  },
  "r478": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32718-109319"
  },
  "r479": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32718-109319"
  },
  "r48": {
   "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"
  },
  "r480": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r481": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(1)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r482": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(2)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r483": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)(4)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r484": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=SL6600010-109319"
  },
  "r485": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32809-109319"
  },
  "r486": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32840-109319"
  },
  "r487": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r488": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r489": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r49": {
   "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"
  },
  "r490": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32537-109319"
  },
  "r491": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32847-109319"
  },
  "r492": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32857-109319"
  },
  "r493": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32559-109319"
  },
  "r494": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32559-109319"
  },
  "r495": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32621-109319"
  },
  "r496": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32632-109319"
  },
  "r497": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32639-109319"
  },
  "r498": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32639-109319"
  },
  "r499": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=84230637&loc=d3e32639-109319"
  },
  "r5": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6801-107765"
  },
  "r50": {
   "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"
  },
  "r500": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "740"
  },
  "r501": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "740"
  },
  "r502": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(2)",
   "Topic": "740"
  },
  "r503": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(d)(3)",
   "Topic": "740"
  },
  "r504": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(1)",
   "Topic": "740"
  },
  "r505": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(2)",
   "Topic": "740"
  },
  "r506": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "10",
   "Subparagraph": "(e)(3)",
   "Topic": "740"
  },
  "r507": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r508": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r509": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r51": {
   "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"
  },
  "r510": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r511": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r512": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r513": {
   "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=116825942&loc=d3e330036-122817"
  },
  "r514": {
   "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=116825942&loc=d3e330215-122817"
  },
  "r515": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2A",
   "Publisher": "FASB",
   "Section": "S99",
   "SubTopic": "10",
   "Subparagraph": "(SAB Topic 5.EE.Q2(f))",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=116825942&loc=SL116722634-122817"
  },
  "r516": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "740",
   "URI": "http://asc.fasb.org/extlink&oid=120385591&loc=d3e38679-109324"
  },
  "r517": {
   "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"
  },
  "r518": {
   "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"
  },
  "r519": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "740",
   "URI": "http://asc.fasb.org/topic&trid=2144680"
  },
  "r52": {
   "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"
  },
  "r520": {
   "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"
  },
  "r521": {
   "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"
  },
  "r522": {
   "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"
  },
  "r523": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "37",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121600890&loc=d3e2207-128464"
  },
  "r524": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121647850&loc=d3e4845-128472"
  },
  "r525": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121647850&loc=d3e4922-128472"
  },
  "r526": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121598580&loc=d3e5263-128473"
  },
  "r527": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(e)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121598580&loc=d3e5263-128473"
  },
  "r528": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121598580&loc=d3e5333-128473"
  },
  "r529": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "38",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=121598580&loc=d3e5504-128473"
  },
  "r53": {
   "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"
  },
  "r530": {
   "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"
  },
  "r531": {
   "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"
  },
  "r532": {
   "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"
  },
  "r533": {
   "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"
  },
  "r534": {
   "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"
  },
  "r535": {
   "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"
  },
  "r536": {
   "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"
  },
  "r537": {
   "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"
  },
  "r538": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Subparagraph": "(d)",
   "Topic": "805",
   "URI": "http://asc.fasb.org/extlink&oid=120321790&loc=d3e6927-128479"
  },
  "r539": {
   "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"
  },
  "r54": {
   "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"
  },
  "r540": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "805",
   "URI": "http://asc.fasb.org/topic&trid=2303972"
  },
  "r541": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "19",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=108774443&loc=SL4569616-111683"
  },
  "r542": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=108774443&loc=SL4569643-111683"
  },
  "r543": {
   "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"
  },
  "r544": {
   "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"
  },
  "r545": {
   "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"
  },
  "r546": {
   "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"
  },
  "r547": {
   "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"
  },
  "r548": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bb)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=121559654&loc=d3e5710-111685"
  },
  "r549": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "810",
   "URI": "http://asc.fasb.org/extlink&oid=121559654&loc=d3e5710-111685"
  },
  "r55": {
   "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"
  },
  "r550": {
   "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"
  },
  "r551": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5579240-113959"
  },
  "r552": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5579245-113959"
  },
  "r553": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5579245-113959"
  },
  "r554": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5579245-113959"
  },
  "r555": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5580258-113959"
  },
  "r556": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=d3e41620-113959"
  },
  "r557": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=d3e41638-113959"
  },
  "r558": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5618551-113959"
  },
  "r559": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5618551-113959"
  },
  "r56": {
   "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"
  },
  "r560": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)(1)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5618551-113959"
  },
  "r561": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a),(c)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5624163-113959"
  },
  "r562": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5624163-113959"
  },
  "r563": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5624163-113959"
  },
  "r564": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4C",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5624171-113959"
  },
  "r565": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4C",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5624171-113959"
  },
  "r566": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4D",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5624177-113959"
  },
  "r567": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4D",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5624177-113959"
  },
  "r568": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4E",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=SL5624181-113959"
  },
  "r569": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=d3e41641-113959"
  },
  "r57": {
   "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"
  },
  "r570": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=d3e41675-113959"
  },
  "r571": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121590274&loc=d3e41678-113959"
  },
  "r572": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "182",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Topic": "815",
   "URI": "http://asc.fasb.org/extlink&oid=121582272&loc=SL5629052-113961"
  },
  "r573": {
   "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"
  },
  "r574": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "815",
   "URI": "http://asc.fasb.org/topic&trid=2229140"
  },
  "r575": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r576": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r577": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bb)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r578": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(1)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r579": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(bbb)(2)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r58": {
   "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"
  },
  "r580": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r581": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19207-110258"
  },
  "r582": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=d3e19279-110258"
  },
  "r583": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "820",
   "URI": "http://asc.fasb.org/extlink&oid=117815213&loc=SL6742756-110258"
  },
  "r584": {
   "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"
  },
  "r585": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=116690757&loc=SL116692626-108610"
  },
  "r586": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=121572278&loc=d3e13279-108611"
  },
  "r587": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=121572278&loc=d3e13433-108611"
  },
  "r588": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "20",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=121572278&loc=d3e13531-108611"
  },
  "r589": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=121572278&loc=d3e13537-108611"
  },
  "r59": {
   "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"
  },
  "r590": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "21",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=121572278&loc=d3e13537-108611"
  },
  "r591": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "28",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "825",
   "URI": "http://asc.fasb.org/extlink&oid=75031198&loc=d3e14064-108612"
  },
  "r592": {
   "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"
  },
  "r593": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=120253306&loc=d3e28129-110885"
  },
  "r594": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "20",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=121605123&loc=d3e30226-110892"
  },
  "r595": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "35",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=121605123&loc=d3e30304-110892"
  },
  "r596": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=109240200&loc=d3e30690-110894"
  },
  "r597": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=109240200&loc=d3e30755-110894"
  },
  "r598": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=6450222&loc=d3e30840-110895"
  },
  "r599": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "230",
   "Topic": "830",
   "URI": "http://asc.fasb.org/extlink&oid=98513438&loc=d3e33268-110906"
  },
  "r6": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6911-107765"
  },
  "r60": {
   "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"
  },
  "r600": {
   "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"
  },
  "r601": {
   "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"
  },
  "r602": {
   "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"
  },
  "r603": {
   "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"
  },
  "r604": {
   "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"
  },
  "r605": {
   "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"
  },
  "r606": {
   "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"
  },
  "r607": {
   "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"
  },
  "r608": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "830",
   "URI": "http://asc.fasb.org/topic&trid=2175825"
  },
  "r609": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "40",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "Note 1",
   "Topic": "840",
   "URI": "http://asc.fasb.org/extlink&oid=121580752&loc=d3e38371-112697"
  },
  "r61": {
   "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"
  },
  "r610": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "40",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "10",
   "Subparagraph": "Note 3",
   "Topic": "840",
   "URI": "http://asc.fasb.org/extlink&oid=121580752&loc=d3e38371-112697"
  },
  "r611": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "840",
   "URI": "http://asc.fasb.org/extlink&oid=121589968&loc=d3e41457-112716"
  },
  "r612": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Topic": "840",
   "URI": "http://asc.fasb.org/extlink&oid=121589968&loc=d3e41460-112716"
  },
  "r613": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "840",
   "URI": "http://asc.fasb.org/extlink&oid=121578510&loc=d3e41551-112718"
  },
  "r614": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "25",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121593497&loc=SL77918431-209957"
  },
  "r615": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121603541&loc=SL77918627-209977"
  },
  "r616": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121603541&loc=SL77918627-209977"
  },
  "r617": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121603541&loc=SL77918638-209977"
  },
  "r618": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121603541&loc=SL77918643-209977"
  },
  "r619": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918666-209980"
  },
  "r62": {
   "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"
  },
  "r620": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(1)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918686-209980"
  },
  "r621": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(3)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918686-209980"
  },
  "r622": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Subparagraph": "(g)(4)",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918686-209980"
  },
  "r623": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121609121&loc=SL77918701-209980"
  },
  "r624": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "53",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121568110&loc=SL77918982-209971"
  },
  "r625": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "20",
   "Topic": "842",
   "URI": "http://asc.fasb.org/subtopic&trid=77888251"
  },
  "r626": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "30",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121561866&loc=SL77919311-209978"
  },
  "r627": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "30",
   "Topic": "842",
   "URI": "http://asc.fasb.org/extlink&oid=121576215&loc=SL77919372-209981"
  },
  "r628": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "SubTopic": "30",
   "Topic": "842",
   "URI": "http://asc.fasb.org/subtopic&trid=77888252"
  },
  "r629": {
   "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"
  },
  "r63": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669646-108580"
  },
  "r630": {
   "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"
  },
  "r631": {
   "Name": "Accounting Standards Codification",
   "Publisher": "FASB",
   "Topic": "855",
   "URI": "http://asc.fasb.org/topic&trid=2122774"
  },
  "r632": {
   "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"
  },
  "r633": {
   "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"
  },
  "r634": {
   "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"
  },
  "r635": {
   "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"
  },
  "r636": {
   "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"
  },
  "r637": {
   "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"
  },
  "r638": {
   "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"
  },
  "r639": {
   "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"
  },
  "r64": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(d)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669646-108580"
  },
  "r640": {
   "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"
  },
  "r641": {
   "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"
  },
  "r642": {
   "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"
  },
  "r643": {
   "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"
  },
  "r644": {
   "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"
  },
  "r645": {
   "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"
  },
  "r646": {
   "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"
  },
  "r647": {
   "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"
  },
  "r648": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122625-111746"
  },
  "r649": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122625-111746"
  },
  "r65": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(e)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669646-108580"
  },
  "r650": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122625-111746"
  },
  "r651": {
   "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=116651436&loc=d3e122625-111746"
  },
  "r652": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r653": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r654": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r655": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(4)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r656": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(5)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r657": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(6)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r658": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(a)(7)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r659": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(b)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r66": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669646-108580"
  },
  "r660": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(1)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r661": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(2)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r662": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "4",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "50",
   "Subparagraph": "(e)(3)",
   "Topic": "860",
   "URI": "http://asc.fasb.org/extlink&oid=116651436&loc=d3e122739-111746"
  },
  "r663": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "6",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "910",
   "URI": "http://asc.fasb.org/extlink&oid=119991564&loc=SL119991595-234733"
  },
  "r664": {
   "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"
  },
  "r665": {
   "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"
  },
  "r666": {
   "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"
  },
  "r667": {
   "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"
  },
  "r668": {
   "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"
  },
  "r669": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "20",
   "Subparagraph": "(a)",
   "Topic": "926",
   "URI": "http://asc.fasb.org/extlink&oid=120154821&loc=SL120154904-197079"
  },
  "r67": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "10A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669646-108580"
  },
  "r670": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "20",
   "Subparagraph": "(b)",
   "Topic": "926",
   "URI": "http://asc.fasb.org/extlink&oid=120154821&loc=SL120154904-197079"
  },
  "r671": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "20",
   "Subparagraph": "(c)",
   "Topic": "926",
   "URI": "http://asc.fasb.org/extlink&oid=120154821&loc=SL120154904-197079"
  },
  "r672": {
   "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"
  },
  "r673": {
   "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"
  },
  "r674": {
   "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"
  },
  "r675": {
   "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"
  },
  "r676": {
   "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"
  },
  "r677": {
   "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"
  },
  "r678": {
   "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"
  },
  "r679": {
   "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"
  },
  "r68": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "11",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=d3e637-108580"
  },
  "r680": {
   "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"
  },
  "r681": {
   "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"
  },
  "r682": {
   "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"
  },
  "r683": {
   "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"
  },
  "r684": {
   "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"
  },
  "r685": {
   "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"
  },
  "r686": {
   "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"
  },
  "r687": {
   "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"
  },
  "r688": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Subparagraph": "(b)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120252992&loc=d3e62557-112803"
  },
  "r689": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120252992&loc=d3e62557-112803"
  },
  "r69": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=d3e640-108580"
  },
  "r690": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120252992&loc=d3e62586-112803"
  },
  "r691": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "3A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "320",
   "Subparagraph": "(a)",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=120252992&loc=SL120269850-112803"
  },
  "r692": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "405",
   "Topic": "942",
   "URI": "http://asc.fasb.org/extlink&oid=116652737&loc=d3e64164-112818"
  },
  "r693": {
   "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"
  },
  "r694": {
   "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"
  },
  "r695": {
   "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"
  },
  "r696": {
   "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"
  },
  "r697": {
   "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"
  },
  "r698": {
   "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"
  },
  "r699": {
   "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"
  },
  "r7": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "8",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e6935-107765"
  },
  "r70": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=d3e681-108580"
  },
  "r700": {
   "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"
  },
  "r701": {
   "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"
  },
  "r702": {
   "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"
  },
  "r703": {
   "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"
  },
  "r704": {
   "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"
  },
  "r705": {
   "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"
  },
  "r706": {
   "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"
  },
  "r707": {
   "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"
  },
  "r708": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "7A",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "40",
   "Subparagraph": "(d)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121643868&loc=SL117782755-158439"
  },
  "r709": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121639165&loc=SL117783719-158441"
  },
  "r71": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669686-108580"
  },
  "r710": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(b)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121639165&loc=SL117783719-158441"
  },
  "r711": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13H",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Subparagraph": "(c)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121639165&loc=SL117783719-158441"
  },
  "r712": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "29F",
   "Publisher": "FASB",
   "Section": "55",
   "SubTopic": "40",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121639165&loc=SL117819544-158441"
  },
  "r713": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(a)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r714": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(b)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r715": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(e)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r716": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(1)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r717": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(f)(2)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r718": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(g)(1)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r719": {
   "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=121370832&loc=SL117420844-207641"
  },
  "r72": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=d3e689-108580"
  },
  "r720": {
   "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=121370832&loc=SL117420844-207641"
  },
  "r721": {
   "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=121370832&loc=SL117420844-207641"
  },
  "r722": {
   "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=121370832&loc=SL117420844-207641"
  },
  "r723": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(h)(1)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r724": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "65",
   "SubTopic": "40",
   "Subparagraph": "(h)(2)",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=121370832&loc=SL117420844-207641"
  },
  "r725": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "825",
   "Topic": "944",
   "URI": "http://asc.fasb.org/extlink&oid=99380617&loc=SL75241803-196195"
  },
  "r726": {
   "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"
  },
  "r727": {
   "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"
  },
  "r728": {
   "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=120401592&loc=d3e611197-123010"
  },
  "r729": {
   "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=120401592&loc=d3e611197-123010"
  },
  "r73": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL34724391-108580"
  },
  "r730": {
   "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=120401592&loc=d3e611197-123010"
  },
  "r731": {
   "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=120401592&loc=d3e611197-123010"
  },
  "r732": {
   "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=120401592&loc=d3e611197-123010"
  },
  "r733": {
   "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=120401592&loc=d3e611197-123010"
  },
  "r734": {
   "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=120401592&loc=d3e611197-123010"
  },
  "r735": {
   "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=120401592&loc=d3e611197-123010"
  },
  "r736": {
   "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=120401592&loc=d3e611197-123010"
  },
  "r737": {
   "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=120401592&loc=SL120429264-123010"
  },
  "r738": {
   "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=120401592&loc=SL120429264-123010"
  },
  "r739": {
   "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=120401592&loc=d3e611379-123010"
  },
  "r74": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "17B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL34724394-108580"
  },
  "r740": {
   "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=120401592&loc=d3e611379-123010"
  },
  "r741": {
   "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=120401592&loc=d3e611379-123010"
  },
  "r742": {
   "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=120401592&loc=d3e611379-123010"
  },
  "r743": {
   "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"
  },
  "r744": {
   "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"
  },
  "r745": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "2",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "450",
   "Topic": "954",
   "URI": "http://asc.fasb.org/extlink&oid=6491354&loc=d3e6052-115624"
  },
  "r746": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "740",
   "Topic": "954",
   "URI": "http://asc.fasb.org/extlink&oid=6491622&loc=d3e9504-115650"
  },
  "r747": {
   "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"
  },
  "r748": {
   "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"
  },
  "r749": {
   "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"
  },
  "r75": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669619-108580"
  },
  "r750": {
   "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"
  },
  "r751": {
   "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"
  },
  "r752": {
   "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"
  },
  "r753": {
   "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"
  },
  "r754": {
   "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"
  },
  "r755": {
   "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"
  },
  "r756": {
   "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"
  },
  "r757": {
   "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"
  },
  "r758": {
   "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"
  },
  "r759": {
   "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"
  },
  "r76": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669619-108580"
  },
  "r760": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b"
  },
  "r761": {
   "Name": "Exchange Act",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "d1-1"
  },
  "r762": {
   "Name": "Form 10-K",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "310"
  },
  "r763": {
   "Name": "Form 20-F",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "220",
   "Subsection": "f"
  },
  "r764": {
   "Name": "Form 40-F",
   "Number": "249",
   "Publisher": "SEC",
   "Section": "240",
   "Subsection": "f"
  },
  "r765": {
   "Name": "Forms 10-K, 10-Q, 20-F",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "13",
   "Subsection": "a-1"
  },
  "r766": {
   "Name": "Regulation 12B",
   "Number": "240",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "b-2"
  },
  "r767": {
   "Name": "Regulation S-T",
   "Number": "232",
   "Publisher": "SEC",
   "Section": "405"
  },
  "r768": {
   "Footnote": "2",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "28"
  },
  "r769": {
   "Footnote": "4",
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "29"
  },
  "r77": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1A",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669619-108580"
  },
  "r770": {
   "Name": "Regulation S-X (SX)",
   "Number": "210",
   "Publisher": "SEC",
   "Section": "12",
   "Subsection": "09"
  },
  "r78": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669625-108580"
  },
  "r79": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1B",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=SL7669625-108580"
  },
  "r8": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "9",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "210",
   "URI": "http://asc.fasb.org/extlink&oid=121566466&loc=d3e7018-107765"
  },
  "r80": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "5",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=121641772&loc=d3e557-108580"
  },
  "r81": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "1",
   "Publisher": "FASB",
   "Section": "50",
   "SubTopic": "10",
   "Topic": "220",
   "URI": "http://asc.fasb.org/extlink&oid=116657188&loc=SL116659661-227067"
  },
  "r82": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r83": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r84": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r85": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r86": {
   "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=120395209&loc=SL114868664-224227"
  },
  "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=120395209&loc=SL114868664-224227"
  },
  "r88": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r89": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r9": {
   "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"
  },
  "r90": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r91": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r92": {
   "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=120395209&loc=SL114868664-224227"
  },
  "r93": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "12",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3179-108585"
  },
  "r94": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(b)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3213-108585"
  },
  "r95": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(c)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3213-108585"
  },
  "r96": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "13",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3213-108585"
  },
  "r97": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "14",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3255-108585"
  },
  "r98": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(a)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3291-108585"
  },
  "r99": {
   "Name": "Accounting Standards Codification",
   "Paragraph": "15",
   "Publisher": "FASB",
   "Section": "45",
   "SubTopic": "10",
   "Subparagraph": "(f)",
   "Topic": "230",
   "URI": "http://asc.fasb.org/extlink&oid=121586364&loc=d3e3291-108585"
  }
 },
 "version": "2.1"
}
</TEXT>
</DOCUMENT>
<DOCUMENT>
<TYPE>ZIP
<SEQUENCE>137
<FILENAME>0000851205-21-000005-xbrl.zip
<DESCRIPTION>IDEA: XBRL DOCUMENT
<TEXT>
begin 644 0000851205-21-000005-xbrl.zip
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
MN?^?TT8IN&=E*FM)D#%1L&1,%4+2E9*&NU*MP^GT\DV_AP]R*0Q3D)E"+\8
MRO0N,$_!4J*_/GNKQMB6@%U4%S_<VZ4LQ?\Y; \P_3A3<_@5VSN[(U(=WW#@
M=W!F,C?7-R^FV/J24.5-4?HM[.XUELO(W]YM[2VQYNJ6(N1/6WL?]EN;:\=7
MUN"@4V9=MS?79'/Y0[OYM<6()?OD0O:W]W9W&^5SEM^WZ?_'W\W;=[_02&^2
M^R$F==<*<X@E&^1"-L@"K= U6ZSQM5Q[Y?:JH^(@I(94L3(S!R) %4"2<8@Y
M*QZS<:5H@/[.A937N^V4\(PHX_:@V(LX?''<[;PF:[[SKY?8J[8^4R3>:??V
M7P_C+G8]T>?%\?CUZ.2 0!^VR>@3;&>_VQT4=A55>NE*?C\F*4P?=_,:9Y]_
M]:'G]S#L'P[&KTI!L?;K<\J><>(Q;NSB0F1&VJ.3BU>E/-BHG=LX>#&^H9NU
MS(C9O^_TO[UZM_;?+]\P^F,5%TS]\>KVF]]<_.KFU<\*G5V\&H[\8+3L1_BF
MW%1%-\?XQ?NNCEW>9KHZ=;QG\^HCSHY<O+[XD%<W'M3%=8IA'S^TP_&S/_ME
M%_WP<(!OVL,^"&Y>;WU>OGC[Q:&+U^7]=V+ D<2MC"1%C0**DRQH;4CTEI(
MQ@<\FUAANK0\G?JC;_=*?Y?1^8/7E;"7%SH_\L"G>=ZZYO8#/0=S?/#!3U1*
M%[@$[;@S0 K? ?H4M3),1*N=&S]1XO1,D/G:$RT\OL;/ASW1&T\@2Y-E<!0F
M<0IL.#J.G(/1X U+%)!/85R?(WJF/\Y>)OJPXX-..[9'#2Q*Y45J=TN-SW[O
MRO.5]@NE:C66DMAG@=1QFPASJ7'ZO71^#-/99<X^_KNK7SZYRYN855MS \L'
M3+S.%)MO/8%?8/-C1//T'\5UYG!W;^;0J9-BSF,J],[8<[/W?VYV4M[]LB?S
MQ<&SZJ?73QTK/C_J7]JU!PJ![]Y??KF,O7ZWW;OKLO=UAS<N\>KFW?_,:WJ%
M@KG,R$L&B()[SZ/S(#Q7G@F?:^0SQ@VVRWM*U8/129F%HV".PMZ;KF,IQL/N
M8:<XCA]5F9Y'A_* ]9?I6X,KAW+;,/Z"0WG NL%,/0$[L2<0#+"DDN(I,_!(
M@CERQ@R]"(9BC3Q^ F;VGH"9V!. R"DB""&0- 9MZ0%X"L"<#XXQ);5_OB?P
MQ%;N6I/.R5NS)X&&.TT&+WAE8@0"R6GF/";G@$P4RV)NH%E*J5TB&M_YT[?3
M6N]\[; F,,GHG4L1LTED.A7W3'L32*;;E+,5:FY@VL"1+VLS%_G1-<$GBVQX
M5M((@1!*Q0#ED-D8!*FZJ.;'PDU%QST)9"$#8]*&H BCS$F#(($((MM$_MJ:
M*41L=?9.4PDE;RI-4A=22.FCU6 86 L49OE(#LT(SMG\ ?IL/FWZX&)06BOF
M*9Q00&J:7KK,07)&XQA#G#]PG]X3S@"JI%XH"/(1N8?@DU-..Q45*RTC8PZS
MZS:'@]'K=V>>D!S?RKBGSUD:T7I>2OV#J\GS>YUY66/\)RC7CV1/XKN%8#FR
MD$J6&G!A@J;_.:^\<ESP^(PA=4UX,RO >:# 'X-G%@Q82-9KEH1UUGL -&G^
MS/C4)SZG8]FCTL8ILNZ8 $J>I]&E^[CTFF>I17R^:;\ZB^HGF8_T6J!R,=*(
MTR $#TD)B2)I;[*W5L\---.8\ID<3%:2SI6>!)&P8$M?0ZE,%H%%&5$K,S<P
M/:L&F1P^,HA<6G.J! ZD+ MW06!4/O*S77WS@L^TIWPF:/D4F3CFM$S, T>P
M&+W4VE#\"%S9.(7DACI[I^EG76@;3336*QD%&$[#,8D8$;U4B8+*.01T.E,^
M4P'7T&/&LE"JK(>@K'/2 $8-*<:HF9\_<)]YRF<ZJ/(H27QJ*6/)RA?.>"/
MR\"=#:C=_*$Z_0AP*D"'%)DR(@7E#(49T7/KT%)L;P/3(//SI;[4V<<^24Z.
M2Q8$DO)A*H LJ_TV.@6)PD&?K>5S \TT(L#)P920DYCQ7D4*)ZQ.9""#]CFC
MIR@#)<X-3,\: 4X.G\!,9":$')0"B"P$9T+)[",Q6F:DYP:?:4> DX-,<XA:
M<5[Z?I5D[6!8\LG)+'GF/MVY%;W>V#U;!#B=!%LG)8])N2R!@>8R,)>4XEF!
M,T+8.01T*A'@=, -I4MK,E)+BY"U\%XF&L B:XM6FCL[,M4;W.>- *>#JO>1
MEQ2YC"1#H[-.H& QTQ .$).#Y]MD56?3^R2[OPP7-B>0PK%4&K9[Y")F)M%K
MP8+1<P/-% *#"<(DP+.2_.M0,0C,6Z>S$"8+=#E@F!^8GC,PF" ^D"-S4@=6
M-D7K*!W!P@TS$("CCO.#SY0#@PE"AA@HNC8IB33>KF.5 VFRXI9,88[3J,[P
M6.Q^V([X[<GFR0'>1/#M89NNVMN91Z$!5H)% RHJ#I8)FZ+/5J1L$DOV[C86
M\X3I&@W&_K?Q,)Y+(0F<&\VT*YU_ ;,*#H6QPI4>[R7,KP&^)<EOHY2JN\KY
M.V\B/:E$T'LQ9UR'L1COPQ$._NT'Z<@/D$[^W,^C\N,\LN<Q39]GC#T_[RDZ
M?'O2\'O]P;N.'][RW<OMX65UNXU2SNIG-N)19*8[^SF9:\F?++55C%B4."D&
M91TX*:T,')DS3-9AYNGIK<_S,+.6_'E,I^D9X\^C4+[T-1VDL&$3XVZOW^GO
MM'%(#F<<1=R^QL(N/6A&/$0D.V2$S^37,O?$+ATA2JT1'<0:\&K&[-+$&5M+
M7B7AE'<VD<U*P$$%D1,:KP2J% 36:3+^$>@?#D?];IG@Z(U*?=*"_ 9VQC72
MAKOM@X6->EC5B1*EZ9PRY@3"ZH!:&I=D#E8I[NJ@O6?21OTB2VO))73,6.65
M3$%"+J47>- N^&"<ME;9&G#IE]1RLU_F60_(-2WM#/!>LST+:W2#02SXL@PI
MF0$'))$L8T(HRV,RC*&XLS_3C#%HQJS1+W"SE@R2P)Q0TG@7,V10-B@!,:,!
MPU+,O 8,^B6<-P<^8=</]N<279:-2> Y1D788JGGJ3!Q)Q!<$MG4 -U_ED&'
M&$@ 1,F8L@!1!>G1">W*JH 7M@ZARJ,->BT!,VBPU&#7UD4 %JQ4QB@148M,
M0-;)?CYHI>[RX$*P/6@J0MID2FZ@ (0RMI.5SB81.8"2NDXEUY]C>6[!GIL3
M[SH"9RF =@Y\3B%9].0BN''9&5T'8S,CR\8/-6.UI(M2(@L9)?&!E<P"GXJ#
M<EQ9+X+3=[9ZK@%=[C6^GX8N[P\'%&,<CDW8^_9Q^6DNXX9H28-*%Y.U%KA&
MYS)F(<K>D\"EK8.;FC%#,\?,N>R*<-X#\>+W-]L2'-"/%Q>X?X\>SE2*&+TP
MY/D">L,A2L#,$KB@:Y!P_]ZW!U]\YQ#?GC3.OG6YP/L!_L\A]N+)+9)<G'SM
MU.$&QL/!X.>)CH^YI<L?_TU?T@_B[LE'_(:=']S56H]DW'!\!J])<JQBB4?-
M1<BH($GIM=3 E2?57:H<^P6!ID0@41,"!<N2\L(%)3CP)'S,IDAOZ:5U$+%6
M!'HT6O()J//$;)X5 D%9&9;>9>X=.,5<#-GF:!AD3\RJ4]60MX?#=@^'PW&;
MT6'[JN#G.,I?_=+^0M<KPF:M%W]_6G$SI599SG/G0Q &$4( :U!IS;E/0B5
M.S=8OMMM^T'_>K[0QX_OYA%1+HQ')Z61*0,W*K"R:5=XL-IJ?7>#]P6B,Q:
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
M+F;-1EXD2GW>]0/<P(/#0=SU0R2SN3/PW6O6\OMC!X-VIWRM)\T'-@5N+B9
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
MAW?]WS^.TN\U\9@)N:'P*8'3"61*)*=<H$?'C4O<09U2@LZ4"@VFI</1;G]
MMW9WU^2BB 8GDY):WW]JTW>_RTH:KUR7 H/M87D[#H9K ^SXWA/'YU,:YZ"S
ML"@U<@7..V>RE5D91_%Z).==:TY]C^YX(O;Z!&N_MY[I+>.?[M.]:SH,KR6U
M?(3 03&'SH*QUBI ;2)F[0Q%Z:;6U+H)YC(=I: MSC&:*$L^*I3$< E>E-4W
M$#E$YKWTS*393]PG^-X-,+5'[_Q@<)+[@S+!?O=*>4VR]Q/9[J0%@T2" "PG
M*&P6G((M'U!+7FM,+CK5C/!:_D(1XX-RF9&O4RF(I)@"@L&9<>^9$$$IZ4I+
M&J>4K9,E7*(KI';I3/$-/V,\)%O8QN'*<>P<)DSO!_TN*:>#P]&Y:UWQ@QX%
M2\,_<3!>K7I[<O<%_I%;PH-&[U,.PE,$G;VVW@G.I??,2DQ:UV!M9+YI,:7^
M8R8DTN')Q22 >3;N>B.1RVRRET;4*/MA3FDQG:2V)$1"XH-A&EAD3KN4&1,R
MLZ1"JE/T_RRT^ =LIG44LQO.(&I48)GP*3(R#(KB=LMUA(4#F2(EGLUY7.XT
M.[_3N_>:?3X[>'&->^\V(TL#43E-OB>#Y,QZ$0"0(\7VVH0ZY-+^K./P6=#^
M>NOS?%D'&3E#388@6 U9&F]U#"SK$)B1RM=A@?7>O:*OCBT-<"Z[M_N8O6+)
M>Y&1!J1T/DD)4J&7P5+$,+NQ_E2&WY/$\2IER4'IY(R$(*2-62<KHG&0,.09
MG@/["0;E\,KAH'_PI,DC$T2"L>@Y$X%K$CM1I@ J^2"5R3Q@Y+ZV2(Q-VBK9
ML!$.[K,>,2N :+#!)T:*H&1\ E@G56F-1/['*)%-O0%Y%A_S-%./H,GO&V1E
MC+ D@F?<6!H^H&W&7(<YIJG+M^E, ZE<=C71OV63A(J!_HB@,I(4!V<AS0%R
M4Y%OTT$S""TH-'>H;*D&[;R&8ANU,)"8 S>[^313EF\3S)^17CEF@DYRW('3
MV&B=,B4N4C&F5%\,GD>^33*325 4&K6''!$0(8 %"FH4+SV,DQ*U1>)9Y=L$
M >%9I*R9HB=%T669,HA!!X\B6I$B-_4&Y)GEVP1Q42)$9ES23.IQ)G5,-CK%
MN)5,)%Z'G;#3EV]36:Z1J+R)TCIN#8!1MFR!BU%BSA:%L7. W'3DVU30S#X'
M[FT2RDDHJRQ1<JLIO TQH+1PW@RVAB ^M7RS$[.%ON0ZFV!L%A(DCUYIH9,)
MED<5!)K:8O!,\FUR2)!/XJ70J.,L@5>9C%S.7!C40AKG76V1>%[Y-D% O+8&
MR^1TU*#)Y?@0M H<,0C0AM4;D.>6;Y/#A7R%S3)JASF"*+7D"1M>ZBQS1ZJ@
M3MGU[_J]2.\XRYG?: _WWYZ\Q5[<[?K!_JT<>]_!X?DVBB;^\C[9L](:>_W!
MN\/AJ-_%P?5]6A>_XQ/;C?O]U_R^!L?%IWYW\CPN/*KL15EA899"D)A=2,SH
MLNE(^BRUYS40L@L.SPR'IR/?0\X1G0;FF =GHB5OB5SRX&/D.=6A=<34*?2#
MD7)>MH &2\3V-Q\Z/Q.Q<T'C*6W64SXE0)E4T* $\Z;4.4D@A?)1>ZS)DM""
MQK-"XRGUJ1"Z+&LRYB(#&9G5(@*)B12L,J#J,C6VH/',T'@Z,[Q$S5*ETM&S
M)B-<8KH<L^ \@T#!9 U$Q=2%\;.P:S*C6<RCHL ,S+I@8^E0$% %QC(/(@,P
M&1'37'*XID9R0>,?;X3)/&+F6MED0*AL<^F,XZQ/*%F\*-E/+-;5Q0^S2N.I
MEJVYI0TY(:3OJ0VOG_HKD;H,#B66?=(6@O762@,L8- 4OIM\D:.S /"GL]BW
M,/F5)(0R@^V"$MH)<%Q;QX%+\)""%\#$[&/ROMUKC_!C^UNID7A1-7%I.,31
M\.W)F<GL^.$-<]GO'G1PA&D3XVZOW^GO3*P*T?P1)'.3K \ZA 0@(H; 0+M
M&H)EZYR<1X*L]0X&_4@P+@CR<X+X(,Q91;FL(7KC/"E)U#E$B401F#."W%9Z
M&]@9B[SA;OO@9]4"_\$LD1F#<\SF4GF,EP0/^NM V"B8-<G,*4N:_5)=ZH"<
MS=+. ,<+X0N2_%CJ,RT9&I>R]R UN!PI;.7*DT"Q[JSFT1R29'- L4P)91?4
M^'&%#"<$!*=4M JDM1ZL2BF31,TZZ"AJ% 4N!.OLA*1."NF]E,$$#T9H+Z*7
MFHQ-9EY1K#JOM)I_%3,#W,JE+VP65F8#9*Q<@IRBMQ"#3$:Y>>?6G+FUZ1-*
M6,&]=#;DG$";LLE7"9^<3IH)Q% #0CU]:ZV%3)\MTG+,+H#,*B@'2H=@!2##
MY(5)/NLZ>-BG)^U:+V%>3%/-#&F)GT%F8BW[_]G[TN:VC:3AOX+2[CZ/4T4H
MN _G>5VEZ(JR)F7KL%;ZDAH  Q$226@!4C+UZ]_NGAD<)'78D6U29BJ))!+'
M3'=/WX?A.&',(^S5&/$$_F,I"RBGT/0-Q[1T]<LJ$"U0V)K3?@^B]77#T4WK
M.40[<^G?"J^%)G=Y9)O :;EM!!%/<8)]8!I)E'JN:--BN-8W9[!?Y"3 J+*K
M6R_B9$P2,TP\AR5^X 1AR%S3 V@$<>"'1FBLPNS15CO#23R>%-GH<CLOQUNC
M!'ME%[<S&0>'(WX"MY_P8IB-R(:3\ZA>Y>@:H..0^;[/DSAT[# -'"-(/#<T
M/&Z:06J]1@QOYYA($H\;*'Z-J 6<.8GA6"&W;,=U7&8DS+!,VP4-TF>6]QI1
M2]5OK:M?"6:KOJ5<-G N%W<N5?V=2_6<9_<NC2P>NPDS8S<,',<24V=Q(&5L
M^(;-EKBK1:6N@#Y"DYXYGYD=WDAF*R8\>9^Q*!M0S]N74I664KQ\FRX;0618
M7A@8'K,='J>A8::N9\:^8<6@'*W L+-O*"A^)*TN"X'X3IJ:W'1"FX$=%R2,
M^:;!'0LD4>#XW%M^ ED-1O(=1-VW:9_D<B?P(S..3,>Q?3.R$C"I>!!YL6W%
M7OQ3TL>R(,<+_<@QP,;UP>PS(BMDGFF;G,<>YSRT5F$:[6J=XI_*VN2&'25>
MS%(O!L/$,)EIN68<VW$<<Y^GJU!:O%8BEH^LL-."%:4XW25V@C0,;=L!]=0P
M4M>.HG05FO>O%M-ZK5;VS, 8 VP;%M@F\YW89:'#4VZ%)I 76,;)*CD_UXQ"
MAJ%2.["]- (+Q7&". HLRXEM+P*T^D88\.5MO+Y:_.&'^#A>L!%\#.HN2[B3
MQJ'G!%8<<3--&+K!HA!')BP_G:S5DV]*(&9,_;%#$_T:IA.&J<DC$ TI\WSF
MQ>'R$\AJ,)+OZN-X0?I@<<I3L''2P#6<R/ #)_5!-W73T/9-S[9_2OI8%N2
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
MC,!(TQ"$GVGZL8Z9GGKH^9X>H#D; "Q=VUJ#\U%P'AM6!4XOB:TT &W7=4,
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
MC<,Q25Z>/3?(]&W"QGP(3^PG;(KOY*-%=/J!6BWMB@9,/QFA=D\^_A5$H<D
M3;KOH[<4NQN%0).ZXW"7)4%H^8F[\6Z'QZ)5EVUV- 3W'$_/BS6;_ HV>5+
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
M<W[R9_]BY]R =[J'.Z?.^?U%!FNX[NUWI]V=WZ]IC2=;53R/1;&=)JZM6V:
M8Z)M5P^#U-3M*/1<*W1=TTQ%SBJ0Z/$XCZ\[V@TKM%LVF'#MGYN&86'*MU;V
M0:=XV6C[<C"M;TJ\DNL)IK>FW&=0;IT-XOEF&/N.HP>&$>D.^HH93I/F7N X
MCNT[D6D#Y>[W_O,]R'+5&>JLJYN#9)KW<BMFJ^36RF:_?F^R/:C(UHH,.[1C
MKOM)XNM.S!,]3#%>YMHFYX:=,-<%=0BLD-[6\<[61\%T-2SPY6/M_?OM1ZGY
M"3U!F1QP.W\\(^+O7;F"UM]ER_K3>K";'U/Z_>B^#D8)ANRY%DVUN,^!,(98
M^9V)E3?2D+-28]H='PSTZU%^!XOCK(0M)?!%.>%%!_.4$YYF(Y&E?#0!@\,Q
MW 6%7P".ARMI5LX8MJQ-UWB>>?DEWUF;IN.]O(D-B[6_[K'??['NIA]^W7I^
M &#]S<#\.M_%]U^LO>G;P8JL=:6(P-@TG!?U-/V]I/GOES+W/!WS);*+"WS>
M:].59S,(SD#,_ANE[+$4L@<D8U=8,>X-#]R+JW.S>_(1%>/[WL[1-2C)UL7P
MX//%U:=^USIP>R>?,E"69Q5C4)QA'5>GGWL[J!AWC=[^1U"2+X;G5WO#WMGN
M_?G5M=D[.W /*;.X5HQ=([$=.[7TV'-BW0DL ^RYB.NI%WM^X+L>(&CCW3E?
MV9S^[W?J7M!S\A+M*^2^9/>8UX>L+T;96DX\2TY\?U=?+U_3YXJQ%&?-4I8O
M^/XE;HI1/H9/_CO)T$,SSK44FV*(7C7E4\UJVA\U.]>LO19KK\6K,UC77HLU
M$:R]%C^'UX(,W=>GV*RUT!5"UMJP?2V&[3?W@7[*!Y/1F!74VZTH5]CW>7[6
MG5[LGYK=^S^O>SO71F_GSZN+LUVG>_71Z0X_PC,.7/1K7ES-)@7<],_A'GC/
M/5QG')Y\-+HX*N3D<MK;N9Q>[,#:K@;7W?NC(:SQ[OW)9>7[3,W8<7F*M5<V
M#IWV CWR<5R(&5MIZB?,,3WAG7C]KL]7+2?6#M#5\5;<]3FUSIAQ6;PQ?Q'[
M[;.2G!6)Q@:#RF/1=&5$7%X #_Z[K783^'9T29?>%#SFE"UM6AIU#2^U-_ \
M[,9;3N*^5O9S[#>G>O&.^VP\NXL[5LY[7>AFN9%?1"7)&ZNQVXASP,@DNH*]
MX$UT/=R)2Y$/PS[19=47^(:58RTTM(1-R[4[9NV.>5V6^-H=LR:"M3OFYW#'
M?',#:GM2%" [Q60%K D8L_%DI>VHDT_#[@GF>URZ<-VPMW-^U[L:#+K[!_<7
MP]XUV$-.S_IH'^Z<S]E1O;/SS]V37G:X<VV?GYT;O:LMZ_#L].[\JC<\MXZN
M#W<N[8N=V.D-VCDDOF':1A)YNNT"L)TTY7KH6#8V(W+ H#+](';7.21K$VKY
MD+5VM;T65]LZAV3E6,K:>[_R7AET3Y23:)B-QSS1^(#'XR(?(3X&4XT#;J;:
M 5(?BZF]Q0X;,S%^9<9?4S^CF7K2+(\YXI<3,4Y8.]9/OK5?1JRG\K3P\I>U
M'V7M1WE=)O3:C[(F@K4?9>U'>1$_2D/*HY"7;I45]J,<PK,O]D^G%U<'!GPW
M[>T,^H<GUW9O_VC0._E]<+AS8/;N?\^Z5Z>SM3AN[_[H^N+DSV'WZJ-]#O<?
MGNVZ\GEF=__4@7OL[CX\\U/;CQ*$*8_2T-4CY@>Z Z2G8T-'/8[<V B"F(7.
MVH^RXD;/VH^R%A-K/\K2T^<JL92U'^5+IV,L72>1!]PKU$YD (OE&HMC/@ 5
M"WTDZ)' 7B*CA9]JH!CH"[\HAVP O\I<$_28Q/D0=C[M8%X,!UWB$C^\+/*[
M<5]]MZD=<TX+H\8E-&ZZ1(_,__PCL"S8XP/+HZ_-W]1E3U[PX.+4=9@7L_'
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
M<9PYS[)1B6/C[UB1Z(,\O\91]J6:5%VJX=@X 'O(V0B_5?.P.: <GESR>%+
MV0;2&K"[<A->Q>";4HMAGUD"3X%]XQTE?^Q%T53+)X4V*;EZP5U>)*6&W3$L
MXS?^^8;'X[)#?YJ_J8\9/#W.;N I<U]Q /APT1<1'V3\=O[SFR*_6O0..6=\
M[O(!H&;VP[ML,)C];,BFLQ^5?39_79Q/!LG\E:U/V2C1R@PHA!42/OA)#N J
MFL $"++JNI*/2KZI'0)TT\EX4N 0]7(R@,M@95J2I2G<C)!"BAM,M;3(AQK@
MM,!1Y>I2? U],>[G@"()*YYHDC@>P2R#?^5S<&'7H_QN1,^;C,3O159>E_*3
M&/0 H$DDIYJ2!!"T&UCN#4,]88+[8F-D&3C%?9PC+9<9$J28O)[P,BZRJ%X?
M4"E=&K,;_ E?2  ?P<NU/1:/\Z+&)KNYX:S ?;2'L8L?NG8 >Y-V[U8UGOWA
MD[:IG7%X\X164,A-C7(:1@]D%'/8>#)!O PRAB/@)S<Y@F@JQL<_#-N.=M?/
MX(H2EGL-KP3LL6IV?0)7 5X33J]/LC(>L&Q(C\TC8$I,P:Z<1"7_[P0>., Y
M]+?9XR<5[@ 6/P" TFOR6-!*3 >W/I! EG"<1\T/X-01=19:G!7Q9 @/A=L
M]2B*ZS73IIL$5,A]K C?/1T->%G2?I#%PF+$";U#P!8 Z0Q.0V>>QVWGER/^
M66WR!=;K;;K/$>;SZAP"4K?I[ED?(2NY4#F _GWGMQ=<[3.A6QU2A%\%N2&\
M?X[-WO'93T#$S'XT*5O<M;X0D$=/5=\"T2.5YIK $_PH;J3^0W=F0*K(AO)!
MEA"YX[G*D@P8"3"S>=I]IAIK;SQ.\.'W)/@'1JF3S?Y6J\>G+MDY7;QLA4"N
M?2CR-!OPI5OWXA.P@/[N@.UGHUAMB,1>EY4EB_N@48W'^*UFAH$I](#J0JT/
MTNB_$Y!P*)*0T0[RF![ QMKAB&N?LA*?OU, 6^AH/7A;?-V9>;1A^IXA%!%X
M]I@/^$T?1*PVF@PC.#$@&M^X1O"+$)B>:^@V0&55F+D$=H9*S " A<(0N/8@
M 8N0]*!;5#M0] T!(G"[=BM !E\EDQCE91]@B7H'JEX()39B@^D]78@*0S8"
M83L4> 0L@400; ;TA7PH9/AHDH*&,B&-!)\ PGP,ZHU0*,8,U:<[$##5NV&U
M4LXDFX"LUKHR(9G&/.Z/ '*74[' 2T!P22QO(F@!%RI6@'?ATVY0'-/-+,H&
MV7A*R@/G<Z^HMHX$!422M+9#ML3<EL8%BZ^E>8&Z2L'AT@Q4 )"4I!  A0]S
M>"\ ':D+/F;E30;W:^AD&- ':LWBNK&0LV!9$%'#PSN502+^&)5H5=#O>"]8
M.*58$:QQJ"75[S/K!06FA0'8+Z@QY2)09T/4!D$)0HT*]<I!%DL=%58NM+?^
M!![?O&<$R@X<2H15#HOB8X5-H0_ADY"$8=&H>[%XVL$EP5YX0K]E2$A*N1*$
M@;((EP'G 9!<CK62W<)6!(KR"'5N1%._R">7?=HRT,Y$Z,R D0&+X+GXZ"&2
M/%PJ<:S!.I$4-K45.<]; [!@<(_R8(,Z,R"=-H;%Y$,D?0 ?TVY1; .)P^8S
M4,X1VTA,R.' ^+@$Z[+Q.4%1ZGOE!!ZB<=2/BWR4Q7 3G#(@%_JU)E%4M%J/
M%L0 )S B7!3\!L@771P)TDV1?R9S%E1TW_@7+HN8;3X&A!:H6$_P:9IE6 ;H
M^WVD_SM.NZ/#U]Q/:Z=TG.<6!!0%=_<9?#*^R\6.Y^];M%O:8;7A)HR(S7 X
M(>VM 2E?CK(4C@4<$CPLDN0:FX)W906:D'1:6V"CU\T]%"BT ,OK*3 =SGV%
M3Y/B$  ]!@M:<*3J5CK1C"S?B+P:VLVDB/NLQ OC:0Q\2-I?Y4+0K9C8RV_0
MI.:$<13I);]$'M29%7:U-"%C,R>?0HOH'I6.1&C*7\&!K/)A%FL U@)!7:C#
M(^@1K7DVY.H1#09<R8""UPRZQA3=53)$$3QZ-.+BX%=?C:<W GLUMI[%U99
M U>"1ZIK759<\_%JD=IP3G;.:0Y/*$(5%3S*P84\G%&!,O1T)IS\'S&L!Y:?
MD.-JU)#@J!S!(1B1&TLM*FG2H60?I!N!B@RR&43P)F"E&$_(MP9LI)@V]@&G
M!-VDN'7X2HM GX:/JD>@3M+:,T^!469\%$^1J"?$==J $R< W0T<] 30$21X
MYW4R> #3HB)G\"L3;M>:P[.XR,OR82B"L3&8D#*\6.35(J537Z'6T $5)D]H
MH1%"A%URI8 EY&L@1P3JKHL6SP9E/D\;#U,"HGI.($T7ZF.@=+)LT'X6"1A
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
MQ!5<!$7*>=C8P0YN4 GPE/-6EX:(_"GA.RZ;?8\CSM'I*R9+47E/?B/C (7
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
M WQOF40NMW81OY3J!RD]2M9"_"75N<Y2?I/K?=0+=/>H(U)P.55V38D(NPS
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
MW1G0%Y0J!A38F2;^W'2L/;?E==<_J.NYS3:_:,Q=[3PN\,=O*/H!HYK[?$T
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
MO2"^#J4FX&#2Y74JP'Q'J"1@58/-MZX2/(7$E9#&,[]<C7$G+2/S#]+O1__
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
M-$QC-R^O*<PBF":T'W5XJUH)L99,FK!T>0UF*_ 3?6];-\#"X$Q#VAJXW=:
M!V=3ZF9*O6U3ZG48RM&EU#=J'<<.5GTOUXDP@ @S,ZI9X<(<W 3C);D/F"C"
M]ZN[N(PJLFG:X$FUFZOQUS>>.VR7HAI%3- \ XUYOZKQ9@^]/R(5\?H+) [/
M6W_%7$=\6O%FH2=4X>H:H30BU52I]CR$EL032M433BL64<IT,SN4&+F4%7_P
MS#^7<"L:!RK%N@8]:V*"8BE U.);-YQJVT5-AL^IXBM- *3B_\2[P1E51ZCT
M/I?G<XX?IOW."!+<]^W!X0>+)%OWEJ@R@RU199X1QZO$?TF7/U$0F:-EBQOK
M3;_5=7LMBF\7*5 'S9[;;G.@0CW.K$#4;+Z40<_M&KE93;?OM4V>O@9FE=6&
M6DF;P/ZG3\D:I"5XY&+VO?6],@ JCJG?K-"+!SDX7F7^D_*;>(L+=4X&_<X3
M,Z6"YL-,CA0^U-3$<3'O<K!JHUUY1=DL,;?]**#>D="_DVNRT@U!$L+ L2Q/
MYJQRZLKH 1]2,69$L$YCCK4<<'@R:RZ87V1?O067#=E)&65JA;<ZF@1CBEGA
M^WG8 BW\,I*^-SCB/O4,J>P_"'<LY 7?/&]'_@(+)/3@X?V8X\_+_.'+-#"\
M^2O'7E9^4PUM8O!@4X0CHZ,G1YJ#*V/ J&B@R;K(G/,S. (#RHUS"1'><<V6
M%C?GALZUU9Q$@9:[E(,Z6 6\RL]>B6BGLRE,IHTU1 967<!] ]EMS(*!C[D'
MA]>OFID\SV_D=-"RP$H;LY*UF?GAI)*6O(%N[5IF;G:E"D]J-[\O,PF;UE2K
M8+&>SE1@,QP,D\T6,W1#"[M%-8D8F9SU(_(VC>B@56FUSRB.PKM-S4:EG-AZ
M7N4"'VUI/;O?KTL,!ZE$9LP=[=18>CJS=.L):4!>;T/6EUQC@;5(B6I[0U-B
M=,+!>1F$2&9]PKXYWH!A$P4<3-/!+#"!\!M0+RZ@ R\ YK%<3,%BDOU2ABQ_
MLGG=*-F>("T-UC56+E_2M2O6;5:OV,'JW@=.N$X%-@$N0&&HTV/!UQVWN'SY
M27*MH!+-=&QQW4"UQ@D\(S)TEGN1-FCL!IAB\Z>5:=^+>X;*@;IBI42K;XZR
MXDV5ECD?[[IBAP</\E?9Q,51^<)88:C^B.C0?><&@W9L<97_HQ)3\!OJ2[V-
MER$X'_X-9LY$I+R!\CMX#CA\'#SVX^1KY6*W(&:WJ(@PB<'Y%:K0CQQC"IT:
MCD?E:NE9NDXZ"R:9# ($"6;;X$DIAUUYQK0N_/;[%RN6!^%4E?N<IH%?V9%T
M& 'J3=>\7TGR'VFT!S$9-60>TT9P9OBLWRE@,X.1E]C, ];J9927G6 0.%FH
M>U#1]\9:\IGP57<:$=RPL:DL*,%7YY8F?X4"#9X'WXZ@GN2SK@NM'YSO[BU"
M<-R.9J[S/L=S9AMV9D!<UV^>6\YJ7)Z5"=S]5N%=&\#%*MA7.'O?M)#_+"\
MW MP\<-PBVD%+'#QZP4N7L/EZ TL</&A !=[7L_M=+H6N'C/Z_JENJ?^5<#S
M==W^8%<H;(O.=]^J[A'O\>#@^MKNH-NR<'UU@'H\-&/DN<VN-4;/Y?GM3%EA
MX1Y?)8NW-W0[K7[MX1XMB_>3LGBO Y[*>\9*K248_J-B# W<4> $,VG3 F05
MI#@Q8JBHZK@W<!QP*8B9P-R*M-OHV-^:6AS^_'F4Q5CG O<LHPJMV,27)[#,
M!^J&AU6&\"<A U=)Q5*]2V2"I.#Z#5LY.7BQGFZ-/ L<ZMOP5AH H'F[X28
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
M\:*\]C !PFC)5Q_.R64D44[>M(=-M]LT )CQ_0S!HN')WK3! ^HPE#7+D^&
M1/707/R!Z[5,9A4E+G#J!KUNB7*%#_U\@ H<*)]+)G&<"<K5\#XVNT\H+WP4
MNQ'LP:1+F)GT'E ?\"G\V[&0R$WBQD=^CRT\"X/_@9V#'>$4MP*5>=9]7VVG
M?E'X5J<&JT;MQK[>9C%*49%"1*DP@T\7Z3O*:/7Y5AB+B2 ^*(T21_L05+W#
MOK>$?42(3<(QE@0_BG1&[GCDM4)$23^Y,R"Y&'*)-,Z V"&U93!R_!N"S['G
MJH *OPK0.S\4R)!6.Y2B:H7*R3^VNQC7 %CI'&\_T9_+B'&R"-Z2F.JJ5.?_
M9^_KF]I&EKV_BBIGSWV2*HO5^TNR-U4$2)9S@DG V5SRS]9(&F$16_)*-@0^
M_=,],WJS96*# 9GHUKD;P/)HIF?ZUZ_37;=9-]"<@$,HQ^5Z)[B\Z16K7U]6
MKYRKL:79A76X994+D7^Q2<S>3%3P^T_B(1!-A7BWD587O&S7+ 83BTQ3;NWD
ME!%=)3+>Q2G!$E'16'2^$XXJ\J,0>EFM"ECI@:K0-\N] JK*BR5F4\)+_XMB
M884EA_F*+63*G]>H\^@(6QV*(IAHJ=(?H@K_+85Y42PFYY3)2<8@MQ42%D(^
MF^7U#9F=3.FT7E*X)][#!3'VH>0M%^K%AG,TCX&$TA24/1"[(+2GPVQ%O]*0
M!/6:PK"5#2O-:CTRYX?  G72"'0%&=2Y,6\EQIJS)31C[01!L8BP^>849TIY
M?7I\J%R3T QC+-K$O2$[TE>:[P??#E8E<IHF^6;DYC:;P60&(B/CV)!;[(
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
M30G8VU+6\ARQZ5SYW2B^Q/ON\.^0U]\M[\/GH"1.T:BB5.026URJYFC;P]3
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
M'OL+O)A((^!SF&;!8%2J%N;K265];OZE:H>>'>DK4 UV',^4(,D$L. '^P-
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
MPE$*)$2*C"Q,#S[8+2<HQ[R4UE^5I/.2L/:QD'Y\>+_0)[GX(=/7TDOUE3!
M&0#E(4,8MLJ7[.5B/1R-Q,#-J FCHST:Q9?)Z%)( ":.(V8;@3@$.S4^9Y"1
MS;P+;K/V\*UHF(_H#^EB%IP+UF%4+Q8E.&W)-@0)S!8,:4 (^)W)&Q#ZJ!97
MV.@V)PT8#.0[C9'G"0!I,J(<,*^XP@)#]Q F*O,1D+!D0NPH] 2/X[,9G1!4
M^_/)9/ELE@R "!!7<6UQ<Q*8:.0S47HM-G,K50HVSNMH"B_Q5U R3@!,8Q!Q
M)]1/ -+9R<B#XKM<5<._R:=X\$(T*F':"9C=TBG&<I#V6TBD6TFR"QQ ,SA)
M'G!=.$N9&@!,P#,:57:252-GWIJO; DS5%3GE-/YAJ(BQDG/X(Q4:)WEM/9S
M6F<YK7>D]SP/ 52**6AA&?&%,RX?+<K*=P D3KEO)@%KG2D&T9BB:L.9(1\6
MOP2RF2^B)Q@!_E8\F,_>1_,EAQH H8 ">X'>(N0Q8[!S4/4">0;JCY0O1&CV
M0C%A_@*8-W=N>!3>,:;30ILO%GT5H=K 7$"Y@PG5+:9Z)F#PG',<FQN5:0FH
M+TVYH9W3):T<\-Q9B&"]&MTYE#6BRXZTC3!Q*P>@L!!:'_?O9%%0*[2&<B#?
M>[X+7+BM2,S*65U"5&&"PYCY:W(1 2<8?P3I)4YL:0G>]P2FJ%L6H@1T76XZ
MY+IL1='E-BO3&' )0Z =F@KT7)@Y;"E IT(NHR, OY1+9)P)@ QJT>@@B]$
M (.7N\L8'4HC8:?JP$/JKTYF,<,J"\.9'R<QFQU[+=?)*VR7$X<1 OD]/D_P
MS5R9AJ]7F7X>6E"]RL7HG3?B&7)48795C;\*#'%OTR)2X5E:<;<+2XYI9<D(
M5":F&X*9B/R"4BS;O.WS2Z:'F,O30[I,C^>3Z5%+N=6MQE8*_$\1\YF^EE7G
M$;-R;=8$P]$TJ^B"\5@O?E,CC6KLL&QD4+S0;24@B(LW'BCAL46 (1J&7'F,
MT4>'H<>Y*-("*@IA)63^RNI:G$^BJJ3DP<M"A6B W,U#9'>,UCY&N5825-2O
M(D!2]3U6W91@A?G1@EC-&E4;H4:E":BYJ/TTR=XBYO*=@MH$QX@?*^:%R)@Q
MUAV5)SXJ: R#."+H[F+<73.)KS"BQ0)8F,8"-@L8CD'BSX19SA6FPO4T?TC0
M0S2![PP)&@+81@(M^2@-Y E)09W/AM%D@M^.6%(#0Y@><]=%OO!W%8Y[1"YF
MR*+QNHT.Z#6]2H=@:T0I,W0^)@#TN4?I(ZJB'R-T9^YFF<A\.IV1$?% +N_T
MI(_38!O)<V]_DKN&.PF,A_S09A0CA-(__()>Z?K.T)[&[)SEZ3CS3JDTX$D*
M4;EU</33<W9X?U/='>NHBJP^35E@,* PR6C*O>$(2N+7$=MDD.XD/H]$V)#F
MCNC\O3G,BV@=S )#0O5HNT_2E.7/X;,TSU9:&)CYJBAFH""2<_^N'Z7 [!EC
M.OQ*P/SY3:..R35S>'N568PHGVS%ER1>%40LSTR:D*QQYJ@$<0#@<5IX#Z9V
M-;H!E] \OVW$8WP-4RZBO&).](</MC97O:*4I9.)!_DJ*G_@ 9#"B@]*0<?L
M>9&05KXEG$UG&#$IL\%F+ Q3E<-1/)F)H 7&A\<3KH8AE1(/^.:2:=_"ZA^3
M]#M=<-0UY4(TJF_E4O*_5$:I'$$6%Q6_R$O.8^?76\6OMW&JE_H=OK5R_%?Q
M""[5ZQNFN/#FU7U\%;"#25(X_FR^"\R0A]\9HV)0BG%<5'&_58;'3(+<XP;/
MH&'C\RQ/EHO)'8&HL93),.*-I0U5]8,7K NSA8$9)Q;:B$0N231BG,>ER[B2
M03#_&MA".)'I=77X:O2^5_]&*,*,P*VE(5;YZ@[(G+KCMD:CGQ)'I J5"GJ4
M?4=L&D>S<0VP8,L+IVIU&2S5>'Z">19&!;DJ[R_"I7P?BI, -N6(0?6"\[-R
MXO!X"G<O6PC_-N["+!;"4OB \P2<FAW3Y# &N)Q+F2AS&W+[F6>7+)GYLU.E
M5G&C/KS,6(Y>3^*"[8S&)W-3,;Y,FIP43W<*JX9M,5N6F]W('>C<6**]-4A
MX3=;(@6;UER#_>[PM^#PW^I<JR@EA3F#*4U#EG57481RCUF=<80BT^US"_:9
M:3]I\S;G&UG5,)MWE/=7Y<*U='Z5VF*:,(4E=[I7SD]W*MIX*@IEEDB71=$3
MD58(>R<RJ/$GW'6:%;KG@FTN@)U6KO1)XR2@(^$+^KGR6M. *X*G"/W 8/-^
MVKH\N<5&K_8\=AI/QF.= Q8T_CW[7?IPLML?2(,_CT_Z@^.^]/'CIX79WWKL
M'VF^ME&YSXK.&^;Z:CP$A=T2H36J*8K=D#39FC6]2P"<XE[]5FT+;1UV8/++
M9+RX4'&CK,O$J&9B6!LIU&%WA3J>4?K&8U;CV#O^T#_X/VGO^.33\<GNX!!0
M/8]U[1WW3X\_'N[O#@[VJQWOC]]+QY\.^,.GSZ?1O6GNN/IJ+>G7&5;5=U1-
MN].PMW]FZOKF)ZOM:,;=AGV2R3KZ:A-ZVIJ/JX&1LT(Q+=3&49@NK?*HFJLL
MBHN\ARQE.;^8YDJ66(IP627"VA)7W+]:1<NUM[HM5.&]#I9L\)T6+;!58#$\
M+K$0O90OH%5$:3[WO,M:1Y1YHCAWX9-GA7-B'YF9O(V;^/(0PX#)#(8(6)"2
MW1>:8#;HD%5'X+>D7S5M])SII!I<K[I;S>I5>*8;XQYCK%U4/F3_MVY1<>"$
M1ZPP6MS G.?5=5:E2.TMM_W;O19671 K_MJ"%?T1_7@=)_'[E">:2K,XFIZ@
M)3O+@A<LY 9S9G^(J.8$=F $CN:'AJM9GD8]+30]PZ*V&SKNW_NHK2BJHLKX
M@ZKIZ@L)C.5H3$;9_[Z0X73S; X8Z\?T=3P;!\E4?/Y"BLF8XEOE<T(FK\4Y
M>I\FXSV1POHUF@[S^[H'/X07=9?5QZ#!@/P W@%*4L9%S%42Z']=>_O)Y4?M
MY/),/YH%%P>7WSZX%\<7[X?]_:.K;_O]\='-:-2_^:SW+[Z;_8N_+HZ^]B^.
MOY[IWP9GVO'^Y^N/>G]T=I/\.!M\OCGZ\/GFV\61^6W@*_V;,_-X<*:>W;R_
M.+L9C?O:%ZU_<:X<C1RM?^V._?'[^/C"OSK3CN"Y+_K9Q:YR=G'R_7A_EWT/
M+.WH:/ N^O;U\.9L<'3U43\9GHU_C(['G\VC#R?CXP]'RK<!C(W?&?C&D79V
M?71S9'P;XSS>?X?/C?P[\*[9-^V+]6W_^]6W#V?&V<W)"-81]3]\-OLWYS#G
MPYNCF^'X&ZSY[.MG^'P8]O>4'Q\'!].C4^7J;\\/J>\:@:S[%I4-1U%DHGN.
M;-K4UEQ7<?Q0>_'64=4>TT;K)^;MXP8#ENL#:R*GM"9+KH7\<Z^<EQ[;!X?-
M&['-<-B\HC7@T(4%V:;I6;YK&;[A>8YAF[KJ^/"+2XB.<*BZ @Y5MX/#=L/A
M30&';D!UE3J*'"B!*1MPF&4O<$/9]'Q7(6:@^!0KD&MFS]+,!3CLP*D#IQ:
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
M,[ZF0YH*&T-Z*:IP_1K1CG5\'ALP-Y;X*MD&5+&%HTU79.,N0'-4BV<88%R
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
MA2R94'X_+/LEFD:M _MM,#H1V.<W=S>XF'$7Z?LT&>\>[QV^3])3P/3CL)0
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
MDY]FH/7X% P&X(2?ZSR.KG(ERM1_ID#=IW1-^Q!M*Y0AL:,GQ8;VZ;2#KSO
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
MYG(\[PF>E7E(JZ1B6D$OUZ3'V\,@-T)RG]]%+Z8W46VF> -&^>>5CATDD_Q
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
M2]P#=0FYH%SITH)7&-W-J\?&\90:,GE\/*7BQ?KQ8L93$E(E(R8@Z$H37FO
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
M_#S]9YGK1V,3>"$4B!0"N& =!&<-,<%B8)DQ&%$WT[;'6Q\*]Z\.O3:'GDD
M:5DV81+@7&E':IT#%YD"*=%'%[*9I2^I8LE)B[;75K]NBP*H3GM73CO']EE(
M,3FN@2?-,MMG"%;*"%%CD"H%CI)L;5NR2EZX5II]^\#%:7_L7JTJ:U?D?\XP
M%6V60IMW5T+^D4ADBD.F>K)DMQ$,%PZLYB(B6AXD*_TWNKQN>V^1]SX4VE^]
M> 4OGHOU!YG_<QRD< UG4)GR\TSTO8PZ4N:S1;,7ZZX1BSM2:JR_A:Z\.;'^
MZL(W=^%YVF\Y>AT4&%F&DB8AP3KIP0<9DL3LTZ6LF]JNY8]TF_S=.^&+43S!
M7NC$CR=Q,([GTPPG1W'4\:>C4=DR/RT\JQF -DF#<[-=U,'N3:U7AAX5TTU'
ML%:H6@JJ_IK7#$9Q:QW1$!QGI5,6!Q.D!N:4<-K(_/<T'6^XBF2H$<4J&:IW
MWY5WS[2$$#HFSB+HH F(&"089BEPR5QFD88YEK6$[@K2IAEFU<4?@)2HKGT+
MKCV_E251JHE-0+CR66/$ (Z4MEQ6,RW0VE3"!+:KY6(^\%$D%^[>.2]W&)S@
M6=U>T)+!'U\N:'PQM5(%H65 Z,^=*U5&97-!%#S?4#:4&1\4\@,"J*U01-I,
M,E*I9E1FE3JC&J5\>.JA^N_]^>]\\ZOLJ"PXD)Q1R$94D&VI2M8ADPLFB?"Z
M\5^^N".VIAI:Z,3WU0&KNO.]N?.<)DB:2$XP@52E-Z\S>24N/66D\5%1-($J
M4>0^$W5SP1T)@M%IG.4<'D-J86,R"^?&^6W68J!"SU+0<V7:'Y)D.94)K"X3
M?P(5X*(.H)S%O,@$##%N;3/1E6*Q;W\=]U=CFQO0S;=BR&U@R%PCK229P,1
MQ$A H(C@:%3 DN(!A2#&XM:VZ5I>=RVUW9G;M;FA^NG*?CHG,XBT$9EU^7:A
MV4^3-H!):<",P5:CY9&%K6UNVK01Z8%O;;A0&K5S[B:D'XJIYCKZU<C'32#I
MRL"_LG1HB1X"4S)3!]1@$S/@*7(N?%Y)L,@/UK6Z);W]:A#S060BJBNOQY5G
M*D#1J#T&"AY-Z=%)"* RK+3(-L0IRQ,OKBR[[)IVNC4IT4)_WLRD1/7LM7CV
MG&X(A%NC>-8-)*L%08D"J_*:;8.7/OG(/(U-2T)+6K)(/_#\Q$5QWD7SHV9/
MA#_?_)^]ZF0X[CV.#1$;D[6XKDW#Y4R@"DY+@=.5J8!>,&IX1B,97580U#MP
M.G)00K(4I+<4U=:VZDJ]N&6KYB]JR'.#9$O%D+5BR$RZQ,21)>K!<):E"X9"
M<+3.0$*E%9G!"D5+CR:CZW:+!^?2][K;HKKT.EUZ?MQY]E\5+$(I=0:A! 4,
MT4%,(4B>(5OSIE^KX(OC@FNVXY;<LME"]!C2&YN7W6A,<W QRV473WH3[#^O
M7>26Q* K4P*-23PO* %8, J$*5N]HI1 @N"&E-Z/*FYME]*JQ;J(MDN3&H%M
M&X]I1V55Q9%UX<A,GAANF6:EOHK8C"/$:,BKA0)FHV$N&FN-*CC"Y,KRI+KU
M TRL5)^](Y^=GU0NDA H.'@27%[[+0&G>!8AG#$?;2""EIK(E2HB6YHP:>7$
MPGP[=SR.CSHGH^'[7HBAX\[F9Q?F:_^^*3!<)6OBAJ,01Y!/[4FY&.-AOQ<Z
M%R?4/G!J@W;Y9JJ1#;B;[??BW'P_G[T>ESSO)6SM7%JPPM92L/7ZBF2Q:*G2
M)!.,F*D&HPI,MB0(J0A),J]"49;M(*R;W6SC1,NR;KI!D=D-@YXVR)T*/2V
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
MIFE7\)H/JP'S%:$$O=,J,!HX1A$SE.0%-%D4,3^I4P@-E-PC>ZI0LBR4S&7
M%-'(F82LK14(4;JS!I$@:D:E\M1R7<:9$Y.EU6)@J'KV9GNVTX($&<K<:2(P
M<NM\_@R=?W&9@*C4>+:NGKTQGCW?9<W3Y#)<@[(L@ @8P48?L\PQU$O#?=2N
M>+;J2M,FSWZ8B:ZO:IF8G_^"BOE&:3F]A$]XON9A>.KZ\5)>KA;SN>[*W;WL
M^>X>K\IFJT!FF<7DRGZB* SA-J_VBD;A99*2,U, _CYS@!7@EP+X*\-ZC7:&
M"YV &\.@K-BE)5;,4A"I9RQ*HDUIK&^[1"\6,;1=!:[=D^\Y3O_(@/SZ>^#1
M OG*3+V&\QX:D,\TN'&<8M 6B(@&!$\63 P:' \^",\=U_++X;R*JQ57*Z[6
MV&;%U097YR(@/ 09A XEN9\)LE<)7%Y @42,P5#+96GTM*;89FMP]6_B)Z$W
M/NGC63G5^'4HWN17UHM0+T*]"%<OPC\FF($H_PR]]]O_S/]<O&,.7\J(Q#@Z
M7ZNW_^E&_[@,%+3T;2L2"DK^CE&PPB@.CV('O1\>YV\\*T4G@^$DCCLXRD\/
M.KU\/.]&V.^<X*C9\CTYBN/8=- M\(YY6;]H=Y5?-)[D)YKNTC]^\6S/OURP
M:2NOD^&X5Q:E)Z/8QS+#\J</O3 YNJ [<V\\7WC(["WH\D&<3K[\EA6N[&'O
M.%^%Y_%#Y^7P& >K76-!KEZ.^7_+X3;TAZ+@)/#$;=1"*VN5]-1[FW14R@CV
MUIBMBS<=C2Y.X03?17"CB'\!IGR&3[#_ <_&6_^X<B&.>P/X[,)_?LW6?&7^
MEL[F"S-=_C.W'$Y;!CYI9MV75^5#PK8<2N=H5/CT__R]@73VI@)$Q4]*5\1\
MR_WS'[A]G>WOP?T7(N[-K;E[\.OSO?_7V3UX^>+@Y<[A_L'S3M,?E/Z4GWO^
MZN"W_:<[AWM/.Z\.\X]G>\\/7W4.?NF\^M?.R[U_'?SV=._EJ^;E^J?.WN^O
M]P_?W ;*K<_,"[':SX_R&$?OLJ^<8TWQD_-G"JO]K/7@Y6DTJ\\,IAH6G$^G
MCR?C^.3BP4\7JU=OT!Q5\Z9K4G?GCFG-C]+RXIOG*_SYQY^[[8^-VWY&W:=_
M$^9':M07_TQ^I#?\&Q?F1N_\ZL'^R/3-/O7NCU7^:)G<D&-5/S(I-N98"=^4
MZVI_U$IOR+%F!/G&8SU7$I]1-*:;<.3U7'S)FH2[CY1='^3XRIE\L8#*?LM)
M3Q>#^\^@3V>Y=%Y]==KU$B>?7SH:?OB\DFP#+L1./L+"Y+#?J*\7V O0&S2/
M=_&D-\G/?^7R?.6<']ZE>ADGF)\,S<79PU'9>_#EC>F/[>KL>']Z?-HO4K>Y
M0 =9 H^F]U$6S:-X% ?CK%N;9WX;CNN%N[APA\/)N?.].L)\G8;]3(S'YW)A
M>J_]][0W.;MRP:Y?BBC;Y*7H^_U!9W(T/,T?$<8++39NB,I7Y<8W!=W;>),T
MM\97?6:9$WT$%^P%CJ;4YM_8/XTWO9ENNJWNIE>O'8[X,_9QX&,'QR5$\S3Z
M>.SBJ,-IMU.JP;_E+KS-,OR'O8EYW'CZ9TEJX:F2VCE'(Q7*6.=1:VG164(D
M5[B.,OW9=,,IV.R/QZ<QM";]?+![D7Y^]O&/7U]_>/:??7KPZS.1/^_C'X?[
M\MGAL[.#I^_D&_:,O/GT[_S^?3Y+/^]]>GZ<C^'7/_[\XS_//N7WT/Q3/CM^
M_>G9\?.C/_[\BQX<OB8'O[[\Z_/T\YO#9RQ_IOCCN!SS,_'\Z;_SS[_._LC?
M]X;]<IS?)Y\?_B[^^/5E>M8C9TWJ^17Y\%;ZX#!I \PE"66N,&"R$9264DBI
MB>*A%/7PKB1Z3>7WK:G9^1MWOUT7;P>*?GM)SM(GO4EXMEAQ<W,PNXI8#5:=
MT^4I1:Y@M1Q8D4NPBIJ'Y+P$;YD#(1T#HY"#<LQ'XY%SF\&*BPI4%:@>#5!1
MJQAA#J7V7F3(LHI8C,%:P0(EB:V!=54,6Q7#V"6&<>4<)TY!XM*"",J!C2Q
M($%HFBBG26YM"T6[G"_.3*HX5G'L@>(8]VAM:9.O XHH*1*%VDFG3$C),%EQ
MK 4X)BYQ3$AFJ$0*3%@&PG(&5CH*6F/$J"+GU&]M*V6ZTE0^5G%LLW%LF;[M
MB:6\D$NN&8O"9>Q2TD9BO&,HF)=?48[+MVNOB+8JHGU\MCL;665(R J30*+1
M%6X6P7GM@6JG'#>6$B^*ONQ*N]B_<^EVZQ7-*IJUGI7=0>N=BF&K8UAOUC94
M!68,\1 2)R!H1+#"")"E!7&4ELHX'2EN95==TW"AI<SLP0\>+XFL)I\Y3/D$
MF[JO<7&,3E.\?O[XI)^_X$:9S36V9WZ8R4N7\J=PXUR9J90H-31F'B=8,B$C
MH-'K;,+<(-XT<_GT=)2OY;2Q\C2CV?SQX*0<\GCO8QSYWK@F.)=#Q+.Y!*>.
ME&OT'IRF$43*CXR+O/0D=9$Z$Y(U!0_%-1-T;K:WMD5=!QZ56U]#7E;WZ6]R
MW*9ZI_KM&OQVENOSZ%PFF@R(C10$T1*<Y!XB$J0F&BL<R5JL^NP#\UFD&; 9
MY^B-$IH(8X2,##VQJ!FEY [6X>K.ZW+G6=I+HTE", %<:P]".U*:!QF02IMD
M"2H5=.D"U]5F7>,,JD_?\IX<PRC[J=JFVJ;:9O,' ]6U\);7POD@70B)ZL@C
M1!D$B#+;U1GNP%&>>)!,6\/.5\,V,=PUS>]I;Q#N93PY'?DC'"^$X>Y[.\&F
MH-N7$Z7MB+K-+'Q-Z*U"VA*0]GQW+LKF.;7>"@\V$)/5NE 9T!@'96BP+$F,
M-JMUT:77L/LZHWY37/BN(FQ?<-*&BU0?7<Y'9Q$UFPUEG:;@.;$@C%=@O500
MB*5,I.!L\='%FM/JG^WRSYN)NVJ;MF%G=%(I21"]DR+(D'^UB0I.24;5Z/Q=
M<9\*JS> U5DA+#$DI9*CH+1$-BEE8)568+@-/HLZ)7G1<H1W#1457%ONP!5<
MVVN;9<#USD-G%5S7!Z[SH3),7@8J DA'- B?3)D<E, ZP4*&UX@1S^&5+79'
MOQ=X??"U:LT-#Z[<ZR5(=A('XZ;1:B=^+(^_I9%)3074-$VU3;7-0RHGV0E_
MGHXG3<OTP^&L96'I5K@_..]3V 2:&^3<G0/.EV72YK@WB:_BZ'W/QREW>!G]
M\-V@^91*(Y:F$:_FJD]4\"P9(D'*,HF>40TV*@DQ\\%R3U!;&D>(4A5?JT\V
M @(J/%?;5-L\F.J3NG2V:^F<5^".$64(\>!+.;8PB0)*(<$XKID0)*MST\+%
M\\$7J[S L^(PI5(E]-[W0AR$F^T->X2AQ!KFK;:IMJFV>4BV:6ON^>G%XC37
MO+>,CZV<;!E.-M][B4>TF+P&XE, P64 )YD!FZPW!)TFSFYM<]HU2K8C)5+=
MMD+J!MJFK1GG"JGK@=1YF4N]8YY:!<RCRC*7<;!>6)!,1),T<U[3=H'J@\\S
MSZ)"9<H#=D9Q?-J_F%S;P3!LMB25WW=>O2Y3'Q00U=G:'_CA<>P<XL<X[D!G
M?S 9(>P-)KW)6>=PE \GQ=&XTXS^R1^4SV5_\#Y_QW!TME4SUS7$6VU3;5-M
M\_ALLY1^#BEEF84^4A0.@Y566>EE7H)L\,G5'I_MH7EGE\J9Y>??1J>Y#TA
M>)?_29R"L4R#ROQ=>Y'*2/"M;=FUBJY \ZK+5CA]W+99!DX9(\D3%X0F7&0W
M="K_L"A16LJH_TJ7T0JG=P^GEZKY^:>=#V^U4IY'CQ!<0A#(/5A4!KA&$3%1
MKTMM58OP],$GAI_'2:?7:.":#JXQV&J;:IMJF\=GFY9F@_/B-(W/EO'JE7G=
M3,A^>,M8MI"G%C26;7'4)' Q!4C)ZB24%I&EK6U&;9>I=8W?J0Y;P?21VJ:E
M>> *INN0L<]VWFIM\@(8'+!8-@A%*L#XQ($A-=:5 "\+;833O]&RH3<^Z>-9
M.=CX=2^OKWSHKZRW2GWE>FZ5S2\L*1&RT\$HYB__%$/G'?8&G>_[>0W]H9,7
M=WR/O3ZZ?H2\$,,XKZF=WN!]/-^?U.T,XK0&!3^6']]_1XU9"&36K$#-V%3;
M5-M4VU3;5-ML1A8:A=8R.B1&:&%$5NZ*!&:L010BZO -RGWY='13AEHV-(_B
M41R,>^_C5-&_OJ0G_QKVRZ7^-9.4(O,/!J^B/QWU)KTXSM=GG/\TWW L4YN#
M=(@?:S1@F?;\ASN3YO]7)2*P\]9K%I-)%IA"!)&2 .=C BELL)$0RRDK0^.H
M6:44O") VQ!@#;&[]2% <?:="RGRRW#T*KOSG.M?UL97C[^QQ^]?>CP*+XU7
M$D)R'H1' R;* (2A8591:56[//[!5[&\C+Z/XW$OY4.XV.91E/>E:O^^R/8?
M.D6V%]5>MH0T6CV_[NL*OE;%U(14M4VU3;5-M4VU37ML<\=:_=M9^.=49,:]
M?QD-CW<.=O?/Z?E!FA'T2LMO1,OWK@IQIZ,+GD,4F9L+(@18[@1XJ@1RD2A7
M<FM;DE5*RZMSM\VYUR##JW.WU;EGFMNK: 5U&FC0 80L,Z&SBT.PQ.EL<T=-
M;)%S/_BL>+[/\Z^#3K[)1W'@SSJ3TBRA/U7?>.D6GR? OR,U^5T31=4VU3;5
M-M4VU3;ML<W&)K\++S]G([OG9*1IW#0]C9U!.)PQDYH(6Y&4[U]1W,1XJUU,
MH%RBF90K 2X2 LQ%CM1))+QT^^XRJMJ1"*O^WQ;-7?U_8_U_)LH3<U833.!H
MZ9$3@@<K#0?/4DC6)9O7A%;Y_YH2X7^GQ>_>>W_&/@Y\+*T/L\I^&GT\=G'4
MX;1;6AV:^\YBN^$HQ!%,AB=/BNG&PWXO="XNQ:8@Y!<!<ER&C8P_PT@OE;8R
M)1>#*-VC4"OAC>6H:.**^:9-S6H[^N8:NC;S3L;[X_%I#!72EH*T9Y.YO7U)
M.<63]: I"2"<Q\QH5 1G99D#QQTG<FN;:M(U;.4!)LLZQSUG&F[7R=N!H]_=
MFO&6,-K](]HBY;LYG-6.6FN&JS+T^&+@L0]&1NF )FU!D,S"K TV$S 7&;>"
M<UF:^XO%8<<5JBI4/5"H0L6BM-ZC$$HP1EV0C$<6%.J$QJ@U,*^*8JNCV(QT
M1?36.&- 8"%=BA@PB689B=1XZM&A++E=9KN,F(ID%<D>"Y(9+H+D:)5E1ABK
MT'&I$W/$<Q^5U!7)VH!D!S,^EHQ0.E@.2#@!P06%+!Q%%I(\<JTB=<QM;2NA
MNHR*BF05R38:R99)&7#'DD(D,HA&EB!ACD4OT5-E(A%?AK+:M?D^0F)S63[K
MG>?.6S"!,1 B*+!>*:#1*I&T8P;EUK8@W;54WU4XJW#6>F*&WFD5& T<HXA"
M&^EULBAB?E*G$"HQ:P>(S5*5+E)&O$_ )/$@#&'@-*- ?"!9<#+NM&WV['+9
M98IO"C=[\'7&):759#:'*9]@R7?EK\V>D;TS7]GSQR?]_ 6UL/@VTI@H42=B
M%0\$!8W"1(]<*1V=%U2::;MG>U'J85>'O&D.<[Y+R32WV?SQH!GB-][[&$>^
M-ZZISB4A\?<KJ4X7# \Z0<H8"((Y QBMA12CXLHZF>^]K6W>;<H'5D/#6L'5
M-OZRNE=_D^O^&_NGL7KN.CQW+NN791CE*5!PP240U",8FS@(= ZC)D1&NK6]
M6')5O7:SO589K[W.:IM[)C15B($5HHE<!O3Q+M;BZM#K<^C94FR4T<99 4*H
M+$ZTS*ZMA0;)M5+1>\E9+&'CKM2+'86J5[?0J^M.EVJ;:IO;G9V1STM+Z92W
M2GCAG,G R:GQ^1>+R.MJN$FKX7RL3G#$E#S/RK3,*V)!@O5$0 Q*)I0N$BZG
MRZ%93#C<GUL_@BY[)Z<C?X3CA6C<?>\OV!1X^W+&M!W!MYF%KXG 54Q;"M->
MSP?;J'"(GFN@6B$(%1#0N@ T>6HBEX[;LJ^@R^UBL*UV)]H4)[ZK0-L7W+2A
M(]5+E_32^7+ZK+PC210RD8Q9AR<'-D@)*G#4 @,-BF]M+R8'JX>VRT-KX\;V
MVF89]-2$F)@U0)(&A9/&6JY%]$H$[[TB>%?\IP+K38!UKBY6AFPME@*@IJ%L
M%*> ,N-L\D90EF3R3&1%1[O*+$Y,K.C:+@^NZ-I>VRS5Q>.N V@57=<I+N<"
M9B$*8ID5P(UFD'4&!^24 #J;B6M*E,<TA5>[N&F]]L>\#4=L;GAPY5XOD;*3
M.!A/>V/&C^5QK-5J-5E3;5-MTX)$VEV6E<P:<(T/ASOY4I:#P_X+[(7]P2Z>
M]";8;Z+-#7+NS@'GR_C?T]ZX-XFOXNA]S\<I=W@9_?#=H/F42B.6IQ%OYJM0
MG..22ZL!O8H@N,H$@DD"1'HB+?&ZV88M9#<+\1:EW2H(5("NMJFV>?A5*'7Q
M;-GB.:_!)>'Y+N 6C(X"1,A+J!$J@/8>M5!&)&M:N'H^^**5%WA6/*94K(3>
M^UZ(@U"'.M9(;[5-M4VUS2.T35OSST\O%J>YKKZ[.#ZJI&PI4N;GT\[.(.>&
M&/ ^!!"")4"N!"1.B.5,\R@S)^.R2]EB-Z::=FZ7XU90;:]MVIIVKJ"Z)E"=
M5[I*4*J,0;".LJQTK03'903'& ;B@XW"M@M5'WRV^7F<='K--)2:5Z[AUVJ;
M:IMJF\=GFY8JV[PXS29U5>:U%//Z:U[.LJ0X*=V%.746A%(2C(\<?+:?=A$M
M%UG.,L*[1M4^$1OALA5.VVN;EFK:"J>KP.F\D&74N>1BAE)CLY#E08,)W(-/
M,@1-0F0\M!%/_T;.AM[XI(]GY6#CU]V\OO*AO[+>*O65Z[E5-K\2I 3)3@>C
MF+_\4PR==]@;=+[OYT7TATY>W?$]]OKH^A'R2@SCO*AV>H/W\;S>JML9Q*:&
M9((?RX_O))6UBJ0F;JIMJFVJ;:IMJFW:8YMEPJ#4<^N]XMP301FS&C43R!VU
MQD5EUZG;#R9'<52*LD?Q* [&O?=Q*N-?7U*2?PW[Y0+_FHE)T?8'@U?1GXYZ
MDUX<YZLRSG^:WS:=Z<Q!.L2/-02P3 C@S_TKLXW0&)Z29,"I%R"044!B-5 F
M!*(.@G.^M2V[C*Y<M%V=OV7.?Y=!NR\Y?_'SG0OE\<MP]"I[\IS77V[XJ,Y^
M8V>?B_>)Q(CG#I 9!<)2!&M-!)?R/:YBLL&Y]CG[@R]>>1E]'\?C7LJ'T/AL
MUM=%;5\J]>^+5/^A4Z1Z4>K9E3J-/L^O^[IJK\4P-0M5;5-M4VU3;5-MTQ[;
M++4'IP42O;#TSUG*C)O_,AH>[QSL[I_3]X,T(_"5MM^(ME^=/\R24)3&!&BL
M >&T!J<#!25,,M$$+Z@JO;.%9"N4FU?/;YOGMT6?5\^_6\^?$^PJD"S9%<@8
M. CC%1A&++#2F2JHR(64K?+\!Y]#SW=Z_G70R;?Y* [\66<RRA_6G^IVO'2,
MA70YJ<GRFEBJMJFVJ;:IMJFV:8]M[EB*C_-9YD?+T.]SRK%[SC@."^&8'NO.
M(!S.Z$=-EJW(O7^_HKH34L^"0Q#<9.ZMBO[V06<JSAU**M$*NK4MQ>($OMHX
M8W-=? V:N[IXNUU\)J^YHAXY<I#.I.SGNDR4%Z7XA1"6C/*,DQ:Y^)H2X7^G
MJ._>07_&/@Y\[."X:.6GT<=C%T<=3KN=XF3WG<5VPU&((Y@,3YX4TXV'_5[H
M7%R*30'!Y09ONN")U'GYDU8+QCQ28Z,QA!I'E.#I[?[*$<>YCC33\9K3\<(5
MT)8"M"M#-C-JL:!=!$(RB@G4$HP,#@010ENE;+.?CVK6%6)Q#LK-,H7?[!SW
MG$RX72=O!XY^=VO&6\)H]X]HBZSNYG!VS12GHV$_7[3QWG]/>Y.S"E=+PM7<
MM%'N=7!E'IY6$J?T"YE.$*R.*68&SKG;VN9B75N/*U15J&H]5-E@!(M<*2*=
MX#%8:[R5(BC!,!E#U\"\*HJMCF(STN4EY51)"7E%82 TE> R.H%4FE%'DN=.
M;6TK;KM<+V9I*Y)5)'N@2!8B]3XB2A^),"I8XYS"E")ZB9''BF1M0+*Y]EHD
M.99%HP,F9=D>HBV@(@DLLS0EJV(T=&M;2]YERE0DJTBVT4BV3%; $>V)+LV2
MI!3"$^>L=BQ0Y9EPBHLO0]EE,J!BVAV&Q.;2>%YSF8R60)CG661*!R9J L8+
M'DRIJS,LBTS=97I19RY=0U?AK,)9ZXF9EM$X&V6(40@J=/[%VNP&!=""BUB)
M63M ;&ZV&L? G#3@K$A98Q*>\0MC_I5&%47^:VCJ@+F474TW)K3_X*N%2TJK
MR6P.4S[!DN_*7YL](WMGOK+GCT_Z^0MJ>?!MI#$5%5Y)2@UQ7A@IG28!@^6)
MTT0QN%+-P<AY-4<&O94A;YK#G.]2,LUM-G\\."F'/-[[&$>^-ZZISB4A\<U\
MJC,(PRWU$KSE'H1' T8D#49[9=$I)ZG=VA9=N7KCTEJDU3+^L@:O_B;7;6;"
M5L]=A^?.9?U2H()DZ06.4 1A\R-,RD#V6D(L12U"VMIN4P.2ZK5K26QQ3GV0
M-G%!A*+<$1NDI$D*JQDS=[$65X=>GT//EF)#A5741@C<4!#YG@:TNNQ9-%;8
MD@$(I>J(96E"5'7K37#KNF&EVJ;:YE:7P\A,T$$$PWP2EBG'HF-).J&BMLG8
MNAQNTG(X'ZQ+T87HG )KD( (Q(%3R8+DW'.3F0_U['P]I&T2IX^@S][)Z<@?
MX7@A'G??.PPV!=^^G#-M1_AM9N%K8G 5U)8"-3\?;LO0Y:-A&KA!#D+8!(7;
M0U I&Y,C411+ H)=@VBU!=&F./%=A=J^X*8-'ZE>NJ27SH769)3*,DF ((^0
MK>^SEZ*#$!R5R:*7PF]MMZ154/70VKIQ VVS5-F8Y2$%S14W423%$'G(@,J2
M,M%P'>^*_U1@O0FPSE7&:AJTL8%!($2608FE<;K2X"1U6:[+J)3=VI:T2[BH
MZ-IR#Z[HVE[;+(.N=QY!J^BZ3G$Y'S$C,@:9>6LT-&5UB0:<*[]*1K1D(L9@
MSN%U,8%4^US>AB,V-SRX<J^72-E)'(RG/2[CQ_(XUGJUFJVIMJFV:4$F[2X+
M2V8-N,:'PYU\*<O!8?\%]L+^8!=/>A/L-]'F!CEWYX#S9?SO:6_<F\17<?2^
MY^.4.[R,?OANT'Q*I1'+TXAW\W4HP:-10BM@34DH!I%%FG<@G%):6F6I)%O;
M@G656FSH54&@A2!0 ;K:IMKFP92AU,6S98OGO 97"3W700)S&$'(Q, ([:$,
MC!0I1>.-:^'J^>"+5E[@6?&84K$2>N][(0Y"'>M8([W5-M4VU3:/T#9MS3\_
MO5B<YOKZ[N+XJ)*RI4C97U<:,F&@3"8*D0H&PI@(5B</W!KB1&9E3N+6-K>D
M*\EB0Z::=VZ7YU94;:]MVIIWKJBZ)E2=E[HB&O0J1B!(!&0<-8#<66#96"BT
M,IZ2EL'J@\\W/X^33J^9AU(SRS4 6VU3;5-M\_AL0[7J4J.J;5IHF^HW[;5-
M2]5+)G6S&7=5LBPC63[M7)$LSABB6(A O0D@$I. "3EDFPDCO0A:LDOXW)ST
M7.B-3_IX5@XV?MW-ZRL?^BOKK5)?N9Y;9?.3_B4:<CH8Q?SEGV+HO,/>H/-]
M/R^B/W3RZH[OL=='UX^05V(8YT6UTQN\C^>E-=W.(#;E A/\6'Y\9PVM!0,U
M1%]M4VU3;5-M4VW3'MLLH=M11D9L(IHP)SRCB-1;% RI1,(PK5.W?VE4_>M+
M2O*O8;]<X%\S,2G:_F#P*OK346_2B^-\5<;Y3_,[9.NP^AN% )Y=&61CI<1H
ME -K4@1!C0?T(0&+)$4T.G#N6QL)JG=4"^^HI- :QQ0X;US9=FW!4<F!T7Q+
M:<040KZC5%?HQ2SXFD:,U/6E+>M+&]"@./[.A;C]93AZE5U[#@8NMX]4[[^Q
M]\]"RC8%*KT7(#UZ$,IS<%H&L$QJ'QBWFLDO>?_].7N-$M97WE:4<--JIEY&
MW\?QN)?R(33P/DQ-[.\R;OA]"1S^T"F!PQ(WS*C;::*%^75?CR'6&JR:$Z^V
MJ;:IMJFVJ;9ICVW:NDWA:X+N<Y8RDW&_C(;'.P>[^^=*[R#-M%Y5>#=2>+]?
MB>^(J+6)4H EPH*(T8*))(%-R1";J"7$;5P,NMY2]WE+!9FD30'!>\Y!$.[!
M<6K )Y4$\81(H<K834H7!_BML).FKBYU=:E0T 8HF,4/O656H\_+"<W_".\2
MN&@4>)UO#9Y7'NG(EZ#@7CS_P5>-Y3L]_SKHY-M\% ?^K#,9Y0_K3V-#>.D8
M"P5BI):'U5**:IMJFVJ;:IMJF_;89@/Y^#D'V3VG((>%@4R/?F<0#F=\I";S
M5R3CKZ^&>FRR)K( *44%PG@-*)B#I()Q5D<:"=_(4$^]G^[E?DJ).96X \9H
M!('( 8- H/DF$T('[JDL\Q[I-?,>6U0M4M>6NK94++@1%LP%>D)R-,,!2&\R
M%GA,X- %,-((&:D1).*7L*"UA6+?&FGZNQ#/;3JNOM9Q?\8^#GSLX+@$;YY&
M'X]=''4X[7:*]]UWZ8X;CD(<P?2Z/.'9>F%XZOJQ<W$YSE\P&9X\*;8=#_N]
M</G']J'G]498;@XVHJ<N)9-B,,);8UDF5S[9O, *'ZQXN[\R;L[UAYM.N]X?
MCT]CJ,"W%/"]F9]YC1G>5"9"H!K<XTR#U2K_(R-!=,9YE4K/!=G5EES#@J9^
M>(="_B8%&^MSUWM.R-TS+K5C;?CN_LR_A-GO'Z6OT;LWANAK!D4>#?OYHHWW
M_GO:FYQ5"%X2@N<&FBMNB;-2@$N6@#"$ #I.0?%D?*!9F/Q_]MZUN6T<6Q3]
M*ZR<<^XD5:*'[T>R3ZK<<=+;<]IV=^),3_+%!0*@Q5@2M4DICOWK[UH+  GJ
M83N=I&,GFIKNMBT1!!;6^QFDCYZ'\?I(\QW[W;'?'?M],.PW]8.L%*!CY9Z(
MN$R8] ->>J%D2> 5:?(5-.0=9_YRSMPKQR4OO*C,,S?Q4P[*,4_<7$2%&T29
MGP0X2"ADCYYG7CI*PTVI8#ONO./..^[\0+AS$#&OB(LDE[$7%1[+\J0,@K0,
M9%X6LMAQYWO!G:W!(:5?%G$0<3?SF "].95N ?]S(Y;["<^#,(O+1\_A[Z/<
MW^G..^Y\#]C1CCO_Y5SLJ.1>'B:%Y^<IUO'GP)7]U$NC(O)EPF]@SRT<#G[:
M\>F_U<5LQ=EQ,E<@0\_-XBARHR0,7)9[N9MQ5A2Y]!B/BD?/PW"4>>M3-S\[
MBWK',7<<\X?EF)^CS^9!SLJ")UXAH\P+<R]EB2\C'I=Q' ;93I^]'WRRST'P
MLRPKHM1S\\CSW2C.8C?+RM2-O9B5G/N,RPQS$((D&,'=[53:77^=W3?O7\-V
M>N2?"^P[ _\5U<?G_P7_,D]8F,HEL.M&BX_G_U4T_^Q(^)X^]H5<Q?=N8RL!
MLI73L708Y_44WG@%M.[,ZH5L'=; GV=.!?LY;]C$F;-&57B-92M1]A&C8 LI
MG+*:L1F'C<"&X0_4[F=OZVGURZ- U;O-Z[9"?OJTD9AJ]U$^NZS$8FPDL/6@
M9F%>_P@K8!/+Q?9'O@"RI]44H' L+YW7]93-O@S&D3\$A_UOW"X);Y]%H2?"
M,LQE&J5)GB<Q]SG/RU0F218%9WGTR#PT;LP1YNQ<ND4CV87+2CCA4S:Y9%?M
MHW\. #&M9F9'<;:'<%\%V5<&S*TB#>"BY AH.W5#299/07K)!K\%6V+W92O.
MN$$-[W_=?C\I$!/R(223%Z@<4MLKMD[X-W*%;T/[:PHNX>6+DU^/7_['>7'R
M^O>3U_NGAR?'CNL<GYR^?..<GL"?C]^<_'9XL'_Z\L!Y=7B\?_SB</\WY\TI
M_.'HY?'IFTU(?=OQ[HKKZ:.;.27FXU;EU3=BE9O!A9!Q_*=:$5/ZX/%R"HOQ
MKY#>O*+MPR&I!'VVV ?NO)PML%,M\%Q>R?84WO3+!,R![ZOWQ\=71N]_YQ_]
M^KIZ]^'X G3YZ?$IZ.G!J^K]Z=O@Z.#MY;L_7U?'!R\O3PZ.4.^?R/]^??7^
M3S$O@B@Y_O#V\OVO_ZJ.@C] EW_G'_\*[_GS7Y/CTW>7QZ>_C-__>N@=G>Y'
M1]>B/#XXQ/7.?"Z#1."PHB+)W4@4A9LGHG#]6*0LE]P/A*\,M&JVE&(?S:LB
M2$6:P!="'D?P;9:5N1]F$0?@)[D/WY=@3<T1RYHE<* WR^F4-5=(S-9=./UE
M..8VC&F@46$%Y^$SO1%5-4T7=OMFAIMGH-_'>9S(@/.H++R\C!(_$?C_H$Q)
M,-C<GC7GP/!1I5\I*?^V5'-'!>-6Y<$!CCN1?$'M!=E\/K&Z$5+'0>L^6'\?
M<WT?8&"WO*D*6+V0D_IR;^U"O@'=\O/9IZ?';+%LY$EY,I=*CK2$(U<_,;V&
M\,^9EP@O]GGF%H5?N%$I<K>0:>FF0<*R(@:^S]-5^KNO"'V3UJ+N']&TQX"M
MBK ^E%9K\5SWZ9B@'-3G,_D)-)EFKH_J5& 7.!/)!)%;4^,D\0:/.V5\# LX
M'ZL6OP<?B24'0EZ,V<*!6R6PL)F ?]CDZIJ^N 2:KV;*_46+ WVC*\)9U Y;
M DR '<#"LV7)^((:M=,*8 0N@+B7],R"M1>M<SF63??N"MG'_RRK1HH5PE]E
MT]]6@+]M@1&\A&O#<[0_(^%?\[,P2R,N N&F91FY49'Y;A$%W,5.T5$$0C#F
MWAT(?S.-Y-^;1FYB!7#]2!@= B!ZH^SZO9%@2G?B[%4G_MYTXN_!<@R4]//A
M^3:*=P %4!M2?K6X<BZKQ7@@QH'4>36? ,S.Y0S8Z&1RA9_+.>H+&HQO9Q7^
M1D"CJJ5]HF+F/'Z[]V9/:>B_[N___L0P@Q99"=C*N /D,%-V(0'QS.T@9_FP
M%.=J@\2V6%D:'03.5#?X/C;%7=(+6=O*A7IP OI9-:$^4/0[/@)LBD_J5HL#
MI<V=X[L'7VZ-2E/H$JQV+.7"0=5HU"VUZ>V-_"A!.U3ODY_F<M:BXJ/8)#YT
M)5FS!]KJ MDL''\Y@0<!QA/DH'"RQBF;>@I?K5L+#GL#77<;>.!^)DLA]</D
MN('= 5#UKN"_'(0'.6E&PT%R^,ML43=P>OQEP6;G%9K,"IHCP!+0DMR"M1(]
M@%,\%S/+8-$F=AC"1XME"^C7XI&F!> 8B5H%,C@L,!(C,O@82$2N^J/^7E'P
MHE-X89<[C?#H^N(LSO.R%"5W$R_V0# $B9O[(@8YD?LL9T7&F?@Q!<,OK*U:
M[2+JL>)!\_S;#;J>8TC#ZC4,UG1,).$*/FV715N)BBE6 4( OW\YKOB8?-.7
MXQKD@EM?SD#/<_8G$W)5-]K,[%]"3+0OZVZ=,?L([%;*F2,GU119QW=6%+?7
MH+?#(O2=,8GO/LO EDRY3-R@](%UE$Q@X#9R&?= J<PRR7-Y1V/R7C,*TWO/
M((9CH<)M[.(>,8>-_$!K/2\4M5+#J/19B[D0=.0A[2OS#K\/6 _K=,T(JY;^
M6BYG1"[61R/B$:99(7 E5!?.05$"=0#4,*<Q*KE42AY3>IX$9J&WAOH3[N<F
M/0\X20,JY>JR*UH8K6(T,%B][EP#>\XIJ7?X$3Y1?GZWQ1$"07-74HZI6EQG
MB6BX.I*R14C;Q%X8I%AUS3",8J6& 7]?3LBJYM]LL@3#N;.+#F>HS1'6*/;W
M\W&]\.C#V[.$2^Z+1+I)G*5NY(%-G7EIZ;(P#T4FN.]G=U&8[C_7 QQP" F<
M(\G0?KJ337R/&-X+HX*@XQHY!7""1DIW L;1Q/D(1U,$/:Z #S1\?$4,HL1S
M?Z1S3ZUS*Q;!@:^<@]%TW=G56[@2VM+:0M[T(N 5RK32HWLF]2482X[:&:Q:
MS>;+A;)^X:NVFQV,.WS VAI9]]VF]YS?<!%E>/MJH=8\U6]E*L%F%' %YU?.
M<E'A3"%G.5.L#;;U/\L:_P-W>@$<;@X\1G%I5(<^2OUW$A/ !& /F'.T!11Z
M0TYPI[V@M%"\L2[@ZC]2&%<].-+L%1GTQOWA;EK0)"=LF[ 8F0>M)ZS]PY=O
M?AY!8,ZN7!.PW5F]T' 9.;">VKTYJ_F2=1KX#MPD:+[ MINF+I#V,$)R97])
MGPPT>68 &-X9@,O9&O!Z=.N]+YVT+Q#WC(_!R%W[! ;.#+/+*B J^."27!C+
M%K])\#2BED"'IS2 NS)2W49:Y5GI;Q2>6D[GRC)@10W8WU3M!1@4CA;I^M0=
MB0 (-[S)HCN+D >$)R28)V!OH!]GH&TP[> AWQ>-(OV^S@K6CL'NP/]@EBF<
MI)>]/[/I<7+P\LR71>('4>#*+,S<2 ;,S04KW#1-/9;G<9DGQ6KHMI2!5R1)
M$H:<1442%9[OA]PO8C\6>1:MQ[V^[?4>=MZXW97BE>9^FOIIDKFL2$"O"LO2
MS0/!W-0/$\[]F&5AM'JEGI]D?N3SN(C#*(HRS/0.HCQ,XEQ@?<6/H(<A_8\<
M_+=CL0'E83W<,-;O?NME1_5,7AEY4O4FQ0B-HDLY02W"X9C%3%,?5$A!2,HT
M5%%'62R<MAOWH((6H)'!&4&$3S'NJSX@,0;JGC.%38U;$A.R;95!:@9+H R
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
MHTRF4<QC/\H\X/0<-A>(,A6>R)CW%W.Q=AAP P9X)W^<I2 ^0QX&;NP7'F
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
M6=[J0H821[D2#P8V(OE"A]I5-QN5%E$W%U-&C@]5>Z6&)6+C>SARA8-!D-\
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
M53D:'E'!C_;;94))_"X9B*J:9PO30L6XUHFL?4JTV #SKC&8&J,WN7,3RWN
M0ZA#@,[CO%CJR_Q77;3.OBI% ,TXQ<J$FAR'#CJ1ILLI'1W@:^;H )VC<VE0
M_[HVN'VD1X?JQH*_3NH"\.NP_]IO]:6+RI=PE.;M//[U\+?3PR?X-II-KT)$
MMNO-JJ0PTT9-'MVPG()6&FP?75C639)GRS&M"TW_P%6>9/2,;BS*E EIHAB(
MO8W4*+_^PDO6)?&+S5QG$/VNU7"!V0S4'.5'T3-FU!;)HE-^-RIKQ:,@;H]H
MD87MXYM@@[,%Y>-M.E,W4(C2'#5$K,T!("==!>P#P>DWIC.D4?O>SJINGHPN
MUM1-1E3[2)18E&O^8=E4K:CX6H/H+7THE7,#Q*-&PW-T"<P4P]3:727[&EHU
M\H<\9><-SLQ4'K+'U9[<&Y%<PL:)*EW3(*%5K0_J(U8!-,K#2TY5$/.JA6&M
MJ^C-^Y_<H8NFVKU6T37F=@F@2VH?A$ <TT">JW95IV;H3)JY_3 ?C3;$QI$I
M[*9]?EXZ9;9+I[P'6]FE4WYY.N6MZ9&KTSZ33(H\PC'U?B1]F?/4"UD:^8G/
MTZ0(OWDZY4NMP_PN&\H(^.F=?N'1]?F9SWB0LD"Z?LXC-XI][A:)+-R0EZ((
M<TSJ"G\$I]^Q7!BM$Q# (0QX(+K.+Z!!<)QB:*3O')M#C*G"4;G]EPLEW>$(
M%>D,UI=[HTCYZBDTB@^CNP95!*T5J"U(X3+0+["0HP]UV4^U@]&074V+CH4<
M5!/:RP/8K#.?+%MKP+G K:L9E]8"^DC6WS$.]!&TS]G"O..OY%"860F<3?A2
MF51]A';1D'E]I9]0T=D]U-LV;T!WN3'^4G0(XH@@7LV5TM9*, %(324K2YV_
M5=;,0"-4?A@*\\.=X.33D06A05R]WT7;>8!LXX?T6GTX[702%G+0./D>-93)
M6#6=F\!$J[#4TS57\UV#10@CP$,PXV GBI,H"?+3RQ'8Z[LSSE-1IK[OIGX<
M8NI8ZA8L$&XDRC#B+"KCP/\1Y,@ #;1$>2!R9+AUS7%5.R=5KZ^G&FK_@^(T
M:L(/4]'EWFAD78H'&;%].;L>LD:F-G9!V-2H?J0'.1"_LQ_M^PW1LA6%]_68
MV2O=V4VY,:JVRUZAL+_Z; ]'4RZGFJ'6NHK=/K7B:<B!T&_$/HT,]R:'Y]K8
M:-K=Q.0KX:61X3^AWG;XQ.>D,@=YD+.RX(E7R"CSPMQ+6>++B,=E'(=!=G;X
MQ=4*_>E/\/ ;>-9OL'4]Z?J%/N5I?\C][HR@+YV4I^S3SYL"?7T8GAQ<G.4B
M#WGD23?/_<R-F%>X>1DD;I$&L2B].(XQ]3U,1KF_)0?Z<U/>TUAF12YC(644
M^5$*O^1YF 6!\!-12(9X\H45#CL\^;IX<OKNK 0;N&1YZ'I>E+A1&*1NGG'F
M^G$B R_/XE#$@"?9R O2C7A"CEU@*0>22U)F0W]$A3*Z.\#@K^@G1Q^AZ4SX
MC'C:<F9B$S2\OB4_I%&I74 /E\:)V7SUH?*P?7,L0%)T!K_I=-P=;MJX&1^=
MOCUC69&49<1<$2=HY,>@G&5>[*8RC@,9>ZG(LD?/HQ$PF1^,A>W0Y$YH<G0)
MZYU%/),\\4.W\$&1CZ*T<#.O3%T?)""701I&"8@Z0)%@2V7?%S$P-192*5:6
M"M9>LGFOLG5L#?-27$IAI5P!HYY.:C;[;*;VM]:3&JP#A/P-SH#-_PZM$UBS
M#MH=8EX??3HZ?7DF2S^)<Y&Y0@B0K87ON3E(5=<#VS((>%X*S\,RM"#UMR#F
M0B7F4L**G#V8T+V)[S72RJXAVXC=8NAH\^XQ4M03%:XW0M]\5G?#CMM:=S)7
M\=-.,SB9ZU9CK7.)OB(DPE4-X_-(C<6H#)5>Z@5%Q .?,9_G+ J8'S,O8.57
M)+6;Q,+K#IY\19]]!<#=/WEQJ.7%2=E+C!TY7A]=G9SR,Y#H1>'%F1L':>Q&
M60:J+J@8+D]CGF0\];R2HSKA Y/?K.E^EB[A\S#G/ E#[D5^$.0I2X.(A86?
M9X5,\J]8^;U#F6^ ,M='!R_/PC#.F><#CGA@$T5>P%U6)(E;"N (W,,XHJ"F
M ?%F#?3S"\=9E((66C OB](H ^'.$D\$69XQ%D4R%5^Q<'R'-M\&;2[. &F*
MS"\\-RM\#H9+%(#@]R.PL>.(E5G("KBUY[&W1>QCQ$>UFNB;#^!E#U7/[Q)6
MH#[0('HQ'47+V)/R==5>[((*IA[][1GG7AR($.Y;1-*-$BY=%B8"_@4R!C6(
MG-^U(N6[*W,W!Q5L/* *6,"$!Z*CONI2B7$T2+-4VB,EUG6QPPG5'="H#CO>
M2$'>U:/K'OPXW*4+K?8M('6R^TBEO%M1R)'MUAK9S8=;*^ENO6K=S#41P+ !
M>)R>[ (!^)*"350>,IU)?N)2JG;7<%Y*@J;L>:H=-_'I5U)0#\,#-5[ .<1O
M4C'[B[J9:PQP'K\Z.'SQ9'L&HQ7I;>0Y*OLX+9:=@UU<Z4G 9I]XSJ9:':UL
M=\Y$V+0J+=6 R:528!!ZQ<**$=.KJ8NYU;SR?%GAC)69&8&#)@;>GKXKBC,#
MU 5.8>F%G;H&$*)F:5W]O_I& NP4QROC3;2LE+J/]:0"$ A=+#2\M['55[*K
M55"S<[%<\6IEUK,V6GH'PX9]/!2K<!44V)%[ CN4CCT_V=B\766NZLQ@0<4J
M=.FFN\QZC\T&\MGFX5E!.]7]&<%\3DT$-)K(KOB_PX1AIJI!@=;._J=^TGT2
M@EI*W>,78H5&AN%,)Y-+JP%#R1H;^,@#097];1<^;)E@M9.=LMD26SN8\@Z&
M?2X:X6)*R577H!S+WFA@)25[',Y$#:RA8G@A56M_"R]%33.B5O1Z-,V+^GPF
M/^ER.2I<8;K@;-'W>C=Y*L0(6+MPL7&L6RROU#QPY/@E?=B7..J>N7JN#O'[
M/ZD$\<IT$1GNSMH29<\LKCI0$#YBH6 W K#EP F7$T2[/['DY9SI,#E.G">G
MBWG66@M8[+0U78@!G5LYZ)C!S&2I:0WLOVY,"M"@@7KIU,MF< W6)37MLWX\
MT*4D$-#@6+E <8MU+:O;TOU,3#FC*L?9O-<[X?EW3]@ #4I+<72" 2IV\X84
MYT/U T#(.^>9&4( 3$]05I@J[&M-N4E78*3'H%(56G\C@S;\*JF*JJ ^ZG(\
M1H/CL+ZR:INEZFDQ>+&KMJ/?/])78&U>(_(<OC6FO:C')T L,R5]U:/=M"1\
MH._UT^,'(A1@,.;V#ZJF)I()W<5?,0/L;J/!00H  %?JZ2%[C@'OA=0E.0V@
M*]<T@@DC5#)L[;^KJU@Y 78/6<AS>)8@5-%4I18'85 9*V$=G HKLD!U.:>/
MJ?$%:,L,=18<-ECK,BUD;2HQF[A)/QESWP:\5J_TC:C3 K#Q*/V&^TVP%5[#
M9C-@_IR<HB,PW@"FE"W8PK>0Y/I*NH+-+O"E7%7[6CDP(WT]H,PTV.N'^(X&
MS(I,[CM6H)XV4QH?1G9+]K&F B"%DW:R3(7AD$MXF:HX4939VM=(RC2ISDU#
MW210BVW;_ATT'>Y2$JR7,Y.!2:H1_%' SMFB@^$:+BIL;CO^H^9#8EVGN:1E
MTUV/C;$*"W$(-N'H.NJ2'D*S)*F"C-(&,<\2RW]VE2>?4WF2[RI/[L%6=I4G
M7UYY<FLER>I4CEB*,D_"4B9I)+*X"'(O\V599EG$<I8^3)_1-TYW_@73T4%$
MO*!I3DK1^8E[8[X[\V46%(F(72EBSXUX%+A%BEG.4>(7 .%4%/$JYA6AQYB(
M_2B36>2+K$CC0N2)R/VX%(*M]2DW0'?VN>HVA5#_H8;!W J1@7/#:D_2#P:S
M9V>ID@?=E( YA8$?[[%VK8D6I3M;+57,0T8OT6J:2H8V+1 X_4ULZ(5@3\VM
M9G-38]]94$H55AH1+FAZB=3*#L4DYJZV%YMJF8W5RP4NMM(:S7@B:+;KAM-B
M3S33]XWU2*1K2.C :@F QL8#ES5Z7JAJ9"'G[5/GL?_$P68*B$!=?TD%#M!^
M'P=/UKM/6N_%K +X5OBDJRHV6IUJ(6&>T6^H6-].8 ATNQ.+!7CE87P<W;0^
M#F;&_@U#4.H6%NW=7K_ISE6/.2Q:Z=NR63U E:ML$T"^43O/X?O__CZ>UJ%Z
MQW/O1&[M)I]]L9.I_,(SHKNRLU(9&EEF>B YXDN<!:X;HIYN>'2 R$O5)W9*
M9(,W9A5E&8"UUIGU7$OM"-7?4VT;6DK-O90X/+/M=F4 MT?J&2RA1D?94Q17
MN[0T$CUPMZ..Y7ZH"\TQ7%5_H'I!T-3!OM>L<EO:;][0N&>D@6Y;FQ;#ZF"R
MY_P_.039LNUJNEJY!CQI[W(P\9G<>SK2:E@<-6&IQK5A1N-*?B07L?8P@/R!
M%Z WT11Z*&"KKC(Z'C28?3W!:5/DP]9&KEI4JO%3I^N=>8VSY<Z7UG6[,?YT
M=*/V/4)I)ZIJ1@5E>C2W*^(>49I EYBE<>O)H\_*P]IS?M7<;*5;Z'9N8^IZ
MM,F_$5W6YSN.5;97[XZX(U<$B%OR^>8!(+</X_K6)7VPN_VVK3FR5O$GW./+
M3]7BI#FH@"&W;+*/WEDZWDGS&@LYE]HO\7.JPO!?V,O;3T>G_-/Q]<7UT>69
M++RDR,O$+9, M.)0IFXF@\B50<)$5&9!CAWC5SH!1*P(RR!C+,BB5'HYS^*L
M]*(DD'D91=&/$-$?8(OS8HS1N8?2<_($_D">X:ZKL!VB*>0,%&C59@V#$4J)
M;@;G98IN0/I_PNB];L9+S(B"&Q.F8E#6LG:?Y.D2_<E:>IE-M,YC?%9W(>Z_
M9=B<;D;\I O<M'9/KUZMY4U%$R"59COM=)81ZNB=QF7Z-I)S$O4+H[YS%=>F
MS $<Q;VP(H<;SJ4TY.Y#HV=J':57POI3*H%MEM"MZ$&@?*@+9YA*1E[R<CFS
MZB[55RDR5W7S=DTS8*X&95(;ZJ%NWNW/UM86ND=T)S+TS6.+991U.I78:9<E
M[*BB.<C8:6C2Z^1]7:<6&KI=,/;!MH R$W3=NE?;<M8W:EL,M!4C8VUPFQ9S
MV*>+G-@])$U9NOUVW1;;]'#N!FI>T;=[J%._J(8LJ5J'?64'D352P%[<@P9Q
MNN'2^@L+>57/[$9K\%T]J5MI$]@CJN\X:5H6;'SKB@+0V3Q*O[2T$$U_ZS2S
MYY!.<EFU<OC>RFKQIUNB3:ZVKS,,+0U[^0];:/9JBGTDI:90MX3N/,!3 16O
M>G5$*^BK[;=?#)'BQI?KYE;4E5H-K+"95I>9V3Z8*?4O)K4R8K&'IU27@-0H
M[\:>P4Q30?#%>- $WT3(L3.='L**E39$(NBBT!U-"T9Q?Z'B\0 3=]EVYK/I
M]-@9W%Q27TEXV[+MALG"+6HTAWO!T1>\9S,4]N<7K2,KTIR5M4C*/P8I>T=*
MNRQHETK;5QNF72 >7S;(H]$,OISAEZ]E4]O:LCH$,3-%$B\[^X:ZB9B![!:Z
M:JV6%-[!$0TSTB//=<X#,XV0,;T%X4_=^#J\[E[1,0#C[J"#].AKM"@C(SI4
MUG2G\]0<X-X2+)\W7:-?NV'QVE@8R9K)U<9SMFL$T\<@MY/.%P3E[A=M;9EF
M?7LP87/0XC:E][DR#UEGCF@TP[G5*IW)^LA8UNM$75EVN5Z /(W&M$2OA3;9
M1OT7&JFR>7KIJ=!P(L]I(+2T^E;2U_7D;'QJHCL)8Z1:B]IIU_=AWN HA"&W
MIW0@S6=/M2UNS,3U?MX;.G@/!979F'%GZOG1A-2FCV*O,VQ8S0P+UQM0@RDV
MV*:W6JL_<WPY]K;'EW&[1 2W!CU]#_O [:+2NZCT?8Y*WX,LN,UGQ6,YP5/G
M&_O- !OWNRC2[TW=)TBU][!ZY=/1P=''][-_C=]?UY<G!_N?W@5'X='!NZOW
MTT,/?O;??1A7[W]]&Q]]X/[)Z;\^O#_=CX_>Y-[[_XP]/OWWC/V9+T\^[$='
M![@VOSS^\*_INP^OX>=_5R>__NOB_>G%U?$U/#\]GAP=7'SZS_7+RY/3"__H
M]&5P=/W'Y='I_EF8Q3+,\L3U11*Z45)(-XOBTA4\83'G81H6Y:J?K!11$">!
MES(_B7!:N1?RH&!9ELC<RX/URI?O=NO[,Z'-L,.9_1T0S3B<J_UY,>'=U='U
M_EF6%H6/9;*1Q^!?/,_<(O02%Q2K.(5K#OUU+VD$'#<)2C_CHHADF.11P7C*
M(R^3<92D^>KMHX@8WLI&Y7MK(L%&K?56%-SRW*V;W\9$D^^M]]\XDKU#;8S/
MT)"8UGD[)[7Z\?Z;MT^HS-#U@Y'SZ UU5>]#YM:S:.WJ5J0TBNC179P-WQTP
M</PW;\T!NQEMZ!X%FY=FR^#O>C@(J=4<K'O4$TYKL&"<-/)&@V.;67V@<"M[
MH=+Y^?B>5H-/.UT'L.M;UTOJ"P?V1MUY;GM'+\:[5 !3N7J[WXTM0 /-=$YQ
M%T-6+P!;6%L*- -B8CRJG5=#M3-E*B%5]5Q71(!OKONV"2H&S\V0"6J:H+ZO
MTH.KA9RVS\A)O+8_RY@R0U+(-*)L66M$Q=!=J)OVZ80/N]63&@34U8SA(*!*
M5*S!3'/<84M3@K8\_HP<Q6M[-&_6$Z'NN,>-FUC9WK:-])NU'G[6N9S7=JC-
M0;T0$,BYVD/7G+3O:M]-"B"G]&" E-X<]@]!/Q>1/-V]*@?4R4(SW715%YIU
M[EM\[$9T9Y.V_BR<5TD= X176*Z01GV(*?C=W"?[:DJL11Q7>OB6J7Z@IK%D
M.'?N7)-AT>H!@#4FQ=.'1!=]D9BZ5IR5:Q.5"AYWG@/*T<)Y JLK*0+8NG5=
M-R;-+6!F$DX3U(Q&SZRIR&%GDGVLB8?V& WM$25WV:9DL8%CH*CKBWY!'.]1
M-]4YCB\<#MKJ:I"JQ>;7LFXBI)V]IDA*C4J^VG#LJET+7VA.)+L0?I<P8$VZ
MW#3NPQY"0OGVRK.CWV0P@,:?F3K=VHS74+6M>O^;9LSUU'<#]I434_VK>_RJ
M29AF<E#?=938!;NDJ$JC\TPT>=&H%/4XQ6/TM"'=5KJ[0>,HMNA7G=!D8RAW
MMWJQ<OK>1)N-M-Y)U8C+8D(*-GI]*UVBJ'>GB]9,]I6]"4LZUJU<>Z"0@%KD
M'R8G1U]DZ<>FR/(E^6J9Z,=8S]&OAC%(JPBLA[HJ D7 DZ26_>,*H/V!ITN,
MT](G*,\7&\ !$IU-^[C+#1"SIQ'?A#<J:M'A85<); )W*ZC8DY;2/G266",7
M36VZ.6A&4.J)3@;P707LVKZMO5HI/*J=[+B:VUUAMTM6C,.N"C0\S98=3VNA
M.CEMVKJIRL-Y<=3@"3YR-<E8+6A)V.HP8S>=B5FQ6H-,)@!>82L1U0 +*4_C
MT$WP&$@)^VZV"XJ-!];AF\^\*:4OW2M0[6,^@3I+#[ M=SQ?W>T@/[(;TZSB
M\HZM6L-V*5N88>$\9BI,NE%7@X#:/]JA!-A(82:'3L<)[U3.^=U-C2^UP0+/
M]2*PP5Y+/6#.>8T?PZ]U,W4>*WLDB[(G#\7RNDDZ447>JAG6YYR;P!X(F+$4
MYRK\J)KX(G_3@DIA]: 7MPX3&@C^=OC+R6NBR9GZ<O\1\?>5A%/*V]3N#-38
MF4['77FJH2NY49B8^FQ%A'IRM*@Z[.[-/,5+3*I_'P8"%16^(86M4\\[WY3S
M^-?]_=^?= GY?P56C'B.RI'>>$*L5#<9KB8!B5CI5.H<U>VGLA.P5^2R'OS0
MX4 7Q55LTZ0)T0P[J@;=="J'PD84<,-&ZDVG;HM5141W>PA&>GL$\"UK?JK4
MW//-#2."T:J"2 U'=/6U@=2F*R]U?7(GC/IDF[Z<W<YEV+2_S]3W!J2E#G1$
MX4_T]%"[#//NM7/>@>L3M]IQ_:_"]3/@^B\LW'<.IY2[IWL2U9@4L2#V'_J>
MBXW!7G<M/5J,"]4S(%BL-<<8URNIL]!5:)[2A7\ D<$GH)V6VCH@E]&FM/:1
M\9*H>3S4*H?2#J98=0Z<DSXC\TF/>%"M)JJN4Q(6>&NSSO2BZ1X9]7.)*:%'
M#2BG/>,NKG7Z0V_7ZSQ!X(1H- VWI3OX7 V=,<H@QOP#-3]1LT]J?M&87+89
MO'^PJSY1'OU[W6;T;H=?_TPV8NF5=[$/AU^_NW4X[Z9Y&I.^,Q)O=KG>49&]
M2776UK:E-2L$,]( ?I[)2]AEWQ9BXU52)ZL[<<[L[^2<=T@)^;F30/RODP22
M[Y) =DD@#S4)Y._/^ B?_G__RT^\9]\X > 5JQJ<SRX/>@9Y?R+[%SJR/Q\?
M?S@,3WX]](^N_XB/L7PI.+Q\=WKXZ?WI^>5Q\ Y^_B,X^156?;$2V9^^#(X^
M\.C=A[?7QP<7WKL/?UR_^_#+^.C#J\G)P7[X'GX^/G@7O9\>7?[G^L@_.;TX
M\SG+RDQ(-^,)<Z,$?BJ 1ERO9%[(T\#/1+(:V9=!$F=!R+D7EE&69+D?,.Q?
M':1EXN7^VI@TA+M#@'>.5%+^EO#^K>'\V]^\TK\@9HDON$QB$451&+ L#3/F
M%WCDO,AN[)QQ3RR'OCOIOBY@! G_FU6WV!F21U;QA 5R4H)>HUI"<0T<QMG^
MG46*;W37N9.RHS]UDOV9L,YA=G\RZ_9*6R5&_5-3Z<'YF2C#)"P%<WD296Z4
MY[[+ (/=DHNDB'S?DX#+=ZXZ_-OMN#ZG84%BMUU.L;K^VK1LZ%"<]2ANE^9N
M*0O2T1.#V;9R;ZP+)5>Z.2Z/E7&RA .)]LG3VTQAK<FB%F9!$ \.(-1',3HO
MUEJYV'J3S5OYU/SP#'3Q^81=/:UF!!IZZ-E'B=--V42KO+"HUO+R<"\*?%3T
M%@W\(\SR6@?<(QWPGPNQ_EGL[859LO5C;\_?^ME-R_K17ASE?VG9FS\#-K[;
M;'RW9?])R* 0 A +<?;_/@H?]8:%P 803SW')\0TZ]WPU6#^";_\;,WN6D5-
M10%?AV%DMRF$9.+\L:S!N%5T^SLY8]3/U8RT\'UER!^QY@(X!?V)TM&H+A7V
MK;ZDV,CCW["S@GK<?](1^^W@^3$@^::O/%4P("\@ >BDP)H1Y$7TZZ'JHF'#
M*_CYX/5V5G=@<31(-O]/ <H)AS"ZA4P+QB_.FQI4.U<?@W,IR_+9#:"9R'*Q
M05K\70*<P**(Z>D=T&'K";5T).$Y7SCDPG+,?C\#B6X%X9>L\8-N\A:L-/H)
M& #RYCT]Y&]^-FF6]+]5TG3PO^E>&M\_*CV"TV);;12+]AR+5;+]G!-[SAU9
MTM?DU7<\[__^HH/9!Z+:[WMPHL\8#17Z7BRXY"Q(>>07DJ5^Q,-(EIZ(\B*)
M-@^Q=<,[C(2BL3Z$3$K%.NQ1:8/[K)OO%#Y0P_S=G_]JWY_.Q[!N]/[@_?C=
M],@_/KWPWA^\!<-;C*DX)OCW&+[W ?;VZ>2-?N8__QH74S$!8Q[.,+XXGKZJ
MWEW#,Z>O+XY/WT;'P:OJ^-?C#^__?(5K1L<'+V,PYA=';[Q/OYV^7!SM@TTO
M)2^E[P8<*ZH\/W:S,F6N3,N">5'F"2%Q6&F41&N#H;2[] M(P'"SSR"%SY)7
M*Z]<E7D[-O0#L*'8$SY/_* H91R),&1)F$1^S+(PSZ67L;NQ(>QG(5@[WG&@
MOX<#774<*/6DGX9>Z@H6!6Y4>J&;%67D9FE:Y$$L"B\K'CW'OE1^\&S'@W8\
MZ![RH +D9,R"O(@#/_)%P'B91JP4(0NS/.)RQX/N(0\Z-EK0Z1^?CD__.$N%
M'XL\BMVHB HW$C[PH"@JW=CW"R\* NDGT7UD1%_)XW./S4HS[0]KR69BS9KL
M#AU\WJ$WLM,'R'V^CB&VD?MTD/\% ;_C.E_*==[:ME<B2QX6H.\D<9JX41AY
M+HN3S US4&D9RS,9>U^-X=Q ]-]*\[FKQ_$G)=NO8[AL]Y_L:/>KTVYOM7A>
M$<5I7+H<^*T;,2]VLZSP75_ZP'*]F(L@??0\").1'P4[VOW1:/<;*OP[LOVZ
M9/O'FJ(?L#+A!8_<N,BX&WDR<;/<B]PH!?'KL33Q$G8?Y>Z/'S\Z;2C'ZLHI
MJLEDNY[_%]PMWT:;_M163V?51">[V51L3O(+'F0C$>](]U;2?==IRSA?X>CR
M+ _2)!%EY J@*:!<U)@92%T>IV7.0BER*1X]7R/9K^JPNY/HNZOS[@&*OF^M
MMMY..3OQ]WDT=#6@(2_UTR)-N)M*)MTH"CPW"[S$%0%(JC3.HS*.'SWW0W^4
M)?X]<G/M!,#/B+S'+P;(FZ6Q]'F<N+'O ?+F7N@"_PG=D$4\RKQ$^G[\K03
MM[$.=ACTC8WV5>T_RGC!8M#^O3B,W2B, ] A<L_U@]@7GB^BH@BWHM"/[VNG
M1$L7#R*%54>\\[G_;3YWNH%?Z +>=/#?*4)?SY@XVC]C:1C'<2!<WQ.>&Y6A
M[P)OYB[+@?HC4''\2-Y'%\#.??<@;)@="7]C6P9(./>*(@V\U(T]5 73O'1S
M&7#L!9]*W\MYCIF+>3 *_&Q'P3\:!7]#!_R.>+^5+;>:<,/"LHQEZ$91F((0
MEMS-4S]UF>?[N1!!D/#@/@KA73'+3Q&,V#^7,W[U!2E'/[ 3^%N:/P3V7?#S
MJS#=<SN"\NGH_(PG62Y%R=W2 ^LGDG[F@NA,W"3(HS+W95H$7R_GZ/YX?W=T
M^S<9/COB_:K$>S4@WK0HBCR*/=>7 K6F*'?!R/'=)!,YC\I("!X]>N[G(\]+
M=K3[H]'NMS1Y=F3[-<EVU=!A95%&&<_=E*:7);GO9E%1N@+N4?K B8LTN8]"
M]\>/=KS!^=$T<6)76?#WJOD=Y'=<YRMK^D?[9WX0B=3WA1NS* $M'[A.GJ<<
M%(4@*KC(6."E]]&SLG../@@M?T>[WTK1Q[B&[Y4%$#"H""58Z%D M%LFA<N$
M#,J2^W'JEZ#D!R- BQWI_FBD^PV5_!W5?EVJO5C3\\,D]$7*?=<K,23))'>S
M+ %S/8VB *Y5BO(A!C1^ %_^$9 <SA2=[-SY?[.>WT%^QW6^$M>Q]'R99,(3
MI71SR4#/3WGI9B6+W"2/XRP(!%[A?70L[#R"#T+/W]'N5Z?=7L\/02'PI(A=
M#O?C1KD?N#D/ C<*6!AG<1&%@7CT/!UYX1>G+]UCRGT >?AWH((=[M^*^R\O
M?SOMNE]X1Z=OO3.P<T41)+G+L@S4Y3!+72;3W/7S, Z8+'DFRK^:B7__$F:^
M0Q+._=OPO<A$>G!1BI? U>IIQ6D*)TW!NV2-Z >MWO^PQ=>:CW8_#)MNE).:
M5OYBV>"HVJL7^CXH@?0F;<G;28R[2(QKTI1(8NR?I3(LO#3/W<"/P=3A60;J
M4A2X618661*$:>)G]]&WLO.+?F=3Y^N0[,[ N2O)'G4D&Y5)QLK2=_,HC]Q(
M@*97!!G\5&8R2C)?Y'GXZ'F0Q#MR_='(]=N$,79$_'<1\:JEEO$4A&_HYF7)
MW2@//#=/4N:&90@,.<<62C]R8..^V0/6P,*_-A'G&WIG?K@U=C;VSL9^$#;V
MCQ RO$7"MX;S7>W$_!>+^< VK\-$%E'FQ6[D@9H.%\I<ED2YR_(H*Z3OAQ'W
M[Z.$W^GK#\&\WM'MUZ7;WL8&W9OGL4S=0.0ET"T'&YL+[J81#S+FQ['PDT?/
MOSR$N"/9^T:RW\7$WA'RUR7D%3O;EU$68D^3(DV FN/$=QF3Y#M+F$C3LLSB
M^RB%=S:2 <(_:;;Z<SW,7=_0\7(*[(#3<'?%39[3Q..MD]\MZ']8MHNJO/J[
MN%! ;9C'TGE13^%]5X1KZ;/6F6X9[>FP1CJ-G-?-0@J'+9P2&(/S$3F#4[ 6
M_E;CM'OI" ;;,PO,<:8V,B)@%'IFML/4O.QJYC U7EM]MQTY;";H-3@Y6L)#
MTN$3^'955OC*UE&#D/T]9RM 8:GS:D83:Y,AY[\O\!6R6%C]]NC,:T;HG8 ]
MK86<N*(!$,[H,X;<@0![.:[XV&&3B=-6W5AN^("F3./:UNQIN!OXU"G@YB2N
M!=MIZBG]N6Z:NJ >]<(IKNR']/4*MF!TN^VR:!?P#@ 97#ZB0;F$MR]D RN5
M] >Z=EQV8D3+72\\V'..V(R=2T1$IVH!,NT<3EKA3O#M$JX6)!UP-_7J'ECJ
MW2W\K9JQ&:]Z],-73WK_FMH+@$[4N$Q;C_ V6L#:IK6!.V_JC_!'@@=S)H!N
M<@2OJ!KASEFSN"*,IQ4 5(#[>PY(V-5+IR=:\Q4 9C5;P#]XL/,EK$F( 'C@
M7%:+L8'UE%W 7D9.T=3J!R%!"#>&;&9L<M7"N1:U<\X0GG 8I0"@?H'HHI>I
M/Q(<X?FJD2108#L@_(5>J::'VSFH$H W=,5[#F#RE;-LI=JXO3*\#WD$7X!B
MX%Q5<@)HO&P^ F;CS7QD354O85=7<_@+W,8F]&<-XAVB><\_>I#3RPT9_:/=
M0BSP F0NB'P-P_M!M/@$[T'<A6O%F@@7E@>AN,0!\(;I*! S9PQD"YL[;R0A
MC;E%6&P&_()T([41P]@8BLD*]J0W<"YGLJ$-$%+ ]J8@# CC"C:[:/<>'L\"
M8".0 0Y(=X8<U+5;I',G9@5T4VBR=YG @\'?YT#(N#1]MS6,8O@B^0DP$;\,
MB 8\:LXJ,0),)!);YVV+,;P?]S.K%S:_JI1L4I=W5[X3[CG_#] >/EA.YXK\
MEZU")\54--^12!%\LA32/B8QFK95PI.P#-D6G 5/@IN95!=R4HWK6N#)&1]7
M\B,>BX,&!MP O@Z,'6 (5PLO K&L2:$';]OSMSM=U*7$D[()!R:#(%5@!!V'
MB,)IZ"CT.%S/3+,?VBK! U[65.U%OUO-2 PT&_@=.QG#RA*^H'$"7S$'7*S%
M"@F@TJ2VK2A]0!0:)R/T(,_KML(O/&TD[!M8Q;/+2BS&QI2RGE+:ZE.O?X05
M;3T!)K#U$8O<N$3.\/<G.Q'=Q<$*=*Q_CQNSFSE(0;=H)+MP60F;?<HFE^RJ
M??3/(4<!=J(7C[,]!.'JZ;_R&?,['%$Q-K!0:X693\%$D0U^"[;$[LM6G'&#
M5O?_JGP6A9X(RS"7:90F>9[$W.<\+U.9)%D4G*7 *Y4"53IH-B.=_]<_V;JR
M?Z,E\&U8>[H1Q5Z<_'K\\C_.BY/7OY^\WC\]/#EV7.?XY/3E&^?T!/Y\_.;D
MM\.#_=.7!\ZKP^/]XQ>'^[\Y;T[A#T<OCT_?;,+/%1)6[H B9HDON$QB$451
M&+ L#3/F%UF9B;S(TD>:6RVEV$?W1.@5.8^#,I!AB8&%G,G2SR*/^UG,2YS1
M\U\#^VKH'Y%!)E(1B2S@990'21'((BCC(DIDFI=9?G: _A'/]WRW=Y2L.$&,
MC\,*N!YI5G8R>XW:2@-L[!<&C/'MK!<KARATX.,:-$O@LPB!4]C7+Y.:7SQ0
MU\C[_XP]/OWWC/V9+T^F+X.C#SQZ]^'M]?'!A??NPQ_7[S[\,C[Z\&IR<K ?
MOH>?CP_>1>^G1Y?_N3[R3T[?GH5I[B5YZ;L91\]&%!8N\WW?E67@RTS$(LX
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
MWE72:&:80!%K(%D1.#( +,@I;&W0P5)#5]:(:0I%;D.S#?.O<["=D7I'4V?
MN!3*7#6LJR5.SNU+.]QOI,/^Z?#IJIG,"MW0#=5CLTP;A.MX8L8F[EVC>4Q<
MC6;,QICHU:LZV#4::T65ORRN (K2RL_U7%,5B7RZX@FY3D*#OYGXT1^W'L%6
M[^\XCB$:;O4VHANM]\(F:&"CLZUI0;:W0$#P>?Z1KP&!Y4\_]P81-%O0L>#:
MQ\FO[[-'+4NT.*Q-?8+.YPD^],^^?OE\VNIL_=CYL7^T_?XS;G?:!X /HOUC
MZ^QKY^-1Z\N[;SL'ZS2?W\SAP\%_#K]VUK^W#F \[P$'.A](B[8!'[ZQ%EQK
MO]_YOO/E8[>UL4/_^@'X<_!M5PN3N.,,,>9R?0*>,WDBR1&=4IAH!&7B<GT*
MQ2D'8C4.K'-.$M.$$(^Y81$;*;F_7,\@;TFSD?]MS.S,F$]GMO;*0<8<KUQK
M(_QZ)/,CYUQP;K"E5%"0TH!Z21A-8HA4*!_,HU76J!HJ9JCI]_)4MU->C4ND
M"@0ZLQI5+97Q/Z^91#OKNR2$X%U20*("2%2SD*MS"P04ZK@GBAAWVQ(:XM%
M\OH3KS'E5Z(M7J;\[G2O+VI,A?-#L6F1C844OQC/^S$*71BSJK"Z3YT+*5:)
M$HNO<R%6&:7W>NS/KPGV"$4YQ"I7-U^^0U&.1XY NEVM*?V H_>+.9G;S&E<
MFNPQ0V(NS^7ZB)CSXY7QG!AISDWKU>S9K>94ESV[+M[M)S.Y16.=6DWZ^@V\
MDM3V1*&.3]W.)DO<>T;UO,Y8Q1**>+M0Q)_ZI-Y6,8IU"1^\IYX^"1^$GYNL
M13_NP[M(^\<W^'OK^W;GVX_VQKO#]I>/W^#[>/M+^]O.V>7PP8_[.QW_X^O[
M=S"OSVR[ W\?;,(X6[CUY3/Y^OXCZ/D?Q []> "Z_6PVH="!*Q9YSB94B =.
MD0.M'AEL?.ZTY[VFN6.F;$I\-51\R:(''R\X<$$=1EX87BZH)MJRX.4RI',7
MO+P/7IY-J^X8H3D&J,3$><1!F"&M D/!2.VI-<XHOK)&A&ARLZ@62,N=?UV+
MM.OEZ++:NJ'CR0M+8EP&O;+:BE:U$^]@48?KH[>38(R:9:PL!81^F%4YC3))
M&I( 0@E!G 90.2.C*'(#"&JCX$GDJ#4NKZ94UU[A7&!*Y*+;$2\G6"R#4E7
M8L%@,=6WG+*!2R61\1@#6)B$')4)I1R(F*A5+F>W$=$T;%'E;FJ4SESC[M75
MH7(^3;M\QO:0JB\W:KIU1*9E4&.N#\TH^/00?)JK3ZBIY,DPCIQB#/$H-<IV
M(.@V%@S":!2QN=ZU-$VLK@)4[=69._'E$K7G72J@6085J #-HP#-K"*D,"/&
M(AJE13PXBTS4"C''?.1.)RG :B**-#DCC^UXJE.EJKHI1IU!%89[UG#=P\,'
MN6Z6"J0>K UQYIVBW%M#'0^"&JX(TQK4(6DM\3>DI=X)I-;_MMW#'%7UKC_X
M!$#TZ:+[9PYMG?XU[D%>H[)Y2P%7.[-ZD2("@X&&D<N!K3Q$GC/_\[DBLUSA
MH+CD*VM,-#E>0K7H3@RZ1/Z?I4*<!ZM%0><Z%!P+F_,<+;;!$J%)E* J1<W<
M M2B@CB/C#A3!0DSJ4S0!KFH#.*&)J0IT<A0KS"5 8=$5]8,;9IK2G76D?]?
M:IQ8?W!<=7)ON'XO/,A=5$-0>K :Y&4VS82-$4N>L-;,B!"()80+3W@J:E#-
M06E:K+U]\/FL]6%7 ^ $; 6BD@A0A7S&)*Z03QQ QP@GK015B#;5-<!4>U5H
M@:6+G\$/5$,$>;!:(Q.CV@AK(U;<,&>IBR2;4TPGC]4-%=,*@M0)0<[F$202
M$U14R*@ "()U1)KEBB_8D60BMAJ[E34IFI(N45?%977P5 GO*(\^PCI>T'H)
MTIF'H11E8(XHSJSDU#+KB(LZ5QOWUCCNBR)3?QB:^G.2%8311%!TN9LZ"QZL
MJT01MV!RR6"H([G4E&@"V"R?$E.B=NJFQ B,F0)=F29K.(O1*)8[\T6G<I&3
M)(H24W_TF/IFK&719(],XMDWPPVH,M(1A#$(!L^T,OGP*B>9Z*OHL?11/'53
M8#[ETF'P0:]X8*X-R_'Y%$KQI(7D*3 @7!F594G$)(B517&I.?1\FU5<7*#$
M .P@[:A"W*N$--C%B$DI ]<Y[0UL)]V4RZBW%.=+W?06Y8D3+!B;6PLG%C7'
M(4;)B6?9@L=%;ZD_>$SUEL0<Q=I2A*V.B%-!<[:70BIA+(BDG&,#>DN3FN)W
M>?SL*& [WSVVAP]06^IK,3U8;=$@S@+U0*B499^+TT(Q1@2HUH:"R"MJ2\V1
M9[[M)!B\V&"PD3S+B::18 0[FQ##6#$OG?+1Y YN;(GC9XJ_I39Z"_$Y^DXH
M;B3F6$6CC(DVF.@3Q487?\LRH$=KVA2,JD05#LA2G]/4.4%.$H*$ #F30V&T
M9"MKO"E9\;<\?L1+?GT:EW7O)V"?X_ZP.RINETOG14":2E"!J2*<.6<=)5@(
M9V7TCF'[L+Z%!7P>%7SFF\\JFW*P$N(62P"?W.8K8(.2%%A*)8+2>OD[$A:G
M2VV4E^0%B#C+&.::BRA<L%S _WA.BE&*%^5E"?!CJKQ@%C U+B"AJ,[X$9#+
MO4T-5K#3%OM@9%9>&%U4A9U21*<,N+YEBNI<!6 ,=[,EM4O&6XWR_XO8>E2Q
M16;57JG!;A$>(\M(;L0M(G(D4&24 <LF6&H3( /!K$GY$IXUEIRW&F#.,I0"
M*)CSV)@S5949%E1A2Y"5 4QM3AW2*DGDK+ DD<@H22MK@#=-KA;EZ2M9;\^;
M];94@/62\N':_9XOF'4?S*)3/2FW5U_?Y5PQS$%-LB*;^"G2W+18HP2Z,+9
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
ME'@V)!).8$-HADSR7%$7G#)X94T5!BX,7'P$=6?K:?P B%_&M6=(L9Q^G(Q
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
M>E:Z;!3.+OD'2\3C4V=#2"YX82)062Z3X[A&H'[P7*]7N2!3$#D@632QJ5.
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
MZZ7_K$_W8F-F*^#WPYA_ :A:/^K#HOVH/K\1Q@J"W0G!-D\K]*JTI?5=;:D
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
M?]K"^\=[YWO?]LX;%_7S^N97("<[N+Y[U-HOK@7S'!]"G_9;]6\?3^J?/I_
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
M:2JP\-0CCJ7.V?@YLM@:A*/D).&D-<U5@O"J6.)@P 7:DJ_@XE?"165=S0E
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
MOXVL8-#KKFB7O?P,G."P#6P[;(5LSJ;"3IW1#?N^T0Y_%$/#$;0\7!NT;NY
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
MT(;*C Z$SRL%2K5?<JN8?;/=KFWWSY_,/A;7Y%ED]C$V>?[L=L+ ]\>S45I
MMOF^F2M"I2*&R@9Z#.SL3),2GU, :Y7]C -!W%.'7,XTJX.QEE)I_; 0!,=+
M2$JJ?9(W1$HJT'AFT)AP%0K0X!(12 $M =!0'#D=***.I\"U=X*HE76^JLC-
M@_)JSV3.TO>7]25!J79'?M79S7@&*F1Y#+)\G:8C&#-+-+5(<Y$0EXHBFX)!
MDAD1A!'4)E8F@N1D^>A(M4?R!NE(A1'SP8@)^\ L!"H!(TBP.3>9M<AH3I'
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
M-^L72TAGTY6?TX^'"K=M]CHCZ>[=1ZJ'%DO1*DW._/-6V7VRW+I.*$I3[W@
M'2DKPXX%='C[#3-JT05R/+ZY+T4>[I/8S*3*=T#L2MU]^90;[0=.-.B6_@"G
MG6;A2QZR<97& -#!L)?/.HQ#EI6?E&QIK=HK=NTO$??GD?#K0EV[J8?O:]+J
MGYBT+PH,=UFY[&4V_#?AJ=_+T\HMH.3=P7CK_S\QP) <;H"T?B\Y\>)M_S<V
M#\<F\!E\Y\?^YE]@[GX5]4]?<8/NM_9V/Q?[QWNBOMD\*?.#M/:+_1LF\ :T
MY^-)X]O'UO[NR=G^;LZ/LW_4^/1["]IZMOT-_MYM%/NMWUM_7WP0T)X#94S
MAD84 :@1CYP@+9G-Q_)8<^*9LC=,8*<"5I+YQ+#(E8%A97)EB")*N6#9C60C
MDVFI3<W+W>;OPF[@S]9T/Q^2JT,8E+(>$XXIUSP2HQ7A24L5A>0V2#-,C7(=
M5-.HNN?0;O6 Q47O!+"E;4?D#P87@.;P/,/.:3?O.IZ62!YB!LL1_(,$'):;
ML-E>NU0HDRVZ E[J2X2^EIIE@G* [+VAG3;<^W1#WZ\>O*C=:<&3AFKY>H.S
MGAWB_Z4:G'K%C=[%'\.KM=RI:_2O=!O(M^6M9!A;>*L'ZSGD9PWZ1;.X*%]Q
M_9'PP5DV"/)LY/WS$5$&>!YT2V3(W1N<YG&Z"ZL24XDY &9&' \D&A() 9#F
M5N' (YN)55-'*+#X_+LPZ 9[?AW#ZD-5/SDT&3;M?#N-:KN^'_5E(E4]\N;
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
M77E80_D#4#[A"V-AE#?:(VV"0=P)AHRF"?',[>,9I^ LU96'-;#6P%I7'M;
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
M\:5Y+Q["PC? 8_%*N'>CDZIFE 7E.((?&?>L1"XDA3#A&F-+J': >W+U53B
MEU:_'K0XINK7D_R76K^61+^N_9;H7,9-@Y0$U>*!6N2DT(AS1DWB1DN<,LDV
MJ_5KKOKU)/N]UJ_ET*])'B8?.4V>(*]R\G.4%!E',"(^6D<H-4R4^L4?U*\I
MW!NW/WXO%\>\1;Z\SN^=4U K/P-)P#U%8P_PA_P,&H/!C5$69W98E-I1@"-N
MB]-!M$/0M:+3&YX.1EE?BK/#_C!6!GG^-"CWL#,\+=_IG!Z6) 99X<<L9M4'
MQY0B%3W"ZBQS\?/7[T>9D \OY"0L'XV&IYUT_JIK^R'VXL!VN^<5VXL?#09Y
MB6X^2]$9WN9DZ?5@T3H7EW04W@X/K[\4HN\"?):?G."0^7__I2E1_Q@6?_0!
M2\M6@)T!S%U_,(0+CB>PNJ(]+09Q..J>7E["=_LE]T7%GW&2V3ZSZ.6W2A*-
M(L#05F_Y\LLA-U,./A=;9C(>Q+NCOPT*OG_L.CU[R15T"-K?'V2#8_([EXSO
M4\2D>@.N<MSO7?*F@,TR W*4TM0Y/NEV;@X0S . *ALFR(K&W[LMH>7ME@V
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
M=IZYR???]8>GK?[I;H1A7TYF&2,96[J_LN:)YL;7?9,H9I($)!4#*(_1@^B
M^AE)A"*,)AIE3KQH:"JFJAZ(SF$'[-?.<**+9;]P63ROQ+=L.FGOGLJ?E''0
M"6]H?J2],S8[?S$IJT*\ /3CE_+GEK4!^G.$#/[=EQ)[)FE"#!N&N'4& ;!3
MA"VLIX)%Q22W8EM5MW-52J]HN"RH?MTD8A*#IT)W!M[LTEU". !T_QB^;;^#
MYO1BZIQ.JL\K-Y2X70#_($RO=[M]GY]ANNJ,K:!?&&>;9]L;G_>%)43XI+*A
M+!!7E"++P!4SEE"-$_,501AM2$D>QMER*P?O'VS.D", K^N[/THVIHO$+RP+
MD\=>\/F-@WTJ*'$I8<1L&7ND98&. S'AVB7NC2"Y-58#('*ZY5MU8<Y!HWZ5
MVY&;T?=\[':K8A-[V2K^9B_O_QT69_W!5UA*GU$HC,K+/;ZSQ"N$@AZU5;?M
M]S\J 'T_Z!_72'0+B=I;^UBR$, 71DQE@D+O 8FT=/ C!.<3H\'XE379$'*Z
M^][( I4-O<ZWV#UO_)0>-O4.-5>Y^-YL^WT=C,1!8D1X "--R80L[%/($&4$
M58);Z\IN1D+?$]=Y=%>:EP_\U=@Q/QDYVMD/*8@@G 9OT6#$F6/(2B&0]2E8
M8TWTV9!7#26FMZ.9BAT_H:%1C1_SE8U\Q,"YCH0HA4)*,I^B&G" F$ X&*HP
MME&:G!4-9HS!<\*/EX_SUO@Q/QDY6M\GTC$=85-Q(GJ0$>&1D=$@,"&MX()B
MEVO250/6\1'XH5>+UCTG!]ES]O:D TYYZ4G?2OSJ#Z:%C5^V?]0G?PCF=C=N
MIYF$:HP^\-MVNAU=RG&GX2_=9*K]>1];JL!CBHC)3'L2X(<U1")&J,0LZ$!X
M6NHF4\4)"'W.)BW]MQ^&EMQYEOCRI9QQ$'-RP3C..KY0#LCVQLY@KRP4ME5;
M-?BG3%O-ON(V?,=6IP2_=?*G+QOP/+&9E2BK@%^B<Y4QJT*2IS2N$F25J!=H
M7,57P8I]D<95O!XLG:UYUP^(1![)%_)0,76,5%%^$PG:G>,X+%KQK/C8/[:]
M>S!!/Z/:].J9B)CEH5Z^-]7MAYE>(KZ;TYPV>P'PYL[QYV.:4;V=]9OIF19E
M^1ZDJKG[)#,T6ENHAYZ^@ _V"'O##ZV?UQWNQPWS%H&9*=O0V=X9Q&^Q=ZLA
MW@R<5TO6YNFY5"6/?NIEHRFY%6)(G,K$-+?&@8_G84("UCR"$T@\,<K^Q)/4
MY::).CG<O3A@K3(NT/R^>[&#FQ?A:+N]?M$\^N.H>71XV#K>H<WCCX?-3[=8
M1H[?'\$]6/,BGZ*]/VIM[%RT:%,T-YKGS0_-\^T/FW1O8_=\[\/F]UL=3G2@
MN3:9(DT=N(HV2N2X<KEI4U3$49X2R8=M3(KE8QEYK&K^9.+.-P:LS^V?MV3
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
M 15&$ /@P1S),9X8D0M)(,>3(<F!@N-2W3]G!=BY2L&=FK6?C[4OXSA4)2-
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
M6@5I5VJP=?7<F%,?.K;G8^/#48RCNF9N73/WZ6OFUH5RZT*Y*U4H=ZX;2+W
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
MK)RGW1^V!G&T3#"1;W$(*P.K4*DYH/_DK_CL7@-8 =$%6@XLTQ0 P8OB#P"
M_+AS^A3(MX,1 [7B8+DVXK>8]P)V^LJQG>EWE;OO[]9:J_;7\6 8.X/:7\NK
MR^-C174> %OY4/((  Q>7"F"/]/PIK2Y"\K>Q3U^7%OS+[\7PV$[;J8-4-T3
M@.LP_IDSO#:ZH--^;0%_C *>QE(WK X^@"#83%= V.LV35=W191>$N,15RH?
M<#B/K*826>>2#<F *8@OFIKS:MDMK61Y>T$<5P Z.8"OG)$CEIS"O7P5#*.>
MKZ[9#&'PV]&@]DNE!?0.84AA\.\W/\.QL2<S0]G4LA!RW;I485EG;E# UWX.
M 6O;@T%\,_GAM] :'+3M\9M6MYIO==,5295COY\QRPJK[/H;9W6.'S_V"BY7
M7L$+$6BC:UHL4\FNO8R7R;77;GHLH<N"J5L]=D:5)><PTO5MMEBRH*A,EPBH
M]+T2LI>244N>_PL([7T>9?P3J&A?NS"CL!&R;9):]K(@[(:)<@ZZ!5P#"1TR
M<<*%]3.JG*- X?M)Q5&@\ %(P W:I-MD\\LZO&,=;Z[!6-XWOS7@NSO[.6AX
M]:3Q98/O7 P4[FS0QCZ,??^SV-[Z)AI;'WES?YMOTX]'.U_>=7+0<&.M404=
M_W.R.IV?*SQ3CBN''-445'[&D1-$(RDE)40SXG(6$9NS%CA/5#C[.:!W% $/
MRNOW.#++2P6 !<>KZ9R&1F5YY3O_BOZP7WVOP->=X&O]7'D!K*W@(B!I=40\
MY7*Z.EG$>$@<IZ2#!@O S*(KT/SU]9Q#^+HBIJ=T]'PY\/7I=%<+:MT-M3:F
M44MK20UL,L+2"L0#MLB&W(]8QF D_!J(SZG;] H7:U&Z9L^]&Z!L=8>]/E!]
M4;9FA5:/!TF3[3HN&'0G#&I,8Q#F$5N?%%+!&,1C#O?)N1Z&20.(I&&#&6#0
M%<E&16^:/4=^Z,<#VPJ3\ZE!Y7WK#?=BOS;.B2[]T1<&G\ZI3..=71]M+'Q_
M,^_JW&6X+P)^?3R'7SK)D A'TH5\5NTDLDP19 S\8P@Q7N;V*6*>.DR^7 WJ
MP^FQ\T';3D[C\\'!079A%:5J_D%KLH,?\OZ-_>O5YA60NA-(?9X&*2*T8(HJ
M%)+0 %(!\$EAC(PWECNP^9B02RN*SE/IRY>K9&T>5!%?W:\Y4F00BT;UU/XI
M_[7[X[Z@9:\"K=,=_3-OZ*<\X5[Z/!C=6H#K3L"U/0U<E!JI,"7(1Z6RAXHB
MHX5"0B;#4N0^$EL5+#-%OWH*_EV;1-RVNE5<Y=#^&,%74:T6VKL^V=<M^Z.8
MA/< +3\-6BE1[#@S*&'-$&<8M"VK <-X2!1L0T&3R[$,N!P&/HV^5?FOBI:U
M*";@'!=@7 0L.M?=UV()-EX RP\G@GC4"10HE5"2@1!/%!>1+*V(*ZJT%?7I
M$<,2QODHKT)K^F7!X6CL1I^^,-[&#Z-=+/AT)WPZUY=%4TX]=@H1*ASBBGGD
MK-%()PD;3Z0E 70E>KG-P[^+CC1C9.I7>6WC@[]7H2<]#3(]9[C4U(6"4G<+
M[SRJ$*I"JM7=W*598TZ0HPS4*)P+YQN'$24Q&D^UCT%E/Y1DEQ6IVR-5T:'N
MXH*:%'^UT^790JSJ8;V.^*FGU*QF[C._C%"3G1V7!(:[)GTWU\:[6C#L;ACV
M8QK#<$PZ>B$1YD$@[E).MLE5^3'5R2KI& -52\G+51.+KO6HYW_M,Q8H:M>\
MP];YH[[3FAUC-"L =3> .IX&*&V$94D;9'SN!AP2_&2H0BG9% @WGG&VM,*O
MZ/E75*R9,FBSUT63<,_>C,&JZ%CS&+)PBF-GOO<"97>#LI-S4&:3)3$P1)+
MB"?KD2. 9]:Q*(V+PAJ9[47&B[;U#"$+1>-ZP8ZN"V9DP;&[X1B>QC%F9>#6
M"!2M](C+2)#._=N8P $S3 -(%[ 9Z^:*T-&BE#U"%$-1OQ;K\/!,GYJZ5FUE
MP:6[X1*9QB6?(@Y)"N0\LX@S,!JM(!PY[ EL-5PEN9_#Y;3EHES-MDQ,KW/0
MCE5MN.CWNO"NKZ]%I[H#,(G<DM(X0:6AW!"I#>$D-TD,SE*.Z9RI5!?K059P
MM;5GN^_'97X+=-T-NN@T=%FC0@H>HQ0)0UQY@IQT 8Q$RH+ FEKI +ITG96J
M"T]4=0$=]'L^=_MX,(@MFGIU!Q!+1 5M@51=X)SZZ!SFTC@.9D#2QK "8B\;
MQ-@Y$*/8$:8%4J!C@_XE,=)6"!2HP=X'C;T&NU#/HG),T<-N5:YO'/\PZAO6
MZP[V6@=%#[L 8=91)8G!"2?)O57&$LJB3"YWDDV:%PA[V1#&S[FV0/6R@3@D
M5.XNQ71 6AB& A;9L95D\G1I1=1U4<.>[M Q]T@8QIK]VH^Q%!V] L)8BLX8
MK%/RGA/BK8 _AE/M*=8JJ.>I@U5P:J8X)<Z%GJK$B0\&V5B%GK*$=) ,49:8
M)1;( >=L0EX4K:=@U:V^#3'W+2G*U<4.85@R')4)R5HP"+A)/@I'A#5.:,-(
M0:;%1Z:-<T'Q@7N<$PB1!!TIYSGG?MQ8H<08 RU;8>RJTGU%?WH*5IV0=-&8
MGCR>H:#)_=#D7'BZ),Y'KB,BDO+<U% BK45 @E-IB#)>XMS4D)HZ89<C0!=>
MUZG>3<6H&?G\H<N'<^VA[HK<XRY-XTY/#&8;>H>YB]-DN.,O5(V?X.J@UVZ%
MTXOSU[WG4O?P^W7OF>&R/"](7[T>\P72]]0K)]A^=71'J>YU5\P_%_&OK!-!
M8X)4 +V1<ZR158&C7/HY6>T<DSF,0YJZ,)<Q?\)N3X>"]]-;9\?F#Y)1OU;]
M7B9]^"[VNJ\^',W+]7\]7=M+3?OFH%6AOS+HI%YK77V06S_+#CUW.E*O#4^-
M^5&AV.Z5+LBJ+>EI%^U6M[9T9E:.JPHM31K+YH:^>?>JEHB_V[;M^EB[BDZO
M54D>=_G^VHMQW&#YZE6L)NMBU:*YTP.2.AGU??2]0=7I=I)T6S6NO:EA*3>4
M<F>$\%IPIK7EH,R%1#E.TDE/KVP8/@7F,$/_)ASVCX W!K%[$<TG\/SN^C:F
M7ZJ)Q[ ZZB[[>1#38?O/5HH+"M3W[UFZ<;2YY7=])-ZEZ)#QR2)NI$&6&8DX
MT9*1I!TQ8FFE6K1:;D0\N(@1HSZX5S/3=73SU_O_L9V#WU;/*LK_E'(,H\Q:
MQIQREBLJ+?662:%-PE: DE HYPDIYT?S9'77:"DM$Q91R1D"#C;(V) 0$\E+
M:E@T)"ZM##(TW$0Y9W [2VI)W B2J&9)<4 8$W@*WFKN'0M*F$(M3T@MQXV3
M]5V<@I6<,@1<S'-'#XRLEQK1I WEPO(HW-+*\*AW':UD49SIY09Q? 7M?%JK
M:&?] NT,6C_RU9M(B&I*  FU2REPJ:1.45";.R!)3&-TA82>D(1.&EN?P2Z0
M)A$K4(PY[20IC9P.$8$^$93"5@GB;@2<Y2N5KL=73:]106M'L3^M<;5&VF+J
M'?:'>[7_.[3]X:A_?.[=7M'_K-0P$I-QG"7AA.%".J<ICS@&2U6P219A^H2T
MO0YJV#?2V%JGS;7/1_#=W>"!K ,C*&IK0!$+"AFN/<+!1,EH@OWP0.< 87>@
M\F<R+:HF\IE4P10""LWT;<?44?N:G2A/SY&M=KL&-MNA'U:V&I!UE?UY<-@_
MZ&4!T1K4_FL^G5057PU:>403S^N'['A=;;=[OM*Z)WZIW-#'#ZO*S6NG4UWM
MY/J$IZXI_.I8;0/8S.\:0%,;M$8RI("X<QBY[&,*BDA@.X\M%CE+B-<E-G5\
M1:#7\MW](//M/UD#^=-O]<8E';ZV>\ZV:Q'(O-<9B8Y0$=V@EOJ]SLBEL?GW
MQAHBI@9C!/4=OC7LM[Y^C9FO;19$K7B4&;[=ZWY%[2P!QDZ1BM\.>L/L6867
MM#H'MM7OC)I*5T\>Y/>&B^(O>R=:@\F#^W%PV!Z+S-8%M\OT(X%%^E^!I8>]
M(2PN3.TNC(T542J!C9F4YZ#_ 2C+I$P@AA,73*4 4HP9PZCZ05)];P[?.!WS
M9KHH*M=_9"<3C/[2@>+KX^!I8=G@\.^N#M9[RB)B6E95JSRRE(!ZZ#V.&CL1
M6>Y6:NI"D2N9^6:ZJ^>C+;!.@=-&KHV1QM7N@>X&EWK[%<S6O!WLU1)\.L4B
MYQUHT^7H+OA()O*PNO.O0]NV;KEV=0[=#>[,\]B29YFIN=4]M".W^!3:C'F?
MT]&Y8E5%#;[S9C2N[_&WHU88[DW.:Z9N'#NK\=DMU@UZ[</A];=,(9L'\H[]
MVP/;5JL#*]<$?O_4Z]CNPR!.D0L+-/7W7G\RF@/019'K1_L-V02#?6/;1_9X
ML/3KN3EU8!,NK.'%Z<]XDN86<QQY_P%@*AR'O0%=+_;SMV!(=EZ&4MOK9W3]
M5XM8SG!@B9FH %Z-D<(3[TU244K-Z:X"[3&?3616?)N!N0K\M2M7[>,%:A_!
M8N3,>^5=,HQP3:Q-$7L9,%5),"KIM83Z'"+XC@ QLAU'HN[,=+2=42%Q6+&[
M2#H9-3?&8,.\YGFE%(_,*"J-4@$;4R3=LTNZ_<^[*4:K2(S(*)T0Y]EG'X-
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
M&>C&?NSQX\<8N%QAX(4CS]$UP9>Y(M=>QLO77[OIL6:9"W6OI]Y\33!6QKI
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
MQ"?@)!DNX#3/X'068,RPH]X:A7P($7','#+*.B232BEQ"K22<G<[4\=\5D4
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
M6Z3 X5T=#5NKIYEZ@A$=J-.(^Q@1MR[G-A/ 0^%<D$DDYP /R>)K^?,,B;1
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
M]Z\-)L$-#550M@RF 7JBR(:@<Z^-?OI=P(]Q=OL+.T_#U5WCGR7!."K[6 H
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
MR>%T[D7IHW$VPI\PFC)IM_QQJF@:JWIWRJ0>QLD%RU54P3AE^=CHS&KYIVM
M6^H1,/^2?K-4QA%&<XEE_F-;"O'KE818]LSB3'GY\&DL-=SGLKH.51T&QA57
MP_1YH?8+R0 2L*0 =R2[%A@,F!8SLQ\L[:.NW#&2RFV1K2%WEJ5GKD0$=A]<
M?_:-XG=8*5=75[M<%EW C\$#1[96&_/9R?)N7]+!>%<NE-D9_A#@M.1&#0/-
M+\@(,HKV;KXZ54;78@DE94&JD#4\X^E*2V^; 2S%*@J%&9#<N&+ICSG9OY\9
MX;&1 '!,ENWUB>> 64R1(:N00>5G9$A&@O%56J![?C-E5TTD5CD0Y>W+O%J5
M1VL?X!R0#B>M\\/6KP"]&?\.")I_%V/P10\>O_65^,W5_:34_3.%?] ]/FV?
MG#_$U'QI1+Q+M<]X!H,O8EBP<3TINI(&)]NEP1_-J+;57$:U2T8%0?UVUKGX
MW>C^\P3,TE\ZIUCB"A;J1:MS8GQNG[3!7L4=_.JZM%J/6R>M+[(+@/SSK/T5
M+-A#X_RB>_"/7[I?#\&_ M?J FY_!0Q?5A1<&]G5$/BIEXX>QNSVMC-[(U?L
M0FX<PO9:,L<G8Q'3!'+=N+YSE]LL\5$@%8LRICS ;=Y274EU6%K;96WA3.'=
M7+[I1AADA/'U/$!BP4/Q\3[JEJ$_)/"MZ(.:Y#1&F,,PL$55GXT*\;'ZY1-F
M7_KL^F,ZE$237UIP.D@9% O#75\F'ZKC2<K'ER&S71DRN]$A2UVS_5W/"9=>
MMG;)TFMW/98$NUY(U__8W=!?_V!MLDL"_U&/O?N:ZSA-&NP]E U6F^8]I^#<
MZ*_VG&T3@Y5Z#)YBR=(! .=EEE^O<-C-'1-2$;>7G]+)9 :*6:)^SBKHU-_C
M3/V,A,Q_52@X DP#6S#GJ<S;R6O99%Q50Y7/')7INRN6Y[)3CBR[PQ&4^?(?
M94F3+#PHQGDJR\X4^&(3Q^(!A+[9KG,[U^2?\@\1FPR&PBZ%HF1%:DGG$9!)
MS*_:<M(O)NML27;4_?!=]8M:G3=']KM%09(]%P-5^U=2K KLJ#_!Y"A_D7GQ
MJ;#([+0R&I1=(*_<M@WDQ^_%SW([ZF)A+$ML1*P>CSGR_F2 >U\^?'CLDMUW
M.IFR-- .P;:7LMC?J!9APZ"]6MQHM05>W/5SC1-N"B<#+ZQKEBN(MF8/3;A-
M$>[!YR8N/K/QV0Y+7(U@[67>(29?P(55$82B[M:_I\M%VGX8/1;V)=]X&^_5
M*!/N4-??<7U[ZXX,;JS34FO:O#7'&:\VLRTZS7BU"5%[U_%"=^MX?ZFN>T7(
MM/1\ 14WO''$@.<2'O,@<@/7HWCP:<*(RY(@#HF3,#_"(P9LZ^81 ]8#3AB0
M05_90>Z@ID9:Z-&ILO#/U[-;3MDU?M0"CR]6;DXWD5>+5N7"'&6Y[.XU/93
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
M9'][K(-_:.M R_YMV0>!)Y9+]V+/L8/0D;*?S\L^MLH<#%4E_+SXRW;VE3&
M8C@[>&EQ-XE5Y?]LC?+O:-V/\O]5ZWXM_ZO)?Z'D7Q7B24&?BOR.H9HU8_,H
M@_@RR!_LH"2CF7^/VU"Z"_\$5P$<CI7!X/PEP6#I2;C/V6!V81_.IG2=#:SE
M76=U_]A'0L;KZ!^K^ZYN:]_5[?%KCK5?H^V:U>R:\8):AT5&CO)KYJV5RO Y
MR7XH@X)09?RL;,9<:)]FW;)_HGT:+?NKR?[D"?',53*B*\/ MVV!@>TQ ;K:
M!- P\. *B&PE1)@BP%W'TJ\J^]UM*7K8'A/@5)L 6O9OR[XKQ^M,99_.RWX9
MX5PL\\4B^_^F^:\Z2M$7"6)2K?91]'\%T8_RO7VM^[7\/U#W_[N4?Q4VKB4K
M2\'\G TG!9Z)?9FSP<HR_JM6[^N6\3.MW;5T+VYE3:R]/IN ?#(>9T/6C]%-
M'X$Y?IG?I=U+18[-**O^7/>D+;_B6^ +_%"^YFXXD"+ZAHE>@T/9QO_-T^.)
MS4N'PG LW4=NIA'.=:SG=6N$S72%K,(\V+8X3_EX>DK1MV$ZOA7O04E<+>J[
M%?BV&9(N4(-OF!I@ ;SAV6\TS;%(\[UA6K\Y-] FV@E\M2J_Y'+<J#&+T-BD
M"M!$11JG3!X[6-:8Y^7V;TS7)@ +L=$#[,60[9NSAFUG]W&BH:WA[14-9]JL
M85C(W@B)\45*PT4ORX=C4*Y?OYYN3#2V16< E;36>&.BX9!*-*8G=Z#;-IKD
MQ82I<K]S;%4$GSF67>F3<Y9';"@*L_NS+ZZ-%I<B!5:8;;P_:'<_O'DM Z)D
M:RWSUD3)7K,H-=YANX<.1]TMG\'F@&QK; );VP1O#LCLE6V"T/(>8!-,\F%:
M]-ZT76!KN^#MB=/*=L&*XK2E6M7>>KO KMD%FP.S;;$-B$5VSP]^V4KSX/FH
MU)'[;XU_?3[[:ERPG]DP&UP;[9]C,2QDPT[>$P-F'&9\HK;3W#(X:]1]M7H1
M6>F@]74K56-C6.F ]?FDK[3+UW3X/6*%V!1C;1-&?6UMYZFHC6&LKRP2_8VS
MU#9AU>E96V/54UCJ-!>8B=%@=9.S#MM'&JPV:E#=VO_RBI&*:I2ZDT('&0S
M.&67PNC@BC%U*L<A&S-#UD^]3[)\P,98KL<*H\YZ<L,;&XWZ,'SLQS.N6%%,
M63$=JF_C[QS&PN#+,7Q:U7P5!DC\WW8719G7"'?K@()7#"=_PV:-&)2!!1BP
M(;""A U<+V0'(\OA]\$(EI2-L_S:P$IU_)#E.1NJFV\OUZT6:&I&^_/@H_NC
M+>N/1F[$46[TRDKC__?N_@Y<-B7O]C?75:VQC=->>BC/U2,-.Z*%B_3NAO##
M7\BKYYTO)ZV+;V?M\Z5R/=_!K3[>/R?%.$T>T(3O:8 G!WQ:"SRKXL!_3]*\
MW,:-71U4,/H__X-XUB?B(-81]WW\81J9%GR2 \H ([5_\AZ"8!6>)J%#=VY6
M'/9 <<9XP!5GDP) =MQ+"[@NRYIA")$P"B %7$"-"4.(1(_U$ZR.QP=)ME(W
MR"?G8C*$;\D'LLFXE^4P]7CW/MHO[J>'%-M00SV7D%VW?/SBCGIS"G7N(K5V
MK3LNW_G=>R[Z[B:>2SUG]2>7]LP-I4>HHM5"V^(!9L@C;FVH87+0_7+2_I=Q
MT#T[[9ZU+CK=DT5FX0TR.D^AHG?WK4]8N!5)K*3T6:G\^?KC"C[2YKCJV:=\
MEPVQ5^PIV+_][^S<DK*[QPK,J&7Z)K=I*JZ#BA@\3&/TTG![X4$O%0F8(F"6
M2.>]FR0I%_D*3MEVVF<KVF S(PL-L @WZY=V5B3ZV55E7R5@WF17L-C&".RL
M;%B@&5::8+=WCR"]TZ'\E+,1XVH(^&FF/L5. 07<4GK4S;/+'M_HV YV+7^U
MWL$OW^B8AKNA[6W)8(F_:SO++S^@*_,V*]]S&!$;3W!/K+9'%$DNTG%?DV-*
MCD. U!?V 9[N+KA;[2ZL9"%7)_NMB7/S[$K];F^+@7;08VD^P#BYLB ^9RR/
M\8_984<SR^U@TD?46VBWO7IQ?[=_)*)\@AW5B-RY?V/C]B.$J#24I!TU&AM%
MUD]CHQI]\^FQ,3%:TZT:<QN)N8O\Z;<$N5.?>&>90[PC,;="8./]*$^'/!VQ
MOB&FMV;JU@\:A#4(;T*N- 9OJ8#<@<&G;-(W#G>-BRR^[+'!FT7@<S%, 5=_
M P U9A%*,'J/TB'#9D\SDU=] F^LL+F.QDEU49$7OE7^PGDV&8Z! NIOC=4:
MJZ7FWXC\::3>4O&X$ZFQC^-WH]5/6=$8G!ZD<=P7STJCR@C6T/G6H7/] J&!
M<TN%XP[@;$\NQ5 8G]EPPGFJD5,CYUM'SHU(1'.AL^FWOC5 ONB)+ 9G^Q]8
ME?*7!F0-R&\=D#<B$<T%9&W+/A8Z#U,V!,U]RO(<QK6NZAJ-G5O$'1H[;_+!
M)D1"@^>6BL<=X/EWD8/8G//>4*3QVFJ5-'AN$7=H\)RGQV9$HKG@V?1;WQHD
MMX;C7C8$#IPTI]Y6P[&&XQ>BQ_K%H;E0K.W8QX+F.>.]%!O[7;%AK&, &C??
M/&YN1"+6"9U+=R\_9]>HQC2(FG71O]4@:B_*XFOXT1L/^OO_'U!+ P04
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
M>8Q*.+8^Y&N?W4@Q"XW!*^I\+[DNE==V1R41/#8>3%R@7A[& P^V\4#IED8
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
M.9'"&V)+5<\4F(-,@]-M*MD_B&A(;GD;4O2T0L5K2?<KZ%QMP5V=&#.F34A
M#$VEC+0/&%<*(%X)T*NRLKS)6[U=P W)[ZY,E>JV:;V#?B4T&!55\"0[P"A
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
MD))J5TJ=?WTAS1TI=QI4ZL\XJ(9/ND&.J^LYXL9GZTQ/W&2M>8RDE,DFDO)
M')2P+E*7E* I\<$/J(?%VVDDZ7^.I$'1;)!#Z$X"\+58'S_YZ:5U1EDI$\&B
M6^JL(Q(L$*L\$)>$T6 M:Y1V\:A2[C2@_HSW"8;/N6K#ZJIW13V3HCP:RJ7(
MI#*">&4R43Z[:" (F9MD,=J+C'_FT_J#+-4H,<Q[F&\J)6 (<_+)=Z>'/1'?
MVDZ_%[I/0^OSN'E;ZX>_D'^DM?I*J/TR?EL?C^3EJ*:@1_NHK[;=1:JMS)O9
M,&Y\ZJ<8RZ!<I:C#O%?-S_Z=UE=W#Z&/I/]-1=AP\1%[G>6"YS@V>*3CH]EA
M5^%[Y=U9ACG\5RD'^^I\]9K\ +7>:Z-GWII'(=44M@>5'FJJKNCUS0T3B#BP
M_\_2=POH)A<_H<<UC6,_>>D7_K>I7^($#.D@C>S8=-^D1@<(< 2-]<F;MD\'
M1]%>_3QJ.W7;9SCNU\-1M%A_\&Z6B=>OKVH.XE*-*";C?%'R66YN9AVDP%W;
M[JFZ@T0XAM)ZI(7;KX?C*/"IE&R;X+3\$?P<_OU?_C]02P,$%     @ Y(!+
M4F#DB7CYF@  9:<& !4   !C9VYX+3(P,C Q,C,Q7V1E9BYX;6SLO=MV6SF2
M-GC?3Y&3?3NHQ/E0JZO_)9\J/>.T<VQG5?<55P (V.R42#=).=/U]!,@=; H
M4MHD-RB:<J].%W7:^!!?;" B$!'XC__SY]GI#Y]Q,AV.1W_[4?R%__@#CM(X
M#T<?_O;C;^]?,/_C__G/?_NW__B_&/NO)V]?_?!LG,[/<#3[X>D$88;YAS^&
MLX\__#/C]/<?RF1\]L,_QY/?AY^!L?^<_]'3\:<OD^&'C[,?))=B^:>3OV))
M'H45# $XTP($BU9&%B,F'= *<.;__O!7 5EBT()^(TNF4XG,V\29TL64K%0L
M1<\?>CH<_?[7^D^$*?Y DQM-YU_^[<>/L]FGO_[TTQ]__/&7/^/D]"_CR8>?
M).?JI\O?_O'BU_^\]?M_J/EOBQ#"3_.?7OWJ=+CJ%^FQXJ?_^N75N_01SX -
M1],9C-+U #1\GEW]X==HS$^+']*O3H=_G<[__M4XP6Q.S[U3^&'M;]2OV.6O
ML?HM)B13XB]_3O./__EO/_RPD!Q,TF1\BF^Q_'#Q\;>W+V\C'8YF/^7AV4\7
MO_,3G)X2XOD39E\^X=]^G [//IWBY?<^3K"L17\YY0K*5#C_7I_VT\Z8/A*0
M23J/R.B[.*H*WB/&54_?'?/5LUC& N>GLQX1WWYVKWC'9S#L4\"W'MT#VOF#
MV!F>19ST"?7&<[_">0ER&6$:?QCAGW])X[.?YL">CFD%_A4^X/V@TH?1GS2R
MY$(N7MY_O_[CKT8FBH>C85TU7M&7%T^H8VV* ?^<X2AC_O&'8?[;CT.3#8:<
M7$8=M14N:%ZDT,7G#"X9,5B)IK,<WKQ^]^;5RV<G[Y\_>_>>_OWE^>OW[]Z\
M>//K\[<G[U_23[<2T/U/W4UR&Z)>%FE,LF2KM$A%A\2C4#87FX30T8HJTHWP
M]R?K7V%"&_U'G T3=%C>MQ'\S2$:LW#'?)8H<<4'Y85315KM((8,6J?LE T!
M3,(.E*R=V:[\/'WSRZ]OG__\_/6[E_]X_O(U??F\3VY6/;X)+_?.8XD31.6Y
MUQ%MYEJ9#,H$0"C<9.T!]5I.[IE1 SZ:O3CWCK4OIKJ_2DFY4D0.CENI91
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
MI&?#:0W,U'O]XG3>NG& 17B?$V<@LV"ZY,RB(>N]WN1'&J,X66A-3-C[D#U
M_[L'T[];)F^OM/7=K/<7LNR__ *3WW'V<D1XSN=+QPJT _0Q2QLT4SF00>YK
M8VN5@0692@@B65WT?2OY9D,^P%%"OUR-FPNZ_^N9)Y_&$W+/GHQ'>24ZQY,U
MGEX%;I2M@<3,0DR*%2T%_7](0HA.:G#O4$=%?[^"[?&(<X[N_62^(GYY,CP]
M70DNH389!3 5ZFVD.M;VH*E&B&0H4=CDH%NAVWTC'17IO8JUQS._.;CYO)]
M^AWS]6GD*I!$(2!Z8 :%8SH8Q8)0]&6.QB=A0[#=N.\ZXE'I0!,Q]]@T=P%R
MWCUF[=*4#!?&E,S08^V3A[&V=38L%%$[.I-#NGQ+]SH-N'.<X^*]/Y'>9MOL
MQ/:[\6><YS"N1:= 2.>\J_:NJ/9N9N#)Z"W6.VF<QZ)L)\+O'>JH..]7L+=I
MM[N9^N>C81I^@M.UZ$@?G14.F=?%,QTA,9_)\N19% @";<JJFXE_WU!'17N_
M@KU-N]OY0JB;*<N75SW,1;(*+K<V>R6!H9[?/9\*.1^@F$I@R$SEU2)M$F[9
M#.>Q*-$^:+JM57Y7K?HJH'*71!):+SA'QE5MP>-IIPL ED$*-D8G$C=-6I5V
M@_>8(U,-"&QQF]WJMV)ZU?]PY:NA2!Y1T1NH(=.KD0V#6@8+.D9/G[+M5&[:
MUPIV)]C]JV +XKNM9?VQUD+3>G@S%]EV 4N0144R[C0RK3SY<HHVA8P!$P2T
MUJ9#/:_8[[W%![,8/@SYAY)V>S7[)]<OYL]#G!"RCU]>X6<\G:>'::NEL8%>
MRU ;YAONR;JI[RL&D0)-.^8FQ8S=X#U4(NX#J<XZ!>Z/PI9K[-<GU;?Q7J2:
M=0';]#;D3= ^T%W(#6A?IUG-.'MP19,IF2#FQVV9''11T^,S.*9B#E)D@<EV
MZ4W\+2K8?1<@'YI^;4)52[UZ.?IT3O9LE8"XS%G-NOBH,[,6'=D?)K(H2F$R
M>^06!"WH;<V^VY@>T+_MG\UU>K,C%0T*[U=!DY>W#A4CDN:.11O(K8I:LN#*
MO#4X!F5<\:*-;[H>TV/3DFVHV--:HBZ@A2(1( B6C*=EU&3%P*C"7%)1H#0D
MD+8[TFU,CTU+MJ&B0?'Y5SOP5V)X,<'_/:^AE46W/XVJ&!^9B;%>^9$,\X(C
M4V@%\!*BYTV"K!VP???*^B2OI7ZM GCQ:G6!N&]'; GC@[M?_?#;P3;N@YP]
M>5S+4%51M&K2*NI )7(.K&8A([U4L4#-AXBE-*F_?##]Z>Y=/9CZ;,+)OASU
MJU7Y8@N&8GF4M/"GVC%>:R1#S3O+DE!&H5<QZK:>U1W@#L,LVHG5+@[Y+I2T
M+M!<"7C%=C\>W2QU^6TTCE.<?*[;_-SPJW=EC!+]%>QX&TIC1/V7+S62UE(E
MDW4@K Q<@N&Z! 0RK*.P'&1)6-95,O6'K:>EZFY+L@N@ZT,K@S+R+ 2S,DOR
M+HQF47EZHQ)F;Z6QD-N& WJ<3&][P>Z8GL)I.E_T97P[/CU],9[\ 9,\<(IS
MVC4C0^U*[5]7F%>I9N&!%=Z:P-NT,FT^LP?<A1[J;5B[;1V$]K2,*GZU./YS
M./MX:S+3F[.9OETZ,+_(P9@_:\"3]+0D<T:60;T86 OFG3?,:N0> L_2M#W4
M[7,VW_1KT(?6=3#E]JLR#5R&5?E+U\WV!D9ZD([7:S?1,^T]X01:3:0/625
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
MB;[E28?=Y.J ;KV*<7 *7?)*&J.%\L%'TI@(Z)&^$F7P-,[#9+=_B?1'G]=
MCAU*I5N,(0<DKY=V'M#9BV22DIH+JWP6<HLT]R^7OOEYR[;C?5])W/==#72Q
MZPC7+RI&C 8$9I6\UK1?U I'(4M:I*0**6_14X>W]N!//GCMU60"HP_ST]=?
MOMW]RC(@>U6O_=Y%^922M2LT,AI,8-HKSD!ESW*A+[VTO)0FM[H.A]Z+,[X/
M@K]NZC[SNBROXGPA/=8)^=MX\CO][6P070">G649;6$ZZ\!\!LL*E(+6"/HX
MGY5(GQC0B2R'X_%ZXTG!J9G1ZOQZGW'-__&?.)W=)GR)@;,>M-*%62Z0:5-O
M  0:D(PD8=K6HBMMLC%[',1/9A^+ 7T[T[2U#B=S\ LTRVC#Z\_S'UW#: !Y
MWA4E,EF-?UW+O/JL)$O6*!1.6>2EDV/UY*M^&!8UD'S?_O9J!?Y],K[Y/*T-
M(H:C7\E:'7]#?#/^?+/H[CC05@5=CX",,)QI;8 !RL)\O=<DA#-R/0ET"SFZ
MO>_'8D@#'?1XUW1!8EK(/M6+C;0U%QS.;B;XEKZE[_X>?:%5#O."SU/ZR3L<
M#<>3/V$$"\D-A$8OBT],@#:T[FFL-YDT$QFB-"+([+H=SAZ"XL>BU-'TU?=U
MU5V 7UU?_S4>/8!?K -N [ $F&B>%,VB,XZ99 5&5>@GW4K>'8[E)^D:ZJ['
M:[)S^*]&:8(DEI>X^/>KT8:SB9<W^'[\%K\,27Q;QCL=^)A-R8Z6Y@0T@71
M!D#6GD$=C:U32,5.#.P-TH]%Q--HLL=+N <+<3G1YE[T]-72\OPG#C]\I$%>
M?<$)3;CYAR_K!(7A9'$A*=9@;DR>6069Z5A[<.OB6> Y.0A2A="E7<;Q?-3]
MQOG#S(;GP*.^;SPOSI(Z#':Z;;2_?L5)JLO"J]%L,AQ-AVDQ*H!@1.*UTX*O
M?AHW#+SEK"0-JFY0"++3LMX,X@]#[#/2=(]WN^]&=<!<_<^YI75O+B:9A"V*
MH<BB]DX/#&Q,#*7CM*D9)V7'JM_] OL!N7HBK3:X6KXZGE@6W-X\NK_&2[-_
M/I#IO#K&_<]?C*>SO\:S_\+9LAKO_UI6\EN.>> B=TI"8ES'VGV%%]I&4F28
M$H90BC.FR?7THXSNA^'_^7*FQ9WZ9J-<V%[DH-PK72UHN (%>,&\)7-+NZ28
MS]$R*8-118$W7#^K*;)QF#_GROFPJ$5Y@5IG/U7_>_- EQ[[P!E;K$I$QEQS
MX  #BX[V0 /.&B63M;')I:%N\'XXDC;06HLB!IWFTGOX^@N.2&>S1</TA\,
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
M8P.F!WF?2Z^^7VZF));I=,[TA06VZ/YDA)"%DUVE@=96G\FN*@H8#[PVAK6
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
MYEH2(_%:G*18%C.Q)7!(X(2703<Y?#X;[CT1V3QWZNVBO[XCG*]&GR?C1-O
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
M(OQ0R#?_P_I3MQ0;^V+? VT>[W=?F(G&7/]1=+^H1@)0SL8F([([@9!YA_L
M_E#9DL,FP'<?NOP,9\TLG7FC&M-J-DR+>J24?MKNN$[PLTF;GZSZW_+:C>$[
M9-%[3\8=!+BOBUL%H9UL_DV@S;?E%.,S:@=^&&2X$23\9TR'@SM'W;00:>*M
M%,S/$S3T.5$5>;(V]D6),9M TW3,078/;67B$2QJC2@3CB@CA1_9,&LC0-I3
MJO(0(EA/)XL>1B4G*9HE%@^8V+/]I\\&IU[CK[[8[O%/[HK2-E7UW6?8SWG7
M=Z?\1HW]9G5 /.QPN'\#3==CFT3,Z(5V*"[9>N6,W_"YWO@[^-J5#_O[%0YX
M6WT4U=%!)X"4)K0DF?)R$ZB20PPISKG)30*O_GKK-M=%EKZ*TT-%X^P8F\#1
MQAU]+UK*_7/S1 ,)<3E>B5=GO/;?-\C>&P[@\[]@^WJ6[#<!P2N(^G9+F*!^
MP T_CI8W/N5"+>A)IE0S/V5%&#G49"DI//J01;$3TU'_URR9(33]C6XIJ;,1
MG^#_2MV5DN.A<DRCQ'N_98S0HC;/L,MG+,.Y?U*N$_UZ?>D0;38-L_WJ^4V@
M)_]> V.E0T_M:'7K$]HA&^>ZU^E>UW9-:A:&[F1_$$V!0\(<(/,H6#2S-")W
MKCT4_F*E$M47M%![BT!=OG\DY^(3X!'^H8H_[T9_<8L3I>R=_D0-HK?(<JU^
M^FR#7U*+,VW:P29!(8R.:<N7B6_-B3B8%:4M^Z%:N#?^C9%XT764"52 ^.D=
MXJ?V+6^#E&QL_1JQ!A,'!GL8=9EO+Z&ZZTOXN^6^8/19I]#U%K(B_G&*O,U6
M^.H>@/<1$<FQL ; 8P]<YO0Y4@LT(D?9#IE-')D-]Q/;8(9,"VDG=H16+#:8
M/SZ/W<XYQ4CIGE&8&%QTOTN>D(@Y9C<_'RKY7)=WOT(@DSCF!V]'3IBG]$_P
MX3^3&<ZD>_G;LP."7MD5_RK49Q0\8.7AT<T93F+I4;ZK)VLT;PI(1NXV/?PT
M[G[Z4]X-H/C)4)T*YL(09:3VT8]KE=>>N%:^"OZ&4JYZ+?:JXH"/6HP0)=;I
M#(\UWG41S?#D[IZ$MVO5(Y)>*TL*1G4X+*&A8]^;1?[=!.+&QRZ6_R5& ??*
M(L'?T_^R2,.]@':%0]*, E,_#2=WETH6Y-@,M^QZX:$NBI7X*7L[3T[6V[QJ
MC\J4T='):.WP[BD##?$$=#^:(^L B[HB%BE"UKF(GX;5N=D<,[9_@*KVEZ6U
M214'ZY$56/['P%1=W<>=G:%[#[O<V7]KJE%,VG1DNA8 ;=9<OLURI#3.(F?/
M(=ZQ)5\"^>#)"3..3'-[JUP3,WIX B4X W_.]YC:;U+X(MRK;D7RN^G>3<!G
MYD2<S&_3WPTW_@:Q'B,%+8%,J9MEV&X"DSR;@"\1TM9OGXV?W7%5HR'1L7[X
MUBGSNR9U;_?9^MB76_P[INE=>U-#MW[)><ZG&[C"P^7[XGF(+0!/87C)E&*P
M>A-(Q 3VC[.="CU0V.2L*-'Y<\V#*QH6?C6-UIJZ50V"?.5[7,Z^7^RAZD,'
MW%FIB/2Y8)LAV4\T9%*0Y<%M?'7-N)FL8EL:B$<Q,1W3V^=UGS39)^\,"HJK
MM1W?D7QE4O_?)>6M;(S&ESEB^T&.1!DL0D?,F(%,U8B?6,?4$#+(P068]B:!
M1$ISOU10^(1MQR%9^P^4A.^#PT>$LZ:*+>PB%69ZW^TUZSVMPXIB-7(K8#1B
M0F/R%5 "/TBN#2>$.4B.0SIV3H?^?)1]O:CX9RE#HZ'A IV6(I/KZB'U+=W1
MYF+TR^[H0[TI'*2>QMR$2F"1!42(3LCK+CL86F<Q6KF%K;*+^2/3Q(X5@*/%
M&$D;S=LQV7LEZSL-7C7+S/&V255.5CTHKZE3Y_Z26]>*=):VP$V DH85#L-.
MB$S23.^QW7"[A]3T*H@RT,U#<ITS,D[M%^WV/>9SJ4_IC,R2YW2]?W]<7 W@
M_E/<H@4+@\S$'G0MBB-51LGKGDW.[\Q/3&IQ8O39#H=-'SW#>W&Z+TC)?@\
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
M'IPP1D8JBR"'DVC.[CQ/D([,.J4RXN04I]I;5>%B.]&G\HN9#8L_0;[[ L+
MP@7LRQ&YZ'18/:N'2LK@*-TN5+]^\S5V[)C>=%H;F#QYE?6RI-R35 K@USC>
MB;!2,RSJ3@'OG>"?C0:]/VW#J$"]ELL)H,)B9HNY7FWJ.+V2;_WY.X8/\(?T
MC=A%7L768=C*NS>!P1+LF!]GASV%F(%38FM>Q ^AE8UG-6A8NB@MB)QL=<#V
M0Y#1\_M?38&&CU63%U+]X_R6S?[=;Q@$_6:&</+H#G"/,'GM^8#@^D-L'X&C
M&K4)[,$RR-S[7(U-X/2=.M!QA-.(Q-T">35G$Q#=!,91@YBUA?(S@K] CB*X
M"6B?A$(W 2_!)/(:/13[">3(Q':K2D&?$/>>@IBTV;B=)GKZ'A"Y4D75PVR]
M[[EL:R9?5?!GID[,+\+;[V)AI+%^:">!(^7.0N@?F9*A*C=DK _M+>L,22"B
MPKBV'K5O&(*Q.*,R&TF#YQ=M]\M1]+ZXGO#UV>>RW44I@E2/H120&5<7.%)!
ML/ \4\H!FBS^T:H&)<ZE[W9^9,L4)*SL+#RT[\;[_*]?A4KB-?FV59_0S!3J
M-<P'D(HEO,Z8[-D$!,B7$+_-"L$Z"ABJ%H/<3D0%>.ZT>Z2O0F\MX'/:B>ET
M_I(7[I166/<046LGM\J8/&;&TF$NT$UN>.O7G9*RVQ_A9"OD\>=4X'Q\*]'_
M.=GH;Y[A<7EMS=VLGMZ@J:#?#JR?W">M//@O&,8%<CRQ&M4=DF&%8I [^L<G
M>C')K8<<9"+RO[:K.'49DO*>!% NGG@T,ZT9M0KX[/VQ?;LA#V<(/[D);",C
MU!A9>6ZT185]-"C<E"R]YA$XVNF"5ZM[L^\W]F+%G1C/'E,!UN]='VX,6E\>
M5D22A/(O6$]&^O 3XNNR#M)$S_$(R97.?$G]I(HB2]?  2G^)?E%&;^,HP_;
M#!Y<2]-A@C!*@&&VE,D^ OE19^EOV>;X+^!VG ,M7<")BI4/\%1D%L33Y[L+
M=F9%61#W*KBF=)@1E22$-P%[0M&QM%G(D V+(,DC%-Y%5D(BYR NK)+^FHG3
MIQ%Y>HP?[RL+D2S]T[2=KO?2=K\*4'7_3R  IP;]/8JD: MYWM!ME)O-%=P$
MCK\%7>HX3\"V&>SJ0[T@^ ,<NPD4>T9C0LB44?3?([;O^MD/R7^T1LI7&V"4
M+Q1/48E"Z+,M8^78,+V,*9C8JCKUB=0E*A#EOQQB%*P<=_>K^IZ+>[[IIHQU
MQ+@SMM WXT+_^!PL_AX*8U^%V[$-X4F5'*72/I(]#1N_$1Z[5K7[7NFKYN==
MA_Y44N\M^VZ[%3 O]JX[NWF;I*0.#0'OFJ=KV(KXKR##*7@W"M*!JV@$!=<(
M&#HBEVP"RO8KW_R5\4,/X0;?^XF:DG,?IJJ?=?OWH74-SJ F0B C46I99[\
MV&;<XC6'D1N?FOAAI0>]"(^B7G@E\7+*6B:GM';=<>&E\>M:5_A/S1T7+%*/
MXC>!7G3I)E#]I!C\(>>\<8/BP /I4,&8-7(B9KOEGK(?;@*)7C*YA)* \\G\
M=3DM@3+J&<8\CN< )':0?D9AD/\>6R.SSAD[<+<M1F.,D+=ZB7]/AA#(2[-_
ML%PK_[ -Q,R"MW!H*)7I @OSO A"HY;V[7O"P!)JB1(1&:(^OEYEZA<G+7(\
M7V9Y'--03:FJ4>;7Q&/!MAS,ZH-9-#A.7B1OX 9^;7A"L:]P!BD3'=25+E&Z
M<MM<ZIM:/8S-UY9Z@EM.Q?*^7=47GK[_MZZR;CA==;M7RE$;GB+4?#DL9($(
MH HAR>E%[>8^M#H$;5OO!@67_[B\K8'?Y\@Y,Z8&[_M&A=V/>Q/?__G2[7\.
M^KDH^(3\F&6Y<]^ EV:AO6#;J8MP/U'N%DKEA_FK3#U""LYDCX'GI/N4S1<[
M_OD'3WR375V'=)O1!14=^9P$)/7+P;:"["#SS^5,$BP<3&NVOQRJ,36%TV1:
MK^0H7[UY,F"TO_W% 5'Q#SR17$C^"-1PPX<=C,2V/CG@AW=3+9.(8,L4*ZE&
MR7?>=KJO:&=/B!FM3KF_YT'WB+W(_/WB&R_;@)N/EX3"8>%QM@ 40M5/YH3L
MJRG![60()_SVB'+8M5!3=6_JO=?4Y(ED\VN'=* .[LM-( "5"C:LT$-IQ DE
MVJG?TU >#94\X7WONV[N"XTD>L6<UM,S/?/ML=7=.ANIW&@,I4A5%]%F&)%L
M>^NNB&=SM@E#M'.% DS]&)RS3^G.$_-?MS]HUTF2>UGQ9:I-S;&]V7S;45_R
M TRLVP@A 8\4L4ZWBD*/>B+-7>E1GF5PAD6<+^:^,0_W*T<,LJ9BH]'\. V&
M_KNOR0+IE%GQ"S_RSYVX=W1RXMW],M[683[V2'\*41QA\ 0J(0G>$;'@8/]6
MKLM<9B:S?*(I9G?=FWAJCM"AFQD=S,I%;5[(E?L8;\5QYT:#02LH7!CD\_(M
M*<5*.:+FDZ-RO.3"AP<]AVH+/CK9?C\^UW2BG=Q(3FBU&K#2P1UD(+ ?+7)R
M, "O^47/Q,-DZE+=VTX=8^^YUE$9SBY<Y$A%V$J&I_&H<7W:I"=4XU@XU7ZZ
M0VGJ?5^#YN-+:3>#V'>Y"9;\)(X.-QF_G;.?>1$E^X)*CB]4'?RC_?2LPCZ]
MM<F(IWRJ<88[#J,_C_80H9U'N$^13(D'^3"4DMEJO]B6_B1/9>BN#L>6\;U
ML)]VR%2I^;[^%6?V^FWF*X4;#R^?$>R7U"6:@&W\9$IU*Y)F,?_@A\KU4_>1
MPO3CK(P;$T9IZ$1JWZ-+V\?^V'MO L2D(P<=X?I#[_$A>MD;5D@MC"#/BQ)K
M-@%N\NHF\#/L$]X(;/N"9AP%(6^"RA9(/[()^* $(T%1CM,+WCD"ZN< ?J6]
MZ6E_YX_R==U7FM<$IQ-\Q_97'T_AV5A ,HH76FDC2V,H,60%O";.@FF26U?T
M:V;[8,A:,/;T8WO^^8JF@M@>W6L'?'PN'5DS6:\$E6=KS#BR^CV>O/^YW.:/
MO#KC?//771BDE+4+?I /V/A^0WQCT734:/SQ;Y9K[D&5&_"KJ\SDA]ELA:)M
M9'&0LM8_F=A%1K6B.&;<V!;12OL P8SY1J9<>J>D3%"JDIVDA85OSTSRLECU
M:TQ7@-Q;_+S+;Q]$V,8(5*<B2"<R0FAAG6?3=5R@RU9Y?CO9";0AQWS7Z'71
M*(&[*0."2$D4.((3&?@3DKP)J&("3IUN4SHSL'9*J2/_4(?V+HV6W._??Z!.
M7ZVT>F/"1;E0S3CR*Y5C%W%JW"<M!Y6+IMTB\CI&C7;?L=5[N_J$\X_^7Y?E
M3P!HA67@T&T>VX<Z9P'0OP#CD&ZBQ%8)[6BJ&W#(/W$IROW1<:TO;C0D"M_!
M==-(W9NM7TEMN<'HH&&7E.;N!KHW._";D)-Q$C5VC1,3'B>9,Y.O\$M!F.R]
M]SCA9PN-MJZ;M0=^W<\1YQ+7#BIB:J>@&H]"";O9^9[@0%+&C;3>AW-#92"
M!($FCI^TB*D?[48GLP8.#JZ!\9D!X5GQ%N=IO\\VY$HX7#G??1,S;?6 9PED
MX,HX*>0:!VZ<I?LF4!0@@T!1 7/P@PZW&%RZQ%B DX9U,##JP2:0Z<)"B//K
MQ%1P35R]10H6W]HQBYK!3X/\5I9C8_B)34 9ENA[%FBN5XV*\SP(]S:0C8[=
M"??LFC=X,UDCPKM;9LKO>Q%J&I6 ;4A(9<;"(CE,7M9."*0%J=C^ _DQ&AR&
M.4XL9Y>@X)N+?T>7NH]\_D&/T^T;4&#@?=3NE"W-LTT@+9;OD"6V!)+\[E?/
M3.S4\^I:O]^;4LX_4X(AFJN=L7+87R/V^[<B!R$]L2"9\@@M2Z;D@@P7](02
MZQ94-K>3]B^I52' ;2'1TE/-/Z/A\HWGO<74+P]33N[*\/]V]M/O[A.^9RM
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
M'SO6^LMS8+VV[YOV=U?ZTTB/*VCC9,M[-W\DS:+ MM)9QGF'>')5>!=:'N[
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
M[32T6!JG>]YMLB_"XEOIWD5Q9[]?JI3"QEV9V%5C>>WG4W+1*7%5374(J,R
M;AD\I.]&D4>@21(\M4/L%O2@6#<74Y'AJ#1*U/P*=Q] UH>$,E%EKFY%/G1M
M#U*QAGLI;__.T%<8D]^4_9VC_?DYJIV;W!0I^%'AHC&1*80[P7&+/QP(YF/U
M(;@.>E:Q(_7XT!6\MK>_5Y^>V*.$H;*W[U8;[3%[FGD;KMW-$_;?C(, \Y<%
M209B[VQE0=X5]%HX='@FOM-62#=C\>V +/)BGVS'A6IL1=N@TW/4G&RVYM.2
M3IL>@ZHS2ANL$]+S0S[;]?".N(L?X%[&0Q&TQG.^GFM+%7Q';4%>E$+>$\A]
M:U+ .3&<PP4[RA^_&2-K'#_8E8O9]2#9RF'#:D)\"?/OQK3[EO@0GC!X?#.#
MIT'0;V/-BJ'7\^1=VV\1[S5YEU-"*)OR$>VE0>C&\3=9FW=N?!L;.V!5[@(+
MA@0PM>YU4@2] M3)[:B0IKIH9$.^)VK^)_39SJ/5.NE6<B8BG4[74)^,>;)3
M@E,DK@7DF5=978(GS!E1KB6(8) (>*-ONM_QMCRU;TV*MW_KCOYCRG>6E6$.
M?0C<D_AUU+&%78MKN;7 1 FEDCM JR+6%/'D!@Z:=A 5D+3\0;""/+F#;?^-
M=X !;.:Y9YP^.+B(#@FNNVWC(C;HI+[7_K>1QP/G]@V G<%?2$3)[,TX %Q<
MC"_5#FL3J,6U-.WMXY'V"QSOV!+ &'8N9Y8-D#_SHAB$T8)6@1K;)AEME$LK
M<X5X;+Z65I*I8>\7M< NL4K&7EF;7]=[<X]_P'Q9AU&2!#+_FO@9S4AL ><2
MN"(L<!FY053&.KES-2N#E#NDO._O<\BR=)'[5%K0.;OSW5SY?O$4_HN*GZ("
MF>04/8#60-(8T!NRQTCOD]SWF?7U@<M:E@LO1'2EE&[,4S(52!Y@-](N)7!=
M><(F5TK8+C^64[+9H^6#ZAX#S?NQM]"IC4ZJWG)?&+0L\8E]B9R*_:"NL"T(
MGHS?"3;_UXB&&@O(VVY&<]:RO<*N@R27C)CC1K]\ QUN7CA_[<KAJZZ^S !7
M15C>6KU@L^\Z3 _/?TJ:SYVEKHE4D#&@34&+IB@KBJ=(<&+#X\O"7WS'G68E
MN7SG'7NW7=J0,1FFE&R0R7.<'/X1/2W[9L8!!IQLD/GX BP]5,5V2C3/]W<Z
M_KU,JV&P5DHJ(4^J6-N=W:-Q[VB#R7WRW>VQFVU&?HL+^]3)Z(&+T-"5LCD/
M:41*J4 BXDT7NF*\:5*3C4P2Z#M$O9H+\-YP)B.PJ&!/\H<HIYU:=[I'*=TG
M^GAJGFQ+AEL[ &H1D_8T[Z#Z39#I!-6P->/$HH;/@:\[V=WW5)8^9?7:H,?.
M[HT3L5-&TAA]8X=;B?6&Q/D>K@YV!-4T< /2*CS,^T&BQSN/T,L_(0".\<C:
M'5LOHW3&4>_:^PT?5#_!:H4[XY"KW$=>HH(&RAT? SD )F&%)&V#1@=R%N$A
ME,Z/V^;0PS,23^QW=B@OOH19'SF3K1I\ZI M]1L2,1>P?\!F6W$8(-VT^WPY
M^CZY\?A Y,'S-: 14>MG3$)BX-;.$[CZGR(9UY')2(H639DIS.<B\.O+;;>!
M)4LKK8 L?AOZ'14$VGU.5[UJ+5BL^QZN?<[FDS9L[R?!ORLO'GX#SB)8A_M
M VH;=(&H^5+Q=)T80V-&<,(I=42RK=)=]D^_A];&YTY%W<Z90IL$6ZM>3,O9
MMW .;OX-H-61ZC#W2)@R)X%$8Q!TXK2ATPRC[()U6'B8W'%V;.^-3S7$^T8%
MG(I*Q1#5PO1-WU QE_4T3 C]"&E_],BDQN BSJ-@?)92.'S2]E41)2#_45FY
MI*BVR[XC)B5U9PX<F8!9>^Y'*,PJY7R#O"SO'ZNEY"^^_59@=\OUWG68Q.VY
MGP+) I9BA$"*Q-4!R(>0EXU'?_?0J3SY_*G:KEB>;R"C]/9AS_IJM@+%AC(4
MZZ"??[$I25I5KNG4Y0O% M27EI)8D18H3D2NPVA-N2B6H[!?[%Y6'8%K69]1
M;G-C)#<O?N76H)=]>% 8JZ!+ZE[A7]W O3;IQ1NRU+%=,[KQ-B[H*6.)6;QQ
M5?6'NB2/P>=-B9-+QD8A.5Y#K0WK,*D[HUJ58IY_E[F'';@8K"?=F R, 0(I
M<U9<*TJIR9N5U,4)L!VL_:'+D/[(J87'AV]6N\?>L'FBJTAN^(\A-\O/\4YA
MK_J!%804_C.*=1W.A&CB1D.6.+-@"@HC;FW/8*!#*,/5\-2@'0O>H=3\;;!M
M5M^9DQQ^Q>;C"==[]F>?>8SOR+;.5)2U0X:&O$R!Z?U??@D $FW5$-T>&L$U
M!Z-N)!<Z/S/XT!)8Y_O0ZNB259#L^W58>9E?%T_E'\4=I'+MWH[;3N ,7JCC
M^(L&3$O\I8/UT=X\@W]P@4P"%-G"0=)_O:C$_F(4<)JL?PU%!+S<'(9A"#]6
MFXI;>YA\KPL(E<OP.:R2$70RYV;M&5BNHK#9^Z8*P?@S67XZDO:F(3A)H/LG
M,_29!OCFN1N-6SK^8</AT-M[OO4%:64/WF!)X9XI,X\\@3G#!+7%+ROQ.WD.
M+$2K\88YJGRS'MAV@@7)R1L&JL:13]&>C5Z&;YG?@GYF.6W7OSOQ;=,0H('Z
MG_:(2]=F^4_Q!WE(?K% ' SF)(*GS2>:5=GXG+R,A&NWP\[EQ'CJ]CSHC+:;
M$[US]6K;=HV[O)< >1"0X-E#."CESW8].U0SMKV*?3LCM7PFV^J^D2'5M:X^
M<^2@W8>Z#R?V?PDNLA/A0TQT _*7-*F:RL\&@7\W:I?YPF;%FYC8OK9)8<JO
M,6\CB;50H-CJC3WE;_6GY^HQ3Z61W*W=:>*'5.'BE>+O*UXB+U,I<#*Q*G>>
MR);GI+(%]3+$U]C#K9:4M.P^O>-+A88_6YNK7'9GF)WLL4DIR-(3_=4'6J $
M[A$L+0%YC2H@+JOU"_OE 9]G!6U$SE5ETAIA3A'ZBKS15@9,I3GQ9!=IB+8^
MQ=FLL3!QLE1)7ZC5PRQCIE1R[<:S9W]Y&0[\<MO^\UR@8B] ]OB= A]WXJA'
MOSHCSHEM=/=^9W)#BB7^/0NV8B:R"A%>\5>"%N+YX69AAW,GGO1+HM&J)UE@
MBPVD'7OI4O,GM^NF_371 [3HLW\F/ #0+%@@640#8HDP6S-!-U"#2,WI.0S>
M?C')<V$MMR]($$XD;C?WDM>^^,9+Q[EKSZ4GG I*!:A7-!]%QXPO<O3 5.XN
M;.FG=-QY^MBY@44C>8/ -XY'ACUMWV?\WN]W][.DTRV!*T#+1++<J,FD6@@)
M75N%NU\I-1]/.R>=8&^<0"D9:CU\&>.O0Q[GGABXD'1W-V'^T0'U:3M[!1&^
M&D"VQ6_%3CD+,Y)Q_OP*6\M0QW$&DKFC$$QE(%-W/,B)44?WJ )5_W[I_I8=
MG_USN21IH^I/S5I>C;#I*^FGH%D<HD[G6'V"I^&E7!_^&V;X6R (?H]S]BR[
M;0L2;AZ?HG=?_V6J!,3*82(M&T@I*%"WGD<<@<(A=X^F*L1URVIA0$0M[QI
M_H1:RD<1B)R]$%E;"ZVJF+])ND\%K=SHELEX9>A\:+S^W*T?:95CV(81QY$;
M!W[Z2>4'#QH^CT*YUUNL0!1DW HFN"_LL$1:2EH<&Q=\QD-.^%QM#>@@+>G/
M 1QX/B3QS9<0//6QJ1]PABY/EDA3JG@^MW5B%R$.6;6 RT$T/!OXC0Z533RA
M8N944;P?EK)"&@_FQ+(@R.+NY#GQ7]IN1[M[A3Z38T7RN3U7Z4>R]^S9D1"Q
M4I@3J.'\T?NGAT8>;#5)( U)D <:O,WKL'?X^G58$=^QV4ZH@Y$_>YIE@#%W
MXCKL^*#G)$33[1?C\%J@%!1<[H+BK.F.!K\ZJWLLD[!<BX@7WCNLXO^B$B+W
MZ[?XI;WYJ1'WJ>(NB;:B>@%12207'TO9UJSK9_+"YK[9;-6U&1/D/CM-K?]E
M[=U@3;-B.DFP!:(166^XD+@8)='[^(ABSW\'[3;:E\SE74IZ[??GUO +Z5=/
MG\ /_OCQY856HO:I+PM=">XBVL]@BFQ;(A>CVT4%C3=6S)]F%76=[J%#MX(4
MJWT:P5"PBOQ[.V?:_V/SH"'S[6\/ZXM9E!^3=C*'S'OBD@Z)(FGOJ<I-'F]Y
M&BP43SZ55G_O>&X[DI+=$4KK.<"<B*8$)\6N-BR\JF]PN*AI2N5K:3U\#A?N
M<D4)^FSEH?>76&/.?7XS$$*$'[=-X+I)]6WDV58WIEZF1+5Q10P?%F:*J\;Z
M/N;]Z=QF^=9D]PQZ-8>MF<E>%$B<%^XUO!\8H,T*;$%=MH;YQ\Y.KZ+WE1^D
M-1[U]8E]*AF=8;M.F .G\9N@\\B,XO:Q K)9TQ"J*Y(X_?UFTE(G$ML<^_^1
M4M4N6@R?K=SN_"+%?.#02_UB]^?G1% 9 .L&@2?;S>5L'^*I<B]B@Z>ZVJG)
M'-L#S;>5.YMUP:(RWS"K!VI/+.8N/^C;6*->D#6L>O*P@2)7Q_)<,0PQ(#[_
MBNN$%><T\_-M9+DG>'L__#5#:F"OC)RM.KP]N/ZONW+]]?U_=V;C3EC;7+;V
M?.Y)Q_!4 >BF1-V4>/IL2 BE=N7-6 H4GO).TE2*LG,'R[6E@,MW_LGZU43
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
MK&3N\__#WGM'-?UM^Z)!1'J17I2HH"!5E"8M(@(B B*]JS3I'8*$1$%ZB8"
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
M+2SP@L-^SIGIK&DTG8A?:K;-K@>.X=_>*XP",;> ,T,]J&HJ0$C3'0^:P/+
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
MTEH&+VS[O4(*T;<">)8+QUC2K'^<%_.L4JD\F?CB]CG@2>JW3,Y)3;0<AQ+
M8-";81BT89HE=K*' HC/DGFVX,,Z19Q4FKN+<@\QVTZ0"OX\,'QW[0UMUIX#
M7K:!R!G9124;)^GP(9BT!</<H)P0G/-(8,)&C2.CZYB45YG@J&DZ'V ?5J]D
ME#';.,1S)'3L6 5%4()PX3^R;S$&B"5 0K"G^@V\5&]C4=WL O;X2..1LN\/
MW]9X?!20YGGFM<64W_>QH<9ILF6 1>E*:VN7OJC_90M=VVCZ" 9U;4#HL0\J
M"Z(*?HW C ?B/C=A@]X("T] SUKC$RS'7=^$FI_W.IF9ZP%CC!IQAI!&A6A'
M4-=A\V.PJ=4>E?HX*E4@,_DM#9Q8,G*8IEU4Z.Y]_JXUM@S^OC,D1*U!DMR5
MR><%_%@CZJL)<OP!:^>&/>2C$F&^PE\:"B-MPAY/2M>MA]JW^!852UT7F/N+
M8')3M8U%EAF*O@+EHYXLIMZ)R9+K,%:\1V<;*V8?_AQR_NV4F[5AINO9]Z_?
MNTT4T[46MKAS*N<E 2R'3>G,[@$  /$36\=A%,$.3V'+YW)!%$ 5UQT*8#C)
M?NT?+\;OT3<9:__;,Z/_/R>:)"Q7[QP_WFK>SF$1E*1 XU'X. O2D#F:FR=_
MOXMF-OD*_?W;M.50.7S(W6.K,#I94D._.ZO453#"_!I:17%Y)/!#U8N"1.@V
M#\/'GE7)7.NVXT #L]#Q.5MKV&;F_);^"DSR/C;L%HE^KK[.!\EU1>-%[DJK
M+)D!31"G #IR\1?%>HUXW=H<8M4"./5<1!UR9_3IY60;LF!/PBV^;$L>\3U_
MR,Y*U$!VU:57@>OZ--7'[$=^!Z^&"R:"7I&#EIC2L))==\Y<TT0S/H>.--M<
MEUY:1WYN*KI,Y;(X,VYCAR'=W_?^JSWSCSJ3\>WT!2@-!? RXOB"H\M D@+0
M40"$%?[5X4+_ZN2'JN7K03%#!RD >H6=1'O9%^%IVE5N]UD)UBL!N]TG$#MJ
M4:9/O/OF!3=+][C(S)&$.[;XA$7A%,)5<,A]"B .^HS)W?Y<LN*B_IKIH5P#
M*2"J 7Z$Q_'@(#0=HTMLXOF9J 6B&?"Q[N)AZP6$KBC$*-;6@HUUP?HP@BS6
M:1#RI@UH6I=F9VJUZ%#MT$X!",#:;\(\)\<USO=?'"^<R[_T<<FF_47>]]N,
M44:8G4<OWM(OFZ1T6&Q=+"\O3RH+5C0?[F21>Q[-_T(B[]G3MVP VJ>2*TC\
MQ9#-*O;-)8+"U,;T<JP1)WY$N<[@X>LKF([^; _''YY)"1Q/U"I4F8Y<6BD
M7G %XC06.%Z9]="W=&I4WTO^96::VT72]RZ,FLB"Q!NE3IAU]T9\-\C-N'5_
M0LZGR: A/+3P7%Z\Y.[H_KU_=7W^GZ4_5^O_,TE.0Q1/ 72BF<A #P?.%HN
M9;<FWM<*^TL_G0H>6Y:LEIYYP/;SV1Q*B )P1M& X3@<J7EKGUUH)CM6P2O8
M"]:ME7%[<PDFEX?3N:3,-_KDR.([&F-# 4SSD3G0D=.@S<-WZ*TVK->WEO%A
MH?3*A@=F1F]3PPN$%^FY*0#\!>#F'@7 8-0>;H-[.BD5C,9W;&Q.FZCL9H4W
M\TBIJ_4U_ SA>+?C\.T,]??YE:*5YRYDI&.-IHRW,THV5@=D%1@00[9NU,F\
M&J\L<R:Y$7(!5]>LE%]SZ*_5-ZC[0Z(D_C0WX!2 ME":VV+OD,3TGZHR+?X:
M"WD B2FOY0!G2OI 9H%..]0<1*/<=J9VNM+<Y]BQSF4UOPXF%3FG/R]>_AEA
M]OB]69!3QF6.GP_2OZ06<$V"T3UMG'BO^5F;12"\1=NMX/$3WAP%<E4)^JM(
MQ. $]U5]^42PF:GYHS":&X(O+;X@,'=D\1(['2B\I%$GXBS$"G\=LV?Q+5"6
M'K\-8[<R*OLAHE]RZT6W? C4^ME/>CW30Z<JDQ=Z%1NX>1**S$#NT!#$;%(
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
MMKKMM65\6B^E^@8MK3(P'1 &(UXZCK?U=@QX, [$O,([DB/OP=!F 015(PH
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
MO+_T:S=[U::.NZ-->H>N$1'1&%F!U^:FQ;.2S:WV?:+9/KIY=@+[/,98I;A
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
MQ)\8ZLEH$\:/8XKN8;W?%:\UK60&(JO)%]MR'6H<NK";5M^*@W/4!M;YE<:
M&%,?O(1#)_J[+)FQJ)@\2V;.ZN_B],@RB(?(-:3#4TK1[J=]JATCF&]5\7X,
M.LF;S >(T'S+7BZ.'$1-40= OQ0")<4$RB:#:A%;[%@9V+1%[]SIA*[[$(M:
M+*[(V6_!Z_XVC9^/E[.;CXIUNX>[W06/H(3^ER+;_ _X2JF; #VLW8!X;-O,
M3\I0*.?#1=37U^/;,6E=/@L^<<;6/57E/]<:M: B]B)[S_U+Q3L.Z_=XS&Z6
M #36_MH'B<I&TS9+O=$@%T3$DX,>$'<ZN+;TII<T\T+%=O9R--V!JP3CV5,V
M;Q4.Q0AGB8S8$"*W"*ZI<:Q-=-;6SM(@]%+#4K@F__M?":M]YD#?SS]UWIXI
M\1;9MBB$M3NA/.CQK=AD]JF-]B?/,F]BG-L%X2^F;%I-DRJ4-WX6RR4O3#NX
M$QR/MT8QL<UR@LK4E,>1;T*WO>A4,3C]-13\!KE=;E1[VU?W8/JFL@+I=#JL
MIQPS9_6R]0<4="=\@=D.)"DV2 &TBE^J!;VI\<%/MUWLE8*W9BYO[ZL:AM38
MAWBDP(*ON:U[@R7)C%,$3CS]PV_'$(5ML&^X[I6#\?5]"N".F^0X46$>S0"^
M.KHIS(YYGUVH^50M2;%'F0MX"V">SH/7454>V%."N%P(@O5>U]_S).W0ICD=
M6M>SLQMFXL_SD_6H1[V]W]H_'OY 4>K*-($]0/%")]K.?"/Z8:*GNXDV"SM7
M&:4KMF^!?*HAE4EVT;-KY[Y$2S1FW*U4II_W.7'LQ[?!@L@UT\T\7YJ=XW,S
M6DP*(KT8II/5$30DS7G]T_TG?;0RL!8/7%N5&@QS;$G>[<"FOP",LV<9#9J]
MZH-R+K$JZ$/L #YM/9R*9MCTV*_@Q-ZQ4C0^DZG8H<43:5'KU/IKMJ%PA\]E
M1J]@4D]D5U@64R(PX2>U(]YCQ)@8W))'FK*Z6%Y^,3#52Q%AV1"PM#/52V9V
MQ>CWKK"S$Z&8GV26,013D*K7I'5@TJCHA[V'?9MF8VSZ\03)#ONK&#B\EE_-
M9-Z':^VHYW5@<_G.[_ZN7 'ZFG?G)KN M9G$T[0+R+BECUC@YOCB(?%Z>%V.
M/*O=]$J/SF;<Y:^5))NOPI^.+?&-@-/Y7; J^BV1H'F'^,M^1?@P\S;R%RP4
M$=0^6N'HG^"OZ\CE;=%KZK)^<W+8L9$OHG'T<I>++?"^7[E>@#Z[9,.:T.S[
MD>#:(MZMLS*0%7JX,CHB *)AU6.Z(*'@(.5WVDW6RKJO8+IUB?%BJ(<C[DZ\
MYS4M/R9;FR_5NA>B=74^/PBEPAF34HPZ_-?9?W]#UA9*7>N1Y-D)4)5LI+Q'
M^;6.B:.=6#7-(*DGT)P \,/;[Y*NB>[4Z3T0R+^'DME:71$R"&=U2$ UB'4C
M.* SJ/K?1\#.%24<:MH7[]%Q6H0S->^+R<!)&$MJ;:KW9N)'0MU12)2M2-1B
MQ06?LT(+C[4'"V?T?B?:&%CO6" [>:%VBT/\C_!&,9R?[GPOV;U7Y)1MYRR:
MY3855FH4;RQ/O@!K-T=Y(Y.R8G#T42V634RS59:!0Z?6;"[Y/Z%+:>G;(V_
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
M8DJ$RMA*,H1U7(+Y ?FH_<(X6R-ARTF[;BM-X9$*J*3GX9)9FDEU53SZJ:Q
M ;:M'NRKY_[4X7JO\OU=1NM=ZV[4S&3["8 1Z(V(1E:%)!BUEF-[4BX0LVA
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
M-?FI^X-):U1O^(P/;ZOMWNKX;-&[PD^IFO2=FE*]& E+= YJOO<Q93XD7;$
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
M];?E\1)T_T8Z_O_JROPWJEF !U,M7MO1>J;Z>84S&?]Z12Y=#_)_RH8Q+*A
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
MI["$1F+CW^T0B=-?P.R8<[%0A6MCT($E%L8Y?[&6^+O9[[54V$I>1EZ<M@#
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
MVT&93"G MES!RQFUU/W>]4-6M_@4Z!>UEA9R<DL4EO;JJ;NH<M&5O"7=!K'
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
M[9;ODI_7K/UO[+UG7%/=NRT:"Z(BHA110*+2% 140*0EEI<N1'HGK])!0'J
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
MY[]A%JI+&S@$W!D1Z!E79[1!_R%JLYGG0D28"$\D2;I0T(*Z21K2["RI&O,
MAW9R'P*HY&9F9><JMO(FA_@T5[-^%QH;X,W[CKD:1E_;GMINQW!\#_Q.*-?Q
M3EC1JRUAH,N,JGMQA1%X^C)?T?6Z0!KV ^K1O_L$7V$<A,@(T!4KKO4NM"31
M3,Z\^_Z[$"TF:0\8+Y6-:>CPJ<^.*OMMM]5)+M8(UI%9&^HH*1C/R];.<A3A
M@G*8#!;S7Y*)Q?V+Z_\D%X&X27?#9.H*;6?P"/.G5NW34A0#IEJ$GF_M3.47
M:K!NAL7(1HI@L.^T2/66<,[.L1I,%MR,X,D#=R)GFE9=Z'U4@X*4LT<EU@F/
M_^A2K/[(M^\9"Y(T(AT";D9PR:(JNTM!Q-,N/O*3BT9)IL42.7;UBY\'M#%.
MUSJRG"R&O^Z[/+)0:S2CTV3?V:E3._(GH2IK5;(^SS>TM#QF%&-Y^H7>WM^[
MM(?19%%\T 58W?.[C5?JJFH\0%W!_G;/0H[TCM)/*=S]0 -1+X#/M&6[5L4I
M] OF#E][FQ/>9^T_H7*4:SF=0+>@R5-C]*=]\'H/U1Y>_1EJK7F=<IQ>O(_*
M11B]+-QY3]IC@_!%YPD-ODY(6IG-JKR[ZU6KXZ&]LD%S+HG&59JJBJ0;OPCS
MM:^ .&-!LT@I-2OFN3A6'&# ).D"Y#\,4CT00IYM@T0,<<KH=G4YZ+/ETE52
M@>N10EQ[6B5U#QCY&XGGJ1DMUP\!,^GMAECJO!-XKQ^#^8E(A!^)+]B%$_A>
M*(PFQ&DIJ>M6R_.D]CZ)3&MY@S_3F[[\<41KQV6<T0>I*1_$_L,=4?^84T\B
MG2$1WBM]\(GD5H\8=%E#86#<^NWD0P"N\"4YC\A#B(-5HL(_,7NJ/8Y'!^C/
MKPT@SX:LK=Y#X[!GOKO)Q(O?^T5P$(,-?1S1!EN!S)&3&[)EP4(PD$ /V2]0
M+2/4JL89VT,O"0+&R# OPVX<(;-'E=B]C2VNM2G_.4/3O!*<>7IA$W&;+ALF
MY>2&Z0T&WI-D8M"#-;,GZ6?(?7'B ED5MLTSIE-[_!_3[/M>1";N/D<H3%L@
MNA$G(SF#"UV-W@V?.L_+U$6/8A5;R.A!J?C$M@4+]YL7+D"/8<B5L[/E+CNN
M"2C'/36+O^^9R>S=5L@U=$/88+FVE01GXP6N=*[,\#6"XNY^:]GA8+BAAYF2
ML&JCU*ZA93=UNW#=P,OO:0YOEE>B*;JR+]$<122K%J(<%R%]X]'!B6,[A;5Q
MN&;T:V5=-\N&]KB/EOE-M34P_%2(HN+-D!KQJM1(H):'*&/&K_7%)^W-7=_A
MU-0:_7 6DMX52R=5\5B#SG<< H(]V[JV5'5:\-5MG@(_J^^L\ \>&PS1>/B2
MRV!)Z-U.C[\M/^.]T#UTN\ 6\;+[.CNT\!OS$;E$A)!'YZW#(R/J>\#XB# _
M@E3N3ZN:;7=7KOPI51SNRPA[N=DK6"%EA%'0*#7[ ?B0?+DMZKNH>A[LV4^<
MQ(!-@-Z^0G -^T!&"[V:NS0PY^M\H2UQ)+5V%F$^CM7NU-Y5*E6U21N)%.,M
MP-$*H0W,-T /5V$!*IA4K:<X,8IU^S3Y;MO:=C4& $=6M'J 1I9L)?^L8SL
MSTRQ]%YLY0>+H4VDPR,IF9!CVJ6086ZII<TSB'9@I5E;QD#1&D*@MD)NOGM8
MU2#(SH>Y5;6")4_L]IU@Z8";ZZ9'%%N!T67U>9M6OT<?F"").:\W#@&-; A6
MSO_QMW?WS1>_E UR]96O-TO>UNT03=@'WC;,U1GRR9_T+!S)G&V%3!Z;.]MP
MZSLI-92NQ]:BG>8A4_^R1"4A5*-C[^=>20:^K^WBS(2:3[- __?R=Z]2V)*3
MS?=, :'%^\#FNA!^YJERFK++>\4M:IB!"&9B5^$)<G/8Q<8_D29 !Y"F,]_"
M(,VI M9; $YB5:%*!RX_>5KPMS'J.0%[DLSQHU[<[SVR2$C::O52)O!.DNQ%
MX]2]),0E4%FTJQF<G+S1F"A%4,*OA)A= KJIKS@5VJ;.#FTX5\_)\M.5R<TX
M1P65.ND'WT!M/O '_CL:OP\!D(8F0BT+)_YYRF*XJ&$DB39AK@C=GR9^>JK'
M&IV?M5R;_T#>?C7V5FM>XE*; \QS'M6&C@S6S[C#2F(0;(YK*ILC"QX?>YS5
M J]WU 0?#:W7YR'WW?Y9KM[2> W/+(BVU&@HUOD\KCTYS5)R6=)##9L=;I?O
MS0CEOLG>+?IJ36)"*^KKZ%F->?W8?X\)RC8#X[..4_ORM&4C-G*KAZ4! BDQ
MB"R;Z4^' !>YSJS>&J.US%?C9CL]DA6%@W$ZWH:QR4/Z*WGE>LY#&_#7V=>K
MTLO_>"?]<Z;Z-*PJB^^1[+31?3)<\BGT9%>7R,Q=/DTCJVGEL==T?^HW53W8
MS(5^#RS!ZODA8(5'RLOKRAYSCK@:N(/I4WU"!DJ1AB+RWC^3EARL=QYJK)38
MS\<%-L:H;][+6UW8UWL^RZ)Z6L7V--GMD#.0*"Q/JF6"F\U9MQ@]:=Y-MY@$
M2Y/+%ELO"HG[: @[6:*U[R+]K]&^EME7RGQ+>8'BIE9=USFJE+D_)&L&"@+\
M<2<:\O"SZV.*Q"..62+DWH*0/"H$=O?N!??%KL*7R-$Z8<,SL=>/R=P9/^8"
M?DCEP>->(2[^+L1O JB6?3H5UA[QHS<OG61*V&VKL&84.H@>V3)[T@<DB6N)
MA3_(:'WV54S25[2ATV!&M7]2;T3%NYUY"&!!Y)[<XZWXTQD_'-Q2.#3%ZD)8
M[\%F5E=D$1DZ2](37,.A6L'"< V[J8"J-[F/+_W:;2W?8O_^>+D\^L"N&<W&
M!%(%-?6.-1WHNHQZ;7VSU'G"PYB/-\]:6$A?_8U9_2O!5+/]_7_$_7_@_EWV
M\7^[)/_;1.B?;)+_YS;4ZE<7:,_!&Q])[)'^#TK#6P0YA:KR?X9E&Y,;X_"<
M,D.68R+5**L1HB]UOG:8>]KB;XM%$Z[KL2JOS^C_6#]QQ\WPWU[W_->E"?=T
M2%C (:#S@2KR$/!,G 6RV0(OU0;_4P<5YYCRS*%9 -8I3G66_HR:E^M<O+@9
MWVE![RJ(_&K5+F FC-?"I.4< D*7$5U>L"QW6>8Y+@'M+R+ND281G9-WA(F+
M\JN=C9$JV/'+4BM;\6<(10=AF)=-PP5LE*3GZ&Q_O7VI\L7M> 6\:FCMI_=V
M+D,9-!DSMQ&I[QA%^Y!"=?C:')(JV;<N.Q_Z%M/N,.@$1\Q;#VZX5S'LK[,8
M.FZ5:Z*0>=J!!H*?H.K#;4@T7!!7[.ZTNJ4TN\Z GW/)DY^ [L2*Q_#\(9$K
M^/?T[!HS2.CWJL!P59X?(W':=6+7=:0V7:2D)QL2ADWNS;Z^FCK<7N1WPRBT
MSBO3?JSC[@9%9\Q3UWJ*47,(\$ "F.V((S2;V<0":KE1>&1DO:KHTJ.AO@RA
M',F@K"*-D0VS;<4YV1_0"7[F:2_:PUEJ7IOR;O=;;>]R6&&;V>TEP8N0Z0@Q
M?("[H-V;%X!+]Y[H 8\@CC)9J<T(-7'A$- &NC%68A^JFYS19BM9@[KUJQFQ
M?EN6H\YY4DCW):"C.=1M=W,NM4DV$EP^UI+!%8[E\.7]-KC.LR;=FB>XE$Q.
M?1?58;<.  # 3NWSWBBVK<A7/[Z/]A1JSF:M)@2-0S=C;<O\,T=JGB&D0IN<
MA.\Z<0!1AME)!JD;*^NKE;G3C2O:+GRP![/IFM(T)40;NCQOO3RO"'D:?NQX
MT!N4 RY*X8PUM*_]K,/3K6/3(B?1ZV-?!]21(+OM,_XNT2D2ETQ-)'4#M:MF
M>Y@V7+^?8V5^.)B;X[_Y9NMG^L<::L-3"0?AO ;63L[_J5VJ>BGF^+@OZ>I_
M&:0XW@,$)5JCWC0JT55),[]3316'9.EEWX2=F&IOL<4PBTT>TN:9IXVE&<]6
M^B,UE:[/TF_4=>R+C@]%-!%*$Q<_L4LL8 LOA_,1TO>(8(SU1DQ+(["ZTC94
M-_5.]=@Q **R1Y< C9D]GW.K*?"K;;:0O*FSZ=7=DT>9?E13KYVLN2 ^9F'"
MD^+X(B:?_MG;GJ.ZZ(TO?=F?FO9CL_NBDEQP/=-, 83$0*GUI/ZFD.+)]<BS
M7^>209&#:.@];!,V1EE9)I<]LH2O-'-B*EL+&UJ%E+Q"324'-Y7%!$]#GT3%
MJW[0Y]ZG,.;Z%FVM00G?B[)T&4[X=5-N61>+!N$)XW!@$[9_G)0D=0BH(7QB
MX:E-)BJ[H*R'][S\4&=^])U>XDOV&LRI1$HJ>>V7H$/94(+=CQISJRLA'.?1
M0Q.EAF,$7%M@:[@?ISK'BU[_^WF3]QY0S4R?[J#QF9HRP C2Q5A_<3>MZ_?&
M*?[+B6ZT;VZT5L,YNK7G31NMH= U5OI-H(VO'^2U]T6DZZW^@A#,%Y[]<JJ*
MR_UK[^9'5)="PV=JXGVR$-"EOS(FN*(=\N[Z,ZS!,$)AP1*RWE R92%?BWLC
M3<R3HGU_^KKS" N3R[[3Y<PMQYK ;V;.H8D3?AE34;VFR[I)J4"2,'"+;QG#
M1_?[R0+D1\KX$KAHI4ZJ8D4H<S?7I-!C?Z5E1+J2V8KOUMSX1JW30RH4,>2A
M84[].V9]0?PXSS>V_!GKEA]^UIOW"G-JB#0@YZSO(FJ*L517O6!FN!68QMS=
ML0@8#&NFFP(S^)6_!\5HGAI,=-D=%>J<J0H95'(E(;Q.39R^8S,$+4:Y?*ZW
M8@HDVAX"/IGVL5"OP1463/DX)/'V$0')I>MQBN"FN0TX*&@"O@+K4$A +181
MH^;WFS,U*#YYAK?W.]J[1BKJ>X,RI;(,PU++L-EZC#$UT^@.TG)\O0BAE;WE
M@-'0<AXM"AIG'Q$\ Y;$%K@&^:,<#R(*0_@J3H("'=]*HEK'UGY9S]_ _0UJ
MB&A]Z.N.@/7*7+!JM-]_7KL*,_ID^P'J=*]2ID>%T;ICE@*;I"0//=_[1;V&
M(QKZTAPZDV.#OY*LR+AYZZ-N0'ZZIY]X]5.?HNDR(?F4!\T2M"OB@(/3=*DW
MS'?TRTE+'+(=+L;=;E"3![8WI(DJ(/_J/=YL]P54=A/I"ZA!UBTJ(1>XZ;GG
MN[^V$"*F#B? [<B8^X< 5#'$.M(36O47D84J1S[/SZ-;:1FGY%?H&E[7B"[<
M,_)ON1Q-C@,1E7/@7$]V?/;U>>]U$\DW*NKM%SPKIPACF!LCS-SY+YOZ10*[
MR(5#@-P(Z#K<8X#.C<EQGI3U>_SWQ^>X([O>RFB*)NC[YB)(F(2);Y2C1N@]
M)!"TCSRE%#^<0VQ<9?0K.PUH_E8JL7M(QOR8OD/&,*_33;^5A5[B2G-PW?3R
MD3K6F1QNG:?FTU<=M.('I5Z?7=^<ZY%W$68C]9;GB]Z(@1'7!V=X=ETNWNK8
M_):U2UC,O(Q#J-FM+ M9+[[N_+Q?\/391-*8MMJ'])F<5#D]VKWF.X;*4G9;
M,P(YO_]V5^[3UEO'EG3I$\LGZ#RDQ*9&=N-T'(2?WU6IH>8(&KQ.@;2@?0SI
M]ZGEI#&\320EM556P-S%(%E<OB8S,(&+(G(IX,_*/?0<7?_/P1IX(#5.RD7X
MS"VJZZ#CN)"R89H,6NU(6H3/1G1$.1/(;(-68-HS6/1<JUXS#Y+;XCNY- *'
MJ+S)W?OE(R7D>Q, JF08)-A?DN6<$PGM))&R=50T3HFM$NM"K.I"+,CO8_5%
M^$V&BR5N@(H.$F:9I\_39'H7'<C)ZU>$/!(UOE^AT?/U7"V84\BR-O)18,PM
M&>1R548 D!E^#G,-2-*9%IK0*"9_7G3ZI3HJ() D/7NLYSA7>_DF>"XY*/T8
MA2ONF_;*,BPD<5]_9.T]\,$$W9C*1MZ:@!Z%(0G"J076?><3!&%.K9W&(3NF
M@ 2U.B=5Q_K&2W 3DBXNYQ9C@3/2]J^ )XETU&_-? R .D[CASLRT-($<GMJ
M"*,X;^);BIZ9QMF$7[69D7ZTG\J7Y]YR&=[K@Y V*9U59$H8^\M&4.<%RI3[
M(-SRW58>+54G.UF5Z[;&@Z8K6R-4S3C0Q6??,1RZH)_0\IX7B%TE34T#]6UO
M17K'VHF=.J\@[<J=3'#F(S;%B-8UC2]QH-2UE=G-WR&5>"2/BZWLP)6QBL#J
MECM;>9LB ::7HPK\BI'J)&(:=DQ!2_HI$"?_TOZ RVA=:@ES$JY!AH1>^1[3
MHISCQD<X:NZ>K/975*#1N_ZMDVK48FG!'V >Q W;.%/8AIBV\JI [&MQ\+A$
M@EJ2 'U-YN#QTGB5R2/9KCM!WV,GIBJO)!K/BZXO.@1.%L8\>=*0N5.S.H(7
MX)72*79=E5<&%?L3MT<9\9NLN)A)=I(=KQ?)KEP27*JI%9<78233<*M>.PI3
M,'[<!#]JYUV!"X_[NQ<R[M9T4O6G7>'(3_0VKUK%]0Y\8<@=K<J&9P3"AA8I
MH>6UEM6PK!B6I^\C1F7$%R5(YR$_LU:_'=<D/K-RY+9UW@M-I)\JZN>H OP!
MN:4ELSDEL/V]\TC7VH1<N-@%TL%*D:>+6T7>O3Z\CV'E5R7HV:6*+$'9#!.[
MK][8ACWF&ZM@\P.-Z$6F -QPH/&:"S6JN(&NFY%QUT.3ILM89-K0G/)%CR2X
M'11>[=M"B'>Z.%HX.)C&J<,Z$#>*AZSNU<GON"ZW$5Z,D/RF!08J4N_G;\I*
MR]/,&AIKXB\^LQG4E0HW$<[)2OX)ZYK/"U65J)V86*-I$&%;-W_QL3/R?H//
MH%VWP.>H.-SLQ<J<H2NAVGP9=P_\\D&6R(J9QO5IM7"$)FY&E80^I?BJ"SA6
MN@4OS=7>%I/X;)1DI#VKK[6MUW"SVG;)HL5\*F!3"K&1/M)IZ;* 7EJ/QQ+
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
MKNA8YEUGTUI[Y<AHN+^GG?DAH'^>]O2[(W = +E</C0\#":M080/ 0/& X<
MTFG+7Z0 .G>WS*<E^GUJ8>.(%J,=95>E>?D0$'CU*G(S!=/N-:N.X"R,:^2X
M%/4I(E$_ET],3+126[NP$%1N G3S"-ZA]@D7,+<R'10JBMW@V$Y<+#6&DC=Z
M)@X8I@KV],A6D:EDXP&7GV3.@7KJ!6)T!L"LO!/WCM-.JX+LG^=6_=RP=?"1
MZU=DQ.WD6"X'0N,<U9,FRNP[!'# :^AJI*U!PH;J^7S7;**1!Y-TQYX5ZB^D
M@^X#SAR!UKQ 'R7E'9MC%B?@[;35%I*79<EZ,X;[=3)O@"IQW5XU<?KPOZ:P
M8K^K-)?/,6)8(U@,VZBANH?(!/8LE3YO9-'Q6[O%[B(4=D91(L>%2,^_!</J
M;*..[&[]&ONMQK>KX#R(.:OSSM FO9:N+W9#?5J. #[#$EXR"+$9HB<_7'/
M=U?-M/V41QKRQ/E8IL)OQ"46LX'218<H'03,9;?:1(Q)U59QMF?^!''_%N:+
M<_%Q+^P9I--FV"P[WF .>'3<HI>?$[&R-%5=X@"OXOIX)=C,X9_6#&._KAH,
MG],X*1(JM029<&*>VL0? @08V>W(X_/5@WZ.77W90F*YXVNTQOZ:'5HDJJX#
MDW?](U>W)R?=F-I'4UF3H^H''Z^H+?4WRG-+?Z9+"1"]W"GDM7IR7Y^@X9/^
M>X.%2[,3G]<6PPAG+LSMG'-.B3P$/(P:^ZV1C4>>6>-WRW>=N5Q:^^'<-8B/
M<_QJ3>^1O[4NB<[/Y)4/[O2H/FO1#P6P'[UH@GQ;<E/<*O5O2>,L@=@;G3F9
M7^;Y^)74%L43EA(W-GHD+(N-DQ:F*\R"9;I*][L":+:(,9X??E*H-P)ECRZQ
M?=%3YGW0>T*GE=U6:@)Q#C'#/$U-R\EKZ9N Z$3W6KPH7:,41%TZ..%WZ58U
M33=Y8>$ZIFBSZ+F?KI(O4:=7*B9P_H8\3_ME4<-;)DFD!SL*6RPP.<6:</.D
MO2CZ(8 7?N9[C$Z#4J"\5"K8X?TNR,C[&7@],^_!UNFA2V'-CO>T\5[&PRL]
M]SKO:+=K_QZ":+PO&/YPHZ!IO#A=GJZ'E_;$-V:[$5"<;M?6(._?^#8X=M[_
MN1H(2/[9 7S20N8E.A&X6OO>)'**6D,DR[8=GIXW%JGY6SE^V>L'!9,&%R.;
MS>>M5Y9,4=E;+8U7['L. 3Q CK5W<E;=.8R=Y06)2]P:@5> [T^7D_DI"=1B
M<C,>(0SCN.\.U*[W$A(6)&VI=/B'B+]0[ V)YV=DR4$[J;/9MG:ZBIC7'>5!
M[ZV_U!D6:,AX6$]ZB_E=TIC4<:_\G.1DWU>>UU;QX61O YLR>4!7-V@/T@%/
M5T&]P0K4<Y%^=^2,NYYW2Z]UL!R#O%=HJ$,.:;<_.H>,4!M?N&!DZ^=)7J:@
MR L8//J(JT 2!WAFJ%["D?RSI;_B?O<\8TEA'0L SV581GQ:@&7,3V];-K]8
MP:]=>I6,RQF,YV$,=RQOWB T5I%2P^ WYM2X9<_"%%LHZ0ZQ'%'$(OQ)K%%\
MSIZ$Z)X"#7*,"ODQ VS2E6S&N+LIE^^M-C*WJ9XC#S1D2[?WXP/>+Z'VAO:0
MR<Z-&UB5\CDH.Z()63'6JHLFJ@6HQVAI3_JF(JXTML:MZLCLRS%)?.N@LW^^
MBL(T9O@263*19U>PADOVPCNWR[68JA75YEEKKMP0"W7$VT")6)@GY1CC?;U:
MY88JCU?!SP;1X4JEC&UC!R-J] Z0@\Y/59]+XT:>HM_IK]BWNY+;5I7*W7GR
M=P!Q"C)OH_#_3,U.DY=78L\%C[UF*;!7"%ZZR7;E[(G/,#LK>&E*[SEW)\\#
MEY,_#)'U[U>U.6W)Z@!X!RF,>2J/1&O1D#8CS-3)1LF,'5^AA'^L,/JM!;)'
M6W_<-8)JP#R;F8(D_T3A,+S>B3Z]LM>(C='VZ6?J>\TOY3:'1P[^TX9G1]Y.
M3DY&6,&X;VW8A%Z_],Q;&^>S!OD<K2WVC8W7X/%_3:)+"6I2(^<\S\&Z+*F!
MGZAES9LVI'73LK7:Q_R20[_$.NNL*O*5'EQK7_09OHK3 8S_6WW\_RKZPNE_
MO=,'L*?S3Y5&3DNF1L%U\7VG7+S=LJ3(;"EI#OP'DST/B5??@$H6CNR/]6$O
M@.<*L:7@9LS="? ;(L'MYS8S$J^K4<>Y\S[YY2%@MG.WK#Y2I7?5VX'J,H*<
MCG$)JBAJ]%>-'0/_W%*&[T>(\Z;N+7R>_>RQN9"V$\*WA?TA2Y5:7D>3L\U
M0F3QW,"YC+WWN7ETT4GN";S/%KI"A#=V/O]M/OM+R\:<BKJ*86F[QF^U\3#Q
M6%6YA_AWP[$1QU\\$%HP<5(%?R!11'XYF@<:)DZF.3.$^Q;&E63/V\/5(RG[
M'M<4GE4O!F%,:O=SM$TJ/SAIDS82?3!K!YD73.\^4=U+336,(D2(L:5-9X0_
M.2*:!>#CBH8;X?N.P_RWVQIEQZ1]I^4@U2Z;F$WQ\VUGW$;24 "S!0R=EY_%
MH.;!$RP9TS(WV_3>CP-ZO'BUS=WI^&.9^@>@N?,+ZOM5'KA4+L,7W1SNQ@=G
M3\P]'HK;!CIH3F5SNAH'J_O;+!S(9I0-[\^HS$\5OBK;=(/.%H/Q0Y"9Q W:
M'Q/U@$]$M. A8*[V/#6 ($T)(ZG@'>*K/UI4)Y\M+[3IXIFY)^'[1@"5(M<^
M/7M;Z*U<A3>8Q$3%H'<>J"H= L*D4"3,8T8HZP+O;$^3,*\U6X$3?<U5!^UU
M7ZW"W/ QD>*<,G>;&!N#BKU!YS\4_%S8 K'H5Z0?HA6ZXSXC= C RAX"VLQ6
M8/3YIC.)W*1;7<MO*/XQ^3E$\>H RKO&!D,#I),N,,UA7S$^<(//;OE]"R=1
M5DR[S?;4>CK%N^J#H#?4S0K-.\W"\L!&.;6*-W8DJ9;SW<;[AGHA+U:+?R6S
M:0N/ RU9P7@)V?0 ._<16L$LF>$C]<7YM2HJG?]M>V3(EKUI[N7?)_PO?^MU
MVYD&SWW E@IYB$+'JUL"C=[53O^DQ_C8YL[- JC\^-&WC4 J<JY'ZE&IM7OY
MH#R5^/GB(<!1X6B-'4$V(DV94J/QUP?;^$(]684  \948YYQO2)910G1=:\O
M/7?$4$]Q8;T @\WHI\=2G[+ +8E1C9"S9<$W#-M"80I$K] [*KGX79'81#7M
M:/ =FYE>?E#E'F2=)2*.8ZA<M-L9GOS4S[QD5 SAZICI,/%E=1D"^YO$_?!M
MD%8;6N1*B1?TB0'T1NN,-#F2&[\8D:RN$3/0G.!5N[XPF6@S,AABL%M_&\]^
M@M1^[5[^D%^AM/%JI11H]<;UO/'QRH$_+J[OT?G_^KR]*7\T4Q2FV/1.:70W
M_W7GO8KPL.X0D,'/@TRNH+GN;>MJL2;()52Q@/&GPJ2%;+[5Z=0\1$2%\VBK
ML?&*>B?D\TA&A1EJ#5@IFG>#Q7Q.7V>NIR8N'P(N&["(OYD$!M$//N_Y.5!L
M[-.WUV>JQS\;'V,>'Q?9QC3+87(VP_?M,V\E2Q)RRXP+*C!K1N.,5:89*)&K
M^5*;NV,2?P9+7Z(UN'DOV+U43K2P3(V'"^;8N]K>&,(_'1$@*B(L>N!A!!3*
MEI?[-EFB]9W__G[D1-9"V$KX=/3"+M>$U0]3XJ++:%#<?!9_9_5I%N%X=0N<
M"S\@=[76[R*;V4^;>@7K%Z:S^&;'52 ]OQ>]ZW.]!5D_;X?H'*-/TKG*%- 3
M7/C&5!Y!/0VW%78MHOLO^T- /178^UV6!S'8*#U<_0#?=5'^=Y_VQ< RIKT[
M,'4>>D>//(L+PF[4BY#2*::>NQ[DKKLA(.,']-78+'9&&>**[I(5C*/MK<:L
MU[.AW/+8L(V'&T!#-Z5%H':\*J(/&)6;U!_\54^I<@$OF8A-K?QBB&E6\JC(
MEMS:GB1K(Q>*#L[.:Y%G8Z9<F=>POJ_CFFD6#>=:^4<L'YX 3Q=]T*'-X2+*
M6;(42CR%AT4S=@:_!.]!GS_D HW,!T'7^6C&;EN,S[0?Y(G 2''W1^;5'7M7
M;3*V^29AGLQ3?N2'>VXP#$$F,J]@]>;GE,6DD(L:<E2FPMHB6'WCV&=&E8]E
MU=V*RJ0\13:)%2!RLT!BR6=L7JC3=D/X=I[P&REF$.)D0P&B?[8LY54RRHIL
MVSB_\4'E<?S$7="2XQEVO+D BJA)NK.0)M_ T^:?]4Z/K6)^Y;O.:X1&@V8+
MDJ2+":=86;4AS_OU/(@T<. U[<3];OYO[+UW6)-/MRX<1*6)H8K2@@+2!$1
M+$ $I(D(B(B $!61)D1ZD)#0JX""@((0$1$+1;I2$ND"(E4ZI" J)9 @A$?2
MOO!>YZ_]ON?=Y]W[[.]\^WR_/R:YKER9>=:LF;76?<\\L\8DHYM:_FX .)J[
MLA:HM;^(Y((ZT_[F/'KC5![V:T-4H<C5UDA'N@:_P>A;E4HZ&I/_?=IUJ%56
M<4#>'C,-_>BR6I=QB((G[Z&LV18HUE&E&X/__-DSI7,11]'*AFQ]"S%4!!9\
M@FLY7T4_G1\SIRS?/.7.L'V>B;\NN02'$G+1/-*8]XBMCJ'[X<,NN/5D[T9-
MAL@64:9\(+^2\[/$H]CL%/!1:;IH53)#"U9XRS!57X__ZZ%0S^2B1$RW]05U
MR]!+' ;74ZS]+?$0:09^]8&B8DT]?CS+/!D12WM&B8_6\I)T'7L^7]RPZ@Y-
M[D//U_6XL4:A0FZ7MUW3GWHG?+GKA_P!L3NLBM_JCZPA8B8\:;<H79/R@)_,
MQKLQUTOKWEN1MO4#C- F)C<1TY[!WU6%</\DJ?'LW99I3J[8M:T_5X)@Z'8W
M+L"E?;]V:;3#DF:=*]U\N9<-"L7DQ>@WPT0]3_65VF>'IF/2V:#D/V1WNC%J
MW%"EX4"A%/42=@C2=""ZI$P-$/ :!;>5RG(Q/R#O(I=GY4F*8^&"KP="HS+@
MNHGBVP:FJ-8+V:IBW\X$V*4,*91EKF1.4$I4+&>;:GZGL@ZNT5K&V:#Y9>)8
MZ4GTS]^.#3#FH>,;[W+0%!O,5/JR+#JFC,R9N 9U^4$9=.(4[CR'A2'UB!C@
M*$_GK,G=0E5J5^RKXA"7(/4OJ9M2=NBCE2:4 8;(/+&N<(R*[BCPM;TY>LVE
MTZ>4M2WR#*6[*2C&]5U6BAF'NP,1)*,!1S0\&[U048+6^;A=0<  Y#"6%&!'
MP;5.V\0;RGC=]]4TKQY^D5:S_/&*2.3R\_^!:/X#Y30F!<:#E4%Z#((348<1
M/@*_H@S/=_CES690S>7^/-Q8;.WBE4\9 /3H!DA50/R5E"8("'#_\.CDS%+N
M><N0 -;&DX.0E=<.M(JI_P\DM-I)Q[O(P>Q_6'-LD#@G&N)$45^A50-MT!0]
M"%B)66RH;$[<28IG5:65B@-[5;E>,PJE5<JI"+:S05[F]8'0T*J/4I;[FTO;
M*@&%\4^0 ZAI-J@6W8[9@W0"V@G,B/8Y&<I%K#207,2X->YRO:[Y0\VHI,O3
M'WGD,7I$5WSQ!R?Y+@=QKLHB**$&2K&$)$ ICNC)%,TXE )5'@'O9$FV1%I]
M,E2WT!\JG:V^B[ASSB@B_+%RR.6#8FE=%_S@/943\BS^%OI%=*L0&@Z59/5!
M*,[6$(=QEXZKAI#A"I2*]]:\799-374*\:Z&](LU; /"W]+SKJMJEY[9*K\M
MS\H60Z3/@5FR"9F(:*N'UD/2[E A'06BUZC[XTD%*%+7V=!1Q9&Z:3KO3S[)
M(V0OOQ>J!.22269G*N0K'CB;VXEK4/ID,RE@ C11QFG?QG7 O(A4DK3AP5&D
M %%&,1AW<BY"JN]Q9L3&HXH[<I.-9W@L;HM4KD9?=MED@SZY&5!L.J&[%V$B
MAE) 1;OKH.XT;V5MI+M5HU/YFOI+VYYC_B\3KE[F/8)3A1)^X_^8\L2S02L?
MO"';=[^]YN:$N;(!8J3N;/+1-A%+_:SWCC]^,L3,:5W &_IE#JJZRI+D? JC
M/:$IDMVQP:DM6@QK*KU+5ASKZW=5745][H>![!112['X4JK$4YW;AIIR4Y_X
M.-/ HEF1#3I2\90-N@&@-[A@27C*A;[E2@BGL5E(7642TI9L,)9%* ]54_)_
MG;.=$^\AM#8,SF60H@S&6?S9-R-V+E<?Q,IR_G\.=\N[V0H<=8SA[4M<2X/Q
MAX /+$D6YE=XAUV@:Y)<%A?HN@P;V<X"_ESOD2]S1;&11FS0GIVMJ1*&P=_
M:=Y]#!E/^%C6;'3TX\N)TG:I\&M_)%MH10?H1T_)U5H)^^;:&GD1[_$J2*[#
M@3/IXY<^<"I+,6[D;;!H FN"+9B^9SV<B+FWL'1Q7?LW$%;9 P6.971D'%S&
M4?PS5H2?^VQ=9N8MS1'ZQ3(*\#=J3^8D_I)[%#4?-;$=A:IF?>'TW=5E?FOE
M;!$R@/ER)P=+<A!K&&M(>>!V)(O44II1=U8M0\ G]YY :H2OFE7X\)B R^5%
M49<RM^M%D'OMH!880^@LBQ\^7PDH=Z]4E7OA:L7KZAJZP'&%\F@!Y(64,=TT
MN))UFQ15D@IY)I_M9";1W_#D[5MQ.QHKN7@"B#"K'=3YT-SD*W6-3!ZA5[V(
MM_O#&1(TQ8]6&5#,4?$]*!S'[:7Q\SRF6[*S&Z*:TT!59]P3P38IY<H^&^19
MU?V'*=SMES!UFETN@I=^M$W3U*DMH_<N4;N#Q/OK)Q]K<76Y%''++[O)*#UH
M=I]?FXKH,M3YQI"I!$[0U'FLTFJ;4MME>E5$7^=^B8ZV#8J.9;A]J,R;WZ_4
M2O$4)&F775<\$WS9_[AC5O-CAYS4T(II2[7ZE?2R R(54/%]!B>S<B.%:9OB
MZX+X3O!4?IL)&2;(4G?QL>LRM);J.G-K]ORY%:6D;D.;=Y_QSO-8)4X/[7 ^
ML$2L>..0)LXC4E?__')U][6&L=MY';)KM,!HO&S,Y=/?J3'-I^?=!*AV;1CP
M#QU7;[A9V3?^JLTT1W&UD. 2N_":/I+DQ-R!4M6GZ0?>QM"O$):ZKI)7_N3A
M+B':OT>F4='SGFVXJ$)P?C=:0M_/XX5WU>UC#9>1OPVU%SH/]O5^1_/OBGSW
MVY=6QYE= \C+0%JX9ASTSEDGAM*+Q*F0IJ2A3;56UN<_F;,V+U91F!/?RQ&&
MI<]1H[AZ3&<KFFK5F5_'5]-TA7JG1"8M^_'Y]2JU; <.AM8G7;:Y'J*[A5OQ
MIA]"]4)J+KL@L-M;5M32U!=<74WHU\Y/_" 5?D5S?8>DD2M.] 3; -AH;?7
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
MTK+ZT^@U;.S /=S6XROYW^HC#W G_[ZX+USZX_R4,^LL*['_))H+):]AV$-
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
M*TM=T\YV886:/X@,O%CB$N_E 84/GGE(O2@>5F'D$!P,>_WO ($^'*")9QR
MT&B<?OD \'8;BAKMQN!&/T\G5C%R_PC)/&7S";S$)5Z*#0HJ=<'*@R4_4WMT
M'EB8@7<)<3'/5W9# /TUUD4<H9*9*X!FZKG9\JR$(/GH?JP)-.4*&_0 (XNT
MI"NC6R%8?L3I@:@O!_#"V.,,JP\>PV6ZIY];Q0V7N5_/3XU+N.;F.*EJ_B/.
MPZP=@EW6;$/Q43#1?AHKR,//7;RIL*5<Y^RE:?,,P]4?5_/"GVUZAH4J8&X<
M!X&XJ9PA\^-(CT>W6J%OX0%ES7@TH1!-<5F+Q1ZL324)SAS "@*Y1($ ,4W=
M#NQ%D1JSKD/DO%M5I_GVO9>8E5/K1/4Z+O P)((((0UD(@<709FI:'<PR$E]
M/ EI0#(P[T:=:HD/W):()WRHPNND,7:1K)R.9.@?<C=E'8:]Q@LC(XGP>"BX
M#I]B>'ITN.\\92XMY.VR1'7D=(0+(L_[MF%O4C?E.9@+N$G%D.!=E8 JI /'
M!81U-@@Q] !M"AMT@1/TC^K"E.RH;F_9H"FP_'&IY+J1XEK;IB@>N[LQY^1_
M9@"G!%C\.+H_!XUHH3WQ@!.ZIGNE]45?"0P1([,'=1BHN9X07/\Q;\[R$6%$
M#GW"M"-0.=-;?EH!<;SQ1$W$.$/X]R>LR@C470"2 16IS:FF9G1K"BU!19&.
MG#;O\X4D(^E6[H7FDQM4=[_8SW3#4[\,.>,7V_8)2C%?/'$&:3L$W1!X"V)J
M *8D]9W\4_SZ6J1^?X>(6?OV,<>P]"0QG>ISZ=^Y/DD]H3KA:I7(?!1?VA5
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
M$MJ&;QZ;+>'4?2?,<:I5[.\?5WWQ[5C.>9\;Z_Z*V&#U('D"7W(O]Q"A[;0
MX5N&'@O@W&P<NCI8<#K/:?B6YW71=*X])>E,X5A8VN3>:OOOSLX^WIEHL5VF
M?'TA^X\C=<K(XR1YV2AA.NL-=D),C%XJ"]I&>.GJGR]-+7F8&WXPO3A,=,=2
MD3/7ROI6HHJJTF[;P]89S\@G>7<)]#>4&@J+-4U3@];W0U), 0(!>8+A,P)$
MNP= [,[=,K;PICQ8V_^R@8&-U9%1A;=A8]ZI;R[<\F6:D4"3O"4NPV0\ST:8
M4HOE<DZ## 8M&;]U:%O=P*TG(;9?&'6-;A?R#TPW\X=W.TJ<QUD%CS]219A*
M/UBW>D'Q=T@7&M3'W./+XL?R39942_B?D(HM7M.$+=A ;.PI8KO20:MAJ>*D
M36<]^\RZBJ7<CV>5V;K?RKB95K46EX=R.+T.HP-%P5VW09)@!/=H'U<=_QFU
MJ<6+/3VM^-CF#T$$,JEKR#VTX8C([=)7%WL4BV/BM]E'2)69QMM,-'X4WO.%
MG\+O@'_?%D;J0N%L"N/STR KKS(5*PMZ3U7JV(+RBY(Q%U3W)JG0@_\<P9Z7
MC0GH0=&'ET?UJ)2:94BNFXI4(Y7S^Z=#4E==M S8^,8;)_,LKO_NT7P<9.#S
MR'F#VV[TWYZD@C*YPX=(PJ/U)/P@9N,M._8J"R- B+:":0R,N,>QF06^#N"2
M5$M4TM3:;?K;T^W;IP9?G=-NA5.JG&@'E9EW8AP1820 )"X,U\#I#O,M\;TC
M>>&%<H-6/I%/_?]6_"C/G3UKWM\^\^-JCK-]9@NCSOL"#F%_D1Z9@PU?<N0J
M@><X.]Z"=8SE!"6..5Z9O=Q91E&[=M L6='3\)+_V"T79^[MN L6N2-GGY5\
MK/J<O*=!8=W/?2X?)>#==2*!N9P$N3!HW^PX:'9?=R1*Y'KU/%Z/[1<?=DC/
M\<O@F401H[2*F9)PL?&2DVE31ZT<&V_N-%SWC1=-H+\6(&I,( 63<VP7ZG+"
M[:GM0%X'>IWGNX9TLC)V]:2'YDV;L/L=G]@&30XJ]X-HZF_.GM]_]*.XV,"*
M"Q6E0*#3T=]B&1A6\S,\]=*V_I9PGPK,*&9!;20)=X0A58$\.5 >%&A,4@OE
M?$]FLBZZ-]E^.<I^CW[/:K4*;S,!#X1S3,'BZ9 4:RDVI34C[9)H </XP=^7
M%5H4@/DSLK2\O[TVRWVT?-!MBZH&K\C+QG;B<Y$' OELQ676B 1I4+B:X'/.
ME4'4M9 XPGJ^ =CMS-Y<6GJ,08LO5 &&PIM6ZLW/)A9_-?:*<4G_/!@QICF1
MU1KGO(L;=8PO(3S2H_(R*/2*?Q8+-<"]&QL9&6J@+[(V +^1'2AK=Z>^N3WJ
M]<:D2;U[EKOVB)KNW7GK])RKR-)K@W;4=22X4[F=.-K 3(BG^#DAV[6TP02V
M7]?MK$G0BY%PEQ[C9!NY_X,<YJ+C34/S8?/DUM)"INO0_3:+ZARM<P%PST]
M?Z";4P3,+L5Q;_(_3^T'I9A$]?J^=0M3>]X.+M=JXIT68L3##*22GCDTF(IH
MW#5_I+WI2*8((JK !M<&/\ $5K8:?B\*<$0F&+#%8(L<;Q51%K&H4ET'$&.#
M*XNR'#:E:-S '"S.::Y*8VO4E-_3WY6Z 8ON" $/H#AV8 @;31<@J):D&(S<
M'WMK P'">[PA^5:4A,_ OJBC?,O;:H0QMP>7)L8+'G9VW.9^.IZS]F+C[G5_
M#6QP56PD7S*//L0K^[/\[2;''91GDE(I\E;;GG>78J>H5.6QJ/@"QML7XS^Z
MPZ,(H0I7PZ<*KB2>F'@R?KM>E0N[A#8WOA1_C*8)$;C:-&@/FT#%I*(VV3V"
M[5L"WB)FG"410MYGX?Q[K-?08K?(/N3^*YE6@>M<G+<BST[0W-Q4<G_]VGGR
M5V*1W'OE3S<D)!L73LF(%!I\)@2&I%N;\_()/A1-7"08 OB=!Q,J032U9N&@
M7\R*[Y6;92=BM^OL2I\JO_V\_JOEA?1U4#TLQWA"VWF*?S8LU5;>8X)/%5<;
MLAF$Q!@A6S!@>L_1NI@/=22MB33+,S6.9=A+\]L=76\>2//)4?WU\Z-DU_/E
M?[-<B@$_SDE>CAT+PW6$-H/-=*YT@Y%>W$^<^.I8<1/5U(;,*-<I_-RK^2+#
M.T]YCW9$LL5&RVLBM7#WD?A!I)P $8C^MMB&K$WH%"!&N2Z@)]-$_ENO>3']
M22"%>-6K,5>1,&6GOI2C[99]QR PYP[0/;KXGG"9-B[2CFSH6\JA+X\MMUHK
M#-4ZJ7?5-U@<Q.>56P7=% WU[ WA]AD^F#BI^T9"Y+9I:/YO6/LE([W8RDR+
M%+(*O@-5(Y9F;>F)0PW13K(KWS$\T2<&;SE9G+79]/<&YKK+/[I?QS9ZLEMU
M7%?7:1<QHZU?/B-?YL6BZ.6$&@QK?CI$$=H"_,Q@8M9!%P"%/F2:M0+NZ.#9
M'K?!F+>VCRYHV?_<.G4^(M/RLI5/3$12<RPX"<MYD9="WL@?MU;AQ4$NS\"Q
MOHZ#BQ-.I=CLCDO*Q./]MU+$MS5F>8R\'3IN%(K@&CYU6N\@%7A#=\T)$=5@
M@P_%71 @8G,HOIB[%%7(@H%)I51CNC/$<>9LW\JFVW?9)9T4F1\#*Y8<G:LS
MBDWZ^W+;[&]P10NL0V55]%:"]:\6ZN:K*O8/F1Y\'"]6)/;VJ=C_0CV!_R.:
MR\PJI# ^36.1@%7.RV9@MK5/$6SO.^RI]-F>T1]XR5ZTO"1"U-;V9NIOS(M]
M+D- @NR5MUYFV(^@_56OC],?+#V<G_Q)K7-F#:U=VLWXA%;X82!V3-EJWX,'
MC8S(T1V-MQ[<"E_^ GG UJ=&^+J*\$6 8*O#"WR6(*S;4@X#YA+D"@JRA??\
M>2)TG>*_DS1(8.[Y3EG92A4@OE.@5U S?VM7N !ALU%;@(#=_8\2)@TR(T(*
MT_P$ 2*1!N[*_A\%AZ3]X.?N%R"*! BF!5_RA0 Q?8'K8(-DJ_S"_-UR18#X
MA>&?1[(W[J7\W;D'N68A0!BAE 2(_SJ(##  !>IW\V0$"%D*<$%/@% CC9W8
M"7?6G25 ?(F%/X=__WH*?[#GB0#1?R11@/A 6?,'&_[;09PG4-W@)Y]"S1%
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
MC,2ZY?77R:HMS0E17;&53OZZD]G>:5EUCW^W>J3R?[I<LCOP_JG,)Q1H9<%
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
M1,8J*3XTT%!Z-=XN_H<P/P"[?MC7J3J@*7R)HD9+M_ZU-K94SVC^+;+9FH7
MG8&%%<__^G=S 5<'W,N78-%5D6Y@$MNCZ[9R"J/";-,(9K1^P")WZJQ/0^^=
MH.FD4"Y58_S&Z62>\"Y[5WQ/ ^&-,B3OPD O,::YBY&>Q]H*-[GASAF<(CM5
MK/3JLN9^[XU50UNUHHZ6%1KT4KQ"P&TE2VW</?PO+L1Z0B=-$]LP'=[%.XHY
MB$DBR"][->9W.37?] E2,W1^NE,R83/[U:CZLZRZ!21,3$<M.9F\>H*?9P G
M$%3GNLX3)&Y1E.9OSI.-ACU:Y1;=TSH?-U^@U]^_;EX:J)/Q*?WH!P-3^Z,/
M^_:M^V6R9,1%\;\)$/6SZ7AM0IL;7Y$_ED>0#");+/KVM;GOA?8-UB79Q=:6
M^M0-8,+81L'!>PZ-VT8;J,?=<)U&[H-761C[X"0S[F7#>W1+!MR9D80**NA+
MNJ0'JE=Z7!S;AY1>8<G-GGQ3.&,TXF"4UZL?/V]TT2!&UMUO SZ(5BE O%EM
M-4FA5<\NS3)"1I>9)9TT:>Q'DPU@./I+"^HU-KPU:TYOR3EW/@1)E%]03OZ5
MDV;:_S#O0/LFM@>'R\LGZ^&_8:I'4E&^)@D$)>@0O8>@"=[@'AWY$Q79)K=8
MGNORSSY3=6P6_XO-_LTGWL\<+E\WFGE8$5:B EH]*@$50OL6R:"P_!G#=S&=
M9(UD3]^!R>IZ]\?'J9'!EDS+AS-G"D_$'5ID-_#%,?1%&K@#!6E<8=,XLF"S
M[."Y[OQ3)3"-5/PZP%(K=\ VI<7:=L?_-I3NT9!/VN;]O;1[3@^2I?+%65Q'
MX1TG*T:.#/,,+F$>N86LOJC6^-48TB_#:>=^G!F8?^XZY6A9.ZRS)>*N]A1I
MTVO<F_/:>_?\609W4B"Y;$XDK%C)W0R*.O:YZS!.EHUJ#?>/ 'XSNV/]7,W2
M)&_==U29..)&EXOFGUNQ3-X7^*E#9/XO= #V.2W%;!/6.78VY\J_%0(E:_FC
M; $B!6<7^5J \&J?->_O_>$VUKL3>6.[S>^:0EFC%U[1$A4H4)\(*>GQI9KA
M77<G1F8]=!-4!9J9RO&5G#$P?)KSA.$!5H2MMX/(;L>P5>XT+Z/OP>D6NTY&
M#NU!7B,([SF!^QM]R10&WKY"CFW^S8D&2]@W;=,7,*GN/QXX]P3Y+BA\\Q_>
MD^MDO).S9B+NF[DI2'TWXBGB[RJ]@:JI32>V]4G@5+_H^0=::3,*I)4^NJB8
M2%>T_+--N\I A91(H,]B1@VZ4'6P?&"VZ$=]M]W3[B*@]=QO6EWSH'B/0ZAF
MX9\F23'=W('(1PA50R_) V9_)>P_5A9K'A&]'+-_>S3J$(4^(D",9;<1:PF0
MG!AC)+XVZ*JJ&2V^-)2!D9]?W&KJ_D'T,^>3G6>UNX/(QBZID-,.QS!%%]9*
MIFG@5F0JP:]O+-:%!V-M>KH 4<?K;I79 F8=Y>\"-JPF9%\ *DFYAN>6.O.6
MYAN?Q+#NVWJV$'4NRP0"&6U(T C5$: #E+!DN $X5<#WOHL/IPSP8\0M+N:=
MN2\B_M,L\D-%D([V_OONC@W5LZ*(8[ IS@+C:7(P32+4H:FDNP>7\C.2< ;
M&&>\X_X\\+Z]7[=665GIY6%S57+K)Y9<U2T'IN'3$P4M?7QI-S"-$:+Y;PU[
MI;E"K<:DRA;]TL6_M@VBQ_',1>ZEA27][J-?/(_H\6JA@)\RL0($ J^(VP2>
M"0$PK=:JY[\\=^"/:A49>/:6.EGNG9B8[-GCUU08H?D]UTUJ7^J2Z^.1=F*-
M  ')DC@PBHSQ@2+8>6FP6![0:BFQM7WQQ"UAZZ(J<.I@'6.\9Q)UHDGT[J&X
MR2<=-XHNZ"JZ1=C89+[8E1Z-M"2T>? U%Z9@+Q?[@G#U U]YO(HM^\609-97
MLU[#W_E.^G.KSR ?65,Q]OV/B-;7*F&6GP"14T*XFL&5_RY ](^]BYKD[B*T
M'0PFJ_('R3MX9,IU5+(S399O 98<3SF>X?'FR^>"%U@O6]NI?;V[^G\\8J:2
MW69RW73O9]THF/2 X5P $M1&L4RX:$+;26M-0MN)( $"IKHPLW8&+R@XDV6
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
ML$7HM]@>%H#[_F7E_S"K%<M#U%:U[CLG?]U1^_35Z$'\I\*S]C[:$[W'?B<
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
MQ\WXNX]%Y F%6B#_O)U<R+%3.1POH#XQ"A<ABK."N6W8T2/2F+HEUA'X [(
M)G!:]Z N2IRR(8JR&_MC04I3BUX87Z\H+H+5A"GQB]G+9BW.W33*E']LQSUA
M(9F0*$VD6G;]JMH<>;*',I%J?1 YT0[EMXRC&RWCI"UOEB!3SN>[UPU1,J\Q
MM4;/8&-EGR[,J%?U,K :4[:9*0>:UMP84)II:@N"IL?@'I,&<X:M]9MINKC.
M3.N-'FO%KT3]$(^)%$O'$JELY][TQ<T@UL^#^F9'LQMC-EP#3A9#XR;4Z+_G
M<1VPR?S_=[O@YP>PIVFDQ#_N?YTCMKM/GY"05G4K_]0CF&H6$W ^QS9J#-@&
M04 N*I8.3\+X0E-(-3*)&\IRUMHHNRPKY_-91\)6U23Y946*9YP"-6WZU=(A
M_W8@' %\,%V&\9WFPZTT/,HN)Z0=(-'C[[I1R!W+/\C^%(SH:;FP=6E8LTE9
M5,3L[?KW0N]C=LNVO-DJ8?71H?.N)/ Q-W"""\ &1^#N_&"6LCH-T89/\-F'
MO3C6HD39D' I(:-.C"FZ/[VPLC@SC*EJUS-YXA?5FVH&L[[X5W*.=.^VRWVR
MR!_19+1<DOUK(,:V=L0(&(N^GS"[/UV?+^RPB/9F($<(!^XM9?9KHCXH5] U
M7(8!!U,Z0W&BK. 1W_I'/E]UH\[[6U?H$K3WN+FZ[4ER2MRM;G#BD/B9=#.^
M6Y]WK<+J8U@2DIUDT+!>=Y%'70%';(\>@DJAQ9!@F$*;F5E%RW\ [K\-:8*E
M7=!R+ZW+&;E0,.?7>,WU2F#J"T?^P0L=*]#)BW,]*6AS3)L9>A\RE&K,:-:1
MP0E:&M^,C"Q%OMR!G&F./9N[UW/-]6+7,?4J3='>'YN\:#?.1Q(MBIS%D4:=
M=)GDXPCYT@POTNS3;R\/M^] >O+^[:G+W/=,>.KUD\_R*O;]U^MY1>92]Z-#
MV#5 **RC&9_BP=O3+C,TW8YX.87;!Q7E)]5\P2WH37(&?G V/FW6A4UNKDUG
M'3T.38;3;'"[68[_5=5GL-^1 A%83"VN>T,&T*80FRN#K<6_1L$SE56NI.16
M]@7L&WZ"W__J6H)$\='#9^ZGZDAAOY* (U#6_B4;;M,>]!=SUQ<4DI -%9O^
MW++ED1,0/.>4L*%8HW+BX(^5)(L.\1S5*H?8:WE&O#:&91T@[H.QR@;_:^L5
MP-,)^_=X=N()INW:WU!R)I06-;$Z04OI_JW3Q)?\5X^WQ]_7$+W0$7(+[IC;
M+9#]R89-217X2.'YX\F @^^&_2+MM^1]Q?(#O]>Q;M.7NJ'I33/O8Z:Z$_4R
M-PB#PDB_8*FC51]&")/%]0<L5X/=/?L#='8G\,8.LO;7< 3*F3:HO>Q$]$$D
MB2/@!,)@1QKL&TLS5C.=*..-K%OR&#$N4O7S1^9!IYQO6N='JXI\'L^Q7PP_
MNK9OKF=YS02ITG1OK=+742U;L%<Q7; Z.X'?ZH34+BQMOK.D&R-J!)7E^VX<
M+CU.,\47"A+OB&[<$>QA%^,Y)L%<>H%N]C."+A@S=6])+X?.M55\4:LB-!2<
MREC+MTQ&AH]-S<V[S#I\>.Q2E-?4:GAFY+:S"=ENB #HZJRI.(3KZOI=H2:K
MGWN7^@YR&0*!R$+\RHI%>TB %H*EL$9/'F&@Z2EK*31PXPK6,$_\@BJQ-(MG
MD9FUK8BN/L3K$$G/DQ,2GAY34^HNKTOX/[>_-50_%6^C-?\+"IA.,[J #>9M
M3)L.$<I"LDN5UEF71E;D+\\VT?B_U"H5C3ZT1UZ"F%:_[E%+SC%3X#FF[,;-
MNN&,<ME?DC'5V =H9?1GZ(?D1JH>[\J45YVU)8 -Q$\-6%5BU9$MGIY"P<K+
MINW#W1-A\<=YB(,-OWZ1:"<QT\T,3W83" 1%A4-AU8/M/SG092+O*=J7<MK:
M$<NY8J\3$@;=.12%U%)[=^GH7:4Z8*R)5(2(\M#<NAU(E#<DFB<\"U8%[]E(
M+5@OHDU01.[Y$>6 RR^!K*73&5UNU=N8L#%CR5#U6[/V0KWRZOMF'20ZNYRD
MOY/JUA:V6!*:C#_LW V8/UP,F3#2#E-$J^/OM6!H";\[W>YD/8K9-^S975!1
MU-I?K:!=&&F]%"2H<\]?1-^+E WZJS;X!UQZ"P\SF,4M,TK M!D2]>% ' ,_
ML9XS-3(WF/(B> ,5$![*[XC(T9<35ZD[K]36V$7X\$[55T,B 'Q$%3T#Y0$G
M0:Z_O-&U P&T[/"1 4Q7E!6A:1C%2^NY,OREZ"40TBMV\$^3,Z%RT[ITM5JA
MQ$)NR.[;J+WXX5U;.)947 >I+G!-#@]X,@ZSL=:ZLRB=>KI5YF(%W93*OO_(
M*;;X)\WHO&U &>NS]+]-]RLZ]T8[]K__PA\>S_'A)GEQKSZA=1,L\0W*PA)+
MZA%' %QA7D.@%0\'E*E"9*4@HM%X9M_L5,NGS!O'K9U'@[Z\=HJEWCA7L_$Y
M'#'[#PCE"*W-DZ2 0@:HULD"@-JKUU5T-\;#L0.TF 3".?+*VIDTD[(W@_&G
M/:8]M)\>[!;KD[,*XAG?@?C"ILD=)#",8DG:M.%HYQ!IX^.S<E6C*%Z39BKM
M52;Q^;C?95*V8=[FY;7%J"]G^P,UB$?!97-=OE//DL'8_Y?HS,^NWV Y15*$
M\/(S/Z&\UI+!'&WBB-& T)G:2V3,X6_.,E,;I;$F<J4ZYU]@]$(>"_P$_</%
MP7MW[%=!:[]W%G6*76@MX>UDC$L@BGHB;_BDMEM1!XRD)_)%2N(#?I=EQU/D
MY"O!E:IH4LK+!-V,,:!G]?9!+T8O=3W"1^-3H+7JZ+G [P<.9'][*[6KCTMK
M3@J#IW/O(?=?I")8XFJ,-.#1>V3SZ0\CDEU0",N7FK'5-*8QK'[OB/KPD0AU
M#:>Z>\HG%(<E%L*6OG?*CF&<M&GS','SY2O68+R>"'K0@ K/CA<EC<TTNT>(
M6T.*,EFQM7W!D9_F>Z]?7#FV] H]_Y4/1O>\ MR; P50L%Y#P[4Q."IT6V*N
M!1!GVTSTO**G%PW5,+L><2"5.+-N<'+]\/L;9;\M&.^Y69O$8^@1Y;UC1"-D
M,V@UZ-7,>5;>L,]R06XEL4Y9BD 4=-?5-?IVSLD_M)G__:,\K^TDL\^X,7D@
M@R/DS'3AGL*@^= #:*T1#.4YN4JC=M[[]))=G@))V3TT&J&1(I7]<$OZCI_#
M1$Q-L680_^X&T;K+%TIYDL!7PTGA^"E/!@44:6@?%3&%NT(<;[&AX)7(2(_I
M+O.GNE'OITZ$!YL[6>#^5K]H1'J<==I6J0J<[<$!$\SC*[!Z*$NF;HLCX$RW
MH.:GH@[1:N8&VVOIQN3[+:;X[\&2H._V?.QQYH.7MZ=E9&^P<.WDH]6AII2X
M8+FM-^U_2+1PM[5EIB9ZG/0A ->&G6RFM*.,1JW%WLN[I5ORUR?_./E[.T>C
M^-$'4?/OG_)%!E0D!%POA\57<JQ PZ>%_C@%30<!W CC%_LQT6@6"66\&?D;
M>E=RKBZS^*G".7I?>9YGD(28^\%[ZKD%<ST/5:\[)5_Y7 VYC:&Y#IB/</A)
M?&W8:2&&Z*CQVJY:S ./P$16(.TU3,)G-FA6?P3AVY@]ZN[5=\ F3JZ>/=9Y
M.,MRI*%A5^BJ** U-K$6.T_>!_@S+K/36JX3!>F(SKCIW'&.IDL9^Q5*J=CC
MI?':JM8-]9:8@O&I/>I*$Z(JUS8S\(M\+(ER!D##LJ1 R*[W BG$$;)X P^"
M03DB7W2M)5"Z8P355T%"Y3WR=\LN()].OAZ?'+FC?N] YF[C)ID%S&TM'NYM
M+)<)1)*;&.0K>L_G )N$\<4#A_.[V7%4F0ZV"6A)GT]T$=5R'(TSG*(,O2TC
ML+_W9_K8(,S[J]\]UE3?R^829MMR%6>!7<M-H^$HLYNL+7O"2T/,K3/?XCN%
M"J]$3V]/^3O4R]PL9I:KGQ>H$Q%K5OET+M2-(W2>SO@-:LPJW[Q>\BS/4, $
M^@#JZH?"N8T.J.!D_(1Y)?Y=.Z/$[[E)AV3?K=5OM@XB5 -#%X8W^,ZK4^@!
M&,UNBYN8\M/G0'WXQ0N V_N?=\:;WJ'>1MUUG9U?<^/)[#YJU9?TZ5.F6'2Q
M:!&)DJ>LC.4(Y=)(W$JY<]CIC$OT(V_G<&+ R+EA:RF65C4]G%%4@O2W)038
MYE*K"E2C,.K)+@:+%W[$AJAMCJ[)DFOLURSH,1P!T/_SEKD ZM!N:(:U&AW7
M1LKPV!U*WOT7(Q^R&2*/30Z\"6.=+MCT&QZ,"" T)!AG/WV8X<=/5D5P.SB#
M< >Q [D/J])LQT+!Q=,F48I]3(?18BP;(&J^<'K&9*3G7ZGY-1G7FO?7@]0*
MHJ\4."PZ'I1%S';=P"K_=?7MP+0Y[4""79+@]:(LQ7*F7#"I.B5KK04>.!=N
M8UNP _$9XFG-;;=][^7C=??Y?%#6RL&Z>]_Z!)!9[C8YE1"^C59T$/C>+QR!
M<6MNASMC5!03SE( ^NB:;<J6M/&*%X7.%]MV(!*UF>9R?@6<J6X'GW&A5_6'
M_9_5G?*M?UD7&\;)=UM*82F!1D/+#&CFZ@^(!Y<Y[?'F",!T?NY:#J;-A",)
MQD+60 6=KQM]C(Z_'T"<^$N61]F,U9X_5+#P[8#GC%>+^!Z'>=M#\G52SQ:^
MXUZ30F&32^TD@DN[%;S#8P>2AG(K\>XHF<W4=*5A,VNM)!:_Q*0(Z>>T(S-R
M UQW'U_11U^0NP>"I/^O5 8\'<%*;\*Q$Q=W(%^%(2A[;F8&2NOQ?_2B4IQA
M- RHI8MV$\WHI/NO2!.U@PJH4V.UYQ9#\PX<6P.] 7^NQ+&ATW8*@IW/FI?6
M/V_S</C%P;F&<P^>5W$=.Y"25WC\3Y[-<*)N")EVQ070A7>1ORE0\=TX"<"?
M0EK=@;P$WRF]U,;1:!R*0$6]E5/-6J1RJ..G&G*&Y=2OB76OM'S<YBV,X?8I
MU0'UV!DYR+C!SN*HL@*YO]##,"FB%!+7P9$@$<<L]X?2>2Z,W49(N-L+M?:?
M))\OH$S[R-IL&WX\EZ)P0V@[[0<7/@&JT+5P/'J,>_W-127VJ%,M0]8ZG6I-
M=-/[[Z.,:QI)#<G[4]9<#1K%#7L%#SN'FDA<E5UX.F4R_U_"0E3_/TRFZ"J7
M_.\-H'23 I6:[F/GO@/ZF'L]0WVUA>\;AQM<)@<W0 L<.NQB?G1)[/[(PU!C
MN#4TM+"?H!6]9[YL]NG%$V+RW&5K++BT,,\=-5MC<HLH6[1G1(GA'S2AX($7
M)D6[ALYF+[ ?3L6&_MA6AO<NA$W7(_KJ9:F$( B^'P$<CF'M]V1DT/G6QBAD
MX, 22Q+J/O*'G/%<_VCO/#EU:SPT1B;!:"G^>V.Z]+;R0OC^2MD&U?,O+^UU
MM+']%PD?3&$I8-_[H.Z 6RT=%H+#0L7EUHT;_@Q*#80J?=VN.#-[@)#*NV<!
MU>#6RU-=9Z7%\]=TCIL3R,<P'+Y]J@&8JV"= :JHVR5\KO0-+%$G-&?%]-;?
M(PE"#2]K=]74^IZ:TC>X64"'94%K^-:RF?*8MA.8 ';H7/Y:%%VHBU23N=$E
ME ESIT$?_,6L.>%%0V+,K5\@@C"$UZZMS56^:B^[(HT2Y$ZAJK(M2<,KY>]^
M%IBT[G&=6LP.C5,T/>_5H333]*EJ0#+M0*X-3XK]Y0#?S]4)^K80CY>D8YC0
M'<@TE!JSY@N**)&&8XD_HKAT98:V*<M_96EJ9J MD"7M;HLC[@V)GQW#"7%.
MI>R%AS>-2_HL;0,.W=YM'A[.$F5).S$N<O?LGDYV$?= #/Q&!.;I/.U-I [O
MD\/S/>@]$RV8\M!_T'2CIYH.ZJ$9WF<7;P1DEMH=>5"Q\/2)N(H;!%K^V&TQ
M?PW/]&6=8]=A*/?<<+0+B$E-QB,ZMMUB# B. MTV1S+48'AVNO_#S*1CE&ZS
MEUV5,^^HTT'"0[.#WFD\OK\W@(.D56<ZB2,(3FM/''#B#6<86H_O(N\+BC$7
M><$N+&/ITWT_$$<US(L6?ZUYGGMN%DA\=&-;A5<U\UR$1.-L,;1BU(TJRA(7
MN@AJ>P9GU!1&*&-)E%'A:V1J*ZP#OLM:PR2M'.4RHE< EW,)F3#/?#)"8/9E
M'Y[L''S=>Z@!87+%AO\EY!CR-EHF&*;X7_(@[0:YG?SM41N\MJ>3E(KC(UH"
MYG%],T+4F'3UL0@CYDS^G(^9+*^$#N.\^.&7AO86W<ST%!5H+<&-.LB2(5,1
M:PM,2]#.G,/XLWDH@VMWJ0-N-L!3^O6!5;3,#+FKY"<IA#!.:.-]U5DG5CHA
M7<VN$N>,,)+/O>\P$]3F4NMC*#EDV@5R F9W"_>.3!\ 1<0;!C127=)G>6LP
M$LCRDPD<9U.[4%F^PML%WJ428;7)_!T-]0]/5_<H)&\_68>P*[EG6X%0X%#/
M&HX9!?ZGI";<6@93$]@MC& DU7X-'!)YY!NLH%,PUCH:O27S\"19#3:)6WN[
MBS<F6WE<$:K"QL.N"4LR;G"[D^*F0AD/V>5@G,W#>%D-A$)3I[N;-GI:7<D7
M<5U.$?47EL^=0MPGW,.9I(7ON[:K'M'/\U#TVVGMN0U  ];E,N7/$00=Q1Y7
MP)=NWXDAH!LIN-3GAVDS"\22^<%]P5.H_%N#P;&Q?C52S74%^PUBQ7M5'<:J
M/?N">O=QR5 2;Z/$F2&8MDLP7VQ:W0Y$"4,I)DD21/=YL[Q -4[*\*'ATZ <
MB9F(!4*K!5N&>7KM.I/W03!A^\:1;0]7[Z^E<=<A[%E\+B:"!*C7M\&FYQD%
MP$'F.98C\'1>5\8-@%)W@;LP)N4O_WSMJ*+7]/=W9Y3D2M@+A*LM >X/JQ]M
MR5D? !="'QADI+$?D"AU.((F2WRD!TYP>4 \R+*@;22^H+LE&$.50C8P=\O6
MY:^]E<T=_"RO=*;TQ>X2QS"E\Z9UD21*@[(N^QV'2V]VE=MI5@2,7^I2.K5)
MNU$NP%QID<W<RJSGM^6\A(E.^=.IT>XV0MZ=0S/WNZ;/3IZ,\:V+%YU,UZ;J
M@9Z&)67HQ<ZT/$3#4^ =6*AF$LJ;WM>3-L=$R)L\1I [Y"U]/%<*WINT0==D
MQ&UU'*4"Y&+ZWW],FB*+8MI<#K ?H^281V=9&'!*@9QI*$$7OR9$V:[0NYUY
M',COOO-X5K>K,_0F(E;X7VL-CT*?UB6'^<]ADPM%\3R,?^FL;/8[<)_@,;66
M<!H"?@\6WAK7@5:A\66AW*EW3=O)DL;"V@YQWC8GZV5^3\-7I&_V-]3G(-=J
MA/0/F+0ZE]UZBS\%W&,J<08QM2FKB:\Y7V$T!^C4?,^$?&UEV2N?P:BYP<RI
MV1>BZ3HYZS*M([6><=.3NXHHO[$;ES7=(:X6[E_C[[HS;W+Z<>)H-< /CH56
M(])&VDF*K(.O\VG1#0+233]N&IXVLG+5/SFS_+O&H0%3,+-HV/Z)D@>C/-V!
MU"]U; "']%9S7X P0'#XVM!?O@)OO6X?Z2;4X!P[@BP4Y:]Q'';H\$\'WI(\
M$U6G_<IL^ ,HS68PU8T,P5 HHM.)#''"TY>TK=2HZ1V(0K"KY@%MSZ11?[\J
MO.V,R+OB?Q75F-OG^%;9_]VC?S\'QJ4/041NQN;29)"G3*GD>U$;4LAU3D?G
M.2".^J51N&C%,6)+A5VX=EWKM,,#J5-O7ES3?G"8E]V"[X("5AV<,\V4)7:N
MP [DSXPQ!%V*[H+70!-@@:1$CE(X7[?R,?K>LMBYC(-CM7@%U(FQVL:-5T>U
M6_KU*@,<BI[E65\HEIN"G(,P0I8XDIA>;=H@.X,!_Z>J75R\.YVU6,7&P<+A
MTQ8<P1%ZH@N[\0]<X2>Y!A;?8AR*H)78?T6%1KW\^6_A>Y^0U5I'\):X\]W#
M;QK4';I4OLL$'=-L!U7A"89 ;*5A."("7'[]/;\ .:9K"%F"LVL6J50[*!3<
MA,_Z0==!*XWZ9WUVK%C#7R\(%O?/\6PH./!CLW!SN2'^%A0,'MJUX8D86G3,
M:M5K<%^(L0(JW(&4=AGY[PRB#CU\\5U>#$*Z<0_N.O,,EA'T5)?*[H\[[W#P
M^!>^M05N29#?G\$'\F26$B_ST$\<I.5\R4^T7BO@=)"85ADZKAL5^OK3)O*^
MQW+Q!4M&FM"G;(ERM9<E!N72<CB:*_>*E"65PA$HIWWAEO R#X)B<^,8 O.=
M:*&6C O O1+DM+O!B9B0S7>.1B9#V6'A)=>]QQ&2![IRWEL6O]_%?&J+#&1)
MVC!ZN,U XCGM7.:34, H]?8V*WANR*3<-ZRS*_S-"9V\^FR[*SG^GD\T+@]:
M'!\T7K^]"TL7ZB%* )<I2I%4#+;VS>T9H8X[ME_>5H28\HE/37EV#@]H0VU/
M7;=N)\F#:TV& ]KUW61N1^L8^A(#R2ZOB H7P61LVM!EYM")E7EN(VOR7_@2
MOAST__3(/DY@ K*[[A;,#5\+HWSXEU?&/.%$*^<(P"D5)X,VB#"@QMJR8/AD
M]14 >OI0['L'[]@'7WA;<R0["LO./Q.'"V':OD#WL.R9O.A1> V>)5W("*&U
M1-<@>;RK:1,9.D8 Z\FK^D14WOF&$YL]NO7384784_HJJUH\6WO3EZQ%6:XT
M^QY$$D<.F*!-N'GN0$21S2<(XT9.H]T:M8WWKZ<U_#Q][-/J+6TZCB-H3!?B
M"-K0"CDB4("/:<R"LFM9-E1/%SG (SRT8U:!'E9UY:>Y[0]Z"./^$F'D91KB
M1;WGS1MI^L%>;U,_-R>!QFD]G07NN 0B*#XS&*44C/+.8))=_B-6!/<]I9PL
M9QE%U1,(&:^'BX=9NKT31^@8GLF.I;EWDP--,@R[*Z[16T(E?^A?2;6>!Y^"
MLD%U#MJ82N$(SW)[8Y2")@<4<#I::N46TMZI:9P@RM<3JA@34QWR=;D@Z0"=
M&MH@;5: .%2<I\'^1FZ^^9'O5_A^8(9I!@Y(?P<2 0<.8UF2IG.BG8,9)-I%
M?"I.^!M*;W@',@='AGYL*AT(6ZU[)W-QO%*H]%_F6,?BR1</CS]X\WZME>S/
M$7[)/9CD3!"U@7HZEB-@R[R+;&=VDL30@EX#&H^H2J[T2KQ&37VSM-L-)]!K
M6WVV-YQN,;1>NM:@4C=V' +S"<+WP[X-,KS9I:10A 3K+OLEZ,C.(<GM_^[B
MLM:--I(Y"HAT^>1[+X+,]T!PM9[V9=X?4Z)_0,.?U)!R&_2W:WK^ZRQ<B^C&
MI)-E,*'P;R,>[+>U\'2?O8#]_)LUH@1RRVU"YDISN$%<Q07^9SYF-Z/$T[],
MG>HSV V/.!\/@58\=IN[K<D1%*W$M/5QC-G)! 2@!>M4<K.#[?L!C@E(6)^\
M3AO'Q00$1$9:9=Y_+_;M+D$F2#7_$UQOP-'KM.\AS2%7#)?G0X8CP-7*X2;L
M*IYY%3G/2 /N4?MFK#%)_US2?4/+-T1?-![UF=&<*LN-B!AH[7 X+J1@]3A\
MH<I?"8(N&794O]$]W'?@W>&<_A[(KM%'\"P<*.K5HCG\))3#WQC(=$!=9K\G
MJK-@[+>WR2E3UQOU,FHQV*8/HW_UI%*Y7+MGL^3T6C*2@N6#I&7]52^I^CR%
M.:'[ZJ=PK/UX#K\M!2'#&>&8T@_ D35S?S:!IJWV.]^;3DUUCN.":Q^>870Y
MIE]/054=&;UU,Q.G"XD;7.5AQJ$LN6T?@F"2UBHLU=!0O"!2C]H%PA^"4L1P
MY('0HY.35WIUJ<\+E>/2\@P:A27LMK?+R:&TWQSA_>R<%FUZ*$> ^0YU=1Q]
M%'5I.'"88QCB.G^<5M_)OGAZ^$BN$=OXMW'1^U[%K%E?UUNF^R_);=M9&3).
M 2_H(]SP1TF7'LDXDLC( 9Y6L(X,H?<?*2]!&G:1Q:)T_88_+\99R<\]Y5W=
M/#I]L'_:2>+RM<,BQXI%)^YH;_)Q1+2!>_1ZQD7V>U* J!SZ"YE0WP43T.O$
M94 GGYM\_4-*\_@P_%<;N?YGX"U#HT'_I,G X=PT<7>O9#X>Y4%PIVVQFSP9
MCG29U05:'U4/RW*BD)+@DD1UKTG653HN"7%$5Z_B=G.0W[4:S_(PEW#%3><F
MMWMYD<*$ER9R(1"VS$NB\".&"LT.3[>GF')CHSVS[-(6W[LTQDC/U^_(I0YS
MO2ZVO2=M(O5V/J'1ME7\^ZP+M&@?YX2& 8^V6=1U6[6-P_^7\EFU4^@;']G:
M/405A)A/:+[T^M#AV)MVI;YQO[V[]O_^[MS^#-9M=NMCH-'^D,.GO2IZXWJ-
MBJ@C0Z83;\>2NJD?]M^M$+CU>9R4W[])!@):>3C)A8/,S<>8#MV?T#]&LQCR
M8_R%ET0>C@HT"?[G< J'SVT'\L@*]C<?U S<X#K\1RR"93![;P=BX[S$WCX-
MF\O[(_I/'@';^.SV]KP]ZSB,G_3SLBA+!+\#T8#^.A*[ X'AOI,^_2]>A@7B
MT>*8K^^@@!*<<P8V[O6;@X$U8K(72+2^.WQL85/<UH+6#B39\ROL9W#+#H1T
MR.>5+90.88%X^,4E&,V<Q'J">=^XQ.)@;NU U/HP_\.0;E+T]GH HAV_YIA.
MDT?$ P(E'(JA3_Y0Z][@7\SAA!J$$FMDL+T?CI:X=_4\/8V8"3>I.&1<[O2B
M+^.+H<Y=O4"?DL>(.'?$Y@FX-*:MM3XOGT0[[<)C7#1ZZSX=F\4C^UU_#]#A
M[CLRYN[R-7&6^ YHI<6U[4 4+=4T[[$B,=1C.@?]KEG+TI^7O?A^3.O3I>_!
M]6)G+B7#CK ;V[J/J_7O0/QW((#&TFH:<\\R3P>L.B71TGDN7-;+R1RXR]%
M)IX;D7:W4W_H/DMVAD2O7-&XM>N+7>C&H#[0S!%1!_?J460AHX-6AV/&H;O$
MOO\D$V#M/]*9+H4G(X4G4M=T/0>RI*ZI9'P3W*B_^=MDGZ9%R=$A<#N[PH(1
M:>0ZF38XEDQ(Z<YP"@*!,^(!W9$J'AQVU;XYX^2([H]'?3N0O("I PM[=^>I
M0"#[_[WUB:+%@'&[#(VO$RJ&LJ>EM 47#]!AG1M4J*Q]V5FZ?>3;UA;7S>\O
MWRH[?:K2;CP3\9" BTU3@6IBVNR--KA9&<=!'S281*8Y#CB.G*>A'P7K=<&P
M\F%N1Q+F3U<_]%R6O_8@2=$K1.+]H/+EI.CTC@3A.S#6L0T0+^Q ['++0#]E
M#T+_S<O>-"A+O)FQ&PA@'B=SQM![:7I8'6NUD(Z(FOG]P )UBSA:\AEZ>-%^
MS&7*CST*;WITR\](X48)]/PY/HK;:I%H,HD"8KU(F338-07/I"&T,'I(WKL&
M\!F/>[T9YOP]AUB8\^/1 KPGKNS%=<UKS"=+Q]C<.^)B]'0TAN9"3O019K^P
M=*S034GFZ[K+YT!_U3?]/L'JP*9; O5BKLX>S[RPU[+;Q^1Z^;*YF)N2P&48
MTYL:I):2%;B-B78@G<J&]$MOJC)#O8!FZM. A(/1MY/%V:^E^7.+)OT?'#[D
M?U_.^!=&''85.AE'W?K8*L,(!NHIK4Y='/XAXS?&QVZ[R //=R#>IK<Z2)^=
MGOZ5*WM.-=9[B%6%'LY*E-JU'".] Q%!&["L];T]?Q(/@_'I[0^G'1Z2@_]5
M/.[-;IM1I#7I6XT]WMI+$OFO /G;_,<=2#6"I?2*BDG&?+@:!T_^9]_!'+"G
M'LEX]64PN+AB(:&>$6KB(,1@5#\]H*DEJR6;.O_G)H:2"CZ7DK06\)44B,O
M*7)$@R2;6SB2P$5ZC?LP(6>M:#7O=6#6[DFSS5/^1,.!.)G52-!Q?L9]<$GX
M*\J+[H<)4KXFU\8QR.*_9$PC?5;NS SU&L[Z>%D,W-@.5(O<?V&-<(2JQ;.)
MX8@:-=8[X2;-!UZ?UP:VW&\_>.Y^:=DW53F^FN-'NN$(N5:P[<0 05?"04R;
MR0XD'"LW!>Q &!6 (16NN)(G=& YYQ=.!G6._DT'VSH^NW\T*7JE?Y>V_)OM
M2_Z"1SV6./Q1H.$FDVB?:&?+:>2>K2DQY\SB%1C4,C#RZO*#L-#@J.BT?+[U
M7+6I>)@9AD)UF>KA]ORL8EVCF;+$;3@"]0L TPLN;?^>Y4S?FZ99]#I8>'?+
MT3:K?M^'MGS/?GL=^V3OX,];2I9E>P$N%/P]+DD6'M!\G4U90W26AU*P"221
M%$9ES8UWF3>57C7&9>0T]A0:)=A_,V]IMC^G7<$N_(\X'L$PISUXOI>=Q]F%
M=/M8<&W!8Q,J_)/NV3I_Y&3+IM9OS1L"NTJOARG7IC']T6V8&M&UOQ0D6@X]
M]EQ\ F4_UX!#$:%5]/7:TDGO#[>C3/6#)VX<''*SO?8[<55-F_#H.!2*:;/D
MWJ;L0&H0:PBFE0TS&CT+YPEG.=)=YL?+8%CCIY51Y=_ /^OH?;JK=^:!C8'H
MD=F/'MT\PI^GVXQ_0&GP04!E:35*!D2;/7 Y4H#>O?%9.3J^PP(!G/9KJ1_#
M!YJ:AU=7C:KX6@YKG0^[AE/A(4[N/:Y!.@>[3IJ,Y-[*9-/6I^=,/TZ[B+L#
MT=W\Q2.$@;@><V)=GOZI0K6$[RLQ;L((B3>":@_>0?@4!5VF AGN@"$3SC)H
M 8SIOYPGHD3WK9SKW?NV].>LT=CM:R0N!XR,\.OO'T?:/SL<=7#GU]0>@*!^
M@2(799/",9274-J9'<@NUH7QVK^M=&SR^YYD2S3^R#*)L#IT<?#1+%62]\N=
MZ[?X9HRW^VA.<UV#+#$+CHC91!0V X2[UU#\[-<7+]30\A]4HIU-SS:V-*<S
MM(-?P71<$+>3IQ<M;2(5!^ZKXU?L5S'@*[D=B9'HC[.&N!Y<M6C;#.;CUD0<
MAJ R0CR$S/&T8-]+N/OZR]T3:^O1&^'$L'!"E=J>B3K6'?9S(A]Z%+,O2C01
M1K!OKY#L]I$9';U;8SNQ*D&5]BVJ/C+WY(=73K6J2$KNU=ABD4]B=B?PG7J
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
M-/W\N>RFT*."1@H<T("M;L^1TWWD@3ZZ=M<.1(RHA4QLDR#,[FT WLX75H1
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
M3*'5.HRFQ4,4%=N+CE7D?VS:SGGJ-I?59J=M=Q1[=AM*?,AF)LN9!)LOK!/
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
M&H]X/=NZWO94=.X1Z'O8+]Y_8W^-YZG;#%%I%G\*%4)[1$%O7B-OSUVQ?#:
M$9BH^\T6P[,XU8;@0_W!J*:MR3+_MH<#PA(G)'L]DQMO<U':&1*^UR8#V _;
MA/0][60*8,8B*.^>J.ONPSYA*?$GW=O2?GFO8'_"*S;H_@-&B>/)4(HM.J<)
M:-J"M !HW(RB)(56B@AN%;)W OLGR5R"3]@*YAR=XDG)F']=Z%U,#T/B]/9
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
M?&FU!='$TZS,OR)]4,I5E"Q@24NF2&]0Z;<1@]Z:@'H<U9FT@5&(98/1H%Q
M>\6:20%;.VU\6&Y\C/D0/6)3E'O0]LZ;[[F([O]JZM\+U%--<<C]YC*Q64O2
M SG^^MLBL5<LNZ;^C/XUW^RI:-'1;P)[*NL-P]GRJ1?5ANJ' !JPC7PB ;].
MTFF9[G3,"E6TF=2M<$%=[,QT225/.W5+Y;HN1 X1N;E2);@VKOZW>P6,S2]Q
M5Y'$LETPY4+X7*TSLUR=6=SM2Q6_.*&4@_[Y67=CLZYE29N*$^TJ"3:;_5+Q
M6/KN\8O61%>-GXGFSU]WI]%XF)5_(/.FM.-LWG<M1%$LV:*3NIT2UIK1$A)2
M66IJ^$C\1UWV&T\1IP,)6C/5[''._,D:^A02']\U^[I@[8KD&[LC5_3ORXX<
M@<:UJ;3QGK(^S?62/V2<I8X8034'#L'$W8%E<GCOMN :2ZG!JS,FHVI"Q<OI
MHZ],TA]0J>*IOPJQY)Y]F:"TBPUM$RV ?A?TY(>V%)^LL:?E86] LC%J3XAW
M7 ON%3@X6,'7Z6RRCG-$!N3--@\A%("3Y!MD$3GX)6J6;Q^8'Z.P"L-['YER
M^<E<2;NGUJT24JB_8_TD]RS_["SHGV8F\&L0R_$H*B.EI?D!^50C%M\<U0 .
M"1%%73$7I>Z!TEI[ J:Y/B W9G4M+_1&V?KEIYX:=Z>A9D=I2\PGR'!V(FR
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
MIK_U*8Q+MTFR9O:'<9KG22<2*#:$N077?2)]FZ9']D#O0HA[H%FK<8:H"TN
M2N5F\<^]J9G$"+(F-<TN4PKCYH*K;J:-^;?D037AHY%^$@J;/UR7MP^"F#(
MIWF..&6\EX"GXZ"-7H2-&2IT '$,2/&/BB<E6/9+=9[KO#O=5BOO-:Y=N*9G
M%W;8_.:!X#*'CV>'?XIQ,;XSZ[#$6D++4 ^G+3EB'-O\MHH-2K8-%)=$9>H!
M[&O@Z)" K,&V[#?/6*1KH]?E(_$M2:>4+T?^*/OX5D6\2^A3(V2.T'!B#]3O
MSEJ$*B")KXM[QU\&%:,HU8A#(Q<O_^[1C#S:F" *UJKX]&9<[MWWRM*R_,R_
MTC3T'NCQ&#; D:ZTNP?Z%T+U!R&:X;) ?C7#$PBK9)R=PD@"93@CN;07/V-]
MAZ*G*6O.WI[CAWX5X./(\GW\TJ$YC_+Y<6HV[ S&-8B80,KK@^=J:3'4Y4UQ
M<E8 RH$"3FZ%'H)YE&T&OVYN+2"576'^%-U4_.[RG9<A=X,T+L&:A8KM@8+"
M 2WD)AAA9DD5'RR%. K-KNW:OUO]PN?;U9GZ[?#?"(F2(56+/IO0ZE.J+FOJ
M#(EAXFX&- @,J".'19(P@BT%2^Y42%]]]+!5:\J=R<73V8OGSB!;CP[N@>Z[
M_(QAR$*H8.NOV.MLR(+QDM_ET>W/ EW,QAAAQ-U4NGUSTE&5!IVJ"[R=J/,@
MYBLT3B07*WJ+G4[8TI(2%9"*$J@P@?6C\#=UY,+E8F_.;C3'&7C4;,BM7_]K
M.5S=MQO?^$[[UY&^]U:(W9E??SCEJ)2HW4T']ER:L$:QS>Q9>;*X[31Y%WGP
M;4L8*Z E\S3[PR]WW.GIKE5:?DZ#9H"8IY@54&('>[T5;XS2K\=JT=@)\-F2
M7?>-);"H9:7\>IZ 8^6JB5^8<:K]AW#(P#$ST2:,7]NOPA_77:\OX1"Z2-P,
MME$$A\XR"4]C7./4CSFFW>LAM4\@=!V(A.95D]?<R3$!A9WV4:%<0CTN<=[G
MPGK-[=E/R!,+Z8.)(HGOH V0^_ XTNAIF/54]X6P* ?(I43[_=^%WKBE95Z]
MI2 C)FNK=/]($K_D[C9#*HMV$XBD7V0#F3;+@&%(7;P??+LDL+_GBB>%T=1W
M\D9-,*W R]U1=NA2AO+!\\0G"Y-EA\YP.CU:88EE)GN@#7;RX&%\W0.%8N=.
M$C=W!V>WS<"&':2%*Y8EXN5NLUFP%B$GFG.^_$:-Z"_#<W)VAAM<)[P0''O:
M,"R;+F0BI:!$%.R@F2Q5A!8%U+^! 84N5$1-/>-ZQ^3O)=)Z5U?>H1#IR?.3
M">V;QL%>KZ KA/5/YLOCWIS^SWW4M"RXRQ[H (+AVDIU^#XY6 8W #*J5K8-
M[:2R)+]EOBQ]TV2OF7=F7ZX4II5]3T_DC_U@;N@66R9_13F_%,&NL.DX$,X2
MYJ.XI)JK<D[$ #%+84=-F?+>P"Y1Q]2Y\=&+=JG)]>E&>]GA4W[15_+< 1A+
MZ >5'8#LN"J&4JZ&YX(I9PDYG1OC%81U([G=OM'1R19O^\,"&GX*1E[!2;*S
MPI)U+^X5PA#L86,+FN]3' P.!%/6]T!.IB9 .TNX@_F4=00N.8/A%%4%LS5Q
M%[()&"9N9X3>W0-)>)U-$PJDH4T=2Z\?%[2[,^%QRJR3H(QZ',3]IY;VF/G2
M',S99MK-Q@:#,SO3YKI/$U'""S?_E:5R+9[RU56^P%Q52,R1KC6M/ES""C?7
M@?,!CRG]+(%K="%&"/-E6'D6N7@8*K<"%<4HX[3$:0(]-@-;82U_A$;4ZA]%
MM\V;:)T#AB)@-01I9# ZC;V0W*%RB(_8IG%<S2"A?UPV*!HIBS#RX!4KEU-X
M0 J]J_4<7C>Y+OJD(B^5^^+#[.R942S%6^2OFR]-:@_4D):"_:-1D@B]R8+
MO8% B@@IMX.*6H+DA,)-2>%"P1.PD)+I"MWW84<L"@9V[%;V56M_/%NMFH@P
M YCL!5E)A6PL4]Y \(7#!,H%;&XC7,K\:C'RD)R.@FY]O;^_Z[;:A-#N?!@Q
MK'?KG:V7A==*2B):DCWS=2R=FYC]S!(63^P!CM7Z#2!D$-;BG(0Y/J4X=S1%
M.^Q<N[Q_IF.!Z[25W<?PG<8V3VK)OY EFPU>^G769R2OV34*A!S.D.ARPE!F
M<LR,XU^'M#7"5;^H!-=MO8Q5NQ8E:ZVQF7HX.<E8@FOMG\CF*ET5**2= K=O
M%5.K[)$/L)3<#_4?R#^%53*G^-TDR^9_\A=9!67+P\?UX^)C&*V_8)P37.^*
M%V68160FQH8A7KBD-M-;$S;Q%QZAL/4 <O')#M_D93FWK^:?=68?XIZ%Q/G9
M7KOZW0?.L7UP8/7#*([;@*K((&PVF2T RO]XQ1/K_E4,=9#'14-F[*K&7@\0
M;CP]DCV_I90RV'U%>7] @7WB*W"L\PX!KT*.&7+,Q%(L\])+>#<NTT^M$H2A
M@2+"K/%[]:A4,QMJP$_R$HRJFQ)>8=LXZEMYIG=>]<O1E6V(KEE_CS]=I486
MQ)0#+.AN<"Y@B0Y91;8Y)F*4W#]0UJ]1^M>I0"9%1J6],=<PKO0ZH">39*OJ
M_$,P5.0\18I3_A1;L$WT8,URNGDGQ3'\IEF"AH_P/7DY^FU?<IA;#\7OK>4'
MBQ$JYEKO,M=^G!M25MTY8T"$42P=$ZF(:0(E5(1-UP-R7 8F5X/9R7L?L-2?
MYIQAW_.D8\;@653Q+6O*L_MS#V5T)W'HQRP^3B=68A66$IZ;1MJ>'68=[*$K
M>P'KQ,7$QA6$(%!/I!%^K%)S&G"'/_)(W\S7<-VLHAOTO68,I.Q+A%[&*"-Q
M5UA@Q@GF?3,]=C >GD(&(M/_C?=OQO>VF6M])?0?6HV1=I?,^7K9-O6G?-:*
MPGMQW270(PUGG[/9,W%T0\2\MP#S[1[(%R;"PF.;E_L(,B%X2*:V:N=GAJ[O
MY&94?(I]>UO4X.#WZ&I<6<S?MR#-;K&!8W\C:21JU<:')<[IVR6R= ;4U^&6
MP!XHA4!Y%=A*N=!PDK4VPO= @)OW[X1M=H"Z3;_*T$C_D1D.,B[N@4;$,&S
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
MFF[YO>B(9E@K891J+,9 @#M0G21P%Z(=,='5*C06I +^ZS"98+2JK<.<#';
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
M:_]K_VO_:_]K_VO_/]J&]<G_ U!+ P04    " #D@$M2H^H"R1&. 0 SC!
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
M/:T^I$HN.6?4\Z(8$JQ\TZE,P(3HS5B@$).<QK%BPHTP^PLS-];<"MX$."W
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
M#2J<>DX.XA(G%V"09H";"D)!++P(!Q)&211 [&%MU!A_$&9"_U=ZB(3XBE:
M<RW:M-_EKG^9IE/ 6BX&U\,U-G7W0>K:;H!CEE\Z-=1+=@*\5&;ITM=[>H.S
M==K6]/TL^5-1Y7W4&S0IWFFA#:<]U0</M^HM+8QY7GZ414UIS\=O4!>&\V(2
M"H4@1::4@Z2F0JB*H))AXC&]D4+2*;)H1%GGQDU=2<%6U%[L-.846[K'YS%Q
M8_O<^\V9NR]^?#0'=?"/*.ZTIP;CXWYP%#'!D#V#QW?"U,M;9:+7\^)-6O)5
M7CX5VY;W2T4"3_J)YOTH"2$6BD&2* +]2$G*B2<9=ZKH8S_TW%B]%M@QP-P>
M:#LR'@>^D;FUEO$@&6:LQM3N& T:K&X_^K01[,ZH'(2UN]^A;XVQW0.(=]7A
M0U51MFXTLI2ADCCP%21*>A C34B,13ZD'B6$<>K[B9-Q>G'$N9'1P?F=:YVJ
M2PA;GHT.B=O8!Z"'1YZUN'6MXFEZ$UD#-FPQJTN#3ES0RA*#PZ)6MA<Z1L56
M&3KZH?_WC_^Y#&4H/<_GD&,3]RI]"A/$$L@(BK&@TJ/2KC-&YZ9S8X]_IX\T
MDZ4$_RDSUY#++E;G2:(O B/S0*6\R;C-!HB%/*+B]LTMVU>WE/PO=_G7']NO
MUZ]N^]O^:[MSTVD"'X^HL0EM//99CZCSG_7+^O#T\$;RPI@/[[--S\,F]?_-
MD_R2?Y*K^M.V:NE2Z==1<AQ /Z$!Q%A&D++8@]H B+D?QWX2>]9QZ#V%F-O[
MVZ@!1*,'2+-.%]1-BVWQ)$V2>5&K8[Y4- HYA%?WG;<+W##1;(S,)>U$M"J
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
MI)P_&L;[*\5X _6M,E@7DN@6E#"UN?/"I'@%"::$RP#&L>=!'"3<I-KX4*%
M\I#Z-/$#MU[:9\>S(H9)NVEWA'.M+7@.5SOBO1ZKJ6H*-N5E?F@E_7.=)W,9
MNQZE RTP&;9LX+D!)RX9:*'[8;E FXMFV[3L4[Y::08T%RV%HH)X@D#,*#+]
M7@-(" VA%T7(IYSX?N)T2C.M^',S:U^PF9'IO5C=M@2_&81  Y%KSY)I'S\[
MTI[O0S7R*O"'>I[FV#7KR+3.(IJ\GP9_C,#RJV;G!9IH'9-B*,._&G13WOPU
M?4S7=/6+7"\#Z4LN38)J$DJ(*4>0*.Q!A/V8AT)@P9)K=P&G!I_?EJ"2]-K-
MP$FL^^X,KL+O1;<)-<-ONR(TYP%[)<XTU<L!,^S= 1QW3W%R]!?>8%Q"Y?)N
MX^(=>H2O&GI=21,\*_E]EJ_RN_J<[URI*AG$PA?"@[&*(XA%%$'J21^J1 4X
M"(A4860=WMI#@+F9_QL50%<'H)4 O2MA#3-3YREP"OS'C_F:*?0.0;DC3\%$
M0;MC3(5;8.\5.)X-_.USW^D"@Z_0>B=P^)K[].PV*43EIZ>KCS05[[-F16M7
MF9A[+$P(#(2I9$STVD]CGD >1RH2PK12YT[](L^--K<E92LL,-)";=PU\O8L
M/7D>:SM3>3 $1UX4K@'/O?^B#2B#=E \.^"T/1!M=#_H8FAU44\O^CKGO]_G
M*WU%67L"?LG7LOKKYT>]^WEM-O]%:0KOFM40+;TPIJ'/"$R(X! SZ4&* @\J
MA8,D82*AB57IJ+X"S(UW*DE!:41U=""[(F_I AX1S[&=N!W1_]_6'VND7X :
MY4J!!=BJ "H=!G2T]@1O4%>IJPS3.CM[(G3@KNQ[GSX)IU+)HJ@B=3M.G8-@
MB)]6.:.KK=WV(?^FOU.'/"PY]17V@@@*2?4./N(*)I3Z,!$\9EBA6#%BGZ!Z
MO4!SH\&?WG_X\KX*+V.T3$L@4J5UE/J9<LK5'&"F% I\TS 7QL2D$OL,0R(#
M"L. $A2J@$8^:1W&7V8V8;N^Y"\O.V_&/ZI9(9.\.DG[EJ[O ;\WQPGF$W.)
M.3+@:[<*@$-,L8639N)7;.25L=6FBO';<4QO8@AO=F((:[VZ#@2M6?7E6K>)
M)\PEWWK:B9LJ/WNR"73,[!X.[?.9X .,,V'F^'"H[&::#WC?GNE#=3SGZZ:C
M9%O6HW)1':O&&O@B"B,N( H]'V(B*&0^CR#E. CB !-,G'9[CN//S<IYJY^>
M_"'EX%Z*NZK>N3D,WU3"<@S3=)T,NPW@B!"/O,JUD>VMZ)L*3HO:_;UP+#_L
MGG34#[I!$Y$<19@V.:D?/@<)2SUO<V7&Y*UZEV8TXZGAUDVT2]-L':.8,!E3
M&'$B(58"08IE"&/. RX2$GI4],J=/#?JW.BM\WK]+*G!_L&]E9\=WI9<-C2*
M8S/8%L!<@8W(W:#":9K<.P$W2B+EV8%?)J72!HN3R956%_<O%Y1GM>^K"B3M
M%&1;>LI3?A1S&(2A@C@D"C**0QAXH4J8] ))G9*ZSPTV-SZJ906E$78!RCK(
M-M_*ZU[YYR3,=GPT%'CCQW@8W#[7N-62[M3-'+:*SR5$AB[:<W*\R6OT7-+\
M6$F>B]?T#JFM4_..5+$2TI>11RGT]),#]<XM@(2;!!:$*(^C*% A=>&0,V/-
MC4(ZN;$#% \[![(=@PP$W<@$TANU/K&PE_ 8./CUY'!31[M>TOM(>.O%2WJ<
MCM59++?JIR)_>BS_GJ[OT^SMP^,J?Y;R8_YH\H"-TU:%L602<9.(&Q@[)-%V
M"/.A+T2, QI',K2OT&HWYMRX9)OO<U?)71V)F*.0>PED(SUXW(COX&.WG .+
M<X_AD1V9:AI0;Q6H10:US* 5&GP<$5"'<XGA@9WHZ.'44WODB1VJ7JP;5F</
M#BQO-=W9@)MN.^Y_QTM[!G3Q>RF>5GJ_^D86Z5=JBE]U-JQOE9)\?5MG1I@
MUD+>RZRLOF26EP]Y67XQ'=6-6Z+R2BR1PAY7%$//4QCBF$E()%-Z0\KC0)(P
MHLS)>AQ<PKFM$ZV"YIW;JKCK!*JU!'F;@K2C:%O1Y0>CJVLSC<'GW\ZP?=%9
M'7F-&GA"P6^5IN-X_D:;AT%CW 87<MH@N+$P/HB2&VV@:Q>7G_)<?$M7J^KV
MRY!3C**00!HPTPL;Q9 P3T(_\508Q%A(N^BX"^/,F>A;09N7V[6:Q E@7;FW
M-UP3,J@U4E=PWU$<QF&PW:%>B(>.ZGN:38Y_O8?SX-53F6:R+#7YL#2K[-=/
MF\JX=9E5E=)-$M0-_^^GM)""9J(3 %,UMY-BDZ?[P23O?C*-:'+U:UE?NO0%
M0@E)$(RQ2:'E%$&J%#/5P )*$DH"9=7_=%JQY\98VTSW594-3RO]'#;6TTVX
MA;-CEM,X,I.V.H..T@NP51MT]6[31EO-]PL;@$;Y1:<$0J6_OJ-! .8*:@SJ
MV\SR*7'PX,SR:9G("33#I\;-I33YY)WU2DTGS72.K<D1WO&-33]ZOQU0O>7:
M[+"^T.^F^ZX1->-:BDKP:CMV(_[KJ:R[KRQ)'*)$$@2E%WD01SZ&+$@\&"%$
M8BXI"67LLCWJ(\3L+!'W2D:]L+?;08V-Z,A&P4;\;BUHHP'856'1.*<Z6BS
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
M7B >]+3&QP-"SWR_'SM4)L@3-^$"V5V3FMPM\QZ&/*$)D3 (3)>E(*8PB60
MO3#V0BRH9+%3TO"%\>;&%3OBMJGW5]7=OP2X'7,,"./(!'(5@LX\8HG+D'1R
M:<A)6<52_WURL;ULH'+T)VLQ+H.$^CY" 50<:9L$8PZ9YVOB83R,&..,)[@-
M%+(C'/O!>\0%C<P^'_6-[FE91V(^[I9H7>S6:+VR+/WI&;'CHX%1?KF2]'N%
M7!>[E5Q'+$A_$;!1R]&?'OUEB]%?1.5B*?K+=W CM;)85W39)N9L6H<WJ1J!
MI"*D2D"/F%V5WD=!I@(%"8^Q]&E,"+4JSGIAG/D92E_3LG&D?"S2O  ?JZ;,
M"["5W#%-YA+2YYEI0/Q&MY"&@,Z:@2R!.4,W^@X=JM&_[=/,I2$FX11+/5L"
ML?WZ8 6B3;BVMK;T"/JG,C6E[\R?VPJ=STM$I!^)Q(.1B!*(?4]!YD<!1"$G
M843#),3^E66>+\DP-Y;9R@MX5V"PVM8UO;IZ\\6)L3.)1H9[9%(Z7DFY@_^.
M!HM-W>3G4<L@VP(X<C'CBV*\=$EB6YPL"@M;WVK@KAR;K'J<D) (G\+$"PG$
MG'J04%,@BC#IXS *&''R0%T<<6ZD=[:W1.\B!I>!M]SY#0GGV!N^:Y$<KE/'
MF/4.+@\ZCWX=EVH@V%\X77/;I<0J)%@S4<1E #$F"B:F(;>/! U$Z&',Z/*Q
M,N _KVFQMB.E/J*XO%C[ HUH.,B[-,N,KY?1E9%Y_+:T2\I1@'@<Z#UW$$.<
MH!@R20,8^UZ2F+*!W/.:.7F;6?H-IYF15ISQYD./,.UDV"T;8\,[\DIR73?@
MEVW_.\:2TTN.V3?Z/;4P776O:Z(XS(W>:=5JH_Q)O]BWCXU!7KZ2^BF3FV-B
M6?Z<9M4Y<9OH5%5T[=[%K*?KYY_E^CX7G9SR)<<!);X7P82Q$.*04DB97N>(
MEP2<B4@JXB_7^9JN[*AT0MF=;/>-!J.'3[!*/Y#6OZWI]S;+&_S +K6F>/''
M(8@8$Q(QB&C ];9+K[/4#S%$ 8UX0JGO^][RJRQ8[A8I-+L'HJO#RST2\WT0
M[%;VF4[NR 9!,ZL_&(G_#,SR [:J@ZWN[;S7&H%:I6Y)G46G@4W5%ULO;Z:P
M1[Y:F3NU$ T=>C7I? T?S36-^"\0(#;IO!R/.9M6A'[FT;])H;>==V]DF=[5
M?LNJ88P?<A(K1*$BD=ZL(Z0@"[1-DW@D02+PXPAS%]_A\6'FYC!LI 0=,7MU
MY3D!JMTR<#U4(S-V#Y2<N?4\"$/2X(F1)F6L\]KND\N%;\^F$6_G@Z6?(*+\
M(($8([TS8B8\C7("(X)CST,JBJ.P1QVK<:7N$=<V1;VKMK]#6^_JQ;ON=B>Z
M]Q'OU//V/Z*O[@>+T_LY=-$],CDS;YO;E?BE#Z5'0'^"QKC'1NUYW)26].ZN
M, RKY;I5G^17F3TU!1^DE)QHG"&A1$*L$A\RCR50:ILU8KY4.'0ZY3XWV-SL
MU5U931A<(VV_*AMG<;8\G1@(O;%/(7H#YW[08('(H <*Y\:;]N# 0O.# P*;
M:_JQ2+/WSNX^5"4+'QYI6I@=='TX'9,H1)A Y$6FB[82,/&]$")!)>6A(AP[
ML<BYP>;&(AM9027L FS%/7_HY@XS\GWBL3"!%">Q)NM(0AI3"4F 8J4B*A%.
MW#SB0P$]C0M["_6J*IY:U:4%Z19O?D^+.U>3_BSD=KP]%(PC\W;O1]69MFT
M&9*VSXXW*6W;:+Y/VU;77%N,S3@],SUKSXV!N5^RB(><^YI,(H\*B$-?02*5
MIP'W0JS)/0ZH4U:^[<!SH_-66N>(;FND[2AE#/Q&II=NB;6-T-O=]I@%A5S1
M&J?"VH6Q7ZC FATBI^NK65[?-Q:R+GEM"@Q4>^,M%VKR>TV+XEG5R<#EFUP_
M>NN4+Y'BD8_"".*8$(AQ0"'S50"UF9DHDF!*E'#:L[K+,#?6>B=-@'S='[O*
M):I.]GD=^L6[&KA&XKE/C^56=US0Q]X!-]+7!4J:+N0=\\HTY]K180%:+88,
MPNL-X; Q>.YB3!R"UQNGPPB\_K?JT;IXUS!LV@+\DF^28&[KW@!;7^.2*TE$
MK$*()>9U37\F?0(5IH''9!!%B=7)<[_AYT:+^QO&-OK-Q,5^NT_Y/<CR30[?
MLYZ79DOYC9:@V&CET-#7?<+.L^7XTS#UEK,1WP08;9/WP&W3X:1SMC,JZ@YM
ME4=%?Z(VRR/,@EOKY=X@GFW%['[7Z5HS]]9XIU5S_[OT6&U^IM_3AZ>';734
MK3(]%6GV_#[[2(MUIAG[/GU<XCA2.!8>Y,(/( Z5A(23" :<)R%#V(_MJGBZ
M##JWE:41&Z0;N<VNUU3WY+7TIMCGXU9^!S:SG0:+E6,$<$=>+UI<MR*#6P4:
MH?5?P<=1,758%T; =J+5P/79_<M BX C8F>IW_9>TQ&^HW8[-.]Z[;6^X)VZ
M:S>9^"2K-KJO\W)=;AV5"'N<)HF GJJ*HG$.2<(E%#X.F91)&..>[3FLQI\;
MY>]6%#2>ED9L4,G=UUML-Q>N3N/!$1Z9]R^ .Y'SV FU<7S(=B*\D"O9"9_3
M'F6WV_0CNY_R7'Q+5ZLVUNI--5A=X6H9QR*2$8^A"+49BTW9-(9X #TNF) T
M1MQW\B"?&VQN--;*"F@;)RGJE\X8 '5VN!N5G47:CK>&PF]DDFK%7&QC3&M)
MF\IIPU&2#2!#\L_9\28E&QO-]YG%ZII^-/(?3]K\DL7J>=.EX7VF\N*A,M&W
MRS/A7H)#1&#LAQSB&%/(E @@0BK$D:\"Q;$+H=@-.S=J^2Q7LNHHLQ&_T]SB
M#5U3\,.O&7T2J?Z.8^*QY3S8T<WPZ(Y,/,?P[(BLK:,Q["(WF(:D(\N1)R4F
M-S3V*<KQZMX]GO53DV[BS-^D)5_EY5/1B3X)HB FGJ]@K*B$."0,)K[>V:'
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
M<<+BW$R'3B%*,@QI+AF,"(LUSS#)J==!9V#YIF9]_:;LTF'W(.8S9 <I*?)
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
MMHPQ6*NZ5,]FY=RMW3,?:M37Q(U<)SOY U-U[T[N-0A5)-3USN[V;'Q=__X
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
M-*=XZ+.R"YGDATG()> O1RGGNT1EJ_VLZ8%2SD"-@ W"JS&8@18%T,  6AS
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
M8*QS9HA',4/Z"$,22YKP%&?4K;W,E7&F1O/[!M&+ND'THI74L]#0!5C=>"8
M6 ,SRTDC[4]7<?*OV].-0M#R.Q>&&K>*3K>^)\5PKES>LY>>(9GR-[79KI>V
M<O%=6WJE;'JV)4DDM<0I)'F2FIVBEI!G(H4ZBK!"4K((>Z6 7!EO:OQ0B0L:
M>:NE=2]QWW9Y5Q!WHXR . Y,';=!Z-\1SPV8H(WPK@PY;O\[-_U/VMXYWM:3
M9=3#XV$(Y-[QH@1/:9I#8WLD$!'*($T1A[GY(TV$-B^7UQ'JI8$FQRNUG ?!
MN'U=+A>A=>21 ( -32!]L/+GC2M !"6,2V.-RQ17-#ZAB&O7]^0&>[YE'FI>
MEV_&L/FR7CVLV>/=CZ*<YSH1E C##A*938E4%)),IE!AQF7*$:?"J]3SY:$F
MQP]64K 7%32RFE??2.M+$9<1=B2)(+@-31,](?-GBJMH!.6*RZ.-RQ97M3[A
MB^MW].W_O1+__+9:F#M*>U!B]MDQRY-<Y:D-",ML\20!691@&"=Y3D448X&\
MRC>>#C&UX](J@Z%V8#5R_H__1I(8_^_JZ-3W_.(,I#G3$:$"04$QA8CA'%*>
M<)C%)%(J35F6$G\O[&W OJ$#]F8\$<[SI%J]5%6RQY8'3UD"I428("09C[U]
MKB'0',W=>C."CHO539@,O4@="/<_02T>N-MLU@7?;JKB-9L5^,+6797.>S2)
MOX1(V';P)Z.,W/C]DI:G+=XO7MEO07IO6\7;&;0E7XJ';YOV+"=+*8K-\F,L
M5A%!E"L-:9(@R+(LBY#.-2)J_JS6?.5JPEX:RN<=/QQPN%?]4%)0B]KSQ.PB
MO+$VJSN-D&T9E=NBS=JV@B$PSCE2$6-2IUZ>ZA#@CE+ [!#:7]7F^VK]S^#@
MNK%M",@&YMQ>+Z(WR5X#(B357AQK5,*]IO%KVKUZ?;!"B_>K95G(REVR6E;=
M >IJ6O$\YQ'A*D609\@0,LTC2#%.88RSC!LK3 GN==[H,_C46.1+NU%^6A>^
MUID7Z&Y,,A24 [/+N<J$,W D.3@0?=#Z@E?Q&KA<X.7QW[KZWU5D'(KY77]&
MW\04F]/UE?VPU0*7HE@4U0A-DY/];]E&O2^T&=-6$F3F@Y))GD>(P,Q&GJ,4
M<\C23$"%F.28*V5V\'Y)*[WDF!JMV?#_M=K495UYW9.P;B3RS5RF2KO#*I95
MTUZK'EM4%YJE:2LV6]^,NKYSYT:)(\S(P.SXH>KO53RK-G/15EJU\H)CE?8]
MI5Y?=ZC8S)8!W(;<&M^(<-C<FWZBC)R7<Q->ISD[MSVN'^'^IMJOW7JQEO(W
MM3 #R/M5N?EU:RW2S_K+JBRL).6'1?%H^5_).:%Y+*5M[:=C#1'!$62495!'
M@A+)F?F?%]_V$V-J=%N+:OLR/;7" K63UH]->TZ,&YD.#_? 7'JD0!5(TZ@
MK XSL)^)G1[@P_69\.;,VX ,29D])1F5,6]#ZS5AWOBT'K7&3AQX/RN^WK+U
M2Q+%I#DJ2A.<,A83*$4D##/:1@0I%5!(08@0F=#(J76)ZX!3X\ S3N=6:-N>
MCG@>S3GCWDU\0Z Y.,6]#9 >-<," SI2D;!KP :J ^8!3F?A+Y?GC%?IRT.K
MH])>/O?U+0U[)^7:'E.8'S^OOZZ^+^?,LFV4*AL*D4(D>&9^2G(H<F.G1G&,
M-2)^56%/QI@:_S853ALY9\!*:G $5E;?:K"G@':S;""8AMZ']T&H1P'8BQC<
M7/OU],DCEWV]J-IIQ=?+E_;LWL&*=97\]>YE]^/_*=3:/.C;RR?U;#2WP7QI
M$MGL_1SB.#-?/DL)-$89@PG/5*Z0K=OG5<7&;=BID8$5M4YQ!#MAJ]W2KW=_
MZQ4^Z8B^VRXT/*8#,\<M</IWX?!")VC;#;>1Q^VSX87&26,-O[MO.$HK;(>6
M*JCFK\MB4_[V^U\;LQI)@A7)*.2IK:V5YRDD&"$H2$P$)7FB<B]"ZAQM:CRT
M%[:NI0$J<<%/1N#R3SV#-;KA]C@'"P'B&,==_?'K=ZQU#9?@IU<7!QS_D.J:
M[F?/HJ[>U(]7/AGS2:D+*:]?V$M5"/G]MNH']'/QK.;4;&QD;'8]-$X$1)'&
MD"-";.$HEL<HRN-(^5"-KP!38Q_SSF5^W.(-N1O=# GDP Q4BSX#EY/?9]:9
MS!7XP@K9="6S.H0CI;[HA>0I;QE&I:Z^"+UFL][/Z=V0D2U%P18?E_9$WSZ]
MVD40+**4TPAFQ!ZE8T-AE)L]7*IYE&B2*H:P9\O%<^-,C:YV8H*]G/TV:Q=P
M==R=W8[6T-NQ'D#U:8;8!4/@=H=GAQJ[H6&7OF=:%G9>WH\1OIK;/NL[N7JR
MKH#6LT:PYC@3,,<<063L&DA$AF"L8X581#*44A\Z.#?(U+C RFB]V*V4X(_W
MJT=6+#V9X"R>;C1P*TH#<T#37ZYIX;64;"U+\-<G:<.EKF+E309=8(1D@K/C
MC$H#79J^YH#.:_L1P"]FWCZMRO+STA;C^*R_K%?&&C'&AYG\C<U3>K),,\_C
M%$68(9@I)FW7/PIYIC@4,:<:*6W,!#U?J@?K^/_JS@QNHSM]!;3^"DYD&.Z+
ML,*#GZSX?P*&,-X791N,5(7#-*J 2A>P4\:/3QRGQXUA J(]#N<$1MB;A?P
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
MW^\*>\1((LQA+'4,4:*%V6RK"-*,"QDA)3+FE>9V<:2I$6HC*%"UA\/3@.P
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
M>I=%^0LE6\U+%FIC_F9\ ?FI6)O5Z_;9EF^U[4UL1L!3V70R11F/>82A%HA
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
MUYU=JG;W]L]5.&!K;'^RMIH7X"^MLEH'>\'OC<4AXW<&')"@,3]#Z#ENG-"
M2)_$%@TIJV^#S_+<[+W!Y7Z]*I_XC\7VV[W1TVA4['DDD<;!C^,<2LS-?$*8
M@"SG"*J<8%L-6HLX\NO\Z21W:E-$<QQLWR/0* [^,)J#1G47/KAI*-PH?0"
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
M3EE;1<J,O$V'-GJ/=TM)]4S56]GL"-,8;#-R] K@0$3X_BUHG_8)4#-_D$_
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
M$UN]F1:G.!6<0!30%"*BFQ:0&$&" A%&(4\LBPB>'6UL:]U:1K 5TFG[[#S
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
MF@YKTR76IV$08Y'$'+*8((A$GD,<AQ0*E& 9Y&&8V$656(P]MO=_(SIH9)\
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
MQG0IJG**6,03*B(H<20@0E5L44!@+ GG6$T=DEK-%><&&QOOMVTF2[T=KT]
M2=NQL#J*47_DQ0K,U"+,MJ#D6<C-&-D7D#VS:RN2ID=15(_Q!+RMD=,U5C=)
MR3_H0\ME268_>@UJO(B1YW#&T^,-'<AX4?,C(8R7KW&CF'-5=IL8[K=-&;>[
M)9F7L[KTSR;!^8Y\GP8TC:(XD9#%,E!,1!G$),H@X:GDE,8I)E;-ACW(-#;"
MTH<8M$E/6$A-4E760ELA#ZRV>@!RN5]N;Z8T8[B!#=3W]L>EJN*3356&5BO0
M4:M3GV&B#ZO\D:1'F'URJ0^Q!J5<CSCN,[//6U_=VN&=4&*PVOU4/\]$-=:<
MWSPNEJOB7]7G)Z/AITCF69:A'*8BCB 2.8<XRQ.(*0[3+))2LG@Z%_=Z)#,>
M]R6:$5?D-5=T!>R/,CZ)LOP[()W6!+RCH'/+A^L,:,;=@QIE^!8179TF8*-5
ME:_3U6NRB0VPS(FZIGF$%\![:BIQG6ROU6S""Z)GFE#XN;_KZE](H>8.?KM:
ML#^K;8E.$?-I2(BD E.(<(+T^E^WSJ5J_1]G3,@DX\PNMN#\<&-SJ#?2@E*+
M.P'__E,0@B?2=,H&$-S4V_S_$OSO  4!**OV$KKLK7X9JK<]"L)\ M2G3W5
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
MK"CV1PO5]\K2P(IBYV%P$1,[.G)T';'SEI^3$+OPRYYI68LORX5>"'/"1C7
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
M"$I#X\8HK30AL3X-PKV'=T($;Q\1^TNT$4A\GKOI8EP$OX%UP U:*N&0?*E
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
M?0- NIE):871-@<.*63<<1'UZ)LAW3I1';FS0:DJ#O).,T$K!U2]P&,OB3:
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
M][,CH!T]\(E;+,9Y'-S]&I/2,_+D[/7I1B1G^58H-Z(PB;'LLH3(#8HBE89
MCD=P0@;F4#0J5FD25HVC;NOA#W$$U@8JVO&TGY,'<IO&Y]/75TC>-'S_/'<8
MUJX&5)Q,X^J[R0,YW0B#LVQU0A1'J43IF67!*NE!1<^=($2&.@.:Z[#3;7W\
M(0[D&L!#$[O'EAH,A\%S-D* U]:!4#F#IU9 2,Z$Y'W.L<I4IWU+8?XX!V_[
MZZ'7CAO]5\)D2[+(Z$\%5H:?EQ(,2VCY-@BCD^>!5@DJ#ZF$H7^(D[0^-/+2
MV[E\6&GE(BW1WYG<9ZKOWB[W'W6T1B_/<'C4KB^((R.SY4!%:2%*F ='I +.
M3&;,6QIBW8+ONEU?'G[RK[/ENGKGTY?)N'3GQ9UY48Y#BIKI2-'LI.(<G)2E
M69,H=U56[7B5YC[$)'F5^&E70ALI7>X-63_>6WM47./YKC=H@K^N;ITL_N/*
M3<;Y>^G&N_AKBN=I43S6F%)DI=4^3Z3<_*0.+//E1GEFZ+E&YGB56_R'$-W(
M/<=J@#V:0IL(0?I.6Z^2%%H2)X4"XH@IZU84(1B07%$JA.=,OHA3C*Y@/\;X
MIB.#_5CJ;WH-/)6.>)B *$R7(:E"1@XI>-RK!*=@G<X0"3.2J>"=JC)DI ?:
MF^DB/H!!KZ'>WIR2WJ*U3U>7EV[^?98_(:^KS/-T>1+"[&HUV^+#;#(.96;"
M'L%9QT\^,!;;A_Z>0J_'C[G!)*6$Z& #.!<HB)3QE8H*DK$QJ\PBH54*D9XF
MZ> @ZSGQ?D:)OIJL!D1I&5@YH).E#;B@I'2C-1*"94(0)ZC(N4IHU8F\80.J
MGO#R*(KJ7S,OU4S5-U?'-5M#F2\5K;<Z42 LXY:6J0(KRY6G[!TW3BL9ZW20
MZ]U\%3V/?BTS[M-9/ONR&=&T%NSWV\5!K4@Z!0$F!%]*QRW8@"Z%T3F:()*1
M0OX(0-T>U:P)VD7GUR:H@G0;2-O\5J8>OETLQY?H?BY&7 FG#<K$BG*M0//2
MF51E,,:EI!B5@52I_KQ/QK"IE9YQTX.D&\!)F?J&THCK@:T/,)^L=LQY"I((
MW&X=\>!+RD=ZDP@1WA-79VS.,T0-F[&HA*'>M-  HIXN<%C<KW!X9&*34<%0
MJD$I)TOQ3P;O2 2#[&>K>5*F2DN#O2D>-K-0"8O'T5\+0'7C^>KJT%G>C!)T
MD],I2O!J=4MIS=W(.DF2%0$BX6C/>2F9B,%B!.*,MD(@7U5VSD[4#7MIMQ8
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
M(=:L0USA19$/NJA11Y-==#+*'Z; NCUJ6 >]%F JB+D!2W0CG0WY',5@A<W
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
M\/%1\_#"8:\J'+I'[2^S:?K^BYO_(RU/ITC_U?V8\I:[43(^,F4%\+B**9D
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
MZ<!M?^#H'_/%/VN+BGG,RRV6>$2!,FA" W-U!H@ U-F ,"J3MRD+\TU:[!Q
MV_@]R)O";""A](2S5]/9=$EW^<_S>=IB*2KK.#,:2DE(;DBH"5G6@,[,T0:6
M(%V3+HT'T#;N>U)SG TDE)YP1EQ,D'Q-KSDC@6<R.&M^/2I/$& R)1NY2[$M
MH(B(<5]PFB/GV&WN+T!(VO537JR^O+U!^IQ9JJ7#GVH2X2GV]OX/.]/8/I#*
M@2SMKU9[\62U!_#X)&6*,H!VM:>[R:06:D<)J:U(V7)K8I/"S.]2=JX"V;O
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
M++7I=TA>29D"MBG6.)+.KFJ<+X'#4^1S;? C/)'%B>1-9Q20JJ>C:O(-<BW
M:AN*]Z$$WB3/_FA*QTVD&@N"1\OHRD#X:GZ[F$11JUVX!Z$Y>3W)!UBWI;6,
M]C%YYZT870E60L?-K1H)@D=+Z-H0./V<)\@+2XI9<)C)$XJ(-1V;^*O=EI(U
MUK8IWSV6T''SKL9"X+$2NB($OBBTY@.31D;N>(Z@HQ#5(2=VBT^ EJ,P(C@F
M+]^N8A^UXR9FC8#%TV5U18"<!!.8#4I KOW@E3 .,-1SE[G7.E7#HU&$X# "
MQTW)&@%V1TFDOS;]/\_GZ<_IS<TI\;B'?WMFX&TW#0-%V.X__,4L_5);];^?
MAIO-N^;RL27;8V>=F)+1)$P,M>P[69*CK$_MI>3,I,W%-GF).8K*L]N-WBVV
MJR5=JH,0A7/$=LTBK$%G-)[7OG0IEV*##4T<SF=H&C?*U@X_WS0='4@L_;T%
MW'-V>G^WK4\82.$T[/%V'&RD%5%J2X9*;5BK5-;@:II:L3RSPGUDLNFINXC:
M>9QX][#_#_C603)N=0:?ZCA-QF@#/,_@M-:FT"6N5)/ZF6=HNB:U<PQ^MM7.
M4&+I5^ULGG"7T]GJ0_XJF6G^P/+FC>\<S73X(@,IKQ.Y&D6_\>(<&NE VE3'
MI.D$GOD"Q7#-G95!FB:>\]CZ;=U&0Y0H2RP2<C'$?.::[FZR#HI@F ++D=LF
M#?CVT'-->NT8W!R@UXX61P>1@1]NZ8B3+_HB_I_;Z:81_;I!E7,25=(!DG6U
M-IMY\+DP"*EV9DE98VY2B+6'GG%1-8BLY\-O?*?XJ5\N\OTH:^&B+R($*-%)
M4,;4&98F0LHU5L:DL6U\WN]2-BZF!I'_ 9@Z71ACY_K_?HOTHY?S_WJ]2O]U
MUYDL%608>(0L:LC-1034O$!@@G[#I9+^L$KD'1_>'Q[.D-U\P(WL0,W<Z]W7
M#SF16DLL7I8:LJB^@^3@8ZG?EB1\R:FX)I'J;RCI9<[[<%?3>9O=$5K>S6]N
M7LT7?^(B3:0SS!6M">NY3H14#IP5#HHW7LO"60ZE)5Z>T-*'B7RB=/=@Y=2M
M[@@MD\BCC]H50%[[WHM,.E'Y %9)DZ6)KFR7B T+D3YP<;(D]R#CJ&T]&0Z?
M\F(Z3[^O<+$:%!1W=W#Z<=UU]>UZE8E.10GZ?P@A(2@4'-!J![YX9EG]TS=)
M&'F.J'&OH5;@.7O[.](OM"]Y^GZVZ<(7O_RQP-GR9BVA^WEP$TF7MN/20I22
M3+R,#!R2D1:<C<X%[M$UB>4<3N*XB9BM8#:P:#H"W21'5H2Q&:S 0GND!&U/
MK6.T=2!VRC[RIG;/N&F3S2ZU8[;US$OMIUD:%!)O5A_RXI=97-2<DQ_SYK\3
MYNEFKCV8HTQT2P>40$8A0HJD6V6,MJ0V4T"?HVK<C,=6X#E? /T^AKU(:1V[
MJ"6'9;[XB)NAYN<^?SWWL0,]>!U,^2A/7$K+[$QMENY4K80B1RU8;L&8PKFU
M4AO>Y 7[HD]<]WEO=-C>+N8QY[1\1:?R[2)_GLYOGX;&:#]$-#$GT(%V007:
M#SJ'$:)6#A,FH5.3CN>'D]B'-S<\NKZ9J-U&:/VIN.U]/$6???,99RJOYVD:
M15,Q87.R7(!VCK"4E04O(]UH7'B&.ML@F_HP%]%4^U=X,C)5:NX]HVL\6%V+
M5P6@9@R2XB:$S$+.3:($!]!V3;KI&#QMZZ:AQ=2_4CH]!W+/)PVLH+K)B2Q.
MI^"T@BR#H;O(9 B>KB:IC"HQ"&/8]1M4CZ]#KZ:SZ2J_GG[.WRR[-8W5,#1)
MU>R^4!BHHC2X6 P8Z4W)V9@D3(N-.8'6:U)CQ^!M?ZY1&S%V$*]Z[(OR#(NO
M;E=U2S_.%ZOIO]=ROFM,O,4[NJ)$0 %%2G+2C3)D9Z8(/EHOD?QHKYJDG S)
M1!_Q_,MA^^*"[_\NO^/WV^TX/9YR[!(#W_Y'<32*62!*%DP["=%CK&_AU2X,
M'C@K+ <"<K%-PZ"=F063I(2UV0601=6W-CI,CO$,(FJ#'E&Q-L.]#B?QFHR
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
M>)H(QV^8?3\%<XN=W846=_W"R$_[@+/W^1V1\"+]+WEO]0&O>H9:*B9 2&E
M>:L!B_6@76+9)V1^>[[M_MFCYY,S[E""RT!T).%=C5Z=!!Z,42Z!,Z6.0,P.
MG.1DH12)*65C7)N6P@-:D\W&$/2H18\2V)G6Y$^S=*$"B*_=19RE^X#7C_G3
M?#FE#7C<Y&&K(4Y9>?C2B+/YOW"=A$<MDH@<O&9T@XL8 750P*+4/G*E4V[2
M8*AQG<3ZMKC_L/L%EH^S0#8#T:LL7MT=>$N:GS'F@*5@ZO,663'HZQ,4<JY5
M(? =]LYWS*I=!'P&Q<A7UW4S 71P*^_:L6WV)B:D:(.K#^+)T<Z% ,XG1>8R
M9[YJ^,*;=)X[A+AQL-<8%P=4_I\EI-&C.IO]>XZMM^N5?IG%1<9E_C%O_COQ
MR5D=76VWQVM:$-DRWN7:;M1+4;0T# _S6$Y8?)R(SF6@=A&!C)TQ<\@Y>C%+
M;XG1Q8;=KTVC?V>RJ 732G(&J3@.RL@(0=->*Y]XL!F1F>^:?4,1,TY,IQ=
M-A!8)\&=>[8?6-T1"'BY_FHY(2>_>)TUL&")O2@BT(%,@"[([)15/)>C\'C
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
M)M0$02_ LNX)X+LGL8O"9;023$9R.$D:\(DSX#):XZ4NWO=^"/4;_9VQ7;7
MSPLPJR?<S="X-S"9*0EU($HD:65$"))'L-)Q20(TEO6U2VH4MJ>=G7[&1GA"
MM/5BF_%Y:<6]D\^W6-=#TI^_6BZV6KT*E^]P]5',BI>)%<J.<ZPB$@[!&1G
MFE!L0*FC2,T,\K2\3CO\?6HK[!A7+\#TGHX6GA(1GW$FF1&4VV;F$Z@ZE<R9
MP@"-YQ(]8SRU.PM/R^NTT^+/V/1:X^H%F-[>,<+3DHM2N.!$A&A3IGB!>?!U
MQH%DR7"G*5X0;5[K=".":2?8G[&A3H3"7NQWG)+)@]'_WB23ZA19:7S=2"<9
MD!P"%*^#KKN_9&=K59_C:.*Y^5.;U^0@F7K*Y8AW4A?OWZ^V+Y4>B(,$4(0/
M''BHTWBTS>"4E8!1<">8M3H_""H;K8QXGM:)!^%/8 T]@N %G"#/G[U/"<HJ
M9;C.$JQ(I$11ZHO"X$%HH7ET D/L\G7JP1Q//!3_C$^@TX#LS$:E/8AI+];K
MJX_7XOJ3_L%\L5LB2,*YG0"Z_FK*V'6O..9&<]7&IJ_E$+:FLNQC8INTZ$ST
M K+(K [CY^ M63+S-IAB&*HV_>P33VQ+'S!?7=)W']Z\_:X>][/@N=&I=F,7
M3IDA%QH\)@$ZLB*92M[Y-O<38W%PUG/9]D'O-Z?/)!CH(+:[IIS^\L5?\_5,
M)H6")5]/; &JR#KXV6>P7* Q+L9@FU2;OJ)BXE>:TR#AX?:4@]72 :8.%]P=
MVXO\YC(L?@L?\<=EO8B;%<MM\4R#812JJ80.@LU((N'&F,B5==-T@1_ S+0(
M/P);HSUV&DG1'8#]+249JWE-.+:AWJ]X/=N#)6&D3< D6LKPA8.(/$%&'T5Q
M*I!+:('61ZGI_-E[<Y LQ]98!["[W=IREU_L&+&%"R^5 V/KD+.ZMC1D65\R
M,$K/0](F-YD4_"1%G3_N/C7\QM%<!Q \^,;F]>W@^Y3J[BLZ=Q@O!93/%@(+
M=?"]Y5'P(D+NJVO^EO2)0=U%D'IB )PSY&^OA.Y=&[V=K__Y\PKK=202?C9O
M*<F=B6ABC 7!%9(%A68%G.&>7(*1/OFHA.NKICJ4L\Z#D)&A.I:E-,'-2S.D
MFQO_'^>?YQD7>2L0&70P5EK@EI% 3"H0M5&@HBK1.,^DZ-^0'N.L\W#JC SI
M:-R\5$/ZC^4E?<SE?/-E*Q);E)2!(@/.#46[P09PR1H0&%@.I$V;^IH*-YRW
M,YUMT[$Q'8&=7LSID#;#[XGDNFU02Z&*, Q"9/7E=(VY=4Z@9%*!,U]THU'S
MS5@ZT]$R(QK/]$@YLX:$VTUF#R[A3KO%;<B7GV2?V]Y2Z*1/@/!IZH9G'Y@@
M@.8(WH7Z>$AC1!>98DVN;?KN$]C^Z?KB:O-AN:H[L?\D1:WNZ;7>(:Y_^/+U
M7)SJ+:YO8I+ERB8Z'Q/WGIQ1)&?$4VV>8DY:SXH+;3:\-67KO#L*]L#YOAT%
M)T1+!W'5US7'8)A7D6OPO!YP6B&XJ(@7GW2,.F;/F_09G5&;P2GA\=W>@WUT
MU0'0FI1[G#4VU^@0+490*2KPEGMP6.IZ+%TP-=ED^M)[#_;"UBEZ#_91= =@
M?[R2G7+QF(RM+7!D^]Q3(N$%@I<2L]:^Q#9-7'^7WH.]0#*H]V ?C74 NR-.
MK&_/J[MLO&C#+?,(3,9:BN0,HLP>BDKD!YP(YI0W]L>RTW>!>,+PH@/T=&M#
M VZO?OJ?J_GFRR\+\B-76P_V^^8#KMY]"(O=*X/?EHO/V[<P]S=?%=*3R4X
MRQKII,T!@D8.,3J115;<=3;*\R V>SQL3@OLL6[XVZ/L[V&#N]F.3'OE.!=@
MLPZ@C/00D0)=QATWVBIE2U\5M'TY[-'R^H#YZ2WR ,R=SUZE@\7S8+6UY>B]
M+AZR2XITF QX7S1HFZ4Q%,R(V%=[R)X,GFF7R$LRR",0]Z(/Q^N7VG=R,9(E
M= J,RE4N0E'RRPQ0(I&S*8B4!)^7)7[-X)FVF+PD2SP"<<?NJ7YW!@:YVUIS
M3T+<&,LX,C"<D1J#8N M2BA:,F^UER&UFSIZ&A[/M'GE)9GE<;C[.UCFPY@^
M2RF*% Z29AE4= AUAC)8SPOC/CCI_@9Y9'_+D%Z251Z#N7-?A31<. ^FP6QC
M_1_)K=QV]]U7M YH=3826 R<1,@9!%DL",&EXBS+$.29FNT^<N@Q)WWIU[/-
M</JB4]3AXIN9))S1)4".V[4](H-'R< %+G,F*"@Q36_("9A_\;>^[:RG0T^P
M%Y3_=C?&SXLOV<1#76E9@O2@"A8(@2>0*H8H4=FDS_I*>1QW<,YWSB_ ';0$
M]8L.";Z^0WQ><+9(';(WI'13=QNE""$: 1KK@!"?@U#\O+S!GA)X\??>+\ ;
MM 3UB_8&]Q:]/R^U[)UT,7+((CA0W@OPUCFPT<> VF%\./.]=U>P#_LO_J+]
M!?B!9G!^T4Y@C]0*"R?*K(9H?2ULU,GH2C.P6A9O4"?E]'FY@)%O"<[Y3O\%
M.(!&4!ZU'G"B%^K?^V&KA^D#OK/I>_1]>>[C&;I'XY32!:SR=! 5AW6ULP>/
M:+R0OC 77MXS]-OYD;CZ/$_XN$^XM>>M^:_?+3?A\O[/*XV_+3?_A9NW6*%2
M2Q_720#YJ=T?U;_'9XZ358=B0"M61U H!TZCAZRR%4$925E "R&?ELVS?J:^
MCQT\.8VT/S3U$#O>/J,:)*>+R^U'TJ]^+P\EL57B]>NI*"0:KA70N5_GO!8!
M07L-*;G"%(N:^3;Y8 MNIKWTG=!RIL=&!P;RRX(B#(H?2-A5LJ]W+&Y?=S-K
M"@;A(?+L:F4\@JL;IU%XJ3T+VL0F.<]W:.IEYL-DB%FV4=_!2*0L(R[;8G'W
M:CL;38PD XP9.GFTM. RR8K76TR6??:ER?BU[U(U+1Y'T_XP5!V@B$EQM=T&
M^6:US%=I4^VM6N%G7%SAS;AV],4)(4 Q0YF\E1Q\X0FX+S8465)(ZKFT\)GO
MZ!(?A^AQ.;Y(.SC]WI(^B( /%XO\(_%QN?Q4Y;3+FW<L::&,1T\QA8FQ&I("
M)U"!374A51:8?*MI',_1-FWH-CZZ6JEE\K7$>$E__OX?N,!5N"2N+O+'^6)>
M8]C-_/,-1\5K901WQ)%,==%RA%!]=PC9V2 <10(#-PL/^;IIJ[N-/-/X@N[
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
M.=::&JFI7P#^/%\$,L&O.+/<2_0I \?M2H."$(PRD*VQ&*,4%MT) ?@(B<,
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
M/]<=9Y=?WN*GY6J#^5?\&'$U\[G.R:Y[A%5=X\J$J=<VGG3J9-(2V; QTH/
M\1PQ76#E$!TO&PF\'U=REXWNV'#9*2Y\!&^Q#EY/ 1SW!2A!9<4;AS8.>9&V
M]^'S@(YI^KW'A<Q88NX@\W_Z//[ARSOZC*TC%D(J[;*'4#E1P2J(-A0H7B$=
MUCJEAWM01QH7-("X:=\/M ULFBFI:^!5CG8&*F+R0M5^<65K1L&17&_%B?/>
M!D<,VQ,#[XZXB<=%C@Z)P9@[4#]3USIO;ED>K^'>/$C?>?&4 _.Q3HV1]1)7
M)0TNJ ),I%3G#!J+#]JDGZAF[O.MO2+J4(4O3R']KEW9Z]LQZU9&+D/@D+ ^
M29=U@:P1=<"YCMX%[GAH,D%J &W3/E^:^@0]3$4=H.[:8EXOU^N?2:B/U0%^
MP+)<X;TKYU_GB[HH^\MVYSK%L!>+_/6G_/0_5_3C7W'S84D_^8PWY:S$E1,8
M-(C:HZTTG2%.,A*-I*#6R4#Y>1/TGI#'7IWO@?A\=%)&?V YV(X^XRHNQUX?
M^F",2!'<<J[(PPA7'8ZEI"X5 49DF[AA2;GN9KBT&PQ]$H0>IX0NT/0;;N[L
M9*8Q>2VU!>Z9 96\!6=3 &EJ*S93:!ZVQ8V#H:^HF'BB<V/D'"[P+O!RLT'N
M#:YN7O;-TPR5$HJK.N6\WGV7NF?>) %<&"%C<L'J-D^+'Z-FXL',C?%SO *Z
MQ-&/\\NK#>:9<T4Z5@IP5A<\Q8P0&"E>!U<TN4\BILW;L\?IF?;=[JFQ=(@2
MND#3S9B^VCF\7N/-CCE72G19*G"H!5F%]Q"<]1"Y,X$+Y1QO,F'F<7*F?4C;
M&DLCJ*"#-/6[2RV]9$9RKZ!$I,-:.%_?2F1@4JHB/>4*N>F,V,>(FO;IZZE
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
M7&X_@_[X'\ME_M?\\O*GOSYAVFPG[OQ(?B)MME+Y6&=CSA)&SXQ"R%8&H-.
M8F>G,\@@?8Q*U*CE1,[T<"ZF/?&;H7HZ37<$\WNOI5[1838G75Z_S5R%Q?J:
M,CXK%,.05&O1='L]7@2XK#EP*3AF)Y)%VQ+%0XB<MLK4'*2CZZD##+X)7[9-
M(>^6NP/FAEE<_V.U7*]G+.E$AN/)DBB$4BES"$DR"(*+H(WW7#>YTGF.L&DO
M&IMA;51]=("OQVVG+FT@+K^RHM?S$.>7\\V769%.E<P$R"0H6N%5=*%H,!AJ
MU[CD 9M [@!:ITV*3NSQQM-:!\#\Y>.G,%]56ZMC%+X.I&\'.=X$'3.#3&DG
M!' 629BQ2/!<<F Z9NF5Q!2:G+Y[43EM=U S,+;35.<PO+MGNZSIWK>\\J@S
MDSF#TJ(^$BP.G%0.M%3"BB1L%DVNB8XA>A!([8L"Z:AZ/)O1*T_D<>,/8GGF
MB]J,9=F'NU,,:9$NFIB9 8Z6<!1M@, #_<IHPRGK\-$TV3';U9 6:Q)#$VKW
M1RT!1,K"O$@1/"86'3/6ZR&+U_<6P@L:TK(/CHX>TK*/OCHXJY\:"2&C2J'6
MMJRL&Q9D\A LUOVPTLO,C4;;=.[C>0]IV0L$ X>T[*.13H'U]6R)DD44.584
M2$T,U?>J#C,(EY154:9@_G=(RX'ZWWM(RS[*F+HYYK'9(HEY[^K%D7*U%L]1
MUR4SQ$Z,7DHAE'_X5.KE#&G92W?/#6G91Y =N)E]1C<X8TVQ2 [!.Y)3])4U
MYR%27I)$SM:K)O'DRQW2<LPYUTIS?8/RT48B[KCBO$B(T=0U& Z),V8A:F&X
M*%8B_]\A+<WP<N20EGV4-_7)^?0$D6B<2]H4\(:1Q- 5B(45"(GL.-0[G(>K
M2U[VD):]M#IL2,L^(IX:*$\WQO*DDU8D&,OJ7'LA(P06 J3 3$J!<\_8(* <
MUW_<S;B5@X$RCH@[..V^-S2F2&&R<ARX5X1Y;TWM'(A@B_&9A6BE;7*;?^PT
MGV[FKQP"K[$5TP'&OC/S0Q3*BNO(TL)K<XK0Y&"#%V!B+"FC=U$TN2!]*:-8
MCD'82&KI &#?S"I*R>K E2&JLZ7\QG"@H-$"NJ#)7 H/I8GG.FA<5#?#5HX!
MTU$JZ !"WZW#JH"&82B 3&4R!Q3@4^&@F9':1BSN9!.I;XDZLP$:(U^J'Z:;
MCG!VK];U%FN)=_Y_R4HSB7Y>YN';A2F+?-/8-,<U_>SJ(^9785U?'OU$?^5S
MN-PN231)*8S< ?/5A+,BJT/OR7%G9640DN+X$U5=1V2KNSO< ^'W?%/;5%AX
M:99Q?T?MKW0JX6Z7:+I:;?_>+-/QXX(44%)-TWAQ$&Q*8"S)K#9L>6SRFO*D
M7';\1J,;NQD5*2_9C.A3D'Q+W9<WRSS5KD8#JD0'*@4/$>L+%T%I@BQ99=]D
M^= IF.OXS4B71G,H+EZ8K?RR^$Q_?[GZ,M/.&#1>0N:^COY3# *E0B!]8;&.
MF=2IR9U&$VXZ?M72BS4<IOD7!O^O7,*;%7X*\UQ?1B[62'__]\T'7%W_;&9]
MT9Y'3V%I]1&8,_C:'I\=BCH?0;C4I%XZ";<=/\?IQ7S:(.>%F=>;U?(3KC9?
MWEP&$M5UGK>=-3)C+*@DO *KZO;H%"/$VA\KN)(N>&VU[3[C?Y*[CA\0]6(^
MXR!CZI+U@1()CTGD]T_;IX"+]Z\QK'$[\GM9_EQ?_]-9I+/9Y.3!<,&KW@HX
M92,4GT4(+GOG'R3^3Y3 3T9RQP^4#C&"CO7]P@Z-'W<LO M_[4Y0Q0P+65!^
MYI#7JW@-49&'8%E9X3@&T68<8E.N!MF'.QO[Z \)+\PL:MW[?LPY0Q=U-*Q
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
M^ZBES%GPD8S*/:@]KV_3%U9/(=#N->@%I4VL/UU-O"--(@3@3-2=3+Y<0E%
MK%0E'C"TZ9*W+X'G=7WZPN9 L1T[%F@$0.[&?JPFVBN2-:>(1<- *55#[=J"
M49B58^2+DS<^(A]0>-ZJHKX@.51PW:O(.YLE6C16%OM<)*9!1:< B_D"5@6A
MDV+*6]&WD=FL\J@O) X1V#AS7[8_J/\$7-$___$_4$L#!!0    ( .2 2U*Q
MXEO4-0<  -9^   ;    8V=N>"TR,#(P,3(S,7AE>&AI8FET,C$N:'1M[5U;
M<]HX&'W?7Z'2V79W)MA H DDS0P!FK AP&"G:9]VA"6P-D;R2 )"?OW*%]J4
M2YLL*7:]R@,3;"3K.](YQY(MZ?15L]>P/_=;P)43#_1OSCOM!LCE3?/VL&&:
M3;L)+NWK#B@;A2*P.:2"2,(H]$RSU<V!G"NE7S/-^7QNS \-QL>F/3"#K,JF
MQYC !I(H=W8:'%&?&**SWTY?Y?.@R9SI!%,)'(ZAQ A,!:%C<(NPN /Y?/RK
M!O,7G(Q="4J%4A'<,GY'9C Z+XGT\-DRGU,S^GYJAA<Y'3*T.#M%9 8(>I\C
MJ%K PX)S5"V6"^5C!P_+&!90H50:HC*J#*M_%U4A3?7S*(V0"P^_STT(S;LX
MN'[MJ.3+DSE!TJT5"X7?<]_\3N)[F8<>&=-:6%IU=L2H5*7@*M?HW[7,7S+1
M\K3#/,9KKPOAWTEP)C^"$^(M:F_KG$#O[8%0-9@7F)-1=%J0!ZPB4L&%7^=Q
MM"JU1RA>1E\L!2&W/EVVS]LV*!77RK>U["\3]@3RL:J+(9.236IE55H?(J0:
M3-[#(UDK&Y5'A\)LXV./KN:H5H+Y7@%K]"ZZK4^@T1OT>X.ZW>YU?YD(JT\*
MT+HYM]K-=GW0;EF@]P'8ERTP:%VT+7M0[]K/"/91%/],A22CQ<\)H[PQC+H
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
M5V%*CVN#S\XS^R(Y#Q"V( ++S%/(%Z: _5I.8\5<>/8W4$L#!!0    ( .2
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
M8?B9^D*>J-_IB?[P+#P^.N[WPN/1"2;-V?AU[R2$<+1)X+X!7K<)KZVQU;?
M]0.G^D!1]L;0&XQ.P^'@.W#I>-C/@]]R]F%T!.'+(8Q[9X>]D^&X-GKS:O@6
M>OW02#S'\3:<U5^50#AE,$\H4QEZ$ NPC&,LDPJ_L>SBE2O\4JE4Q-1[V-,X
M?'>GZ7E.IR]G*4F6^3^W\PRF3+')$E!9\YBS#+2$*<_@72(7@M$+!GI*-!@+
MUU3=1B>#7I+,B8 SAC?2@/<YDFH&KE/['6*I<I4E(PH8 J4P8!&;39C:W7'W
MG8[O5LVRX-S 5EA:0:L"R2#F" (67$]S>V,6S14N8HB3)!2&5]&4)!<YM!G/
M,D,6WV8DQ84I)R?C*L1S(9 CXA=&];TYQ?Z><\7,&I09WZ%YX[ "HNOOD6>
M1-Q@CQ9H2(H&(C(1K&J&?X3H/9I>I(W8;?GU0FV6NZ":8W[O3IZ@EV9%A"*,
M..$FDKR 7SHU)EPA\E2QS&"L&C$1 E"-F5F$#+(40:/$:,4\(4EDKJ-!FB_V
M^3UQU%P4%&7*BEF1K1B48;76+ K_<T*W-IK/A<<_E6D3J;6<M0,T>2WW@CSW
MM(G*:OQ$*LR-&D(6),U8>_6C0WF6"K)L\R3'D"MU+LW<CX@HZQ':+#<+K7VK
MY;7,?D'CXJ;IRGRYE;#RK82MZ6U9W6KY_EJI8[EK9?=9]5'16Z]ZG]G[9)[E
M['O;!XM8M^\"U[&:;K!ULW7++P*]5<<Z5A#4M^_8!L9K,\_:^;PMYB[F0(9Y
M_J+B5U8**:$4-^YM+[T"]^:^+-_;W9$97VN5R[?I ZQRNSM!\T-A* E_'A?!
MXF].Y8A-U)RH);C%PN=NGU)1';?#JKD1J8^J]J>9.(9'Y2<C_4!GY.'R"Z76
M8TC^:TAV=^JXK\X_X4SB7EG#;Q:<<R&8UC?H;5C8/R/??LK4?"3]HY,NGP3,
M<P(2@4P*3F$%ZH&7@\<2\)@-CZ1_]$7_5+&,4W.:8CHU_2EG,0RO6#37_)+!
MJ&SLK5Y[IXHG$4^)N#WHV>WZ8.<=CL>>SK6>3LMJ!OZZGL[];1*WOOTV26O?
M"H+F%WZ:?PCS_/GWGZJA:8R7G?*H:-QF4]..3:2&"0/*V(S153<[;UV7S>R\
M(9[.52HS=D>GN;EQ-QG-2!RH%CS#S)A/_D([IF5OE 4G$RZX7A;6"'JEN$L5
M :H2*K^.%!4GIA$=E8<%>&FR!,5BIE@2&0F.(,G2M.'-"6]^Y/ QT _X?)"W
MI'?1L#8H5*N(E@&HFP*!WLM[VFW%!#&5;^VA;EE5G \J9()[O[E>K[+N1&KM
MH6CY61Q6Y\?F!_\"4$L#!!0    ( .2 2U* O($(<@4  (X?   <    8V=N
M>"TR,#(P,3(S,7AE>&AI8FET,S(R+FAT;>U9;7/:.!#^?K]B2^;:M -^Y<U
M,T. 3#/7"YG@7MM/-\*605?;\LDBA/OUMY)-DY:0IBU-TS:9#&"M=O4\*^U*
M7O4>#<<#_^WI".8RB>'TU>'+XP%4:J;YVAV8YM ?P@O_SY=0-RP;?$'2G$G&
M4Q*;YNBD I6YE%G'-)?+I;%T#2YFIG]F*E-U,^8\IT8HP\I!3[7@)R7AP6^]
M1[4:#'FP2&@J(1"42!K"(F?I#%Z'-'\'M5K9:\"SE6"SN03'<FQXS<4[=DX*
MN60RI@=K.SVS>.Z9>I#>E(>K@U[(SH&%SRNL[;HV(0T:15&[WO+:7M!LUJ-6
M/6B%[:C1"OZV$:2)W0N=7*YB^KR2L+0VIVK\3LO)9'?)0CGOV);U>T7W.^A%
M/)4XF$#EXN>&#4DO9(W$;)9V-)/*5RBMQ0&/N>CL6?JOJR2UB"0L7G6>] 4C
M\9-JCA-5RZE@42'.V7\4@2,'_;@L2:%VS%*Z)FD[BMGHS8OCPV,?7,=PGFU
MW I_-\P3(F;H=<FSCH=HK]@(<):I^$:>J%_KB<'HS#\^.A[T_>/Q"<;&V>15
M_\0'?WR;B?L.>.TVO#(FQL  VVU8U7N*LC^!_G!\ZH^&/X!+)Z.!GGS/:L+X
M"/P7(YCTSP[[)Z-);?SFY>@M] >^DCB6Y=QR5=\I 7].89&&5.3H0<RS/(I8
M0 5^8W;%E@O\$AD71*5UV)?8_?%>VW&L[H G&4E7^LGN/H4Y%72Z E26+&(T
M!\EASG)XE_)E3,,9!3DG$I2%*ZIVJYM#/TT7)(8SB@-)P'&.N$C MFI_0,2%
M5EE1(H BT!"&-*#)E(K'>W;3ZKIV565_ZP-LA:4UM"J0'"*&(&#)Y%S;F]!@
M(7"O0IPD#6%T$<Q).M/0$I;GBBS^JYXA[C^:'(^J$"WB&#DB_EBIOC<GZ+\+
M)JC::G+E.S2O'%9 M-U]\A20B-W8#PLT)$,# 9G&M*JZ?X3H/9I^()78]MQZ
MH99H%U0UYO?N9"EZ*2EF*, 9)TS-)"O@ETZ-"!.(/!,T5QBK2DSB&%"-JE6$
M#/(,0:-$:44L)6F@VM%@J/=T/2;V6L0%19[18E7D:P;EM!I;-H6[6="%RS\5
M:E,N)4\Z#31Y)?@:.OBDFI9U_RD7&!PUQ!R3+*>=]8]NR/(L)JL.2S4&K=0]
M5XL_('&9D-!F>2CP/*/=<-6Y0.+N)L.U^?+(8.@C@RG#35G#L+W&5JEEV%ME
M-UEU/,.Q6E]D]N8A/:^Y>[!HU=NY5=LRZLW=@W4-N_YE\W6SK.$ZN\?JH0NV
MBZ^:-?6Z+=8NQD".@?Z\XE;6"AD)0SR@=YSL NP/#V;Z<'=-9-S5-J>/XT-,
M<X_W&NW+Q% 2_CPN,8V^.Y4C.A4+(E9@%SN?O7M*17:\4U8?I>U/4[$4D<JO
MQOJ>KLG#U3<*KH<Y^0H>=3Q;ZT\X)8L8A@;X/)S-2?(!N5MF]L^(MU\S-!]8
M__RLR[<!]:Z 3"#G,0MAC>J>YX.''/ 0#0^L?_IM?T)3Q@7\Q0(*IX+F+%37
M*#R"(UW2H;J,,Y@SNFY119YQ6?7;/Q4,6S)LVA ^W<P8IJYZ/!1Z;EWHN>E%
MW3'L^NY?\;VFT6BTO_$K_GU8]\]^_-#U5;F\K)\'13DWGZLB;<HE3"F$E"8T
M7->X=4&[+''K,GFV$!G/Z37UY_:M:\QHAF-'L60Y1L9B^@_:485\I1PS,F4Q
MDZO"&D&O%*-4$: HH;*K2%%QJLK307F%@$W3%0@:44%5*F(I]B#I2A7GU?6N
MOHCX&.@E/A?XAO0Z&L8M,M5Z1LL)J*L$@=[3E>Z.H#&Z_YQNW.A>)@N=5:Q+
M%3+%P^!";E?9=D^U]:JT_"QNJO6=^<'_4$L! A0#%     @ Y(!+4NH"_H%U
MUP, Q,PI !$              ( !     &-G;G@M,C R,#$R,S$N:'1M4$L!
M A0#%     @ Y(!+4MI$>P^!'0  #DH! !$              ( !I-<# &-G
M;G@M,C R,#$R,S$N>'-D4$L! A0#%     @ Y(!+4K?@[6%U.0  =GX" !4
M             ( !5/4# &-G;G@M,C R,#$R,S%?8V%L+GAM;%!+ 0(4 Q0
M   ( .2 2U)@Y(EX^9H  &6G!@ 5              "  ?PN! !C9VYX+3(P
M,C Q,C,Q7V1E9BYX;6Q02P$"% ,4    " #D@$M22P?& <EX @"!]@( %
M            @ $HR@0 8V=N>"TR,#(P,3(S,5]G,2YJ<&=02P$"% ,4
M" #D@$M2H^H"R1&. 0 SC!  %0              @ $C0P< 8V=N>"TR,#(P
M,3(S,5]L86(N>&UL4$L! A0#%     @ Y(!+4IC[BRS1]0  C6$+ !4
M         ( !9]$( &-G;G@M,C R,#$R,S%?<')E+GAM;%!+ 0(4 Q0    (
M .2 2U*QXEO4-0<  -9^   ;              "  6O'"0!C9VYX+3(P,C Q
M,C,Q>&5X:&EB:70R,2YH=&U02P$"% ,4    " #D@$M2L,_WFVX#  !R"@
M'               @ '9S@D 8V=N>"TR,#(P,3(S,7AE>&AI8FET,C,Q+FAT
M;5!+ 0(4 Q0    ( .2 2U(&#NP_2@@  *@X   <              "  8'2
M"0!C9VYX+3(P,C Q,C,Q>&5X:&EB:70S,3$N:'1M4$L! A0#%     @ Y(!+
M4H3IH7M8"   [C@  !P              ( !!=L) &-G;G@M,C R,#$R,S%X
M97AH:6)I=#,Q,BYH=&U02P$"% ,4    " #D@$M23S$M.74%  "1'P  '
M            @ &7XPD 8V=N>"TR,#(P,3(S,7AE>&AI8FET,S(Q+FAT;5!+
M 0(4 Q0    ( .2 2U* O($(<@4  (X?   <              "  4;I"0!C
M9VYX+3(P,C Q,C,Q>&5X:&EB:70S,C(N:'1M4$L%!@     -  T AP,  /+N
$"0    $!

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