<?xml version="1.0" encoding="us-ascii"?>
<!--Generated by EDGARfilings PROfile 6.2.0.0 Broadridge-->
<xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance" 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:xbrldi="http://xbrl.org/2006/xbrldi" xmlns:iso4217="http://www.xbrl.org/2003/iso4217" xmlns:us-gaap="http://fasb.org/us-gaap/2019-01-31" xmlns:dei="http://xbrl.sec.gov/dei/2019-01-31" xmlns:utr="http://www.xbrl.org/2009/utr" xmlns:num="http://www.xbrl.org/dtr/type/numeric" xmlns:nonnum="http://www.xbrl.org/dtr/type/non-numeric" xmlns:country="http://xbrl.sec.gov/country/2017-01-31" xmlns:currency="http://xbrl.sec.gov/currency/2019-01-31" xmlns:naics="http://xbrl.sec.gov/naics/2017-01-31" xmlns:sic="http://xbrl.sec.gov/sic/2011-01-31" xmlns:stpr="http://xbrl.sec.gov/stpr/2018-01-31" xmlns:exch="http://xbrl.sec.gov/exch/2019-01-31" xmlns:srt="http://fasb.org/srt/2019-01-31" xmlns:acmr="http://acmrcsh.com/20191231" xmlns="http://www.xbrl.org/2003/instance">
  <link:schemaRef xlink:type="simple" xlink:href="acmr-20191231.xsd" />
  <xbrli:context id="c20190101to20191231">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20190628">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-06-28</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20200320_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2020-03-20</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20200320_StatementClassOfStockAxis_CommonClassBMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2020-03-20</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_StatementClassOfStockAxis_CommonClassBMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_StatementClassOfStockAxis_CommonClassBMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20180101to20181231">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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:context id="c20171231">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2017-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20171231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
        <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="c20171231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20171231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20171231_StatementEquityComponentsAxis_RetainedEarningsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20171231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
        <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="c20180101to20181231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20180101to20181231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20190101to20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</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="c20180101to20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
        <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="c20190101to20191231_StatementEquityComponentsAxis_RetainedEarningsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20190101to20191231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20180101to20181231_StatementEquityComponentsAxis_RetainedEarningsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</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="c20180101to20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
        <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="c20181231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_StatementEquityComponentsAxis_RetainedEarningsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20181231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20181231_StatementEquityComponentsAxis_RetainedEarningsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
        <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="c20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementEquityComponentsAxis">us-gaap:CommonStockMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:ShareBasedPaymentArrangementNonEmployeeStockOptionMember</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="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20171108_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2017-11-08</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionAxis">acmr:FirstTrancheInvestorsMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ShengweiResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170831_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2017-08-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionAxis">acmr:SecondTrancheInvestorsMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170913to20170913_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2017-09-13</xbrli:startDate>
      <xbrli:endDate>2017-09-13</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170913to20170913_StatementClassOfStockAxis_CommonClassBMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2017-09-13</xbrli:startDate>
      <xbrli:endDate>2017-09-13</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190331_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ShengweiResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-03-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190617to20190617_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-06-17</xbrli:startDate>
      <xbrli:endDate>2019-06-17</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190612to20190612_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionAxis">acmr:FirstTrancheInvestorsMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-06-12</xbrli:startDate>
      <xbrli:endDate>2019-06-12</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191129to20191129_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionAxis">acmr:SecondTrancheInvestorsMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-11-29</xbrli:startDate>
      <xbrli:endDate>2019-11-29</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191129_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionAxis">acmr:SecondTrancheInvestorsMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-11-29</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_ConsolidatedEntitiesAxis_CleanChipTechnologiesLimitedMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:CleanChipTechnologiesLimitedMember</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="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchWuxiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchWuxiIncMember</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="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</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="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchCAIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchCAIncMember</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="c20190101to20191231_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ShengweiResearchShanghaiIncMember</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="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchKoreaCOLTDMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchKoreaCOLTDMember</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="c20191231_ConsolidatedEntitiesAxis_ACMResearchWuxiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchWuxiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_ConsolidatedEntitiesAxis_ACMResearchKoreaCOLTDMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchKoreaCOLTDMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_ConsolidatedEntitiesAxis_ACMResearchKoreaCOLTDMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchKoreaCOLTDMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_ConsolidatedEntitiesAxis_CleanChipTechnologiesLimitedMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:CleanChipTechnologiesLimitedMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_ConsolidatedEntitiesAxis_ACMResearchCAIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchCAIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_ConsolidatedEntitiesAxis_ACMResearchCAIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchCAIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ShengweiResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_ConsolidatedEntitiesAxis_CleanChipTechnologiesLimitedMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:CleanChipTechnologiesLimitedMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_ConsolidatedEntitiesAxis_ACMResearchWuxiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchWuxiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_ComputerAndOfficeEquipmentMember_RangeAxis_MaximumMember_StatementGeographicalAxis_US">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">acmr:ComputerAndOfficeEquipmentMember</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="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_FurnitureAndFixturesMember_StatementGeographicalAxis_US">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</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="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_LeaseholdImprovementsMember_RangeAxis_MinimumMember_StatementGeographicalAxis_CN">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</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="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_TransportationEquipmentMember_RangeAxis_MaximumMember_StatementGeographicalAxis_CN">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:TransportationEquipmentMember</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="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_ComputerAndOfficeEquipmentMember_RangeAxis_MinimumMember_StatementGeographicalAxis_US">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:US</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">acmr:ComputerAndOfficeEquipmentMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</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="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_FurnitureAndFixturesMember_StatementGeographicalAxis_CN">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:FurnitureAndFixturesMember</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="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_ElectronicEquipmentMember_RangeAxis_MaximumMember_StatementGeographicalAxis_CN">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">acmr:ElectronicEquipmentMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</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="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_ElectronicEquipmentMember_RangeAxis_MinimumMember_StatementGeographicalAxis_CN">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">acmr:ElectronicEquipmentMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</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="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_TransportationEquipmentMember_RangeAxis_MinimumMember_StatementGeographicalAxis_CN">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:TransportationEquipmentMember</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="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_ManufacturingEquipmentMember_StatementGeographicalAxis_CN">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">acmr:ManufacturingEquipmentMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:StatementGeographicalAxis">country:CN</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="c20190101to20191231_RangeAxis_MaximumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</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="c20190101to20191231_FiniteLivedIntangibleAssetsByMajorClassAxis_ComputerSoftwareIntangibleAssetMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:FiniteLivedIntangibleAssetsByMajorClassAxis">us-gaap:ComputerSoftwareIntangibleAssetMember</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="c20190101to20191231_ProductOrServiceAxis_ShippingAndHandlingMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">us-gaap:ShippingAndHandlingMember</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="c20180101to20181231_ProductOrServiceAxis_ShippingAndHandlingMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ProductOrServiceAxis">us-gaap:ShippingAndHandlingMember</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="c20190101to20191231_RangeAxis_MinimumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</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="c20190101to20191231_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_WarrantMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:WarrantMember</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="c20180101to20181231_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_WarrantMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis">us-gaap:WarrantMember</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="c20180101to20181231_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_EmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20190101to20191231_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_EmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20180101to20181231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</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="c20190101to20191231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</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="c20190101to20191231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerCMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">acmr:CustomerCMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</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="c20190101to20191231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">acmr:CustomerAMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</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="c20180101to20181231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerCMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">acmr:CustomerCMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</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="c20180101to20181231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">acmr:CustomerAMember</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="c20190101to20191231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerBMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">acmr:CustomerBMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</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="c20180101to20181231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerBMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:ConcentrationRiskByBenchmarkAxis">us-gaap:SalesRevenueNetMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:MajorCustomersAxis">acmr:CustomerBMember</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="c20181231_CurrencyAxis_KRW">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:KRW</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_CurrencyAxis_CNY">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CNY</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_CurrencyAxis_CNY">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CNY</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_CurrencyAxis_KRW">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:KRW</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_CurrencyAxis_CNY">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CNY</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="c20190101to20191231_CurrencyAxis_KRW">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:KRW</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="c20180101to20181231_CurrencyAxis_CNY">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:CNY</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="c20180101to20181231_CurrencyAxis_KRW">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:CurrencyAxis">currency:KRW</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="c20191231_AdjustmentsForNewAccountingPronouncementsAxis_AccountingStandardsUpdate201602Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AdjustmentsForNewAccountingPronouncementsAxis">us-gaap:AccountingStandardsUpdate201602Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_PropertyPlantAndEquipmentByTypeAxis_LeaseholdImprovementsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:LeaseholdImprovementsMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_PropertyPlantAndEquipmentByTypeAxis_OfficeEquipmentMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:OfficeEquipmentMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_PropertyPlantAndEquipmentByTypeAxis_LeaseholdImprovementsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20191231_PropertyPlantAndEquipmentByTypeAxis_OfficeEquipmentMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:OfficeEquipmentMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_PropertyPlantAndEquipmentByTypeAxis_TransportationEquipmentMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:TransportationEquipmentMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_PropertyPlantAndEquipmentByTypeAxis_EquipmentMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:EquipmentMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_PropertyPlantAndEquipmentByTypeAxis_EquipmentMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20181231_PropertyPlantAndEquipmentByTypeAxis_TransportationEquipmentMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:PropertyPlantAndEquipmentByTypeAxis">us-gaap:TransportationEquipmentMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit9Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit9Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit11Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit11Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit10Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit10Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit10Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit10Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit7Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit7Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit12Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit12Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit1Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit1Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit2Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit2Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit6Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit6Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit5Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit5Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit8Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit8Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit1Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit1Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit3Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit3Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit11Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit11Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit8Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit8Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit9Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit9Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit3Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit3Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit5Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit5Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit4Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit4Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit7Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit7Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit12Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit12Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_LineOfCredit4Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit4Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit2Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit2Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_LineOfCredit6Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit6Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_DebtInstrumentAxis_LineOfCredit12Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit12Member</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="c20190101to20191231_DebtInstrumentAxis_LineOfCredit7Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit7Member</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="c20190101to20191231_DebtInstrumentAxis_LineOfCredit8Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit8Member</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="c20190101to20191231_DebtInstrumentAxis_LineOfCredit9Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit9Member</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="c20190101to20191231_DebtInstrumentAxis_LineOfCredit11Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit11Member</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="c20190101to20191231_DebtInstrumentAxis_LineOfCredit3Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit3Member</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="c20190101to20191231_DebtInstrumentAxis_LineOfCredit4Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit4Member</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="c20190101to20191231_DebtInstrumentAxis_LineOfCredit1Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit1Member</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="c20190101to20191231_DebtInstrumentAxis_LineOfCredit10Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit10Member</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="c20190101to20191231_DebtInstrumentAxis_LineOfCredit6Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit6Member</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="c20190101to20191231_DebtInstrumentAxis_LineOfCredit2Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit2Member</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="c20190101to20191231_DebtInstrumentAxis_LineOfCredit5Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit5Member</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="c20191213to20191213_DebtInstrumentAxis_LineOfCredit3Member">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:LineOfCredit3Member</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-12-13</xbrli:startDate>
      <xbrli:endDate>2019-12-13</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_RelatedPartyTransactionsByRelatedPartyAxis_ShanghaiZhangjiangGroupCoLtdMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShanghaiZhangjiangGroupCoLtdMember</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="c20180101to20180131_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2018-01-01</xbrli:startDate>
      <xbrli:endDate>2018-01-31</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20180426to20180426_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2018-04-26</xbrli:startDate>
      <xbrli:endDate>2018-04-26</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_ConsolidatedEntitiesAxis_ACMWuxiMember_RangeAxis_MaximumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMWuxiMember</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="c20180426_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-04-26</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_OtherMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:OtherMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_SubsidiesToPolytetrafluoroethyleneMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:SubsidiesToPolytetrafluoroethyleneMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_SubsidiesToPolytetrafluoroethyleneMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:SubsidiesToPolytetrafluoroethyleneMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_SubsidiesToElectroCopperPlatingProjectMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:SubsidiesToElectroCopperPlatingProjectMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_SubsidiesToElectroCopperPlatingProjectMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:SubsidiesToElectroCopperPlatingProjectMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_SubsidiesToStressFreePolishingProjectMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:SubsidiesToStressFreePolishingProjectMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_DebtInstrumentAxis_OtherMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:OtherMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_DebtInstrumentAxis_SubsidiesToStressFreePolishingProjectMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:DebtInstrumentAxis">acmr:SubsidiesToStressFreePolishingProjectMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190627_RelatedPartyTransactionsByRelatedPartyAxis_ShengyiSemiconductorTechnologyCompanyLimitedMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengyiSemiconductorTechnologyCompanyLimitedMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-06-27</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170911_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCompanyLimitedMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:NinebellCompanyLimitedMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2017-09-11</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170911_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCompanyLimitedMember_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:NinebellCompanyLimitedMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2017-09-11</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190930">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-09-30</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190905to20190905_RelatedPartyTransactionsByRelatedPartyAxis_ShengyiSemiconductorTechnologyCompanyLimitedMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengyiSemiconductorTechnologyCompanyLimitedMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-09-05</xbrli:startDate>
      <xbrli:endDate>2019-09-05</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170818_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:NinebellCoLtdMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2017-08-18</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:NinebellCoLtdMember</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="c20180101to20181231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:NinebellCoLtdMember</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="c20190101to20191231_RelatedPartyTransactionsByRelatedPartyAxis_ShengyiSemiconductorTechnologyCompanyLimitedMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengyiSemiconductorTechnologyCompanyLimitedMember</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="c20191231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:NinebellCoLtdMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:NinebellCoLtdMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_RelatedPartyTransactionsByRelatedPartyAxis_ShengyiSemiconductorTechnologyCompanyLimitedMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengyiSemiconductorTechnologyCompanyLimitedMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170314to20170314_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2017-03-14</xbrli:startDate>
      <xbrli:endDate>2017-03-14</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170930to20170930_RelatedPartyTransactionsByRelatedPartyAxis_ShanghaiZhangjiangGroupCoLtdMember_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShanghaiZhangjiangGroupCoLtdMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2017-09-30</xbrli:startDate>
      <xbrli:endDate>2017-09-30</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170929_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2017-09-29</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20180101to20181231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</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="c20180101to20181231_RelatedPartyTransactionsByRelatedPartyAxis_ShanghaiZhangjiangGroupCoLtdMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShanghaiZhangjiangGroupCoLtdMember</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="c20161209_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2016-12-09</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190930_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-09-30</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190814_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-08-14</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170314_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2017-03-14</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20180330to20180330_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2018-03-30</xbrli:startDate>
      <xbrli:endDate>2018-03-30</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember</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="c20180330_LongtermDebtTypeAxis_SeniorNotesMember_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:SeniorNotesMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-03-30</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_LongtermDebtTypeAxis_SeniorNotesMember_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:LongtermDebtTypeAxis">us-gaap:SeniorNotesMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember</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="c20190701to20190930_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-07-01</xbrli:startDate>
      <xbrli:endDate>2019-09-30</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190801to20190831_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-08-01</xbrli:startDate>
      <xbrli:endDate>2019-08-31</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190814to20190814_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionsByRelatedPartyAxis">acmr:ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-08-14</xbrli:startDate>
      <xbrli:endDate>2019-08-14</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</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="c20190801to20190831_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-08-01</xbrli:startDate>
      <xbrli:endDate>2019-08-31</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190831_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-08-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190701to20190930_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionAxis">acmr:FirstTrancheInvestorsMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-07-01</xbrli:startDate>
      <xbrli:endDate>2019-09-30</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191001to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-10-01</xbrli:startDate>
      <xbrli:endDate>2019-12-31</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191001to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionAxis">acmr:FirstTrancheInvestorsMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-10-01</xbrli:startDate>
      <xbrli:endDate>2019-12-31</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191001to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionAxis">acmr:SecondTrancheInvestorsMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2019-10-01</xbrli:startDate>
      <xbrli:endDate>2019-12-31</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionAxis">acmr:SecondTrancheInvestorsMember</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="c20190101to20191231_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:RelatedPartyTransactionAxis">acmr:FirstTrancheInvestorsMember</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="c19980429to19980429_AwardTypeAxis_IncentiveStockOptionsMember_PlanNameAxis_One998StockOptionPlanMember_RangeAxis_MaximumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">acmr:One998StockOptionPlanMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:IncentiveStockOptionsMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>1998-04-29</xbrli:startDate>
      <xbrli:endDate>1998-04-29</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c19980429to19980429_AwardTypeAxis_NonstatutoryStockOptionsMember_PlanNameAxis_One998StockOptionPlanMember_RangeAxis_MaximumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:NonstatutoryStockOptionsMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">acmr:One998StockOptionPlanMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>1998-04-29</xbrli:startDate>
      <xbrli:endDate>1998-04-29</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20161228to20161228_PlanNameAxis_Two016OmnibusIncentivePlanMember_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">acmr:Two016OmnibusIncentivePlanMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2016-12-28</xbrli:startDate>
      <xbrli:endDate>2016-12-28</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20161228to20161228_PlanNameAxis_Two016OmnibusIncentivePlanMember_StatementClassOfStockAxis_CommonClassBMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassBMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">acmr:Two016OmnibusIncentivePlanMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2016-12-28</xbrli:startDate>
      <xbrli:endDate>2016-12-28</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20161228_PlanNameAxis_Two016OmnibusIncentivePlanMember_RangeAxis_MaximumMember_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">acmr:Two016OmnibusIncentivePlanMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2016-12-28</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20161228_AwardTypeAxis_IncentiveStockOptionsMember_PlanNameAxis_Two016OmnibusIncentivePlanMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:IncentiveStockOptionsMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">acmr:Two016OmnibusIncentivePlanMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2016-12-28</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c19980429_PlanNameAxis_One998StockOptionPlanMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:PlanNameAxis">acmr:One998StockOptionPlanMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>1998-04-29</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20171231_AwardTypeAxis_EmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2017-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20171231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:ShareBasedPaymentArrangementNonEmployeeStockOptionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2017-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:ShareBasedPaymentArrangementNonEmployeeStockOptionMember</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="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember_TitleOfIndividualAxis_DirectorMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:ShareBasedPaymentArrangementNonEmployeeStockOptionMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:TitleOfIndividualAxis">srt:DirectorMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</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="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:ShareBasedPaymentArrangementNonEmployeeStockOptionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:ShareBasedPaymentArrangementNonEmployeeStockOptionMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_AwardTypeAxis_EmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_AwardTypeAxis_EmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:ShareBasedPaymentArrangementNonEmployeeStockOptionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:StatementClassOfStockAxis">us-gaap:CommonClassAMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:ShareBasedPaymentArrangementNonEmployeeStockOptionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170101to20171231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">acmr:ShareBasedPaymentArrangementNonEmployeeStockOptionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2017-01-01</xbrli:startDate>
      <xbrli:endDate>2017-12-31</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20170101to20171231_AwardTypeAxis_EmployeeStockOptionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:startDate>2017-01-01</xbrli:startDate>
      <xbrli:endDate>2017-12-31</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
        <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="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_IncomeStatementLocationAxis_GeneralAndAdministrativeExpenseMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:GeneralAndAdministrativeExpenseMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</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="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_IncomeStatementLocationAxis_ResearchAndDevelopmentExpensesMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">acmr:ResearchAndDevelopmentExpensesMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</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="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_IncomeStatementLocationAxis_SellingAndMarketingExpenseMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:SellingAndMarketingExpenseMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
        <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="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_IncomeStatementLocationAxis_CostOfSalesMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">acmr:ACMResearchShanghaiIncMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:IncomeStatementLocationAxis">us-gaap:CostOfSalesMember</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="c20191231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MinimumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MaximumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MaximumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:AwardTypeAxis">us-gaap:EmployeeStockOptionMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MinimumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MinimumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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>2019-01-01</xbrli:startDate>
      <xbrli:endDate>2019-12-31</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MaximumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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>2018-01-01</xbrli:startDate>
      <xbrli:endDate>2018-12-31</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MinimumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</xbrldi:explicitMember>
        <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="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MaximumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</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>2019-01-01</xbrli:startDate>
      <xbrli:endDate>2019-12-31</xbrli:endDate>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20180101to20181231_IncomeTaxAuthorityAxis_DomesticCountryMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</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="c20190101to20191231_IncomeTaxAuthorityAxis_ForeignCountryMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</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="c20190101to20191231_IncomeTaxAuthorityAxis_DomesticCountryMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</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="c20180101to20181231_IncomeTaxAuthorityAxis_ForeignCountryMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</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="c20191231_IncomeTaxAuthorityAxis_DomesticCountryMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_IncomeTaxAuthorityAxis_DomesticCountryMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:DomesticCountryMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_IncomeTaxAuthorityAxis_ForeignCountryMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_IncomeTaxAuthorityAxis_ForeignCountryMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20181231_IncomeTaxAuthorityAxis_StateAndLocalJurisdictionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_IncomeTaxAuthorityAxis_StateAndLocalJurisdictionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_IncomeTaxAuthorityAxis_StateAndLocalJurisdictionMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:StateAndLocalJurisdictionMember</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="c20190101to20191231_IncomeTaxAuthorityAxis_ForeignCountryMember_RangeAxis_MinimumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MinimumMember</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="c20190101to20191231_IncomeTaxAuthorityAxis_ForeignCountryMember_RangeAxis_MaximumMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:RangeAxis">srt:MaximumMember</xbrldi:explicitMember>
        <xbrldi:explicitMember dimension="us-gaap:IncomeTaxAuthorityAxis">us-gaap:ForeignCountryMember</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="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">srt:ParentCompanyMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2018-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">srt:ParentCompanyMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2019-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:context id="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">srt:ParentCompanyMember</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="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">srt:ParentCompanyMember</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="c20171231_ConsolidatedEntitiesAxis_ParentCompanyMember">
    <xbrli:entity>
      <xbrli:identifier scheme="http://www.sec.gov/CIK">0001680062</xbrli:identifier>
      <xbrli:segment>
        <xbrldi:explicitMember dimension="srt:ConsolidatedEntitiesAxis">srt:ParentCompanyMember</xbrldi:explicitMember>
      </xbrli:segment>
    </xbrli:entity>
    <xbrli:period>
      <xbrli:instant>2017-12-31</xbrli:instant>
    </xbrli:period>
  </xbrli:context>
  <xbrli:unit id="U001">
    <xbrli:measure>iso4217:USD</xbrli:measure>
  </xbrli:unit>
  <xbrli:unit id="U002">
    <xbrli:measure>xbrli:shares</xbrli:measure>
  </xbrli:unit>
  <xbrli:unit id="U003">
    <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:unit id="U004">
    <xbrli:measure>xbrli:pure</xbrli:measure>
  </xbrli:unit>
  <xbrli:unit id="U005">
    <xbrli:measure>iso4217:CNY</xbrli:measure>
  </xbrli:unit>
  <xbrli:unit id="U006">
    <xbrli:measure>acmr:Investor</xbrli:measure>
  </xbrli:unit>
  <xbrli:unit id="U007">
    <xbrli:divide>
      <xbrli:unitNumerator>
        <xbrli:measure>iso4217:CNY</xbrli:measure>
      </xbrli:unitNumerator>
      <xbrli:unitDenominator>
        <xbrli:measure>xbrli:shares</xbrli:measure>
      </xbrli:unitDenominator>
    </xbrli:divide>
  </xbrli:unit>
  <xbrli:unit id="U008">
    <xbrli:measure>acmr:Subsidy</xbrli:measure>
  </xbrli:unit>
  <xbrli:unit id="U009">
    <xbrli:measure>acmr:Customer</xbrli:measure>
  </xbrli:unit>
  <xbrli:unit id="U010">
    <xbrli:measure>acmr:Squarefeet</xbrli:measure>
  </xbrli:unit>
  <xbrli:unit id="U011">
    <xbrli:measure>acmr:Segment</xbrli:measure>
  </xbrli:unit>
  <!--Amendment Flag-->
  <dei:AmendmentFlag id="Fact_eb4a4f05ff324802b23fee9ac8817358" contextRef="c20190101to20191231">false</dei:AmendmentFlag>
  <!--Current Fiscal Year End Date-->
  <dei:CurrentFiscalYearEndDate id="Fact_12cb10b692b548428dc2e900ba5bc963" contextRef="c20190101to20191231">--12-31</dei:CurrentFiscalYearEndDate>
  <!--Document Period End Date-->
  <dei:DocumentPeriodEndDate id="Fact_63b601d801f44217a5591a1d97bc6bfb" contextRef="c20190101to20191231">2019-12-31</dei:DocumentPeriodEndDate>
  <!--Entity Address, State or Province-->
  <dei:EntityAddressStateOrProvince id="Fact_e2673c7e55544f758a716a11f9829b10" contextRef="c20190101to20191231">CA</dei:EntityAddressStateOrProvince>
  <!--Entity Well-known Seasoned Issuer-->
  <dei:EntityWellKnownSeasonedIssuer id="Fact_d031531bd41e48a9bbd53cbad9a10675" contextRef="c20190101to20191231">No</dei:EntityWellKnownSeasonedIssuer>
  <!--Entity Voluntary Filers-->
  <dei:EntityVoluntaryFilers id="Fact_9eeaa53fcea44621961b386611b3b086" contextRef="c20190101to20191231">No</dei:EntityVoluntaryFilers>
  <!--Entity Current Reporting Status-->
  <dei:EntityCurrentReportingStatus id="Fact_8da6265e09cf4c4b8e381b05b318c308" contextRef="c20190101to20191231">Yes</dei:EntityCurrentReportingStatus>
  <!--Entity Filer Category-->
  <dei:EntityFilerCategory id="Fact_a3ac20b24a2f4e0686e4fa54b68d06cf" contextRef="c20190101to20191231">Accelerated Filer</dei:EntityFilerCategory>
  <!--Entity Public Float-->
  <dei:EntityPublicFloat id="Fact_3c60c7d1785f4e6ebe4e7eced3a8edb5" contextRef="c20190628" unitRef="U001" decimals="-5">135600000</dei:EntityPublicFloat>
  <!--Entity Registrant Name-->
  <dei:EntityRegistrantName id="Fact_82bccf80c4d14cc19d6c2e934d3aa5ed" contextRef="c20190101to20191231">ACM Research, Inc.</dei:EntityRegistrantName>
  <!--Entity Central Index Key-->
  <dei:EntityCentralIndexKey id="Fact_44af53bad0054e65a8020b9a66989ce9" contextRef="c20190101to20191231">0001680062</dei:EntityCentralIndexKey>
  <!--Entity Common Stock, Shares Outstanding-Common Class A [Member]-->
  <dei:EntityCommonStockSharesOutstanding id="Fact_5d908afd8a244406ac7161014444aa86" contextRef="c20200320_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">16273528</dei:EntityCommonStockSharesOutstanding>
  <!--Entity Common Stock, Shares Outstanding-Common Class B [Member]-->
  <dei:EntityCommonStockSharesOutstanding id="Fact_a57f7e383c9448d3b043c9f4176d69f4" contextRef="c20200320_StatementClassOfStockAxis_CommonClassBMember" unitRef="U002" decimals="INF">1862608</dei:EntityCommonStockSharesOutstanding>
  <!--Document Fiscal Year Focus-->
  <dei:DocumentFiscalYearFocus id="Fact_24e7292150b149628f05bfd87e877aa7" contextRef="c20190101to20191231">2019</dei:DocumentFiscalYearFocus>
  <!--Document Fiscal Period Focus-->
  <dei:DocumentFiscalPeriodFocus id="Fact_141ca88ec60f4b4989d066c685ac7e03" contextRef="c20190101to20191231">FY</dei:DocumentFiscalPeriodFocus>
  <!--Document Type-->
  <dei:DocumentType id="Fact_c04c8cc71c284cc790778c89282ccec2" contextRef="c20190101to20191231">10-K</dei:DocumentType>
  <!--Entity Interactive Data Current-->
  <dei:EntityInteractiveDataCurrent id="Fact_7432ef0d2b124fd7815d7f6b1a89037e" contextRef="c20190101to20191231">Yes</dei:EntityInteractiveDataCurrent>
  <!--Entity Shell Company-->
  <dei:EntityShellCompany id="Fact_a9ca4ac698294b53b50d450852280297" contextRef="c20190101to20191231">false</dei:EntityShellCompany>
  <!--Entity Emerging Growth Company-->
  <dei:EntityEmergingGrowthCompany id="Fact_e4bd4b8ff2e14bb195f349961c182a60" contextRef="c20190101to20191231">true</dei:EntityEmergingGrowthCompany>
  <!--Entity Ex Transition Period-->
  <dei:EntityExTransitionPeriod id="Fact_66de42891c9444859c3104c390d9b09f" contextRef="c20190101to20191231">true</dei:EntityExTransitionPeriod>
  <!--Entity Small Business-->
  <dei:EntitySmallBusiness id="Fact_215c9e31350c4d739920c14adf7b9126" contextRef="c20190101to20191231">true</dei:EntitySmallBusiness>
  <!--Accounts payable-related party-Ninebell Co., Ltd [Member]-->
  <us-gaap:AccountsPayableRelatedPartiesCurrent id="Fact_8a34df6e2eca4c15942f367309dfaa5e" contextRef="c20191231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember" unitRef="U001" decimals="-3">727000</us-gaap:AccountsPayableRelatedPartiesCurrent>
  <!--Accounts payable-related party-Ninebell Co., Ltd [Member]-->
  <us-gaap:AccountsPayableRelatedPartiesCurrent id="Fact_a9ab4eb043f44d969bcd171932c562b0" contextRef="c20181231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember" unitRef="U001" decimals="-3">1477000</us-gaap:AccountsPayableRelatedPartiesCurrent>
  <!--Accounts payable-related party-Shengyi Semiconductor Technology Company Limited [Member]-->
  <us-gaap:AccountsPayableRelatedPartiesCurrent id="Fact_f09399d980764a8ea20b06892bb64d84" contextRef="c20191231_RelatedPartyTransactionsByRelatedPartyAxis_ShengyiSemiconductorTechnologyCompanyLimitedMember" unitRef="U001" decimals="-3">488000</us-gaap:AccountsPayableRelatedPartiesCurrent>
  <!--Accounts Payable and Other Accrued Liabilities-Parent Company [Member]-->
  <us-gaap:AccountsPayableAndOtherAccruedLiabilities id="Fact_476d16996ba34d478d5bad548dcb8500" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">1138000</us-gaap:AccountsPayableAndOtherAccruedLiabilities>
  <!--Accounts Payable and Other Accrued Liabilities-Parent Company [Member]-->
  <us-gaap:AccountsPayableAndOtherAccruedLiabilities id="Fact_b922e967199b42b19eba3267c4e15933" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">2818000</us-gaap:AccountsPayableAndOtherAccruedLiabilities>
  <!--Accounts payable-->
  <us-gaap:AccountsPayableCurrent id="Fact_718ad0ec34fd4b1da8f99f6bc9d5ac0f" contextRef="c20181231" unitRef="U001" decimals="-3">16673000</us-gaap:AccountsPayableCurrent>
  <!--Accounts payable-->
  <us-gaap:AccountsPayableCurrent id="Fact_892f0a3891a343a1bf46a6b9281cf914" contextRef="c20191231" unitRef="U001" decimals="-3">13262000</us-gaap:AccountsPayableCurrent>
  <!--Accounts Payable and Accrued Liabilities Disclosure [Text Block]-->
  <us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock id="Fact_a727212857654367b8a7e71229a540cd" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold; text-align: justify;"&gt;NOTE&amp;#160;7&amp;#160;&amp;#8211; OTHER PAYABLE AND ACCRUED EXPENSES&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;At December&amp;#160;31, 2019 and 2018, other payable and accrued expenses consisted of the following:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 90%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Lease&amp;#160;expenses&amp;#160;and&amp;#160;payable&amp;#160;for&amp;#160;leasehold&amp;#160;improvement&amp;#160;due&amp;#160;to&amp;#160;a&amp;#160;related&amp;#160;party&amp;#160;(note&amp;#160;11)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;53&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accrued commissions&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;4,082&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,931&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accrued&amp;#160;warranty&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2,811&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,710&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accrued&amp;#160;payroll&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,092&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;626&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accrued&amp;#160;professional&amp;#160;fees&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;165&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;64&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accrued&amp;#160;machine&amp;#160;testing&amp;#160;fees&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,456&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;3,076&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Others&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2,268&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,950&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000; font-weight: bold;"&gt;Total&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;12,874&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;10,410&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:AccountsPayableAndAccruedLiabilitiesDisclosureTextBlock>
  <!--Accounts receivable, less allowance for doubtful accounts of $0 as of December 31, 2019 and $0 as of December 31, 2018 (note 3)-->
  <us-gaap:AccountsReceivableNetCurrent id="Fact_0e590fe98e744ad98d43fb41f848d9c0" contextRef="c20191231" unitRef="U001" decimals="-3">31091000</us-gaap:AccountsReceivableNetCurrent>
  <!--Accounts receivable, less allowance for doubtful accounts of $0 as of December 31, 2019 and $0 as of December 31, 2018 (note 3)-->
  <us-gaap:AccountsReceivableNetCurrent id="Fact_16f1900da999459c98911e49dfaa59c4" contextRef="c20181231" unitRef="U001" decimals="-3">24608000</us-gaap:AccountsReceivableNetCurrent>
  <!--Accounts receivable, less allowance for doubtful accounts of $0 as of December 31, 2019 and $0 as of December 31, 2018 (note 3)-Parent Company [Member]-->
  <us-gaap:AccountsReceivableNetCurrent id="Fact_88e5daf64ded4d34a9c6bb09cdb2245a" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">0</us-gaap:AccountsReceivableNetCurrent>
  <!--Accounts receivable, less allowance for doubtful accounts of $0 as of December 31, 2019 and $0 as of December 31, 2018 (note 3)-Parent Company [Member]-->
  <us-gaap:AccountsReceivableNetCurrent id="Fact_b3fc2f2e889f47ed9eb728781466dffc" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">983000</us-gaap:AccountsReceivableNetCurrent>
  <!--Accounts Receivable, before Allowance for Credit Loss, Current-->
  <us-gaap:AccountsReceivableGrossCurrent id="Fact_10c1c28b9dd94cc0b596a608d3efb250" contextRef="c20181231" unitRef="U001" decimals="-3">24608000</us-gaap:AccountsReceivableGrossCurrent>
  <!--Accounts Receivable, before Allowance for Credit Loss, Current-->
  <us-gaap:AccountsReceivableGrossCurrent id="Fact_841376548bc64a489bf6afc7deba0c9b" contextRef="c20191231" unitRef="U001" decimals="-3">31091000</us-gaap:AccountsReceivableGrossCurrent>
  <!--Accrued commissions-->
  <us-gaap:AccruedSalesCommissionCurrent id="Fact_e3a33c397cc24ee3833fca0e83cf05aa" contextRef="c20181231" unitRef="U001" decimals="-3">2931000</us-gaap:AccruedSalesCommissionCurrent>
  <!--Accrued commissions-->
  <us-gaap:AccruedSalesCommissionCurrent id="Fact_edce2c2ea614435794d8fc20591efdeb" contextRef="c20191231" unitRef="U001" decimals="-3">4082000</us-gaap:AccruedSalesCommissionCurrent>
  <!--Accrued professional fees-->
  <us-gaap:AccruedProfessionalFeesCurrent id="Fact_54b844b75cb5408eac4d17103f5e2824" contextRef="c20181231" unitRef="U001" decimals="-3">64000</us-gaap:AccruedProfessionalFeesCurrent>
  <!--Accrued professional fees-->
  <us-gaap:AccruedProfessionalFeesCurrent id="Fact_d849c4d663bc49dbaf6bc120e095c1c0" contextRef="c20191231" unitRef="U001" decimals="-3">165000</us-gaap:AccruedProfessionalFeesCurrent>
  <!--Income taxes payable-->
  <us-gaap:AccruedIncomeTaxesCurrent id="Fact_0347800fb66c4e8e8cfdd0e8afd57787" contextRef="c20191231" unitRef="U001" decimals="-3">3129000</us-gaap:AccruedIncomeTaxesCurrent>
  <!--Income taxes payable-->
  <us-gaap:AccruedIncomeTaxesCurrent id="Fact_e17dc50924864d33857f14f4e8e8a30b" contextRef="c20181231" unitRef="U001" decimals="-3">1193000</us-gaap:AccruedIncomeTaxesCurrent>
  <!--Income taxes payable-Parent Company [Member]-->
  <us-gaap:AccruedIncomeTaxesCurrent id="Fact_25f4c3b91d8f447c8817dc86fd76cf6f" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">1193000</us-gaap:AccruedIncomeTaxesCurrent>
  <!--Income taxes payable-Parent Company [Member]-->
  <us-gaap:AccruedIncomeTaxesCurrent id="Fact_deba8296c00f4685963689c71f765f37" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">3129000</us-gaap:AccruedIncomeTaxesCurrent>
  <!--Accumulated Depreciation, Depletion and Amortization, Property, Plant, and Equipment-->
  <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment id="Fact_5efc461244f647b5ab134ceaf9d40faa" contextRef="c20181231" unitRef="U001" decimals="-3">8102000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
  <!--Accumulated Depreciation, Depletion and Amortization, Property, Plant, and Equipment-->
  <us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment id="Fact_ba72803ab84c4a8db34d3aa40da594ab" contextRef="c20191231" unitRef="U001" decimals="-3">3077000</us-gaap:AccumulatedDepreciationDepletionAndAmortizationPropertyPlantAndEquipment>
  <!--Accumulated other comprehensive loss-->
  <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax id="Fact_053110a660a0447e8b438848414a6bf7" contextRef="c20181231" unitRef="U001" decimals="-3">-857000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
  <!--Accumulated other comprehensive loss-->
  <us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax id="Fact_9ec87da527314c5d9ca2dc4e89bd5f78" contextRef="c20191231" unitRef="U001" decimals="-3">-1675000</us-gaap:AccumulatedOtherComprehensiveIncomeLossNetOfTax>
  <!--Additional Paid in Capital-->
  <us-gaap:AdditionalPaidInCapital id="Fact_85670dfedb46493997fcb7ddc512bbe2" contextRef="c20181231" unitRef="U001" decimals="-3">56567000</us-gaap:AdditionalPaidInCapital>
  <!--Additional Paid in Capital-->
  <us-gaap:AdditionalPaidInCapital id="Fact_efa71f338c65457488f1d39ba1cd28db" contextRef="c20191231" unitRef="U001" decimals="-3">83487000</us-gaap:AdditionalPaidInCapital>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-Common Class B [Member]-Common Stock [Member]-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_13bbd2b6cf6242a889c3b44837eb7f89" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-Additional Paid-In Capital [Member]-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_24369a36e68d408e836623c738bbed43" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">3363000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_315588a674ae460b8948af7304f99a84" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">3363000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_433f321a8c2c4f42bdfafcdc9d6ae4cd" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">3572000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-Common Class A [Member]-Common Stock [Member]-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_45aba7b35bdf48bcb7b99a9c91ecdedb" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-Retained Earnings [Member]-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_4f911d93aa0e46468473058711b80dda" contextRef="c20180101to20181231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-AOCI Attributable to Parent [Member]-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_60be6806ff4549a6b2dbfe48921b98f4" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-Additional Paid-In Capital [Member]-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_868be3e673264deba213151f9f41fb5c" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">3572000</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-AOCI Attributable to Parent [Member]-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_9595b5b814b64c5ab95f4b1ae5e93ead" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-Retained Earnings [Member]-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_afcde5764fc54bf386801269a81eeaf4" contextRef="c20190101to20191231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-Common Stock [Member]-Common Class B [Member]-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_bd61c5af71fb4439bee6b67f4b482eac" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--APIC, Share-based Payment Arrangement, Increase for Cost Recognition-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue id="Fact_dfe5f7e9008b4488a7b9a45556dde7d7" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:AdjustmentsToAdditionalPaidInCapitalSharebasedCompensationRequisiteServicePeriodRecognitionValue>
  <!--Stock-based compensation expense-ACM Research (Shanghai), Inc. [Member]-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:AllocatedShareBasedCompensationExpense id="Fact_2d702899e22848f79ded0e038aee02de" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-3">949000</us-gaap:AllocatedShareBasedCompensationExpense>
  <!--Stock-based compensation expense-General and Administrative Expenses [Member]-Share-based Payment Arrangement, Option [Member]-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:AllocatedShareBasedCompensationExpense id="Fact_4f62b9f03f0a432190f0ac5a823344f0" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_IncomeStatementLocationAxis_GeneralAndAdministrativeExpenseMember" unitRef="U001" decimals="-3">94000</us-gaap:AllocatedShareBasedCompensationExpense>
  <!--Stock-based compensation expense-Research and Development Expenses [Member]-Share-based Payment Arrangement, Option [Member]-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:AllocatedShareBasedCompensationExpense id="Fact_658e3e5cf2ba463a9da642b0bb5996ae" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_IncomeStatementLocationAxis_ResearchAndDevelopmentExpensesMember" unitRef="U001" decimals="-3">625000</us-gaap:AllocatedShareBasedCompensationExpense>
  <!--Stock-based compensation expense-Sales and Marketing Expenses [Member]-ACM Research (Shanghai), Inc. [Member]-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:AllocatedShareBasedCompensationExpense id="Fact_8291325db8394346b0fa58705f71fcb2" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_IncomeStatementLocationAxis_SellingAndMarketingExpenseMember" unitRef="U001" decimals="-3">111000</us-gaap:AllocatedShareBasedCompensationExpense>
  <!--Stock-based compensation expense-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:AllocatedShareBasedCompensationExpense id="Fact_aa45f6c430f14d419ce07a9c2b5ac49f" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U001" decimals="-3">2265000</us-gaap:AllocatedShareBasedCompensationExpense>
  <!--Stock-based compensation expense-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:AllocatedShareBasedCompensationExpense id="Fact_b2a67303426044d5a6b8146ad1ca73c9" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U001" decimals="-3">712000</us-gaap:AllocatedShareBasedCompensationExpense>
  <!--Stock-based compensation expense-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:AllocatedShareBasedCompensationExpense id="Fact_b3655d4deced4935a6e1ed1d3067b060" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U001" decimals="-3">2651000</us-gaap:AllocatedShareBasedCompensationExpense>
  <!--Stock-based compensation expense-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:AllocatedShareBasedCompensationExpense id="Fact_dad64e6bb2534562bebda44d54adecb9" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U001" decimals="-3">1307000</us-gaap:AllocatedShareBasedCompensationExpense>
  <!--Stock-based compensation expense-Share-based Payment Arrangement, Option [Member]-ACM Research (Shanghai), Inc. [Member]-Cost of Revenue [Member]-->
  <us-gaap:AllocatedShareBasedCompensationExpense id="Fact_e1d3361c025d4e4da723a52196233c5d" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_IncomeStatementLocationAxis_CostOfSalesMember" unitRef="U001" decimals="-3">119000</us-gaap:AllocatedShareBasedCompensationExpense>
  <!--Allowance for doubtful accounts-->
  <us-gaap:AllowanceForDoubtfulAccountsReceivable id="Fact_5f231371475b4ed4bb344bf1b69e1229" contextRef="c20191231" unitRef="U001" decimals="-3">0</us-gaap:AllowanceForDoubtfulAccountsReceivable>
  <!--Allowance for doubtful accounts-->
  <us-gaap:AllowanceForDoubtfulAccountsReceivable id="Fact_712483457d304f539c75c435f21672f8" contextRef="c20181231" unitRef="U001" decimals="-3">0</us-gaap:AllowanceForDoubtfulAccountsReceivable>
  <!--Accounts receivable, allowance for doubtful accounts-->
  <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent id="Fact_8f65526171da4c07acd81af21f19aa4c" contextRef="c20191231" unitRef="U001" decimals="-3">0</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
  <!--Accounts receivable, allowance for doubtful accounts-->
  <us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent id="Fact_b6d3a18f50c84f32bcea1d4efe1b94ed" contextRef="c20181231" unitRef="U001" decimals="-3">0</us-gaap:AllowanceForDoubtfulAccountsReceivableCurrent>
  <!--Amounts restricted included paid-in capital and statutory reserve funds-->
  <us-gaap:AmountOfRestrictedNetAssetsForConsolidatedAndUnconsolidatedSubsidiaries id="Fact_1706a5cf7af0417bb7c7746230427315" contextRef="c20181231" unitRef="U001" decimals="-3">32076000</us-gaap:AmountOfRestrictedNetAssetsForConsolidatedAndUnconsolidatedSubsidiaries>
  <!--Amounts restricted included paid-in capital and statutory reserve funds-->
  <us-gaap:AmountOfRestrictedNetAssetsForConsolidatedAndUnconsolidatedSubsidiaries id="Fact_7d4d2f191c32428090c39de52940e7c6" contextRef="c20191231" unitRef="U001" decimals="-3">113168000</us-gaap:AmountOfRestrictedNetAssetsForConsolidatedAndUnconsolidatedSubsidiaries>
  <!--Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount-->
  <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount id="Fact_14aa5ce7239440c599869b4b53141c13" contextRef="c20180101to20181231" unitRef="U002" decimals="INF">3795779</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
  <!--Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount-Warrant [Member]-->
  <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount id="Fact_16ee65d9322d451b9d5abe30044dc08e" contextRef="c20190101to20191231_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_WarrantMember" unitRef="U002" decimals="INF">77810</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
  <!--Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount-Warrant [Member]-->
  <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount id="Fact_5ac4998334454f7ea45a4c97f4b6dee7" contextRef="c20180101to20181231_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_WarrantMember" unitRef="U002" decimals="INF">80000</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
  <!--Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount-->
  <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount id="Fact_648727d92ca74b4386ae7f44b8e83516" contextRef="c20190101to20191231" unitRef="U002" decimals="INF">4173486</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
  <!--Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount id="Fact_b7eae8157b37461896c2162077b06295" contextRef="c20180101to20181231_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">3715779</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
  <!--Antidilutive Securities Excluded from Computation of Earnings Per Share, Amount-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount id="Fact_ea50854614bb44ed80c78e38682481b1" contextRef="c20190101to20191231_AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareByAntidilutiveSecuritiesAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">4095676</us-gaap:AntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareAmount>
  <!--Assets-->
  <us-gaap:Assets id="Fact_1514d814a3304efc8cb2fc2c5fd190c9" contextRef="c20191231" unitRef="U001" decimals="-3">217703000</us-gaap:Assets>
  <!--Assets-->
  <us-gaap:Assets id="Fact_b52c7fedd7ef4b9d8602e3fda4153017" contextRef="c20181231" unitRef="U001" decimals="-3">103047000</us-gaap:Assets>
  <!--Assets-Parent Company [Member]-->
  <us-gaap:Assets id="Fact_d28ce60c63fa4387b05b2f0adc22a34f" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">56394000</us-gaap:Assets>
  <!--Assets-Parent Company [Member]-->
  <us-gaap:Assets id="Fact_dbdf97cb40454da79274e683b8d77d4c" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">101251000</us-gaap:Assets>
  <!--Assets, Current-->
  <us-gaap:AssetsCurrent id="Fact_74e4660565df458bab0970b0ce92e42b" contextRef="c20191231" unitRef="U001" decimals="-3">198396000</us-gaap:AssetsCurrent>
  <!--Assets, Current-->
  <us-gaap:AssetsCurrent id="Fact_938f809e0bc44f59a724f6844b283d33" contextRef="c20181231" unitRef="U001" decimals="-3">96028000</us-gaap:AssetsCurrent>
  <!--Assets, Current-Parent Company [Member]-->
  <us-gaap:AssetsCurrent id="Fact_8ba6dec5777b41379581794660a89ccc" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">29533000</us-gaap:AssetsCurrent>
  <!--Assets, Current-Parent Company [Member]-->
  <us-gaap:AssetsCurrent id="Fact_930293f85029447fbf58e942a02eb9ac" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">32724000</us-gaap:AssetsCurrent>
  <!--Business Description and Basis of Presentation [Text Block]-->
  <us-gaap:BusinessDescriptionAndBasisOfPresentationTextBlock id="Fact_41ecbd54da3447229c255cdef6de4805" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify; font-weight: bold;"&gt;NOTE 1 &amp;#8211; DESCRIPTION OF BUSINESS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM Research, Inc. (&amp;#8220;ACM&amp;#8221;) and its subsidiaries (collectively with ACM, the &amp;#8220;Company&amp;#8221;) develop, manufacture and sell single-wafer wet cleaning equipment used to improve the manufacturing process and yield for advanced integrated chips. The Company markets and sells its single-wafer wet-cleaning equipment, under the brand name &amp;#8220;Ultra C,&amp;#8221; based on the Company&amp;#8217;s proprietary Space Alternated Phase Shift (&amp;#8220;SAPS&amp;#8221;) and Timely Energized Bubble Oscillation (&amp;#8220;TEBO&amp;#8221;) technologies. These tools are designed to remove random defects from a wafer surface efficiently, without damaging the wafer or its features, even at increasingly advanced process nodes.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM was incorporated in California in 1998, and it initially focused on developing tools for manufacturing process steps involving the integration of ultra low-K materials and copper. The Company&amp;#8217;s early efforts focused on stress-free copper-polishing technology, and it sold tools based on that technology in the early 2000s.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In 2006 the Company established its operational center in Shanghai in the People&amp;#8217;s Republic of China (the &amp;#8220;PRC&amp;#8221;), where it operates through ACM&amp;#8217;s subsidiary ACM Research (Shanghai), Inc. (&amp;#8220;ACM Shanghai&amp;#8221;). ACM Shanghai was formed to help establish and build relationships with integrated circuit manufacturers in the PRC, and the Company initially financed its Shanghai operations in part through sales of non-controlling equity interests in ACM Shanghai.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;In 2007 the Company began to focus its development efforts on single-wafer wet-cleaning solutions for the front-end chip fabrication process. The Company introduced its SAPS megasonic technology, which can be applied in wet wafer cleaning at numerous steps during the chip fabrication process, in 2009. It introduced its TEBO technology, which can be applied at numerous steps during the fabrication of small node two-dimensional conventional and three-dimensional patterned wafers, in March 2016. The Company has designed its equipment models for SAPS and TEBO solutions using a modular configuration that enables it to create a wet-cleaning tool meeting the specific requirements of a customer, while using pre-existing designs for chamber, electrical, chemical delivery and other modules. In August 2018, the Company introduced its Ultra-C Tahoe wafer cleaning tool, which can deliver high cleaning performance with significantly less sulfuric acid than typically consumed by conventional high-temperature single-wafer cleaning tools. Based on its electro-chemical plating (&amp;#8220;ECP&amp;#8221;) technology, the Company introduced in March 2019 its Ultra ECP AP, or &amp;#8220;Advanced Packaging,&amp;#8221; tool for bumping, or applying copper, tin and nickel to semiconductor wafers at the die-level, and its Ultra ECP MAP, or &amp;#8220;Multi-Anode Partial Plating,&amp;#8221; tool to deliver advanced electrochemical copper plating for copper interconnect applications in front-end wafer fabrication processes. The Company also offers a range of custom-made equipment, including cleaners, coaters and developers, to back-end wafer assembly and packaging factories, principally in the PRC.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In 2011 ACM Shanghai formed a wholly owned subsidiary in the PRC, ACM Research (Wuxi), Inc. (&amp;#8220;ACM Wuxi&amp;#8221;), to manage sales and service operations.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In November 2016 ACM redomesticated from California to Delaware pursuant to a merger in which ACM Research, Inc., a California corporation, was merged into a newly formed, wholly owned Delaware subsidiary, also named ACM Research, Inc.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In June 2017 ACM formed a wholly owned subsidiary in Hong Kong, CleanChip Technologies Limited (&amp;#8220;CleanChip&amp;#8221;), to act on the Company&amp;#8217;s behalf in Asian markets outside the PRC by, for example, serving as a trading partner between ACM Shanghai and its customers, procuring raw materials and components, performing sales and marketing activities, and making strategic investments.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In August 2017 ACM purchased 18.77% of ACM Shanghai&amp;#8217;s equity interests held by Shanghai Science and Technology Venture Capital Co., Ltd. On November 8, 2017, ACM purchased the remaining 18.36% of ACM Shanghai&amp;#8217;s equity interest held by third parties, Shanghai Pudong High-Tech Investment Co., Ltd. (&amp;#8220;PDHTI&amp;#8221;) and Shanghai Zhangjiang Science &amp;amp; Technology Venture Capital Co., Ltd. (&amp;#8220;ZSTVC&amp;#8221;). At December 31, 2017, ACM owned all of the outstanding equity interests of ACM Shanghai, and indirectly through ACM Shanghai, owned all of the outstanding equity interests of ACM Wuxi.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;On September 13, 2017, ACM effectuated a 1-for-3 reverse stock split of Class A and Class B common stock. Unless otherwise indicated, all share numbers, per share amount, share prices, exercise prices and conversion rates set forth in these notes and the accompanying condensed consolidated financial statements have been adjusted retrospectively to reflect the reverse stock split.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;On November 2, 2017, the Registration Statement on Form S-1 (File No. 333- 220451) for ACM&amp;#8217;s initial public offering of Class A common stock (the &amp;#8220;IPO&amp;#8221;) was declared effective by the U.S. Securities and Exchange Commission. Shares of Class A common stock began trading on the Nasdaq Global Market on November 3, 2017, and the closing for the IPO was held on November 7, 2017.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In December 2017 ACM formed a wholly owned subsidiary in the Republic of Korea, ACM Research Korea CO., LTD. (&amp;#8220;ACM Korea&amp;#8221;), to serve customers based in Republic of Korea and perform sales, marketing, research and development activities for new products and solutions.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;In March 2019 ACM Shanghai formed a wholly owned subsidiary in the PRC, Shengwei Research (Shanghai), Inc., to manage activities related to addition of future long-term production capacity. The subsidiary was formed with registered capital of RMB 5,000 ($727). As of December 31, 2019, $142 had been injected into this subsidiary.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000;"&gt;In June 2019 Cleanchip formed a wholly owned subsidiary in California, ACM Research (CA), Inc. (&amp;#8220;ACM California&amp;#8221;), to provide procurement services on behalf of ACM Shanghai.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;On June 17, 2019 ACM announced plans to complete over the next three years a listing (the &amp;#8220;Listing&amp;#8221;) of shares of ACM Shanghai on the Shanghai Stock Exchange&amp;#8217;s new Sci-Tech innovAtion boaRd, known as the STAR Market, and a concurrent initial public offering (the &amp;#8220;STAR IPO&amp;#8221;) of ACM Shanghai shares in the PRC. ACM Shanghai is currently ACM&amp;#8217;s primary operating subsidiary, and at the time of announcement, was wholly owned by ACM. As an initial step in qualifying for the Listing and STAR IPO, on June 12, 2019 ACM Shanghai entered into agreements with seven investors (the &amp;#8220;First Tranche Investors&amp;#8221;), pursuant to which the First Tranche Investors agreed to pay a purchase price totaling RMB 187,900 (equivalent to $27,300) to ACM Shanghai for shares representing 4.2% of the then-outstanding ACM Shanghai shares. On November 29, 2019 ACM Shanghai entered into agreements with eight PRC-based investment firms (the &amp;#8220;Second Tranche Investors&amp;#8221;), pursuant to which the Second Tranche Investors agreed to acquire shares of ACM Shanghai for an aggregate of RMB 228,200 (equivalent to $32,400) at a purchase price of RMB 13 for each share, which is the same purchase price per share paid by the First Tranche Investors. Following the issuance of shares to the Second Tranche Investors, 91.7% of the outstanding shares of ACM Shanghai were owned by ACM, 3.8% were owned by the First Tranche Investors, and 4.5% were owned by the Second Tranche Investors. (See note 13).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000;"&gt;In preparation for the STAR IPO, ACM completed a reorganization in December 2019 that included the sale of all of the shares of Cleanchip by ACM to ACM Shanghai for $3,500. The reorganization and sale had no impact on ACM&amp;#8217;s consolidated financial statements.&lt;/div&gt;&lt;div style="color: #000000;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;font style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none;"&gt;&lt;font style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; background-clip: border-box; background-origin: padding-box; background-size: auto auto;"&gt;The Company has direct or indirect interests in the following subsidiaries:&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle;"&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0);"&gt;Place and date&lt;/div&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0);"&gt;of&lt;/div&gt;&lt;/td&gt;&lt;td colspan="2" style="vertical-align: bottom; text-align: center;"&gt;&lt;div style="color: rgb(0, 0, 0);"&gt;Effective interest held as at&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle;"&gt;&lt;div style="text-align: center; color: #000000;"&gt;Name of subsidiaries&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle;"&gt;&lt;div style="text-align: center; color: #000000;"&gt;incorporation&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle;"&gt;&lt;div style="text-align: center; color: #000000;"&gt;December 31, 2019&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle;"&gt;&lt;div style="text-align: center; color: #000000;"&gt;December 31, 2018&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;ACM Research (Shanghai), Inc.&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;China, May 2006&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;ACM Research (Wuxi), Inc.&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;China, July 2011&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;CleanChip Technologies Limited&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;Hong Kong, June 2017&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;ACM Research Korea CO., LTD.&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;Korea, December 2017&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;Shengwei Research (Shanghai), Inc.&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;China, March 2019&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;ACM Research (CA), Inc.&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;USA, June 2019&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:BusinessDescriptionAndBasisOfPresentationTextBlock>
  <!--Cash and Cash Equivalents, Restricted Cash and Cash Equivalents, Policy [Policy Text Block]-->
  <us-gaap:CashAndCashEquivalentsRestrictedCashAndCashEquivalentsPolicy id="Fact_6ba3dbef445240b0b1a4b6191d9d5510" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Restricted cash&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Restricted cash represents deposits not readily available to ACM. Restricted cash as of December 31, 2019 represented cash hold in reserve, all of the proceeds received from issuance of common stock to redeemable Non-controlling interest in segregated cash and cash-equivalent accounts.&lt;/div&gt;&lt;/div&gt;</us-gaap:CashAndCashEquivalentsRestrictedCashAndCashEquivalentsPolicy>
  <!--Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents-->
  <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents id="Fact_246244d87f6f483583448d31bb000cba" contextRef="c20171231" unitRef="U001" decimals="-3">17681000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
  <!--Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents-->
  <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents id="Fact_f56d9bf128d041dc8eadedd39a980dbf" contextRef="c20181231" unitRef="U001" decimals="-3">27124000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
  <!--Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents-->
  <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents id="Fact_e4c2f203805d417997314d09e46b0893" contextRef="c20191231" unitRef="U001" decimals="-3">117859000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
  <!--Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents-Parent Company [Member]-->
  <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents id="Fact_3508986b786e45ad8bf0bd6b83c666c9" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">13161000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
  <!--Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents-Parent Company [Member]-->
  <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents id="Fact_863c9b8b182044d7b7d8c175e9f14fbe" contextRef="c20171231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">10874000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
  <!--Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents-Parent Company [Member]-->
  <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents id="Fact_e212df40b6ee4fd2a81e092b6cb0993b" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">27733000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
  <!--Cash and cash equivalents-->
  <us-gaap:CashAndCashEquivalentsAtCarryingValue id="Fact_bf24e56d6f8c4ca2b50b5bccb826a551" contextRef="c20181231" unitRef="U001" decimals="-3">27124000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
  <!--Cash and cash equivalents-->
  <us-gaap:CashAndCashEquivalentsAtCarryingValue id="Fact_ce889771385249deb7ed4ef817133f98" contextRef="c20191231" unitRef="U001" decimals="-3">58261000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
  <!--Cash and cash equivalents-Parent Company [Member]-->
  <us-gaap:CashAndCashEquivalentsAtCarryingValue id="Fact_243238819260489d93ec5d049739e394" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">13161000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
  <!--Cash and cash equivalents-Parent Company [Member]-->
  <us-gaap:CashAndCashEquivalentsAtCarryingValue id="Fact_5a33e4c4216d4bbdae57a889e510131f" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">27733000</us-gaap:CashAndCashEquivalentsAtCarryingValue>
  <!--Cash and Cash Equivalents, Policy [Policy Text Block]-->
  <us-gaap:CashAndCashEquivalentsPolicyTextBlock id="Fact_eac31b86ef9f4c8cbdc47619878c94a1" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Cash and Cash Equivalents&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Cash and cash equivalents consist of cash on hand, bank deposits that are unrestricted as to withdrawal and use, and highly liquid investments with an original maturity date of three months or less at the date of purchase. At times, cash deposits may exceed government-insured limits.&lt;/div&gt;&lt;/div&gt;</us-gaap:CashAndCashEquivalentsPolicyTextBlock>
  <!--Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect-->
  <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect id="Fact_3f26819bad704e13bec69ce66be170c5" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">90735000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
  <!--Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect-->
  <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect id="Fact_3f95707b83bf4492af418520e8d2f556" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">9443000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
  <!--Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect-Parent Company [Member]-->
  <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect id="Fact_70d4f8c124c74f889f546ea2d30d7dd6" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">15390000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
  <!--Cash, Cash Equivalents, Restricted Cash and Restricted Cash Equivalents, Period Increase (Decrease), Including Exchange Rate Effect-Parent Company [Member]-->
  <us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect id="Fact_938b41c0c6114df9a7011c0c7e5bcb90" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">3267000</us-gaap:CashCashEquivalentsRestrictedCashAndRestrictedCashEquivalentsPeriodIncreaseDecreaseIncludingExchangeRateEffect>
  <!--Commitments and contingencies (note 17)-->
  <us-gaap:CommitmentsAndContingencies id="Fact_2e365fdf8fc842f89cc5dce3c6d5402f" contextRef="c20181231" unitRef="U001" xsi:nil="true" />
  <!--Commitments and contingencies (note 17)-->
  <us-gaap:CommitmentsAndContingencies id="Fact_d1509f08ab514f69a70e4132c4dba39f" contextRef="c20191231" unitRef="U001" xsi:nil="true" />
  <!--Commitments and Contingencies Disclosure [Text Block]-->
  <us-gaap:CommitmentsAndContingenciesDisclosureTextBlock id="Fact_3e9be3cb1ca6491a95938bf4d4af30cf" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold; text-align: justify;"&gt;NOTE 17&amp;#160;&amp;#8211; COMMITMENTS AND CONTINGENCIES&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000;"&gt;The Company leases offices under non-cancelable operating lease agreements. See note 8 for future minimum lease payments under non-cancelable operating lease agreements with initial terms of one year or more.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;As of December 31, 2019, the Company had $431 of open capital commitments.&lt;/div&gt;&lt;p class="MsoNormal" style="text-align: justify; background: rgb(255, 255, 255) none repeat scroll 0% 0%; font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none;"&gt;&lt;font style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; background-clip: border-box; background-origin: padding-box; background-size: auto auto;"&gt;In the normal course of business, the Company is subject to contingencies, including legal proceedings and environmental claims arising out of the normal course of businesses that relate to a wide range of matters, including among others, contracts breach liability. The Company records accruals for such contingencies based upon the assessment of the probability of occurrence and, where determinable, an estimate of the liability. Management may consider many factors in making these assessments including past history, scientific evidence and the specifics of each matter.&lt;/font&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;&lt;font style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none;"&gt;&lt;font style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; background-clip: border-box; background-origin: padding-box; background-size: auto auto;"&gt;The Company&amp;#8217;s management has evaluated all such proceedings and claims that existed as of December 31, 2019 and 2018. In the opinion of management, the ultimate disposition of these matters will not have a material adverse effect on the Company&amp;#8217;s financial position, liquidity or results of operations.&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;font style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none;"&gt;&lt;/font&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;As of December 31, 2019, the Company did not have any legal proceedings.&lt;/div&gt;&lt;/div&gt;</us-gaap:CommitmentsAndContingenciesDisclosureTextBlock>
  <!--Shares of common stock reserved for issuance (in shares)-Maximum [Member]-Common Class A [Member]-2016 Omnibus Incentive Plan [Member]-->
  <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance id="Fact_2628306008ad40de99ec3c3ecd90090b" contextRef="c20161228_PlanNameAxis_Two016OmnibusIncentivePlanMember_RangeAxis_MaximumMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">2333334</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
  <!--Shares of common stock reserved for issuance (in shares)-Incentive Stock options [Member]-2016 Omnibus Incentive Plan [Member]-->
  <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance id="Fact_ddd9834da2bc401ab1f7fdd57ffda1e2" contextRef="c20161228_AwardTypeAxis_IncentiveStockOptionsMember_PlanNameAxis_Two016OmnibusIncentivePlanMember" unitRef="U002" decimals="INF">2333334</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
  <!--Shares of common stock reserved for issuance (in shares)-1998 Stock Option Plan [Member]-->
  <us-gaap:CommonStockCapitalSharesReservedForFutureIssuance id="Fact_dfb1c32f470c48d5aab730905a4f04c0" contextRef="c19980429_PlanNameAxis_One998StockOptionPlanMember" unitRef="U002" decimals="INF">766667</us-gaap:CommonStockCapitalSharesReservedForFutureIssuance>
  <!--Common Stock, Par or Stated Value Per Share-Common Class A [Member]-->
  <us-gaap:CommonStockParOrStatedValuePerShare id="Fact_019c565cd04e4e11af4e133a246ea5b0" contextRef="c20181231_StatementClassOfStockAxis_CommonClassAMember" unitRef="U003" decimals="INF">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
  <!--Common Stock, Par or Stated Value Per Share-Common Class B [Member]-->
  <us-gaap:CommonStockParOrStatedValuePerShare id="Fact_278c9a80198e40a7a6947dae21e14a1a" contextRef="c20191231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U003" decimals="INF">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
  <!--Common Stock, Par or Stated Value Per Share-Common Class A [Member]-->
  <us-gaap:CommonStockParOrStatedValuePerShare id="Fact_322e6417eb364db186cb307b9b9ac375" contextRef="c20191231_StatementClassOfStockAxis_CommonClassAMember" unitRef="U003" decimals="INF">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
  <!--Common Stock, Par or Stated Value Per Share-Common Class B [Member]-->
  <us-gaap:CommonStockParOrStatedValuePerShare id="Fact_cf36dc9e195d47e9aa53e4b3fa9d5cc7" contextRef="c20181231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U003" decimals="INF">0.0001</us-gaap:CommonStockParOrStatedValuePerShare>
  <!--Common Stock, Shares, Issued-Common Class A [Member]-->
  <us-gaap:CommonStockSharesIssued id="Fact_00146e5ddbc14359bd550e36ba7219be" contextRef="c20181231_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">14110315</us-gaap:CommonStockSharesIssued>
  <!--Common Stock, Shares, Issued-Common Class B [Member]-->
  <us-gaap:CommonStockSharesIssued id="Fact_0c4bf7de154d4dfe8df764e683996798" contextRef="c20181231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U002" decimals="INF">1898423</us-gaap:CommonStockSharesIssued>
  <!--Common Stock, Shares, Issued-Common Class B [Member]-->
  <us-gaap:CommonStockSharesIssued id="Fact_b7d85a6320714ba591f1304080297184" contextRef="c20191231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U002" decimals="INF">1862608</us-gaap:CommonStockSharesIssued>
  <!--Common Stock, Shares, Issued-Common Class A [Member]-->
  <us-gaap:CommonStockSharesIssued id="Fact_ec41edcf2e74456aa582d47a960ed4fb" contextRef="c20191231_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">16182151</us-gaap:CommonStockSharesIssued>
  <!--Common Stock, Shares Authorized-Common Class A [Member]-->
  <us-gaap:CommonStockSharesAuthorized id="Fact_2ec71ba1b2d04866a32b5511f6511390" contextRef="c20191231_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">50000000</us-gaap:CommonStockSharesAuthorized>
  <!--Common Stock, Shares Authorized-Common Class B [Member]-->
  <us-gaap:CommonStockSharesAuthorized id="Fact_8d170e753ac24291b825d5308b786b94" contextRef="c20181231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U002" decimals="INF">2409738</us-gaap:CommonStockSharesAuthorized>
  <!--Common Stock, Shares Authorized-Common Class B [Member]-->
  <us-gaap:CommonStockSharesAuthorized id="Fact_d889851c9d104aa4b91b531922752300" contextRef="c20191231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U002" decimals="INF">2409738</us-gaap:CommonStockSharesAuthorized>
  <!--Common Stock, Shares Authorized-Common Class A [Member]-->
  <us-gaap:CommonStockSharesAuthorized id="Fact_f6246bb561994c019f32e6c651ed7dd2" contextRef="c20181231_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">50000000</us-gaap:CommonStockSharesAuthorized>
  <!--Common stock, shares outstanding (in shares)-Common Class A [Member]-->
  <us-gaap:CommonStockSharesOutstanding id="Fact_98bebe14d83a4a1faa8042e472166ad5" contextRef="c20181231_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">14110315</us-gaap:CommonStockSharesOutstanding>
  <!--Common stock, shares outstanding (in shares)-Common Class B [Member]-->
  <us-gaap:CommonStockSharesOutstanding id="Fact_d0ab1833d51840b7bb9c4a90b7e50268" contextRef="c20191231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U002" decimals="INF">1862608</us-gaap:CommonStockSharesOutstanding>
  <!--Common stock, shares outstanding (in shares)-Common Class B [Member]-->
  <us-gaap:CommonStockSharesOutstanding id="Fact_d53b9bfd6ee642d3adfc9d670dbd07d3" contextRef="c20181231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U002" decimals="INF">1898423</us-gaap:CommonStockSharesOutstanding>
  <!--Common stock, shares outstanding (in shares)-Common Class A [Member]-->
  <us-gaap:CommonStockSharesOutstanding id="Fact_ef4bc58f1d504929bee2d2ab6edbba3b" contextRef="c20191231_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">16182151</us-gaap:CommonStockSharesOutstanding>
  <!--Common Stock, Value, Issued-Common Class B [Member]-->
  <us-gaap:CommonStockValue id="Fact_1c9fe7dd002b47068b44bb48153a3e7e" contextRef="c20181231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U001" decimals="-3">0</us-gaap:CommonStockValue>
  <!--Common Stock, Value, Issued-Common Class A [Member]-->
  <us-gaap:CommonStockValue id="Fact_7dda714b79b4491dbff510613f3f5819" contextRef="c20181231_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">1000</us-gaap:CommonStockValue>
  <!--Common Stock, Value, Issued-Common Class B [Member]-->
  <us-gaap:CommonStockValue id="Fact_c212ce9f21724551be4c4563fb6574f6" contextRef="c20191231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U001" decimals="-3">0</us-gaap:CommonStockValue>
  <!--Common Stock, Value, Issued-Common Class A [Member]-->
  <us-gaap:CommonStockValue id="Fact_ec21e7ab37664fa6903dacd042a3d8b0" contextRef="c20191231_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">2000</us-gaap:CommonStockValue>
  <!--Comprehensive Income, Policy [Policy Text Block]-->
  <us-gaap:ComprehensiveIncomePolicyPolicyTextBlock id="Fact_cb51266a89a14dad89d1239139c9b2cb" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Comprehensive Income Attributable to the Company&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company applies FASB ASC Topic 220, Comprehensive Income, which establishes standards for the reporting and display of comprehensive income or loss, requiring its components to be reported in a financial statement with the same prominence as other financial statements. The comprehensive income attributable to the Company was $18,559 and $5,595 for the years ended December 31, 2019 and 2018, respectively.&lt;/div&gt;&lt;/div&gt;</us-gaap:ComprehensiveIncomePolicyPolicyTextBlock>
  <!--Comprehensive Income (Loss), Net of Tax, Attributable to Parent-->
  <us-gaap:ComprehensiveIncomeNetOfTax id="Fact_111253d425204652a2f3614214d5383b" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">18076000</us-gaap:ComprehensiveIncomeNetOfTax>
  <!--Comprehensive Income (Loss), Net of Tax, Attributable to Parent-->
  <us-gaap:ComprehensiveIncomeNetOfTax id="Fact_f7a4a13ea17a4dc891a6b20978e2502e" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">5595000</us-gaap:ComprehensiveIncomeNetOfTax>
  <!--Comprehensive Income (note 2)-->
  <us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest id="Fact_185d0458ec9f4a06bc7b1f3d888838e1" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">5595000</us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest>
  <!--Comprehensive Income (note 2)-->
  <us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest id="Fact_b7e2f77fa24340648f767827286f69a2" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">18559000</us-gaap:ComprehensiveIncomeNetOfTaxIncludingPortionAttributableToNoncontrollingInterest>
  <!--Concentration of credit risk-Customer C [Member]-Revenue Benchmark [Member]-->
  <us-gaap:ConcentrationRiskPercentage1 id="Fact_2efb411fb4ae41429e7725b3634cdec6" contextRef="c20190101to20191231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerCMember" unitRef="U004" decimals="4">0.2750</us-gaap:ConcentrationRiskPercentage1>
  <!--Concentration of credit risk-Customer A [Member]-Revenue Benchmark [Member]-->
  <us-gaap:ConcentrationRiskPercentage1 id="Fact_7c1967e6f7c64884a7537c53dc83477c" contextRef="c20190101to20191231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerAMember" unitRef="U004" decimals="4">0.2646</us-gaap:ConcentrationRiskPercentage1>
  <!--Concentration of credit risk-Customer C [Member]-Revenue Benchmark [Member]-->
  <us-gaap:ConcentrationRiskPercentage1 id="Fact_a3cce1142f9a4d1d80a0e7cb508fee35" contextRef="c20180101to20181231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerCMember" unitRef="U004" decimals="4">0.3963</us-gaap:ConcentrationRiskPercentage1>
  <!--Concentration of credit risk-Revenue Benchmark [Member]-Customer A [Member]-->
  <us-gaap:ConcentrationRiskPercentage1 id="Fact_bb8880805747435cbfb3121443f2d611" contextRef="c20180101to20181231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerAMember" unitRef="U004" decimals="4">0.2417</us-gaap:ConcentrationRiskPercentage1>
  <!--Concentration of credit risk-Customer B [Member]-Revenue Benchmark [Member]-->
  <us-gaap:ConcentrationRiskPercentage1 id="Fact_cf97e1415b064774b816c1a9f24ae4db" contextRef="c20190101to20191231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerBMember" unitRef="U004" decimals="4">0.1984</us-gaap:ConcentrationRiskPercentage1>
  <!--Concentration of credit risk-Revenue Benchmark [Member]-Customer B [Member]-->
  <us-gaap:ConcentrationRiskPercentage1 id="Fact_ded24c9fedcc4947bb0cda35241ec0e3" contextRef="c20180101to20181231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember_MajorCustomersAxis_CustomerBMember" unitRef="U004" decimals="4">0.2383</us-gaap:ConcentrationRiskPercentage1>
  <!--PARENT COMPANY ONLY CONDENSED FINANCIAL INFORMATION-->
  <us-gaap:CondensedFinancialInformationOfParentCompanyOnlyDisclosureTextBlock id="Fact_1abe1aa063424bf988dd7c7a87e384dd" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify; color: #000000;"&gt;&lt;font style="font-weight: bold;"&gt;NOTE 20 &amp;#8211; PARENT COMPANY ONLY CONDENSED FINANCIAL INFORMATION&lt;/font&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;The Company performed a test on the restricted net assets of consolidated subsidiaries in accordance with Rule&amp;#160;4-08(e)(3) of Regulation S-X of the SEC and concluded that it was applicable for the Company to disclose the financial information for ACM only. Certain information and footnote disclosures generally included in financial statements prepared in accordance with GAAP have been condensed or omitted. The footnote disclosure contains supplemental information relating to the operations of ACM separately.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;ACM&amp;#8217;s subsidiaries did not pay any dividends to ACM during the periods presented.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;ACM did not have significant capital or other commitments, long-term obligations, or guarantees as of December 31, 2019 and 2018.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The following represents condensed unconsolidated financial information of ACM only as of and for the years ended December&amp;#160;31, 2019 and 2018:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-weight: bold;"&gt;CONDENSED BALANCE SHEET&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="1" valign="bottom" style="vertical-align: middle; width: 46%; font-weight: bold;"&gt;Assets&lt;/td&gt;&lt;td colspan="1" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; text-align: center;"&gt;(in thousands)&lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Current assets:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Cash and cash equivalents&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;27,733&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;13,161&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Accounts Receivable&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;983&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Inventory&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;444&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;720&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Due from intercompany&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;4,542&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;14,494&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Other receivable&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;5&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;175&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Total current assets&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;32,724&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;29,533&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Investment in unconsolidated subsidiaries&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;68,527&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;26,861&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 34.2pt; color: rgb(0, 0, 0);"&gt;Total assets&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;101,251&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;56,394&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000; font-weight: bold;"&gt;Liabilities and Stockholders&amp;#8217; Equity&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Accounts payable&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,138&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;2,818&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Other payable&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;589&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;58&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Income taxes payable&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;3,129&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;1,193&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Total liabilities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;4,856&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;4,069&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Total stockholders&amp;#8217; equity&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;96,395&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;52,325&lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Total liabilities and stockholders&amp;#8217; equity&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;101,251&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;56,394&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000; font-style: normal; font-variant: normal; font-weight: bold; text-transform: none;"&gt;CONDENSED STATEMENT OF OPERATIONS&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: rgb(0, 0, 0); width: 70%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="1" valign="bottom" style="vertical-align: middle; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; text-align: center;"&gt;(in thousands)&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Revenue&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;10,683&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;25,506&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Cost of revenue&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(10,036&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(23,927&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 34.2pt; color: rgb(0, 0, 0);"&gt;Gross profit&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;647&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,579&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Operating expenses:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Sales and marketing expenses&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(490&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(301&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;General and administrative expenses&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(3,639&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(5,083&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Research and development expenses&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(476&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(255&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Loss from operations&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(3,958&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(4,060&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Equity in earnings of unconsolidated subsidiaries&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;22,510&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;10,360&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Interest income, net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;231&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;166&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Interest expense, net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(67&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Non-operating income (expense), net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;178&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;108&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;Income before income taxes&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;18,894&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;6,574&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Income tax expense&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Net income&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;18,894&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;6,574&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-weight: bold;"&gt;CONDENSED STATEMENT OF CASH FLOWS&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="1" valign="bottom" style="vertical-align: middle; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; text-align: center;"&gt;(in thousands)&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net cash used in operating activities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(7,957&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(1,189&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net cash provided by investing activities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;946&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net cash provided by financing activities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;23,347&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;3,510&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net increase in cash and cash equivalents&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;15,390&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;3,267&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Cash and cash equivalents, beginning of year&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;13,161&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;10,874&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Effect of exchange rate changes on cash and cash equivalents&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(818&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(980&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Cash and cash equivalents, end of year&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;27,733&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;13,161&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:CondensedFinancialInformationOfParentCompanyOnlyDisclosureTextBlock>
  <!--Construction in progress-->
  <us-gaap:ConstructionInProgressGross id="Fact_2b61460478c14f9cb76cc1e401460b79" contextRef="c20191231" unitRef="U001" decimals="-3">601000</us-gaap:ConstructionInProgressGross>
  <!--Construction in progress-->
  <us-gaap:ConstructionInProgressGross id="Fact_859625901865452c9b6afc43a58cb499" contextRef="c20181231" unitRef="U001" decimals="-3">32000</us-gaap:ConstructionInProgressGross>
  <!--Contract with Customer, Liability, Current-->
  <us-gaap:ContractWithCustomerLiabilityCurrent id="Fact_1006a9fd28ab4b038c6234c3f6fa1580" contextRef="c20181231" unitRef="U001" decimals="-3">8417000</us-gaap:ContractWithCustomerLiabilityCurrent>
  <!--Contract with Customer, Liability, Current-->
  <us-gaap:ContractWithCustomerLiabilityCurrent id="Fact_ea244996bb984891bc96605ae9fbbf98" contextRef="c20191231" unitRef="U001" decimals="-3">9129000</us-gaap:ContractWithCustomerLiabilityCurrent>
  <!--Commitments-->
  <us-gaap:ContractualObligation id="Fact_5e5dcd2aaf7048ef897871580038514a" contextRef="c20191231" unitRef="U001" decimals="-3">431000</us-gaap:ContractualObligation>
  <!--Cost Method Investments-->
  <us-gaap:CostMethodInvestments id="Fact_6a06afb8fb95401b81cef163a87e3cc9" contextRef="c20191231" unitRef="U001" decimals="-3">107000</us-gaap:CostMethodInvestments>
  <!--Cost Method Investments-Shengyi Semiconductor Technology Company Limited [Member]-->
  <us-gaap:CostMethodInvestments id="Fact_a935902a3f334b0abf18b312caca82c3" contextRef="c20190627_RelatedPartyTransactionsByRelatedPartyAxis_ShengyiSemiconductorTechnologyCompanyLimitedMember" unitRef="U001" decimals="-3">109000</us-gaap:CostMethodInvestments>
  <!--Cost Method Investments-->
  <us-gaap:CostMethodInvestments id="Fact_cf73c24826354c2e99c9285b4177b00e" contextRef="c20181231" unitRef="U001" decimals="-3">0</us-gaap:CostMethodInvestments>
  <!--Cost of revenue-->
  <us-gaap:CostOfRevenue id="Fact_5d786f5dcc9f49c09b7179761d10e5b4" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">40194000</us-gaap:CostOfRevenue>
  <!--Cost of revenue-->
  <us-gaap:CostOfRevenue id="Fact_710e7c0b3a6042daa528d7b61984bdde" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">56870000</us-gaap:CostOfRevenue>
  <!--Cost of revenue-Parent Company [Member]-->
  <us-gaap:CostOfRevenue id="Fact_517234a4d0ee41d78361e7e45006a493" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">10036000</us-gaap:CostOfRevenue>
  <!--Cost of revenue-Parent Company [Member]-->
  <us-gaap:CostOfRevenue id="Fact_95315b6e575d4ccc8735ee97818b23c1" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">23927000</us-gaap:CostOfRevenue>
  <!--Cost of Goods and Service [Policy Text Block]-->
  <us-gaap:CostOfSalesPolicyTextBlock id="Fact_1b813be5bb084647aeed8e7a8a6c0041" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Cost of Revenue&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Cost of revenue primarily consists of: direct materials, comprised principally of parts used in assembling equipment, together with crating and shipping costs; direct labor, including salaries and other labor related expenses attributable to the Company&amp;#8217;s manufacturing department; and allocated overhead cost, such as personnel cost, depreciation expense, and allocated administrative costs associated with supply chain management and quality assurance activities, as well as shipping insurance premiums.&lt;/div&gt;&lt;/div&gt;</us-gaap:CostOfSalesPolicyTextBlock>
  <!--Current Income Tax Expense (Benefit)-->
  <us-gaap:CurrentIncomeTaxExpenseBenefit id="Fact_4315eee2132945cf81e866dfce593b86" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">3176000</us-gaap:CurrentIncomeTaxExpenseBenefit>
  <!--Current Income Tax Expense (Benefit)-->
  <us-gaap:CurrentIncomeTaxExpenseBenefit id="Fact_8c2e65efada746989a1ccfafd1347e9f" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">1149000</us-gaap:CurrentIncomeTaxExpenseBenefit>
  <!--U.S. state-->
  <us-gaap:CurrentStateAndLocalTaxExpenseBenefit id="Fact_7d557e3b94ec46199a9eea7a045a6cff" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">0</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
  <!--U.S. state-->
  <us-gaap:CurrentStateAndLocalTaxExpenseBenefit id="Fact_a89ac1ae42e947d9ba110cfb2f18412f" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:CurrentStateAndLocalTaxExpenseBenefit>
  <!--Current Foreign Tax Expense (Benefit)-->
  <us-gaap:CurrentForeignTaxExpenseBenefit id="Fact_37403ad127584f70823d75acd8eaca0c" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">1149000</us-gaap:CurrentForeignTaxExpenseBenefit>
  <!--Current Foreign Tax Expense (Benefit)-->
  <us-gaap:CurrentForeignTaxExpenseBenefit id="Fact_acb39f29588d4cec89eac1818c9b7df0" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">3176000</us-gaap:CurrentForeignTaxExpenseBenefit>
  <!--U.S. federal-->
  <us-gaap:CurrentFederalTaxExpenseBenefit id="Fact_05b552371a0945ed88347760765aaa77" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:CurrentFederalTaxExpenseBenefit>
  <!--U.S. federal-->
  <us-gaap:CurrentFederalTaxExpenseBenefit id="Fact_cbf0bcdb69c7402ca4b58ff70e84790c" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">0</us-gaap:CurrentFederalTaxExpenseBenefit>
  <!--Loans payable period-Ninebell Co., Ltd [Member]-->
  <us-gaap:DebtInstrumentTerm id="Fact_3d0fd6b2e315457a9b9649fbb0893692" contextRef="c20190101to20191231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember">P180D</us-gaap:DebtInstrumentTerm>
  <!--Debt Instrument, Face Amount-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-Senior Notes [Member]-->
  <us-gaap:DebtInstrumentFaceAmount id="Fact_84055e3c0758450a8b550b251a0a9801" contextRef="c20180330_LongtermDebtTypeAxis_SeniorNotesMember_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember" unitRef="U001" decimals="-3">2981000</us-gaap:DebtInstrumentFaceAmount>
  <!--Debt Instrument, Interest Rate, Stated Percentage-Senior Notes [Member]-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <us-gaap:DebtInstrumentInterestRateStatedPercentage id="Fact_966471d17f9d41c7a088c222fd27c7f1" contextRef="c20180330_LongtermDebtTypeAxis_SeniorNotesMember_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember" unitRef="U004" decimals="INF">0.0301</us-gaap:DebtInstrumentInterestRateStatedPercentage>
  <!--Debt Instrument, Maturity Date-Line of Credit 1 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_1d8d1c92786c44a58ffb849f1e7d9959" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit1Member">2019-04-17</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Line of Credit 12 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_2aa03fabe9d24a7d8403f7681f9f93ce" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit12Member">2020-04-17</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Line of Credit 5 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_394766d308894bfea78f04b73396eadf" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit5Member">2019-06-13</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Line of Credit 3 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_54cca995e5b84a1ca7ba17bb11c5762d" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit3Member">2020-01-23</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Line of Credit 10 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_56c0be43d41d4088b6c6402b8eaa8c6d" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit10Member">2020-02-14</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Line of Credit 7 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_7c8125a94ca74524a72994def93ed073" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit7Member">2020-02-21</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Line of Credit 11 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_a279b0ba73ac43d2a2e6b7db36d76f85" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit11Member">2020-03-25</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Line of Credit 9 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_a950cf2d17e2452aa318ee33dc81c8a7" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit9Member">2020-01-22</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Line of Credit 2 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_d2a53e12d0a94e95a84d5106316e7f0c" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit2Member">2019-02-14</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Line of Credit 6 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_e04c49e6bfd14916b46a2e20deb78b92" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit6Member">2019-01-23</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Line of Credit 4 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_e05201d45f1945b08524b690ff84499e" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit4Member">2019-06-06</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Line of Credit 8 [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_fa5b9ff9ec0f481c958dcf4e7fb92ce4" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit8Member">2020-01-18</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt Instrument, Maturity Date-Senior Notes [Member]-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <us-gaap:DebtInstrumentMaturityDate id="Fact_c96cfb69bf9044bfb6cb725f84c30863" contextRef="c20190101to20191231_LongtermDebtTypeAxis_SeniorNotesMember_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember">2023-08-17</us-gaap:DebtInstrumentMaturityDate>
  <!--Debt, Policy [Policy Text Block]-->
  <us-gaap:DebtPolicyTextBlock id="Fact_506efbd4433144de9eea50417761026b" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Borrowing Costs&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Borrowing costs attributable directly to the acquisition, construction or production of qualifying assets that require a substantial period of time to be ready for their intended use or sale are capitalized as part of the cost of those assets. Income earned on temporary investments of specific borrowings pending their expenditure on those assets is deducted from borrowing costs capitalized. All other borrowing costs are recognized in interest expenses in the consolidated statements of operations and comprehensive income in the period in which they are incurred. No borrowing costs were capitalized for the year ended December 31, 2019 or 2018.&lt;/div&gt;&lt;/div&gt;</us-gaap:DebtPolicyTextBlock>
  <!--Deferred tax assets (note 15)-->
  <us-gaap:DeferredIncomeTaxAssetsNet id="Fact_3b4856cc950f4ed8a545d916bb91e4be" contextRef="c20191231" unitRef="U001" decimals="-3">5331000</us-gaap:DeferredIncomeTaxAssetsNet>
  <!--Deferred tax assets (note 15)-->
  <us-gaap:DeferredIncomeTaxAssetsNet id="Fact_5e7ebbd199ae485abd5541151e3d6ef2" contextRef="c20181231" unitRef="U001" decimals="-3">1637000</us-gaap:DeferredIncomeTaxAssetsNet>
  <!--Property and equipment (U.S.)-->
  <us-gaap:DeferredTaxAssetsPropertyPlantAndEquipment id="Fact_7fb8ee5ca83546a99971ba405a501b52" contextRef="c20181231" unitRef="U001" decimals="-3">1000</us-gaap:DeferredTaxAssetsPropertyPlantAndEquipment>
  <!--Property and equipment (U.S.)-->
  <us-gaap:DeferredTaxAssetsPropertyPlantAndEquipment id="Fact_e40ba72e3ee541729532b447a276cdb5" contextRef="c20191231" unitRef="U001" decimals="-3">3000</us-gaap:DeferredTaxAssetsPropertyPlantAndEquipment>
  <!--Deferred Federal, State and Local, Tax Expense (Benefit)-->
  <us-gaap:DeferredFederalStateAndLocalTaxExpenseBenefit id="Fact_708017dc90fe4dba811caa8c4739e202" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">-343000</us-gaap:DeferredFederalStateAndLocalTaxExpenseBenefit>
  <!--Deferred Federal, State and Local, Tax Expense (Benefit)-->
  <us-gaap:DeferredFederalStateAndLocalTaxExpenseBenefit id="Fact_b02372f592d34df4a831d4c1d732a602" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-3694000</us-gaap:DeferredFederalStateAndLocalTaxExpenseBenefit>
  <!--Deferred Federal Income Tax Expense (Benefit)-->
  <us-gaap:DeferredFederalIncomeTaxExpenseBenefit id="Fact_72eb14bbc962498aad1c2e7ac7c7df73" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-3728000</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
  <!--Deferred Federal Income Tax Expense (Benefit)-->
  <us-gaap:DeferredFederalIncomeTaxExpenseBenefit id="Fact_86a162bcdec14c96ac601fb927397625" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:DeferredFederalIncomeTaxExpenseBenefit>
  <!--Deferred income taxes-->
  <us-gaap:DeferredIncomeTaxExpenseBenefit id="Fact_406950ab491d4c24bf56f5553ff084da" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-3719000</us-gaap:DeferredIncomeTaxExpenseBenefit>
  <!--Deferred income taxes-->
  <us-gaap:DeferredIncomeTaxExpenseBenefit id="Fact_86a14b430ec34a7ea0cb4307d5cd1318" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">-405000</us-gaap:DeferredIncomeTaxExpenseBenefit>
  <!--Deferred Foreign Income Tax Expense (Benefit)-->
  <us-gaap:DeferredForeignIncomeTaxExpenseBenefit id="Fact_84a8faf3cf2a40bfa4805f5e52f1e863" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">-343000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
  <!--Deferred Foreign Income Tax Expense (Benefit)-->
  <us-gaap:DeferredForeignIncomeTaxExpenseBenefit id="Fact_a72749b270434a96b7745582d17c6fef" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">34000</us-gaap:DeferredForeignIncomeTaxExpenseBenefit>
  <!--Deferred Other Tax Expense (Benefit)-->
  <us-gaap:DeferredOtherTaxExpenseBenefit id="Fact_b8dc19955d6d4f5db8acf34a3bfce7bf" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-4033000</us-gaap:DeferredOtherTaxExpenseBenefit>
  <!--Deferred revenue (offshore)-->
  <us-gaap:DeferredTaxAssetsDeferredIncome id="Fact_1ad5f7176761438c954b9e38b4da2eea" contextRef="c20181231" unitRef="U001" decimals="-3">558000</us-gaap:DeferredTaxAssetsDeferredIncome>
  <!--Deferred revenue (offshore)-->
  <us-gaap:DeferredTaxAssetsDeferredIncome id="Fact_a38e9963d6aa4041932b79e9ad512d8a" contextRef="c20191231" unitRef="U001" decimals="-3">1181000</us-gaap:DeferredTaxAssetsDeferredIncome>
  <!--Deferred Tax Assets, Gross-->
  <us-gaap:DeferredTaxAssetsGross id="Fact_9d33712dcaa74daca5b7c1798f230273" contextRef="c20191231" unitRef="U001" decimals="-3">6227000</us-gaap:DeferredTaxAssetsGross>
  <!--Deferred Tax Assets, Gross-->
  <us-gaap:DeferredTaxAssetsGross id="Fact_cb2857f76a504ad7ae172b775509061a" contextRef="c20181231" unitRef="U001" decimals="-3">6792000</us-gaap:DeferredTaxAssetsGross>
  <!--Deferred Tax Assets, Net-->
  <us-gaap:DeferredTaxAssetsLiabilitiesNet id="Fact_9467360077854e78856f7357bd258d3d" contextRef="c20181231" unitRef="U001" decimals="-3">1637000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
  <!--Deferred Tax Assets, Net-->
  <us-gaap:DeferredTaxAssetsLiabilitiesNet id="Fact_d4996d3b974a4141af8d91e0225fabb8" contextRef="c20191231" unitRef="U001" decimals="-3">5331000</us-gaap:DeferredTaxAssetsLiabilitiesNet>
  <!--Deferred State and Local Income Tax Expense (Benefit)-->
  <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit id="Fact_31e53fce6a4049dea0becf3842b049e0" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">0</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
  <!--Deferred State and Local Income Tax Expense (Benefit)-->
  <us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit id="Fact_a6d4f49ef8dd4ee584bcc449702b7802" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:DeferredStateAndLocalIncomeTaxExpenseBenefit>
  <!--Net operating loss carry forwards (U.S.) and credit-->
  <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic id="Fact_61cb70ebf34f4fa583d94badae24c5ec" contextRef="c20181231" unitRef="U001" decimals="-3">4105000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic>
  <!--Net operating loss carry forwards (U.S.) and credit-->
  <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic id="Fact_72f72854f30449fa9bd00f02ab666d64" contextRef="c20191231" unitRef="U001" decimals="-3">3218000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsDomestic>
  <!--Deferred Tax Assets, Net of Valuation Allowance-->
  <us-gaap:DeferredTaxAssetsNet id="Fact_5ac9aa4e77644094afef669eacc38440" contextRef="c20191231" unitRef="U001" decimals="-3">5331000</us-gaap:DeferredTaxAssetsNet>
  <!--Deferred Tax Assets, Net of Valuation Allowance-->
  <us-gaap:DeferredTaxAssetsNet id="Fact_cd5f9c7641c847118187a4bd5dad78fe" contextRef="c20181231" unitRef="U001" decimals="-3">1637000</us-gaap:DeferredTaxAssetsNet>
  <!--Net operating loss carry forwards (offshore)-->
  <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign id="Fact_c377b703ffe9405e8595f3edb5610247" contextRef="c20181231" unitRef="U001" decimals="-3">16000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign>
  <!--Net operating loss carry forwards (offshore)-->
  <us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign id="Fact_ee569dc2547b453ebedd4b1bb08f9063" contextRef="c20191231" unitRef="U001" decimals="-3">216000</us-gaap:DeferredTaxAssetsOperatingLossCarryforwardsForeign>
  <!--Research credit carry-forwards-State and Local Jurisdiction [Member]-->
  <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch id="Fact_1ba4332d567d40fdbadf46481aede1dd" contextRef="c20191231_IncomeTaxAuthorityAxis_StateAndLocalJurisdictionMember" unitRef="U001" decimals="-3">377000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch>
  <!--Research credit carry-forwards-Domestic Tax Authority [Member]-->
  <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch id="Fact_1e6bd2f01184409f964a4c9722e39d27" contextRef="c20181231_IncomeTaxAuthorityAxis_DomesticCountryMember" unitRef="U001" decimals="-3">606000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch>
  <!--Research credit carry-forwards-Domestic Tax Authority [Member]-->
  <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch id="Fact_7263b8b75bd240969ada997cadabc601" contextRef="c20191231_IncomeTaxAuthorityAxis_DomesticCountryMember" unitRef="U001" decimals="-3">479000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch>
  <!--Research credit carry-forwards-State and Local Jurisdiction [Member]-->
  <us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch id="Fact_7a14b2423e974c389b8cff1b8be5a736" contextRef="c20181231_IncomeTaxAuthorityAxis_StateAndLocalJurisdictionMember" unitRef="U001" decimals="-3">377000</us-gaap:DeferredTaxAssetsTaxCreditCarryforwardsResearch>
  <!--Total deferred tax liabilities-->
  <us-gaap:DeferredTaxLiabilities id="Fact_1191153b2c9245d38df8e8341ce5d023" contextRef="c20191231" unitRef="U001" decimals="-3">0</us-gaap:DeferredTaxLiabilities>
  <!--Total deferred tax liabilities-->
  <us-gaap:DeferredTaxLiabilities id="Fact_efd8fcdd501740f2a321ffe5c3bd8ec5" contextRef="c20181231" unitRef="U001" decimals="-3">0</us-gaap:DeferredTaxLiabilities>
  <!--Accruals (U.S.)-->
  <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAllowanceForDoubtfulAccounts id="Fact_47c733a593d0476c83b2e45d988e90c5" contextRef="c20181231" unitRef="U001" decimals="-3">11000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAllowanceForDoubtfulAccounts>
  <!--Accruals (U.S.)-->
  <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAllowanceForDoubtfulAccounts id="Fact_4b8f56a7f97742a1bade14f2ac75cf63" contextRef="c20191231" unitRef="U001" decimals="-3">15000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsAllowanceForDoubtfulAccounts>
  <!--Stock-based compensation (U.S.)-->
  <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost id="Fact_4922e0fc8eac4fce87e7a675f52484a8" contextRef="c20191231" unitRef="U001" decimals="-3">1168000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
  <!--Stock-based compensation (U.S.)-->
  <us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost id="Fact_6c7683d3092a438c8ca2a2f9dfc070fa" contextRef="c20181231" unitRef="U001" decimals="-3">1021000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseCompensationAndBenefitsShareBasedCompensationCost>
  <!--Reserves and other (offshore)-->
  <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsReserves id="Fact_79d491d8c96f4e99b7cae1cc09f08d37" contextRef="c20191231" unitRef="U001" decimals="-3">426000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsReserves>
  <!--Reserves and other (offshore)-->
  <us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsReserves id="Fact_84781e8012c54519a795f3619e70c806" contextRef="c20181231" unitRef="U001" decimals="-3">1080000</us-gaap:DeferredTaxAssetsTaxDeferredExpenseReservesAndAccrualsReserves>
  <!--Deferred Tax Assets, Valuation Allowance-->
  <us-gaap:DeferredTaxAssetsValuationAllowance id="Fact_2cedc6f67a9f45df93ece999e63ac697" contextRef="c20181231" unitRef="U001" decimals="-3">5155000</us-gaap:DeferredTaxAssetsValuationAllowance>
  <!--Deferred Tax Assets, Valuation Allowance-->
  <us-gaap:DeferredTaxAssetsValuationAllowance id="Fact_62536e7b8d1e4328af6d6d7a08a91810" contextRef="c20191231" unitRef="U001" decimals="-3">896000</us-gaap:DeferredTaxAssetsValuationAllowance>
  <!--Depreciation and amortization-->
  <us-gaap:DepreciationAndAmortization id="Fact_46d2b2d331754aa79defb57464d4e74c" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">788000</us-gaap:DepreciationAndAmortization>
  <!--Depreciation and amortization-->
  <us-gaap:DepreciationAndAmortization id="Fact_d2b08cdcbaec4ade9932fb8f6c35182b" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">417000</us-gaap:DepreciationAndAmortization>
  <!--Depreciation expense-->
  <us-gaap:Depreciation id="Fact_117e40b2484d4b4fa45948ca11aa7941" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">713000</us-gaap:Depreciation>
  <!--Depreciation expense-->
  <us-gaap:Depreciation id="Fact_975d0bf17a4f45d8ac47cc72b71bbb71" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">350000</us-gaap:Depreciation>
  <!--Share-based Payment Arrangement [Text Block]-->
  <us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock id="Fact_dbc2974bd05d4c1bbeaa6cdf535ed080" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold; text-align: justify;"&gt;NOTE 14&amp;#160;&amp;#8211; STOCK-BASED COMPENSATION&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;On April 29, 1998, ACM adopted the 1998 Stock Option Plan (the &amp;#8220;1998 Plan&amp;#8221;). The options issued under the Plan consisted of incentive stock options (&amp;#8220;ISOs&amp;#8221;) and nonstatutory stock options (&amp;#8220;NSOs&amp;#8221;) that should be determined at the time of grant. ISOs could be granted only to employees. NSOs could be granted to employees, directors and consultants. The option price of each ISO and each NSO could not be less than 100% or less than 85% of the fair market value of stock price at the time of grant, respectively. The vesting period was to be determined by the Board of Directors for each grant. The total number of shares of common stock reserved under the 1998 Plan, as amended, was 766,667. If any option granted under the 1998 Plan expires or otherwise terminates without having been exercised in full, the shares of common stock subject to that option would become available for re-grant. At March&amp;#160;3, 2014, the 1998 Plan terminated and no further grants under the 1998 Plan could be made thereunder, although certain previously granted options remained outstanding in accordance with their terms.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;On December&amp;#160;28, 2016, ACM&amp;#160;adopted the 2016 Omnibus Incentive Plan (the &amp;#8220;2016 Plan&amp;#8221;). Under the 2016 Plan, the aggregate number of shares of Class A common stock that may be issued shall equal the sum of (a)&amp;#160;2,333,334 and (b)&amp;#160;an annual increase on the first day of each year beginning in 2018 and ending in 2026 equal to the lesser of (i)&amp;#160;4% of the shares of Class A and Class B common stock outstanding (on an as-converted basis) on the last day of the immediately preceding year and (ii)&amp;#160;such smaller number of shares as may be determined by the Board. A maximum of 2,333,334 shares is available for issuance as ISOs under the 2016 Plan. Besides the stock options, the 2016 Plan also authorizes issuance of stock appreciation rights, restricted stock, restricted stock units, and other share-based and cash awards. The 2016 Plan will terminate on December&amp;#160;27, 2026.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; font-weight: bold;"&gt;Employee Awards&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The following table summarizes the Company&amp;#8217;s employee share option activities during the years ended December 31, 2018 and December&amp;#160;31, 2019:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; text-align: center; width: 41%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; text-align: center; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Number of&lt;br /&gt; Option Share&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="text-align: center; vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; text-align: center; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Weighted&lt;br /&gt; Average Grant&lt;br /&gt; Date Fair Value&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="text-align: center; vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; text-align: center; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Weighted&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Average&lt;/div&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Exercise&lt;br /&gt; Price&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="text-align: center; vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="text-align: center; vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0); width: 12%;"&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Weighed Average&lt;/div&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Remaining&lt;/div&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Contractual Term&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December&amp;#160;31,&amp;#160;2017&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2,045,616&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;0.66&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2.46&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;7.57 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Granted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;745,700&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1.52&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;8.12&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Exercised&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(151,650&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;0.53&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2.06&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expired&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(4,622&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;0.55&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;3.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Forfeited&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(131,639&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;0.97&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;3.87&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December&amp;#160;31,&amp;#160;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,503,405&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;0.91&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;4.09&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: right; color: #000000;"&gt;7.30 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Granted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;656,000&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.29&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;16.21&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Exercised&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(106,768&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;0.60&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2.09&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expired&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(2,757&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;3.34&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;8.16&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Forfeited/cancelled&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(55,817&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2.38&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;6.23&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December 31,&amp;#160;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2,994,063&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2.59&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.77&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;7.05 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Vested&amp;#160;and&amp;#160;exercisable&amp;#160;at&amp;#160;December 31,&amp;#160;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,773,048&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&amp;#160;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The aggregate intrinsic value is calculated as the difference between the exercise price of the underlying awards and the estimated fair value of the underlying stock at each reporting date.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In addition to the above share option activities, as mentioned in Note 13, the purchase price paid by the Employee Entities for ACM Shanghai shares was at a discount of 20% from the purchase price paid by the other investors, and there was no vesting condition attached to the subscription. Accordingly, the Company determined the discount as stock based compensation expenses, which amounted to $949, of which $119, $111, $625 and $94 included in costs of revenues, sales and marketing expenses, research and development expenses and general and administrative expenses, respectively, during the year ended December 31, 2019. &lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;During the years ended December 31, 2019 and 2018, ACM recognized employee stock-based compensation expense of $2,265 and $712, respectively. As of December 31, 2019 and 2018, $4,712 and $2,424, respectively, of total unrecognized employee stock-based compensation expense, net of estimated forfeitures, related to stock-based awards were expected to be recognized over a weighted-average period of 1.47 years and 1.62 years, respectively. Total unrecognized compensation cost may be adjusted for future changes in estimated forfeitures.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The fair value of each option granted to employee is estimated on the grant date using the Black-Scholes valuation model with the following assumptions.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 80%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 56%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 56%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 56%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Fair&amp;#160;value&amp;#160;of&amp;#160;common&amp;#160;share(1)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;13.64-16.81&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;5.31-13.85&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 56%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expected&amp;#160;term&amp;#160;in&amp;#160;years(2)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;6.25&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;6.25&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 56%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Volatility(3)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;39.91%-40.35&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;39.14%-43.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 56%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Risk-free&amp;#160;interest&amp;#160;rate(4)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;1.69%-2.46&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2.55%-2.96&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 56%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expected&amp;#160;dividend(5)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;0&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;0&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;br /&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;(1)&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;&lt;font style="background-color: rgb(255, 255, 255);"&gt;Common stock value was the close market value on the grant date.&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;(2)&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Expected term of share options is based on the average of the vesting period and the contractual term for each grant according to Staff Accounting Bulletin 110.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;(3)&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Volatility is calculated based on the historical volatility of ACM&amp;#8217;s comparable companies in the period equal to the expected term of each grant.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;(4)&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Risk-free interest rate is based on the yields of U.S. Treasury securities with maturities similar to the expected term of the share options in effect at the time of grant.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;(5)&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Expected dividend is assumed to be 0% as ACM has no history or expectation of paying a dividend on its common stock.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; font-weight: bold; text-align: justify;"&gt;Non-employee Awards&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The following table summarizes the Company&amp;#8217;s non-employee share option activities during the year ended December 31, 2018 and 2019:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 90%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 42%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Number of&lt;br /&gt; Option Shares&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Weighted&lt;br /&gt; Average Grant&lt;br /&gt; Date Fair Value&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Weighted&lt;br /&gt; Average Exercise&lt;br /&gt; Price&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Weighted Average&lt;br /&gt; Remaining&lt;br /&gt; Contractual Term&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; background-color: rgb(204, 238, 255); width: 42%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December&amp;#160;31,&amp;#160;2017&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;1,326,676&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;0.78&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;2.52&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;7.54 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 42%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Granted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 42%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Exercised&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(114,302&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;0.43&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1.92&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 42%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expired&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 42%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Forfeited&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 42%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December&amp;#160;31,&amp;#160;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(255, 255, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;1,212,374&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(255, 255, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;0.78&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(255, 255, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;2.57&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: right; color: #000000;"&gt;6.66 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 42%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Granted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 42%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Exercised&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(88,529&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;0.45&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;1.06&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 42%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expired&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 42%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Forfeited/cancelled&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(22,232&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;0.55&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;3.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; background-color: rgb(204, 238, 255); width: 42%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December 31,&amp;#160;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;1,101,613&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;0.82&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;2.69&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; color: #000000;"&gt;5.85 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 42%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Vested&amp;#160;and&amp;#160;exercisable&amp;#160;at&amp;#160;December 31,&amp;#160;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;1,024,017&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The aggregate intrinsic value is calculated as the difference between the exercise price of the underlying awards and the estimated fair value of the underlying stock at each reporting date.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company adopted ASU 2018-07 on January 1, 2019, and the stock-based compensation expense for grants before the adoption of ASU 2018-07 is based on the grant date fair value as of December 31, 2018, which was the last business day before the Company adopted ASU 2018-07, for all nonemployee awards that have not vested as of December 31, 2018. The cumulative-effect adjustment to retained earnings as of January 1, 2019 was immaterial to the financial statements as a whole. Accordingly, the Company did not record this adjustment as of January 1, 2019. Furthermore, for future awards, compensation expense is based on the fair value of the shares at the grant date.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #000000;"&gt;During the years ended December 31, 2019 and 2018, the Company recognized non-employee stock-based compensation expense of $1,307 and $2,651, respectively. As of December 31, 2019 and 2018, $406 and $1,713, respectively, of total unrecognized non-employee stock-based compensation expense, net of estimated forfeitures, related to stock-based awards were expected to be recognized over a weighted-average period of 0.23 years and 1.31 years, respectively. Total recognized compensation cost may be adjusted for future changes in estimated forfeitures.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Stock options to acquire 22,232 shares of Class A common stock held by a director were canceled pursuant to the Equity Purchase Agreement (note 11) during the year ended December 31, 2019.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;As of December 31, 2019, ACM had outstanding stock options to acquire an aggregate of 4,095,676 shares of Class&amp;#160;A common stock with an intrinsic value of $52,300. Of those outstanding options, (a)&amp;#160;2,797,062 shares had vested as of December 31, 2019, representing an intrinsic value of $43,400 and (b)&amp;#160;1,298,614 shares were unvested, representing an intrinsic value of $8,900. As of December 31, 2018, ACM had outstanding stock options to acquire an aggregate of 3,715,779 shares of Class&amp;#160;A common stock with an intrinsic value of $27,100. Of those outstanding options, (a)&amp;#160;2,273,880 shares had vested as of December 31, 2018, representing an intrinsic value of $20,000, and (b)&amp;#160;1,441,899 shares were unvested, representing an intrinsic value of $7,100.&lt;/div&gt;&lt;/div&gt;</us-gaap:DisclosureOfCompensationRelatedCostsShareBasedPaymentsTextBlock>
  <!--Due from intercompany-Parent Company [Member]-->
  <us-gaap:DueFromAffiliateCurrent id="Fact_5d975919b7af4228ad010a49cb1ace03" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">4542000</us-gaap:DueFromAffiliateCurrent>
  <!--Due from intercompany-Parent Company [Member]-->
  <us-gaap:DueFromAffiliateCurrent id="Fact_6b170ce4f79248cd81a19ca26b428002" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">14494000</us-gaap:DueFromAffiliateCurrent>
  <!--Lease expenses and payable for leasehold improvement due to a related party (note 11)-->
  <us-gaap:DueToOtherRelatedPartiesClassifiedCurrent id="Fact_14f2556e78204b3699afb2fb004603be" contextRef="c20181231" unitRef="U001" decimals="-3">53000</us-gaap:DueToOtherRelatedPartiesClassifiedCurrent>
  <!--Lease expenses and payable for leasehold improvement due to a related party (note 11)-->
  <us-gaap:DueToOtherRelatedPartiesClassifiedCurrent id="Fact_f54c3350a7b44d43a5d26f4911dc1f9c" contextRef="c20191231" unitRef="U001" decimals="-3">0</us-gaap:DueToOtherRelatedPartiesClassifiedCurrent>
  <!--Earnings Per Share, Diluted-->
  <us-gaap:EarningsPerShareDiluted id="Fact_ebc268f69e4f4b8c8c9f5ec44238b83f" contextRef="c20190101to20191231" unitRef="U003" decimals="2">0.99</us-gaap:EarningsPerShareDiluted>
  <!--Earnings Per Share, Diluted-->
  <us-gaap:EarningsPerShareDiluted id="Fact_ec8bcf81d2c54f8db7391e9cad1ace86" contextRef="c20180101to20181231" unitRef="U003" decimals="2">0.37</us-gaap:EarningsPerShareDiluted>
  <!--Earnings Per Share, Basic-->
  <us-gaap:EarningsPerShareBasic id="Fact_6fd7a1e6b37b4455a815d5bb5e665168" contextRef="c20190101to20191231" unitRef="U003" decimals="2">1.12</us-gaap:EarningsPerShareBasic>
  <!--Earnings Per Share, Basic-->
  <us-gaap:EarningsPerShareBasic id="Fact_ef9e64d0b5384c81833d04d5df0551e9" contextRef="c20180101to20181231" unitRef="U003" decimals="2">0.42</us-gaap:EarningsPerShareBasic>
  <!--Earnings Per Share, Policy [Policy Text Block]-->
  <us-gaap:EarningsPerSharePolicyTextBlock id="Fact_e9cc159dde6f42798cfd1b317292da2d" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Basic and Diluted Net Income per Common Share&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000;"&gt;Basic and diluted net income per common share are calculated as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 60%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 36%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 36%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Numerator:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Net&amp;#160;income&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;19,458&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;6,574&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Net income attributable to redeemable non-controlling interest&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div&gt;564&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net income available to common stockholders, basic and diluted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;18,894&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;6,574&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Weighted&amp;#160;average&amp;#160;shares&amp;#160;outstanding,&amp;#160;basic&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;16,800,623&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;15,788,460&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Effect&amp;#160;of&amp;#160;dilutive&amp;#160;securities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;2,334,874&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;2,123,645&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Weighted&amp;#160;average&amp;#160;shares&amp;#160;outstanding,&amp;#160;diluted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;19,135,497&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;17,912,105&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net income per common share:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Basic&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;1.12&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;0.42&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Diluted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;0.99&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;0.37&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000;"&gt;Basic and diluted net income per common share are presented using the two-class method, which allocates undistributed earnings to common stock and any participating securities according to dividend rights and participation rights on a proportionate basis. Under the two-class method, basic net income (per common share is computed by dividing the sum of distributed and undistributed earnings attributable to common stockholders by the weighted average number of shares of common stock outstanding during the period. Shares of ACM&amp;#8217;s Series A, B, C, D, E and F convertible preferred stock are participating securities, as the holders are entitled to participate in and receive the same dividends as may be declared for common stockholders on a pro-rata, if-converted basis.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;ACM has been authorized to issue Class A and Class B common stock since redomesticating in Delaware in November 2016. The two classes of common stock are substantially identical in all material respects, except for voting rights. Since ACM did not declare any dividends during the years ended December 31, 2019 and 2018, the net income (loss) per common share attributable to each class is the same under the &amp;#8220;two-class&amp;#8221; method. As such, the two classes of common stock have been presented on a combined basis in the consolidated statements of operations and comprehensive income and in the above computation of net income per common share.&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Diluted net income per common share reflects the potential dilution from securities that could share in ACM&amp;#8217;s earnings. Certain potential dilutive securities were excluded from the net income per share calculation because the impact would be anti-dilutive. The potentially dilutive securities that were not included in the calculation of diluted net income per share in the periods presented where their inclusion would be anti-dilutive are as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: top; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: top; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: top; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Stock Options&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;4,095,676&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;3,715,779&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; width: 46%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Warrant&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;77,810&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;80,000&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; width: 46%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;4,173,486&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;3,795,779&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;</us-gaap:EarningsPerSharePolicyTextBlock>
  <!--Effect of exchange rate changes on cash, cash equivalents and restricted cash-->
  <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents id="Fact_f7a3e670b3ed465a94564533e83ab55c" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">-518000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
  <!--Effect of exchange rate changes on cash, cash equivalents and restricted cash-->
  <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents id="Fact_f8f54f15c8be4916b3715b80cdff33a8" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-582000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
  <!--Effect of exchange rate changes on cash, cash equivalents and restricted cash-Parent Company [Member]-->
  <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents id="Fact_15312cc3e03042ab90750604791fcb50" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">-980000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
  <!--Effect of exchange rate changes on cash, cash equivalents and restricted cash-Parent Company [Member]-->
  <us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents id="Fact_c9cfd4afb84e4d5091a3dd073fffe366" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">-818000</us-gaap:EffectOfExchangeRateOnCashCashEquivalentsRestrictedCashAndRestrictedCashEquivalents>
  <!--Effective Income Tax Rate Reconciliation, Foreign Income Tax Rate Differential, Percent-->
  <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential id="Fact_20a4c8cf09a9436b987708efce6ff5c0" contextRef="c20180101to20181231" unitRef="U004" decimals="INF">-0.2088</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
  <!--Effective Income Tax Rate Reconciliation, Foreign Income Tax Rate Differential, Percent-->
  <us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential id="Fact_c241aaf759cc4a988421f40d7a5b9c0a" contextRef="c20190101to20191231" unitRef="U004" decimals="INF">-0.1226</us-gaap:EffectiveIncomeTaxRateReconciliationForeignIncomeTaxRateDifferential>
  <!--Effective Income Tax Rate Reconciliation, Change in Deferred Tax Assets Valuation Allowance, Percent-->
  <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance id="Fact_0828328ccd0a4d7e94a235e75b5bef2b" contextRef="c20180101to20181231" unitRef="U004" decimals="INF">-0.0478</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
  <!--Effective Income Tax Rate Reconciliation, Change in Deferred Tax Assets Valuation Allowance, Percent-->
  <us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance id="Fact_d23202da26af49fc9b5e066f5eb6f017" contextRef="c20190101to20191231" unitRef="U004" decimals="INF">-0.2019</us-gaap:EffectiveIncomeTaxRateReconciliationChangeInDeferredTaxAssetsValuationAllowance>
  <!--Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent-->
  <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate id="Fact_76ac9e75e5574464813831651d0c2697" contextRef="c20180101to20181231" unitRef="U004" decimals="INF">0.2100</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
  <!--Effective Income Tax Rate Reconciliation, at Federal Statutory Income Tax Rate, Percent-->
  <us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate id="Fact_e45ec9a7047d4297b303c902b39cbff6" contextRef="c20190101to20191231" unitRef="U004" decimals="INF">0.2100</us-gaap:EffectiveIncomeTaxRateReconciliationAtFederalStatutoryIncomeTaxRate>
  <!--Other permanent difference-->
  <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments id="Fact_3e5cdf38f41c45c8bf32609e2536f662" contextRef="c20180101to20181231" unitRef="U004" decimals="INF">0.1559</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
  <!--Other permanent difference-->
  <us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments id="Fact_f32730ce4b0b41bba37c24c2227b86a6" contextRef="c20190101to20191231" unitRef="U004" decimals="INF">0.0871</us-gaap:EffectiveIncomeTaxRateReconciliationOtherAdjustments>
  <!--Effective Income Tax Rate Reconciliation, Percent-->
  <us-gaap:EffectiveIncomeTaxRateContinuingOperations id="Fact_42cfe8b5afae4f998055d97322c0bb06" contextRef="c20190101to20191231" unitRef="U004" decimals="INF">-0.0274</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
  <!--Effective Income Tax Rate Reconciliation, Percent-->
  <us-gaap:EffectiveIncomeTaxRateContinuingOperations id="Fact_cecfddfbcfea4ab29e48a5bb2527004a" contextRef="c20180101to20181231" unitRef="U004" decimals="INF">0.1093</us-gaap:EffectiveIncomeTaxRateContinuingOperations>
  <!--Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized id="Fact_1d052d9c0ae5470b89f69b0df9e222d0" contextRef="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U001" decimals="-3">406000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
  <!--Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized id="Fact_390612bfa4234c3fb5e85c6cf90a6d68" contextRef="c20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U001" decimals="-3">2424000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
  <!--Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized id="Fact_62e7d3d0ac8a4352abc4d46322bc34b3" contextRef="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U001" decimals="-3">1713000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
  <!--Share-based Payment Arrangement, Nonvested Award, Cost Not yet Recognized, Amount-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized id="Fact_97d5d06404ce48c197e0e89b583e6163" contextRef="c20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U001" decimals="-3">4712000</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognized>
  <!--Weighted-average period over which unrecognized compensation is expected to be recognized-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1 id="Fact_0e3aed6b700b48afb60b8d555446fed8" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember">P1Y5M19D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
  <!--Weighted-average period over which unrecognized compensation is expected to be recognized-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1 id="Fact_1ceb80d957d24953a7f0334b0389d605" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">P0Y2M23D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
  <!--Weighted-average period over which unrecognized compensation is expected to be recognized-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1 id="Fact_826e73180f2a46f4b2308615f1a29e14" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember">P1Y7M13D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
  <!--Weighted-average period over which unrecognized compensation is expected to be recognized-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1 id="Fact_e120fa46cf4c4c8290f30732c9930f8e" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">P1Y3M22D</us-gaap:EmployeeServiceShareBasedCompensationNonvestedAwardsTotalCompensationCostNotYetRecognizedPeriodForRecognition1>
  <!--Accrued payroll-->
  <us-gaap:EmployeeRelatedLiabilitiesCurrent id="Fact_5186f7d234e641b4a51316109a8d6f7b" contextRef="c20181231" unitRef="U001" decimals="-3">626000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
  <!--Accrued payroll-->
  <us-gaap:EmployeeRelatedLiabilitiesCurrent id="Fact_d49b11ca802a4eeea6aabe6d575e8503" contextRef="c20191231" unitRef="U001" decimals="-3">2092000</us-gaap:EmployeeRelatedLiabilitiesCurrent>
  <!--Purchase price-Ninebell Company Limited [Member]-Common Class A [Member]-->
  <us-gaap:EquityMethodInvestmentAggregateCost id="Fact_1ff344a568824ca78535011137e12209" contextRef="c20170911_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCompanyLimitedMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">1000000</us-gaap:EquityMethodInvestmentAggregateCost>
  <!--Purchase price-Ninebell Company Limited [Member]-->
  <us-gaap:EquityMethodInvestmentAggregateCost id="Fact_22e52612559c4832a923a65efa8bb8f7" contextRef="c20170911_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCompanyLimitedMember" unitRef="U001" decimals="-3">1200000</us-gaap:EquityMethodInvestmentAggregateCost>
  <!--Percentage of ordinary shares issued-Shengyi Semiconductor Technology Company Limited [Member]-->
  <us-gaap:EquityMethodInvestmentOwnershipPercentage id="Fact_8c562bf508d64dcfa8bcbba5af0d615e" contextRef="c20190627_RelatedPartyTransactionsByRelatedPartyAxis_ShengyiSemiconductorTechnologyCompanyLimitedMember" unitRef="U004" decimals="2">0.15</us-gaap:EquityMethodInvestmentOwnershipPercentage>
  <!--Percentage of ordinary shares issued-Ninebell Company Limited [Member]-->
  <us-gaap:EquityMethodInvestmentOwnershipPercentage id="Fact_cef0739643564460bcfcc55c93619e27" contextRef="c20170911_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCompanyLimitedMember" unitRef="U004" decimals="1">0.2</us-gaap:EquityMethodInvestmentOwnershipPercentage>
  <!--Equity Method Investments-->
  <us-gaap:EquityMethodInvestments id="Fact_b8a43a4bfebe483abdbb8cf72bd6f816" contextRef="c20191231" unitRef="U001" decimals="-3">5827000</us-gaap:EquityMethodInvestments>
  <!--Equity Method Investments-->
  <us-gaap:EquityMethodInvestments id="Fact_bdafa3693de94243b7443f684d14b7bf" contextRef="c20181231" unitRef="U001" decimals="-3">1360000</us-gaap:EquityMethodInvestments>
  <!--Fair Value of Financial Instruments, Policy [Policy Text Block]-->
  <us-gaap:FairValueOfFinancialInstrumentsPolicy id="Fact_166a6f5250de43debda0d609f7c4311c" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Fair Value of Financial Instruments&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Under the FASB&amp;#8217;s authoritative guidance on fair value measurements, fair value is the price that would be received to sell an asset or paid to transfer a liability in an orderly transaction between market participants at the measurement date. In determining the fair value, the Company uses various methods including market, income and cost approaches. Based on these approaches, the Company often utilizes certain assumptions that market participants would use in pricing the asset or liability, including assumptions about risk and the risks inherent in the inputs to the valuation technique. These inputs can be readily observable, market corroborated or generally unobservable inputs. The Company uses valuation techniques that maximize the use of observable inputs and minimize the use of unobservable inputs. Based on observability of the inputs used in the valuation techniques, the Company is required to provide the following information according to the fair value hierarchy. The fair value hierarchy ranks the quality and reliability of the information used to determine fair values. Financial assets and liabilities carried at fair value are classified and disclosed in one of the following three categories:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="margin-left: 18pt; text-align: justify;"&gt;Level 1: Valuations for assets and liabilities traded in active exchange markets. Valuations are obtained from readily available pricing sources for market transactions involving identical assets or liabilities.&lt;/div&gt;&lt;div style="margin-left: 18pt; text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="margin-left: 18pt; text-align: justify;"&gt;Level 2: Valuations for assets and liabilities traded in less active dealer or broker markets. Valuations are obtained from third party pricing services for identical or similar assets or liabilities.&lt;/div&gt;&lt;div style="margin-left: 18pt; text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="margin-left: 18pt; text-align: justify;"&gt;Level 3: Valuations for assets and liabilities that are derived from other valuation methodologies, including option pricing models, discounted cash flow models and similar techniques, and not based on market exchange, dealer or broker traded transactions. Level 3 valuations incorporate certain unobservable assumptions and projections in determining the fair value assigned to such assets.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;All transfers between fair value hierarchy levels are recognized by the Company at the end of each reporting period. In certain cases, the inputs used to measure fair value may fall into different levels of the fair value hierarchy. In such cases, an investment&amp;#8217;s level within the fair value hierarchy is based on the lowest level of input that is significant to the fair value measurement in its entirety requires judgment, and considers factors specific to the investment. The inputs or methodology used for valuing financial instruments are not necessarily an indication of the risks associated with investment in those instruments.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; font-weight: bold; text-align: justify;"&gt;Fair Value Measured or Disclosed on a Recurring Basis&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;&lt;font style="font-style: italic;"&gt;Warrant liability&lt;/font&gt;&amp;#8212;The fair value of the warrant liability derives from the Black-Scholes valuation model which incorporates certain unobservable assumptions (note 8). The Company classifies the valuation techniques that use these inputs as Level 3 fair value measurement.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;font style="font-style: italic;"&gt;Other financial items for disclosure purpose&lt;/font&gt;&amp;#8212;The fair value of other financial items of the Company for disclosure purpose, including cash and cash equivalents, accounts receivable, other receivables, short-term borrowings, accounts payable, advances from customers, and other payables and accrued expenses, approximate their carrying value due to their short-term nature.&lt;/div&gt;&lt;/div&gt;</us-gaap:FairValueOfFinancialInstrumentsPolicy>
  <!--Intangible assets amortization period-Software [Member]-->
  <us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1 id="Fact_2b2a7128aa5b4d73ac08cc78e8326f2a" contextRef="c20190101to20191231_FiniteLivedIntangibleAssetsByMajorClassAxis_ComputerSoftwareIntangibleAssetMember">P2Y</us-gaap:FiniteLivedIntangibleAssetsRemainingAmortizationPeriod1>
  <!--Finite-Lived Intangible Assets, Net-->
  <us-gaap:FiniteLivedIntangibleAssetsNet id="Fact_9e89d12d7ce446019a54f4cbbbc29557" contextRef="c20181231" unitRef="U001" decimals="-3">274000</us-gaap:FiniteLivedIntangibleAssetsNet>
  <!--Finite-Lived Intangible Assets, Net-->
  <us-gaap:FiniteLivedIntangibleAssetsNet id="Fact_b2104de3c8a74f4eac5c807a9c03bded" contextRef="c20191231" unitRef="U001" decimals="-3">344000</us-gaap:FiniteLivedIntangibleAssetsNet>
  <!--Foreign Currency Exchange Rate, Translation-Korea (South), Won-->
  <us-gaap:ForeignCurrencyExchangeRateTranslation1 id="Fact_613f6aa200004fa5b695b8fbe9fed636" contextRef="c20181231_CurrencyAxis_KRW" unitRef="U004" decimals="2">1114.83</us-gaap:ForeignCurrencyExchangeRateTranslation1>
  <!--Foreign Currency Exchange Rate, Translation-China, Yuan Renminbi-->
  <us-gaap:ForeignCurrencyExchangeRateTranslation1 id="Fact_6999436ef8ec4650a11bf2b03cec9ece" contextRef="c20191231_CurrencyAxis_CNY" unitRef="U004" decimals="4">6.9784</us-gaap:ForeignCurrencyExchangeRateTranslation1>
  <!--Foreign Currency Exchange Rate, Translation-China, Yuan Renminbi-->
  <us-gaap:ForeignCurrencyExchangeRateTranslation1 id="Fact_b62649ab1d364a82930457f4738112da" contextRef="c20181231_CurrencyAxis_CNY" unitRef="U004" decimals="4">6.8634</us-gaap:ForeignCurrencyExchangeRateTranslation1>
  <!--Foreign Currency Exchange Rate, Translation-Korea (South), Won-->
  <us-gaap:ForeignCurrencyExchangeRateTranslation1 id="Fact_c5f34dc96c6249e6a4b12577ca98abf1" contextRef="c20191231_CurrencyAxis_KRW" unitRef="U004" decimals="2">1156.07</us-gaap:ForeignCurrencyExchangeRateTranslation1>
  <!--Gain (Loss) on Disposition of Property Plant Equipment-->
  <us-gaap:GainLossOnSaleOfPropertyPlantEquipment id="Fact_81bbed0a75bc4853b6640ce36087d114" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:GainLossOnSaleOfPropertyPlantEquipment>
  <!--Gain (Loss) on Disposition of Property Plant Equipment-->
  <us-gaap:GainLossOnSaleOfPropertyPlantEquipment id="Fact_994cc2cdf06b466ba4b802689264dc22" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-294000</us-gaap:GainLossOnSaleOfPropertyPlantEquipment>
  <!--General and administrative-->
  <us-gaap:GeneralAndAdministrativeExpense id="Fact_63ef84ee1f4b4bc4ac5c74e0041eaa83" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">8061000</us-gaap:GeneralAndAdministrativeExpense>
  <!--General and administrative-->
  <us-gaap:GeneralAndAdministrativeExpense id="Fact_6646983c565e47aba495baca01f40f4e" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">7987000</us-gaap:GeneralAndAdministrativeExpense>
  <!--General and administrative-Parent Company [Member]-->
  <us-gaap:GeneralAndAdministrativeExpense id="Fact_182f9b326164401998a1f30956e9fab1" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">5083000</us-gaap:GeneralAndAdministrativeExpense>
  <!--General and administrative-Parent Company [Member]-->
  <us-gaap:GeneralAndAdministrativeExpense id="Fact_1ff72973641e40f7a1e03b399cb92d73" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">3639000</us-gaap:GeneralAndAdministrativeExpense>
  <!--Gross Profit-->
  <us-gaap:GrossProfit id="Fact_d1044a0b24c24f5cbf080dd37c520bd8" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">50654000</us-gaap:GrossProfit>
  <!--Gross Profit-->
  <us-gaap:GrossProfit id="Fact_fe899cf75b4d46b6b54b68f6bbc535e7" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">34449000</us-gaap:GrossProfit>
  <!--Gross Profit-Parent Company [Member]-->
  <us-gaap:GrossProfit id="Fact_ab239ec1dad243099c3b655ab86e2717" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">647000</us-gaap:GrossProfit>
  <!--Gross Profit-Parent Company [Member]-->
  <us-gaap:GrossProfit id="Fact_d2899e29985a48869a17625a3813af72" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">1579000</us-gaap:GrossProfit>
  <!--Valuation of Long-Lived Assets-->
  <us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock id="Fact_982341f4d0754836b690e268a82682f2" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Valuation of Long-Lived Assets&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Long-lived assets are evaluated for impairment whenever events or changes in circumstance indicate that the carrying value of the assets may not be fully recoverable or that the useful life of the assets is shorter than the Company had originally estimated. When these events or changes occur, the Company evaluates the impairment of the long-lived assets by comparing the carrying value of the assets to an estimate of future undiscounted cash flows expected to be generated from the use of the assets and their eventual disposition. If the sum of the expected future undiscounted cash flow is less than the carrying value of the assets, the Company recognizes an impairment loss based on the excess of the carrying value over the fair value. No impairment charge was recognized for either of the periods presented.&lt;/div&gt;&lt;/div&gt;</us-gaap:ImpairmentOrDisposalOfLongLivedAssetsPolicyTextBlock>
  <!--Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest-->
  <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest id="Fact_3bd50ea7f16f48f59bb5fa7018df17e3" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">7380000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
  <!--Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest-->
  <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest id="Fact_c0980de50d964d6eb348cdb3ec3222da" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">18940000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
  <!--Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest-Parent Company [Member]-->
  <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest id="Fact_41eccae208cb4ed9853bfd4cc284c3e9" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">6574000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
  <!--Income (Loss) from Continuing Operations before Income Taxes, Noncontrolling Interest-Parent Company [Member]-->
  <us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest id="Fact_7be938f8583043bdaea3891b31c0f27f" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">18894000</us-gaap:IncomeLossFromContinuingOperationsBeforeIncomeTaxesExtraordinaryItemsNoncontrollingInterest>
  <!--Equity income in net income of affiliates-->
  <us-gaap:IncomeLossFromEquityMethodInvestments id="Fact_a874c42a43e647f6b1e52c85531b6995" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">123000</us-gaap:IncomeLossFromEquityMethodInvestments>
  <!--Equity income in net income of affiliates-->
  <us-gaap:IncomeLossFromEquityMethodInvestments id="Fact_b8c893fc1e99450dbed08ae209798ebf" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">168000</us-gaap:IncomeLossFromEquityMethodInvestments>
  <!--Equity income in net income of affiliates-Parent Company [Member]-->
  <us-gaap:IncomeLossFromEquityMethodInvestments id="Fact_09540250f9a0494699a5615c3f0c732a" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">22510000</us-gaap:IncomeLossFromEquityMethodInvestments>
  <!--Equity income in net income of affiliates-Parent Company [Member]-->
  <us-gaap:IncomeLossFromEquityMethodInvestments id="Fact_cde3d62373164f5f85a583f76fadcb27" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">10360000</us-gaap:IncomeLossFromEquityMethodInvestments>
  <!--Income Tax Disclosure [Text Block]-->
  <us-gaap:IncomeTaxDisclosureTextBlock id="Fact_4e00332f711d49cdb3e90958112975b4" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold;"&gt;NOTE 15&amp;#160;&amp;#8211; INCOME TAXES&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The following represent components of the income tax benefit (expense) for the years ended December 31, 2019 and 2018:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Current:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;U.S.&amp;#160;federal&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); text-align: right;"&gt;&amp;#160;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: #CCEEFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; background-color: #FFFFFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;U.S.&amp;#160;state&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td nowrap="nowrap" valign="bottom" style="vertical-align: middle; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td nowrap="nowrap" valign="bottom" style="vertical-align: middle; background-color: rgb(255, 255, 255); text-align: right;"&gt;&amp;#160;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: #FFFFFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;Foreign&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;(3,176&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;(1,149&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;Total current tax expense&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div&gt;(3,176&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div&gt;(1,149&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: #CCEEFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Deferred:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: #FFFFFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;U.S.&amp;#160;federal&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;3,728&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: #CCEEFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;U.S.&amp;#160;state&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;Foreign&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;(34&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;343&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt;"&gt;Total deferred tax benefit&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;3,694&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;343&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;&lt;div style="color: #000000;"&gt;Total income tax benefit (expense)&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;518&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;(806&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Tax effects of temporary differences that give rise to significant portions of the Company&amp;#8217;s deferred tax assets at December 31, 2019 and 2018 are presented below:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle;"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Deferred tax assets:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Net operating loss carry forwards (offshore)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;216&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;16&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Net operating loss carry forwards (U.S.) and credit&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;3,218&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;4,105&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Deferred revenue (offshore)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;1,181&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;558&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Accruals (U.S.)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;15&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;11&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Reserves and other (offshore)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;426&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;1,080&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Stock-based compensation (U.S.)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;1,168&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;1,021&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Property and equipment (U.S.)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;3&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;1&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Total gross deferred tax assets&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;6,227&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;6,792&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;&lt;div style="color: #000000;"&gt;Less: valuation allowance&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;(896&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;(5,155&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Total deferred tax assets&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;5,331&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;1,637&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;Total deferred tax liabilities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Translation difference&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;Deferred tax assets, net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;5,331&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;1,637&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;The Company considers all available evidence to determine whether it is more likely than not that some portion or all of the deferred tax assets will be realized. The ultimate realization of deferred tax assets is dependent upon the generation of future taxable income during the periods in which those temporary differences become realizable. Management considers the scheduled reversal of deferred tax liabilities (including the impact of available carryback and carry-forward periods), and projected taxable income in assessing the realizability of deferred tax assets. In making such judgments, significant weight is given to evidence that can be objectively verified. Based on all available evidence, a partial valuation allowance has been established against some net deferred tax assets as of December 31, 2019 and 2018, based on estimates of recoverability. While the Company has optimistic plans for its business strategy, it determined that such a valuation allowance was necessary given its historical losses and the uncertainty with respect to its ability to generate sufficient profits from its business model from all tax jurisdictions. In order to fully realize the U.S. deferred tax assets, the Company must generate sufficient taxable income in future periods before the expiration of the deferred tax assets governed by the tax code. The valuation allowance for the United States decreased by $4,465 for the year ended December 31, 2019 and decreased by $278 for the year ended December 31, 2018. The reduction of the U.S. valuation allowance resulted in a one-time tax benefit of $4,033 for the year ended December&amp;#160;31, 2019. The valuation allowance in China increased by $207 and increased by $2 during the years ended December&amp;#160;31, 2019 and 2018, respectively.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company did not have any significant temporary differences relating to deferred tax liabilities as of December 31, 2019 or 2018.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As of December 31, 2019 and 2018, the Company had net operating loss carry-forwards of $12,158 and $15,867 for U.S federal purposes, $634 and $714 for U.S. state purposes and $66 for Chinese income tax purposes&lt;font style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none;"&gt;, respectively.&lt;/font&gt;&lt;font style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none;"&gt;&lt;/font&gt;Such losses are set to start expiring in 2023, 2032, and 2019 for U.S. federal, U.S. state and Chinese income tax purposes, respectively.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As of December 31, 2019 and 2018, the Company had research credit carry-forwards of respectively, $479 and $606 for U.S. federal purposes, and $377 and $377 for U.S. state purposes. Such credits are set to expire in 2025 for U.S. federal carry-forwards. There is no expiration date for U.S. state carry-forwards.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;A limitation applies to the use of the U.S. net operating loss and credit carry-forwards, under provisions of the U.S. Internal Revenue Code that would be applicable if ACM experiences an &amp;#8220;ownership change,&amp;#8221; as defined in IRC Section 382. ACM conducted an analysis of its stock ownership under Internal Revenue Code Section 382 and $12 of the net operating loss carryforwards are subject to annual limitation as a result of the ownership change in 2017.&amp;#160;The net operating loss carryforwards are not expected to expire before utilization.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company&amp;#8217;s effective tax rate differs from statutory rates of 21% for U.S. federal income tax purposes and 15%-25% for Chinese income tax purpose due to the effects of the valuation allowance and certain permanent differences as it pertains to book-tax differences in the value of client shares received for services. Pursuant to the Corporate Income Tax Law of the PRC, all of the Company&amp;#8217;s PRC subsidiaries are liable to PRC Corporate Income Taxes at a rate of 25% except for&amp;#160;ACM Shanghai. According to Guoshuihan 2009 No.&amp;#160;203, if an entity is certified as an &amp;#8220;advanced and new technology enterprise,&amp;#8221; it is entitled to a preferential income tax rate of 15%. ACM Shanghai obtained the certificate of &amp;#8220;advanced and new technology enterprise&amp;#8221; in 2012, in 2016 and again in 2018 with an effective period of three years, and the provision for PRC corporate income tax for ACM Shanghai is calculated by applying the income tax rate of 15% for the years ended December&amp;#160;31, 2019 and 2018.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div&gt;Income tax expense for the years ended December&amp;#160;31, 2019 and 2018 differed from the amounts computed by applying the statutory federal income tax rate of 21% to pretax income (loss) as a result of the following:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; padding-left: 9pt; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; padding-left: 9pt; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; padding-left: 9pt;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle;"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Effective tax rate reconciliation:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 18pt;"&gt;Income tax provision at statutory rate&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;21.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;21.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 18pt;"&gt;Foreign rate differential&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(12.26&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(20.88&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Other permanent difference&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;8.71&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;15.59&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Change in valuation allowance&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;(20.19&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;(4.78&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;Total income tax expense (benefit)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(2.74&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;%)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;10.93&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Tax positions are evaluated in a two-step process. The Company first determines whether it is more likely than not that a tax position will be sustained upon examination. If a tax position meets the more-likely-than-not recognition threshold it is then measured to determine the amount of benefit to recognize in the financial statements. The tax position is measured as the largest amount of benefit that is greater than&amp;#160;50%&amp;#160;likely of being realized upon ultimate settlement.&amp;#160;The aggregate changes in the balance of gross unrecognized tax benefits, which excludes interest and penalties, for&amp;#160;the years ended December&amp;#160;31, 2019 and 2018, are as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; padding-left: 9pt; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; padding-left: 9pt; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Beginning balance&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;44&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;44&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Increase/ (decrease) of unecognized tax benefits taken in prior years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;-&lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Increase/ (decrease) of unecognized tax benefits related to current year&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Increase/ (decrease) of unrecognized tax benefits related to settlements&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Reductions to unrecognized tax benefits related to lapsing statute of limitations&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Ending balance&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;44&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;44&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;The Company is subject to taxation in the United States, California and foreign jurisdictions. The federal, state and foreign income tax returns are under the statute of limitations subject to tax examinations for the tax years ended December&amp;#160;31, 2009 through December 31, 2019. To the extent the Company has tax attribute carry-forwards, the tax years in which the attribute was generated may still be adjusted upon examination by the U.S. Internal Revenue Service, state or foreign tax authorities to the extent utilized in a future period.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;The Company had $44 of unrecognized tax benefits as of December 31, 2019 and 2018.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;The Company recognizes interest and penalties related to uncertain tax positions in income tax expense. As of December 31, 2019 and 2018, the Company had $44 of accrued penalties and $44 of accrued penalties related to uncertain tax positions, none of which has been recognized in the Company&amp;#8217;s consolidated statements of operations and comprehensive income for the years ended December&amp;#160;31, 2019 and 2018. There were no ongoing examinations by taxing authorities as of December 31, 2019 and 2018.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;The Company intends to indefinitely reinvest the PRC earnings outside of the U.S. as of December 31, 2019 and 2018. Thus, deferred taxes are not provided in the U.S. for unremitted earnings in the PRC.&lt;/div&gt;&lt;/div&gt;</us-gaap:IncomeTaxDisclosureTextBlock>
  <!--Income Tax Expense (Benefit)-->
  <us-gaap:IncomeTaxExpenseBenefit id="Fact_4ad0991ea7e04b0088fcf87b11ef781a" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">806000</us-gaap:IncomeTaxExpenseBenefit>
  <!--Income Tax Expense (Benefit)-->
  <us-gaap:IncomeTaxExpenseBenefit id="Fact_8e0e4a86c6584c41b573c02a29d41013" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-518000</us-gaap:IncomeTaxExpenseBenefit>
  <!--Income Tax Expense (Benefit)-Parent Company [Member]-->
  <us-gaap:IncomeTaxExpenseBenefit id="Fact_1477d11910ee4520b4b3603f04523abf" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">0</us-gaap:IncomeTaxExpenseBenefit>
  <!--Income Tax Expense (Benefit)-Parent Company [Member]-->
  <us-gaap:IncomeTaxExpenseBenefit id="Fact_748b071e9acc4920873dbd6152f9083e" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">0</us-gaap:IncomeTaxExpenseBenefit>
  <!--Income Tax, Policy [Policy Text Block]-->
  <us-gaap:IncomeTaxPolicyTextBlock id="Fact_b5eb2b3f97ab483b9a623146bbfe07bc" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Income Taxes&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company accounts for income taxes using the liability method whereby deferred tax asset and liability account balances are determined based on differences between the financial reporting and tax bases of assets and liabilities and are measured using the enacted tax rates and laws that will be in effect when the differences are expected to reverse. The Company provides a valuation allowance, if necessary, to reduce deferred tax assets to their estimated realizable values.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In evaluating the ability to recover its deferred income tax assets, the Company considers all available positive and negative evidence, including its operating results, ongoing tax planning and forecasts of future taxable income on a jurisdiction-by-jurisdiction basis. In the event the Company determines that it would be able to realize its deferred income tax assets in the future in excess of their net recorded amount, it would make an adjustment to the valuation allowance that would reduce the provision for income taxes. Conversely, in the event that all or part of the net deferred tax assets are determined not to be realizable in the future, an adjustment to the valuation allowance would be charged to earnings in the period such determination is made.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Tax benefits related to uncertain tax positions are recognized when it is more likely than not that a tax position will be sustained during an audit. Interest and penalties related to unrecognized tax benefits are included within the provision for income tax.&lt;/div&gt;&lt;/div&gt;</us-gaap:IncomeTaxPolicyTextBlock>
  <!--Cash paid for income taxes-->
  <us-gaap:IncomeTaxesPaidNet id="Fact_3e1ed6dc9aae48dfb8f6e51ade70e47d" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:IncomeTaxesPaidNet>
  <!--Cash paid for income taxes-->
  <us-gaap:IncomeTaxesPaidNet id="Fact_7e3544774ab14988a6984e027c537f7b" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">1156000</us-gaap:IncomeTaxesPaidNet>
  <!--Increase (Decrease) in Other Noncurrent Liabilities-->
  <us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities id="Fact_8e63b3908da94570b112e9053f32de0a" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">-1340000</us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities>
  <!--Increase (Decrease) in Other Noncurrent Liabilities-->
  <us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities id="Fact_f3bf9b82a47f4d5ea5410881c64d3976" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-324000</us-gaap:IncreaseDecreaseInOtherNoncurrentLiabilities>
  <!--Advances from customers-->
  <us-gaap:IncreaseDecreaseInContractWithCustomerLiability id="Fact_13475d80b30e4e4dbde1644b566477f1" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">8316000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
  <!--Advances from customers-->
  <us-gaap:IncreaseDecreaseInContractWithCustomerLiability id="Fact_67555afa3c244306844db3b51086939b" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">705000</us-gaap:IncreaseDecreaseInContractWithCustomerLiability>
  <!--Increase (Decrease) in Other Noncurrent Assets-->
  <us-gaap:IncreaseDecreaseInOtherNoncurrentAssets id="Fact_22aa6d2ec9fa4fb5931278a6ba240b67" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">-44000</us-gaap:IncreaseDecreaseInOtherNoncurrentAssets>
  <!--Increase (Decrease) in Other Noncurrent Assets-->
  <us-gaap:IncreaseDecreaseInOtherNoncurrentAssets id="Fact_d2f74a2352894bc1b11840c0b1a0d4db" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">151000</us-gaap:IncreaseDecreaseInOtherNoncurrentAssets>
  <!--Increase (Decrease) in Accounts Payable-->
  <us-gaap:IncreaseDecreaseInAccountsPayable id="Fact_998c0adc77b7429f9d4d769a68f81678" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-3058000</us-gaap:IncreaseDecreaseInAccountsPayable>
  <!--Increase (Decrease) in Accounts Payable-->
  <us-gaap:IncreaseDecreaseInAccountsPayable id="Fact_b303bffd6b154be6944ec00ecbd10c07" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">9825000</us-gaap:IncreaseDecreaseInAccountsPayable>
  <!--Income tax payable-->
  <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable id="Fact_63dc8f10062f4a4ea5c9cc6e87556c70" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">1952000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
  <!--Income tax payable-->
  <us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable id="Fact_fcd02794aaae4cf089e492acc419025d" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">1149000</us-gaap:IncreaseDecreaseInAccruedIncomeTaxesPayable>
  <!--Increase (Decrease) in Accounts Receivable-->
  <us-gaap:IncreaseDecreaseInAccountsReceivable id="Fact_92c46ef0b13d46e0b47ecd2d164431f4" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">6961000</us-gaap:IncreaseDecreaseInAccountsReceivable>
  <!--Increase (Decrease) in Accounts Receivable-->
  <us-gaap:IncreaseDecreaseInAccountsReceivable id="Fact_a7753261466d498f924e03ca8862d4e4" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">-883000</us-gaap:IncreaseDecreaseInAccountsReceivable>
  <!--Other payables and accrued expenses-->
  <us-gaap:IncreaseDecreaseInOtherAccountsPayableAndAccruedLiabilities id="Fact_4768540cbeaf440cb903c75bdcdbc3a6" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">2865000</us-gaap:IncreaseDecreaseInOtherAccountsPayableAndAccruedLiabilities>
  <!--Other payables and accrued expenses-->
  <us-gaap:IncreaseDecreaseInOtherAccountsPayableAndAccruedLiabilities id="Fact_d4301bafeb3245e187a2316eb9a8e137" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">4954000</us-gaap:IncreaseDecreaseInOtherAccountsPayableAndAccruedLiabilities>
  <!--Increase (Decrease) in Other Receivables-->
  <us-gaap:IncreaseDecreaseInOtherReceivables id="Fact_5c148c8ea0bc4b15b72fe3dbaea2bb7c" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-891000</us-gaap:IncreaseDecreaseInOtherReceivables>
  <!--Increase (Decrease) in Other Receivables-->
  <us-gaap:IncreaseDecreaseInOtherReceivables id="Fact_c48b614b6d0b4e408629c80437e60ee7" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">1171000</us-gaap:IncreaseDecreaseInOtherReceivables>
  <!--Increase (Decrease) in Inventories-->
  <us-gaap:IncreaseDecreaseInInventories id="Fact_1e1686c17a1d46ffbcf9a4ae6cc06b7d" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">24083000</us-gaap:IncreaseDecreaseInInventories>
  <!--Increase (Decrease) in Inventories-->
  <us-gaap:IncreaseDecreaseInInventories id="Fact_3146e47f5b4d466894b91d187b9ba4dd" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">6658000</us-gaap:IncreaseDecreaseInInventories>
  <!--Increase (Decrease) in Prepaid Expense-->
  <us-gaap:IncreaseDecreaseInPrepaidExpense id="Fact_86c49904bb8940a78cfd11c688a6fad9" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">83000</us-gaap:IncreaseDecreaseInPrepaidExpense>
  <!--Increase (Decrease) in Prepaid Expense-->
  <us-gaap:IncreaseDecreaseInPrepaidExpense id="Fact_9cc995e694d044eda8fd8c7055a32b52" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">1494000</us-gaap:IncreaseDecreaseInPrepaidExpense>
  <!--Intangible Assets, Net-->
  <us-gaap:IntangibleAssetsFiniteLivedPolicy id="Fact_b25c0a7fbad541dfbd40faff89d62aa1" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Intangible Assets, Net&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Intangible assets consist of software used for finance, manufacturing, and research and development purposes. Assets are valued at cost at the time of acquisition and are amortized over their beneficial periods. If a contract specifies a beneficial period, then the intangible asset is amortized over a term not exceeding the beneficial period. If the contract does not specify a beneficial period, then the intangible asset is amortized over a term not exceeding the valid period specified by local law. If neither the contract nor local law specifies a beneficial period, then the intangible asset is amortized over a period of up to 10 years. Currently, the software that the Company uses is amortized over a two-year period in accordance with the policy described above.&lt;/div&gt;&lt;/div&gt;</us-gaap:IntangibleAssetsFiniteLivedPolicy>
  <!--Capitalized borrowing costs-->
  <us-gaap:InterestCostsCapitalized id="Fact_6cd33395a9fc4def9c4fecc9b416a473" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:InterestCostsCapitalized>
  <!--Capitalized borrowing costs-->
  <us-gaap:InterestCostsCapitalized id="Fact_a7589d25e08f48d5a7e5ac820708d482" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">0</us-gaap:InterestCostsCapitalized>
  <!--Interest Expense-->
  <us-gaap:InterestExpense id="Fact_01d8c3113f5d4e868ae5357b08d6e04e" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">745000</us-gaap:InterestExpense>
  <!--Interest Expense-->
  <us-gaap:InterestExpense id="Fact_63df36bf3b6d44f4b8d75f4007b3b161" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">498000</us-gaap:InterestExpense>
  <!--Interest Expense-Parent Company [Member]-->
  <us-gaap:InterestExpense id="Fact_e288f218bdee49f4a6e8c823f87c316a" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">0</us-gaap:InterestExpense>
  <!--Interest Expense-Parent Company [Member]-->
  <us-gaap:InterestExpense id="Fact_f3a5be1518884a5f8205eab8b347c24c" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">67000</us-gaap:InterestExpense>
  <!--Interest Expense, Short-term Borrowings-->
  <us-gaap:InterestExpenseShortTermBorrowings id="Fact_22d0ec6480ae4fffa187cd45b3a42c37" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">745000</us-gaap:InterestExpenseShortTermBorrowings>
  <!--Interest Expense, Short-term Borrowings-->
  <us-gaap:InterestExpenseShortTermBorrowings id="Fact_dc949428450b4fcea86d4bce1f7ca21f" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">498000</us-gaap:InterestExpenseShortTermBorrowings>
  <!--Interest paid-->
  <us-gaap:InterestPaidNet id="Fact_49171a8d0d374464910dc45651c3344e" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">745000</us-gaap:InterestPaidNet>
  <!--Interest paid-->
  <us-gaap:InterestPaidNet id="Fact_5a23896e4552422691267de24edf7f82" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">498000</us-gaap:InterestPaidNet>
  <!--Finished goods-->
  <us-gaap:InventoryFinishedGoods id="Fact_1e4dc779d6e640f9bca09b8ab6e58973" contextRef="c20181231" unitRef="U001" decimals="-3">16487000</us-gaap:InventoryFinishedGoods>
  <!--Finished goods-->
  <us-gaap:InventoryFinishedGoods id="Fact_510b5d7dc3604a6c869771b7076b6034" contextRef="c20191231" unitRef="U001" decimals="-3">19284000</us-gaap:InventoryFinishedGoods>
  <!--Inventory Disclosure [Text Block]-->
  <us-gaap:InventoryDisclosureTextBlock id="Fact_1a8f014c4ea24b838398663d5e4c9044" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div&gt;&lt;font style="font-weight: bold;"&gt;NOTE 4&amp;#160;&amp;#8211; INVENTORIES&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;At December 31, 2019 and 2018, inventory consisted of the following:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 90%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Raw&amp;#160;materials&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;15,105&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;12,646&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Work&amp;#160;in&amp;#160;process&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;10,407&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;9,631&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Finished&amp;#160;goods&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;19,284&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;16,487&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Total&amp;#160;inventory,&amp;#160;gross&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;44,796&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;38,764&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Inventory&amp;#160;reserve&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&amp;#160;inventory,&amp;#160;net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;44,796&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;38,764&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000;"&gt;At December&amp;#160;31, 2019 and 2018, the Company did not have an inventory reserve and no inventory was pledged as collateral for borrowings from financial institutions. System shipments of first-tools to an existing or prospective customer, for which ownership does not transfer until customer acceptance, are classified as finished goods inventory and carried at cost until ownership is transferred.&lt;/div&gt;&lt;/div&gt;</us-gaap:InventoryDisclosureTextBlock>
  <!--Inventory Valuation Reserves-->
  <us-gaap:InventoryValuationReserves id="Fact_4fb737575dc143f9bc31a77f3c19d209" contextRef="c20181231" unitRef="U001" decimals="-3">0</us-gaap:InventoryValuationReserves>
  <!--Inventory Valuation Reserves-->
  <us-gaap:InventoryValuationReserves id="Fact_92c6b513275c4d67bcb701876dadbbac" contextRef="c20191231" unitRef="U001" decimals="-3">0</us-gaap:InventoryValuationReserves>
  <!--Inventory, Gross-->
  <us-gaap:InventoryGross id="Fact_90616388a64745aa8e8152f0c9602a02" contextRef="c20181231" unitRef="U001" decimals="-3">38764000</us-gaap:InventoryGross>
  <!--Inventory, Gross-->
  <us-gaap:InventoryGross id="Fact_97ba0bebde4e4682aec8c9309e7e2285" contextRef="c20191231" unitRef="U001" decimals="-3">44796000</us-gaap:InventoryGross>
  <!--Raw materials-->
  <us-gaap:InventoryRawMaterials id="Fact_7305402192fe47f7a7a67bb2947a48bd" contextRef="c20191231" unitRef="U001" decimals="-3">15105000</us-gaap:InventoryRawMaterials>
  <!--Raw materials-->
  <us-gaap:InventoryRawMaterials id="Fact_b054e1c93b5b40ee96ec4591f03ab65a" contextRef="c20181231" unitRef="U001" decimals="-3">12646000</us-gaap:InventoryRawMaterials>
  <!--Inventory, Policy [Policy Text Block]-->
  <us-gaap:InventoryPolicyTextBlock id="Fact_335047f584ed4d2996584e3c44ce30b6" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Inventory&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Inventory consists of raw materials and related goods, work-in-progress, finished goods, and other consumable materials such as spare parts. Finished goods typically are shipped from the Company&amp;#8217;s warehouse within one month of completion.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Inventory was recorded at the lower of cost or net realizable value at December 31, 2019 and 2018.&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;The cost of a general inventory item is determined using the weighted moving average method. Under the weighted moving average method, the Company calculates the new average price of all items of a particular inventory stock each time one or more items of that stock are purchased. The then-current average price of the stock is used for purposes of determining cost of inventory or cost of revenue. The cost of an inventory item purchased specifically for a customized product is determined using the specific identification method. Low-cost consumable materials and packaging materials are expensed as incurred.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Net realizable value is the estimated selling price, in the ordinary course of business, less estimated costs to complete or dispose.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company assesses the recoverability of all inventories quarterly to determine if any adjustments are required. Potential excess or obsolete inventory is written off based on management&amp;#8217;s analysis of inventory levels and estimates of future 12-month demand and market conditions.&lt;/div&gt;&lt;/div&gt;</us-gaap:InventoryPolicyTextBlock>
  <!--Inventory-->
  <us-gaap:InventoryNet id="Fact_874a5ed35e0c4bbfafc7b3d6885edf1a" contextRef="c20181231" unitRef="U001" decimals="-3">38764000</us-gaap:InventoryNet>
  <!--Inventory-->
  <us-gaap:InventoryNet id="Fact_f4db2796b75f455f845cba6a79d8970a" contextRef="c20191231" unitRef="U001" decimals="-3">44796000</us-gaap:InventoryNet>
  <!--Inventory-Parent Company [Member]-->
  <us-gaap:InventoryNet id="Fact_639b9283edf94f15acb5b758c5b3b9b8" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">720000</us-gaap:InventoryNet>
  <!--Inventory-Parent Company [Member]-->
  <us-gaap:InventoryNet id="Fact_d81d83c7b4ba4b7e92ed71c8f7b46e8b" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">444000</us-gaap:InventoryNet>
  <!--Work in process-->
  <us-gaap:InventoryWorkInProcess id="Fact_8fa68c46d1324f1f985820f485e13dd5" contextRef="c20181231" unitRef="U001" decimals="-3">9631000</us-gaap:InventoryWorkInProcess>
  <!--Work in process-->
  <us-gaap:InventoryWorkInProcess id="Fact_a76fc0856d1b44b194aeb2b041532c62" contextRef="c20191231" unitRef="U001" decimals="-3">10407000</us-gaap:InventoryWorkInProcess>
  <!--Interest income-->
  <us-gaap:InvestmentIncomeInterest id="Fact_0b4e045b999b402da78660c9977be820" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">333000</us-gaap:InvestmentIncomeInterest>
  <!--Interest income-->
  <us-gaap:InvestmentIncomeInterest id="Fact_e3c8bce428a94e38a88cdf5d24ad42ba" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">29000</us-gaap:InvestmentIncomeInterest>
  <!--Interest income-Parent Company [Member]-->
  <us-gaap:InvestmentIncomeInterest id="Fact_243fb3d12b0641cb8d7d18ed9d7224f7" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">166000</us-gaap:InvestmentIncomeInterest>
  <!--Interest income-Parent Company [Member]-->
  <us-gaap:InvestmentIncomeInterest id="Fact_e30e82805b8a4cb7bbb59db2c8ca9b9d" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">231000</us-gaap:InvestmentIncomeInterest>
  <!--Investment, Policy [Policy Text Block]-->
  <us-gaap:InvestmentPolicyTextBlock id="Fact_72998ec15b2c4d9f88b51aa1a8cf80b3" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;p class="MsoCommentText" style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none; text-align: justify;"&gt;&lt;u&gt;&lt;font style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; background-clip: border-box; background-origin: padding-box; background-size: auto auto;"&gt;Investments&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: #000000;"&gt;&lt;font style="background-color: rgb(255, 255, 255);"&gt;The Company uses the equity method of accounting for its investment in, and earning or loss of, companies that it does not control but over which it does exert significant influence. The Company considers whether the fair value of its equity method investment has declined below its carrying value whenever adverse events or changes in circumstances indicate that recorded value may not be recoverable. The Company reviews its investments for other-than-temporary impairment whenever events or changes in business circumstances indicate that the carrying value of the investment may not be fully recoverable. Investments identified as having an indication of impairment are subject to further analysis to determine if the impairment is other-than-temporary and this analysis requires estimating the fair value of the investment. The determination of fair value of the investment involves considering factors such as current economic and market conditions, the operating performance of the entities including current earnings trends and forecasted cash flows, and other company and industry specific information. If the Company considers any decline to be other than temporary (based on various factors, including historical financial results and the overall health of the investee), then a write-down would be recorded to estimated fair value. See note 10 for discussion of equity method investment.&lt;/font&gt;&lt;/div&gt;&lt;/div&gt;</us-gaap:InvestmentPolicyTextBlock>
  <!--Investments-->
  <us-gaap:Investments id="Fact_28583e3f0c114e5a93603e255840b060" contextRef="c20181231" unitRef="U001" decimals="-3">1360000</us-gaap:Investments>
  <!--Investments-->
  <us-gaap:Investments id="Fact_6738486367b04976b4da84c5a01ff86e" contextRef="c20191231" unitRef="U001" decimals="-3">5934000</us-gaap:Investments>
  <!--Investment in unconsolidated subsidiaries-Parent Company [Member]-->
  <us-gaap:InvestmentsInAffiliatesSubsidiariesAssociatesAndJointVentures id="Fact_7b1e7756ff9f4525814829f5ce9967e2" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">26861000</us-gaap:InvestmentsInAffiliatesSubsidiariesAssociatesAndJointVentures>
  <!--Investment in unconsolidated subsidiaries-Parent Company [Member]-->
  <us-gaap:InvestmentsInAffiliatesSubsidiariesAssociatesAndJointVentures id="Fact_9ab94289e31641f1ab39e73f09851531" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">68527000</us-gaap:InvestmentsInAffiliatesSubsidiariesAssociatesAndJointVentures>
  <!--Lessee, Operating Leases [Text Block]-->
  <us-gaap:LesseeOperatingLeasesTextBlock id="Fact_f5305788570b45969decf1c819596a95" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold;"&gt;NOTE 8 &amp;#8211; LEASES&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM entered into a two-year lease agreement in March 2015 for office and warehouse space of approximately 3,000 square feet for its headquarters in Fremont, California, at a rate of $2 per month. On February 4, 2019, ACM amended the lease agreement to extend the lease term through March 31, 2020 and increase the base rent to $3.3 per month from April 1, 2019 to March 31, 2020 and $3.4 per month from April 1, 2020 to March 31, 2021.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;ACM Shanghai entered into an operating lease agreement with Zhangjiang Group (a related party, see note 11) in 2007 for manufacturing and office space of approximately 63,510 square feet in Shanghai, China. The lease terms and its payment terms are subject to modification and extension with Zhangjiang Group from time to time. The lease with Zhangjiang Group expired on December 31, 2017 and from January 1, 2018 to April 25, 2018 ACM Shanghai leased the property on a month-to-month basis. On April 26, 2018, ACM Shanghai entered into a renewed lease with Zhangjiang Group for the period from January 1, 2018 through December 31, 2022. Under the lease, ACM Shanghai would pay a monthly rental fee of RMB 366 (equivalent to $55). The required security deposit is RMB 1,077 (equivalent to $163).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM Wuxi leases office space in Wuxi, China, at a rate of less than $1 per month.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;In January 2018, ACM Shanghai entered into an operating lease agreement for a second factory in the Pudong region of Shanghai from January 2018 to January 2023. This facility has a total of 50,000 square feet of available floor space. The monthly rent varies during the term of the lease.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;The Company leases space under non-cancelable operating leases for several office and manufacturing locations. These leases do not have significant rent escalation holidays, concessions, leasehold improvement incentives, or other build-out clauses. Further, the leases do not contain contingent rent provisions.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;Most leases include one or more options to renew. The exercise of lease renewal options is typically at the Company&amp;#8217;s sole discretion; therefore, the majority of renewals to extend the lease terms are not included in the Company&amp;#8217;s right-of-use assets and lease liabilities as they are not reasonably certain of exercise. The Company regularly evaluates the renewal options, and when they are reasonably certain of exercise, the Company includes the renewal period in its lease term.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;As most of the Company&amp;#8217;s leases do not provide an implicit rate, the Company uses its incremental borrowing rate based on the information available at the lease commencement date in determining the present value of the lease payments. The Company has a centrally managed treasury function; therefore, based on the applicable lease terms and the current economic environment, it applies a portfolio approach for determining the incremental borrowing rate.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;The components of lease expense were as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 80%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 68%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended&lt;/div&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;December 31, 2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Operating lease cost&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="text-align: right; vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,432&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 68%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Short-term lease cost&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="text-align: right; vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;165&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Lease cost&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="text-align: right; vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,597&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;Supplemental cash flow information related to operating leases was as follows for the period ended December 31, 2019:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 80%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 68%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended&lt;/div&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;December 31, 2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Cash paid for amounts included in the measurement of lease liabilities:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Operating cash outflow from operating leases&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="text-align: right; vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,597&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;Maturities of lease liabilities for all operating leases were as follows as of December 31, 2019:&lt;/div&gt;&lt;div style="color: #000000;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 50%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 38%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;2020&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,504&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;2021&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,488&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;2022&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,496&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;2023&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;53&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;2024&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;13&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Total lease payments&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;4,554&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Less: Interest&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(667&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Present value of lease liabilities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;3,887&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;The weighted average remaining lease terms and discount rates for all operating leases were as follows as of December 31 2019:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 58%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31, 2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 58%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Remaining lease term and discount rate:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 58%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Weighted average remaining lease term (years)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;3.02&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 58%; background-color: rgb(255, 255, 255); padding-bottom: 4px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Weighted average discount rate&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 4px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 4px double rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 4px double rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;5.43&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 4px;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:LesseeOperatingLeasesTextBlock>
  <!--2020-->
  <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths id="Fact_84fa7cd0178a4e65998b48d84de63436" contextRef="c20191231" unitRef="U001" decimals="-3">1504000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueNextTwelveMonths>
  <!--Lessee, Operating Lease, Liability, Payments, Due Year Four-->
  <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour id="Fact_1129986296364035a128408eeb1957fa" contextRef="c20191231" unitRef="U001" decimals="-3">53000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFour>
  <!--Lessee, Operating Lease, Liability, Payments, Due Year Five-->
  <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive id="Fact_b7511832ef0c44408cf9de93bf3588ee" contextRef="c20191231" unitRef="U001" decimals="-3">13000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearFive>
  <!--Lessee, Operating Lease, Liability, Payments, Due-->
  <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue id="Fact_ee1a67ba371741329a97c986aa0f7c4b" contextRef="c20191231" unitRef="U001" decimals="-3">4554000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDue>
  <!--Lessee, Operating Lease, Liability, Maturity [Table Text Block]-->
  <us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock id="Fact_06073250c92c45069dfce0859a18fec8" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;Maturities of lease liabilities for all operating leases were as follows as of December 31, 2019:&lt;/div&gt;&lt;div style="color: #000000;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 50%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 38%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;2020&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,504&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;2021&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,488&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;2022&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,496&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;2023&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;53&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;2024&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;13&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Total lease payments&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;4,554&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Less: Interest&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(667&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 38%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Present value of lease liabilities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;3,887&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:LesseeOperatingLeaseLiabilityMaturityTableTextBlock>
  <!--Lessee, Operating Lease, Liability, Undiscounted Excess Amount-->
  <us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount id="Fact_5c51e1f3637849f9a5da8bedc6dc6caa" contextRef="c20191231" unitRef="U001" decimals="-3">667000</us-gaap:LesseeOperatingLeaseLiabilityUndiscountedExcessAmount>
  <!--Lessee, Leases [Policy Text Block]-->
  <us-gaap:LesseeLeasesPolicyTextBlock id="Fact_0e0f169210444823971cddca1d1323bd" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Leases&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease right-of-use (&amp;#8220;ROU&amp;#8221;) assets, other current liabilities and operating lease liabilities in the consolidated balance sheets.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;ROU assets represent the Company&amp;#8217;s right to use an underlying asset for the lease term, and lease liabilities represent the Company&amp;#8217;s obligation to make lease payments arising from the lease. Operating lease ROU assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. As most of the Company&amp;#8217;s leases do not provide an implicit rate, the Company uses its incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. It uses the implicit rate when readily determinable. The operating lease ROU asset also includes any lease payments made and excludes lease incentives. The Company&amp;#8217;s lease terms may include options to extend or terminate the lease when it is reasonably certain that the Company will exercise that option. Lease expense for lease payments is recognized on a straight-line basis over the lease term.&lt;/div&gt;&lt;/div&gt;</us-gaap:LesseeLeasesPolicyTextBlock>
  <!--Lessee, Operating Lease, Liability, Payments, Due Year Three-->
  <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree id="Fact_4278849b3ea4428ab0cd8482644ff18c" contextRef="c20191231" unitRef="U001" decimals="-3">1496000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearThree>
  <!--Lessee, Operating Lease, Liability, Payments, Due Year Two-->
  <us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo id="Fact_131b60f04f5a49c194f8bcd02fbe1e1c" contextRef="c20191231" unitRef="U001" decimals="-3">1488000</us-gaap:LesseeOperatingLeaseLiabilityPaymentsDueYearTwo>
  <!--Term of lease agreement-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:LesseeOperatingLeaseTermOfContract id="Fact_c5928f3419de4a44bb99193df232b0bf" contextRef="c20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">P2Y</us-gaap:LesseeOperatingLeaseTermOfContract>
  <!--Lease, Cost-->
  <us-gaap:LeaseCost id="Fact_00b37c2558a34fe4965a918de76bbfdb" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">1597000</us-gaap:LeaseCost>
  <!--Lease, Cost [Table Text Block]-->
  <us-gaap:LeaseCostTableTextBlock id="Fact_9bd45c46c9ea43a8a96e6f235e3d7fef" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;The components of lease expense were as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 80%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 68%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended&lt;/div&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;December 31, 2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Operating lease cost&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="text-align: right; vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,432&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 68%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Short-term lease cost&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="text-align: right; vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;165&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Lease cost&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="text-align: right; vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,597&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:LeaseCostTableTextBlock>
  <!--Liabilities-->
  <us-gaap:Liabilities id="Fact_e6005dac3abf49aaa7f5bd43165e2573" contextRef="c20191231" unitRef="U001" decimals="-3">60220000</us-gaap:Liabilities>
  <!--Liabilities-->
  <us-gaap:Liabilities id="Fact_f690a7927d364729a13e65db9ddd93e4" contextRef="c20181231" unitRef="U001" decimals="-3">50723000</us-gaap:Liabilities>
  <!--Liabilities-Parent Company [Member]-->
  <us-gaap:Liabilities id="Fact_9002d25446044d558f6adf8a1a0cd65f" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">4856000</us-gaap:Liabilities>
  <!--Liabilities-Parent Company [Member]-->
  <us-gaap:Liabilities id="Fact_cc86c2aa944b4b74abf7193b04e2e0da" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">4069000</us-gaap:Liabilities>
  <!--Liabilities and Equity-->
  <us-gaap:LiabilitiesAndStockholdersEquity id="Fact_37c11f4c541644fc9b7e9a5805036dd8" contextRef="c20181231" unitRef="U001" decimals="-3">103047000</us-gaap:LiabilitiesAndStockholdersEquity>
  <!--Liabilities and Equity-->
  <us-gaap:LiabilitiesAndStockholdersEquity id="Fact_6fa30c12794048ebb594070629349aff" contextRef="c20191231" unitRef="U001" decimals="-3">217703000</us-gaap:LiabilitiesAndStockholdersEquity>
  <!--Liabilities and Equity-Parent Company [Member]-->
  <us-gaap:LiabilitiesAndStockholdersEquity id="Fact_033aa467cb144c86ba9de89ff7a94fb4" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">56394000</us-gaap:LiabilitiesAndStockholdersEquity>
  <!--Liabilities and Equity-Parent Company [Member]-->
  <us-gaap:LiabilitiesAndStockholdersEquity id="Fact_7144656088014cc6aba72dd5cef446af" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">101251000</us-gaap:LiabilitiesAndStockholdersEquity>
  <!--Liabilities, Current-->
  <us-gaap:LiabilitiesCurrent id="Fact_51bd9917a4d64675b9e46b220079fb32" contextRef="c20191231" unitRef="U001" decimals="-3">53502000</us-gaap:LiabilitiesCurrent>
  <!--Liabilities, Current-->
  <us-gaap:LiabilitiesCurrent id="Fact_5fa4fb5646bf496d8a7f92741a826802" contextRef="c20181231" unitRef="U001" decimals="-3">46140000</us-gaap:LiabilitiesCurrent>
  <!--Maximum borrowing capacity-Line of Credit 10 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_2d84f62c2fe0492bbce0a492b1a7eef1" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit10Member" unitRef="U005" decimals="-3">20000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Maximum borrowing capacity-Line of Credit 11 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_38e62e6964af43169c83cf165dc786e3" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit11Member" unitRef="U005" decimals="-3">50000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Maximum borrowing capacity-Line of Credit 6 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_4e7fb1a363e84d72bdef89fbbd37d875" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit6Member" unitRef="U005" decimals="-3">10000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Maximum borrowing capacity-Line of Credit 1 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_50409e3f2cfc40b8ba8459bce3bf1303" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit1Member" unitRef="U005" decimals="-3">50000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Maximum borrowing capacity-Line of Credit 9 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_769f47f31eb94c9280bbade1a6bb76a0" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit9Member" unitRef="U005" decimals="-3">20000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Maximum borrowing capacity-Line of Credit 12 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_7a5a1c71d72346a09117908a0737ff9d" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit12Member" unitRef="U005" decimals="-3">50000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Maximum borrowing capacity-Line of Credit 2 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_80d8a8679719401aa5240b6712730a65" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit2Member" unitRef="U005" decimals="-3">50000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Maximum borrowing capacity-Line of Credit 7 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_c295d132075a41128e3dd0a700266cf2" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit7Member" unitRef="U005" decimals="-3">20000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Maximum borrowing capacity-Line of Credit 3 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_cf7ea04c985a4bed817530c963929f82" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit3Member" unitRef="U005" decimals="-3">50000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Maximum borrowing capacity-Line of Credit 4 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_e1015c1eb3c14dbdb71b78ce3facabfb" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit4Member" unitRef="U005" decimals="-3">30000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Maximum borrowing capacity-Line of Credit 5 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_fa21c2a97b364981b59e643d61db32f2" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit5Member" unitRef="U005" decimals="-3">30000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Maximum borrowing capacity-Line of Credit 8 [Member]-->
  <us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity id="Fact_fbbd82ec49784e4286ac89602cef2bac" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit8Member" unitRef="U005" decimals="-3">20000000</us-gaap:LineOfCreditFacilityMaximumBorrowingCapacity>
  <!--Annual interest rate-Line of Credit 12 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_1bf45405d1514ff1a36d9631d09cbe2f" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit12Member" unitRef="U004" decimals="4">0.0566</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Annual interest rate-Line of Credit 7 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_220eb20916d34999aee01dacd1eec097" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit7Member" unitRef="U004" decimals="4">0.0566</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Annual interest rate-Line of Credit 8 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_340b787c55f0444ca8a9816aa62c2e80" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit8Member" unitRef="U004" decimals="4">0.0566</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Annual interest rate-Line of Credit 9 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_6932c12eed2747a6b1336847715d76f6" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit9Member" unitRef="U004" decimals="4">0.0566</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Annual interest rate-Line of Credit 11 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_6dfd4ccbe8844b5d925d2f8f9299db01" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit11Member" unitRef="U004" decimals="4">0.0494</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Annual interest rate-Line of Credit 3 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_73cc15447dde43d1b66e1b4642ec20fc" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit3Member" unitRef="U004" decimals="4">0.0522</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Annual interest rate-Line of Credit 4 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_8546da7da5cc4c5e9ab6ee504cc2fcfb" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit4Member" unitRef="U004" decimals="4">0.0522</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Annual interest rate-Line of Credit 1 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_a1a7000610204c9b8ae7e2196da59c59" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit1Member" unitRef="U004" decimals="4">0.0499</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Annual interest rate-Line of Credit 10 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_b3bd9be7eab641bc914945ea1f893b5b" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit10Member" unitRef="U004" decimals="4">0.0566</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Annual interest rate-Line of Credit 6 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_d1ed72a6fad04411b7a84671fab39733" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit6Member" unitRef="U004" decimals="4">0.0544</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Annual interest rate-Line of Credit 2 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_dc5a75791e4f489989c5730f8dfd3c54" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit2Member" unitRef="U004" decimals="4">0.0515</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Annual interest rate-Line of Credit 5 [Member]-->
  <us-gaap:LineOfCreditFacilityInterestRateDuringPeriod id="Fact_f878daa56f734f97a87e91f33bc21c28" contextRef="c20190101to20191231_DebtInstrumentAxis_LineOfCredit5Member" unitRef="U004" decimals="4">0.0522</us-gaap:LineOfCreditFacilityInterestRateDuringPeriod>
  <!--Loans and Leases Receivable, Related Parties-Ninebell Co., Ltd [Member]-->
  <us-gaap:LoansAndLeasesReceivableRelatedParties id="Fact_27542ebff2e549578c36f43a7afdc827" contextRef="c20170818_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember" unitRef="U001" decimals="-3">946000</us-gaap:LoansAndLeasesReceivableRelatedParties>
  <!--Loans, Notes, Trade and Other Receivables Disclosure [Text Block]-->
  <us-gaap:LoansNotesTradeAndOtherReceivablesDisclosureTextBlock id="Fact_409eb749064d47acbb35f6847966d0bb" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold; text-align: justify;"&gt;NOTE 3&amp;#160;&amp;#8211; ACCOUNTS RECEIVABLE&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;At December 31, 2019 and 2018, accounts receivable consisted of the following:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accounts&amp;#160;receivable&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;31,091&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;24,608&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 46%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Less:&amp;#160;Allowance&amp;#160;for&amp;#160;doubtful&amp;#160;accounts&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;31,091&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;24,608&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company reviews accounts receivable on a periodic basis and makes general and specific allowances when there is doubt as to the collectability of individual balances. No allowance for doubtful accounts was considered necessary at December 31, 2019 and 2018. At December 31, 2019 and 2018, accounts receivable of $1,433 and $1,457 respectively, were pledged as collateral for borrowings from financial institutions (note 6).&lt;/div&gt;&lt;/div&gt;</us-gaap:LoansNotesTradeAndOtherReceivablesDisclosureTextBlock>
  <!--Accounts receivable pledged as collateral for borrowings-->
  <us-gaap:LoansPledgedAsCollateral id="Fact_3194ed2a24c64b079bb7fc7364ff4be6" contextRef="c20181231" unitRef="U001" decimals="-3">1457000</us-gaap:LoansPledgedAsCollateral>
  <!--Accounts receivable pledged as collateral for borrowings-->
  <us-gaap:LoansPledgedAsCollateral id="Fact_e321ee2a40d644af9a0324ce69bc28a1" contextRef="c20191231" unitRef="U001" decimals="-3">1433000</us-gaap:LoansPledgedAsCollateral>
  <!--Noncontrolling Interest, Change in Redemption Value-Second Tranche Investors [Member]-->
  <us-gaap:MinorityInterestChangeInRedemptionValue id="Fact_46ba99031d534178aac35ab000ec95d5" contextRef="c20190101to20191231_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember" unitRef="U001" decimals="-3">32415000</us-gaap:MinorityInterestChangeInRedemptionValue>
  <!--Noncontrolling Interest, Change in Redemption Value-First Tranche Investors [Member]-->
  <us-gaap:MinorityInterestChangeInRedemptionValue id="Fact_8550376798fe439785131a5c3083e374" contextRef="c20190101to20191231_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember" unitRef="U001" decimals="-3">27264000</us-gaap:MinorityInterestChangeInRedemptionValue>
  <!--Less: Net income attributable to redeemable non-controlling interests-->
  <us-gaap:NetIncomeLossAttributableToRedeemableNoncontrollingInterest id="Fact_6610f8935bdb4c4f8d1f84349e249993" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">564000</us-gaap:NetIncomeLossAttributableToRedeemableNoncontrollingInterest>
  <!--Less: Net income attributable to redeemable non-controlling interests-->
  <us-gaap:NetIncomeLossAttributableToRedeemableNoncontrollingInterest id="Fact_b94655fa8cb74626809355fa010bfbfb" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:NetIncomeLossAttributableToRedeemableNoncontrollingInterest>
  <!--Net cash used in operating activities-->
  <us-gaap:NetCashProvidedByUsedInOperatingActivities id="Fact_bc0eacd6d54f4ac4a4504a169f2a36cc" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">6909000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
  <!--Net cash used in operating activities-->
  <us-gaap:NetCashProvidedByUsedInOperatingActivities id="Fact_e3e06561a8ac4df294aed82e49476e77" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">9403000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
  <!--Net cash used in operating activities-Parent Company [Member]-->
  <us-gaap:NetCashProvidedByUsedInOperatingActivities id="Fact_46f0dddb9fe94b16af4f5e4e63b3b9ec" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">-1189000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
  <!--Net cash used in operating activities-Parent Company [Member]-->
  <us-gaap:NetCashProvidedByUsedInOperatingActivities id="Fact_c03dff3301f649239e786e08b159119b" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">-7957000</us-gaap:NetCashProvidedByUsedInOperatingActivities>
  <!--Net cash provided by investing activities-->
  <us-gaap:NetCashProvidedByUsedInInvestingActivities id="Fact_130950ac4ddf49c299cf66c4f5354cc3" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">-2071000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
  <!--Net cash provided by investing activities-->
  <us-gaap:NetCashProvidedByUsedInInvestingActivities id="Fact_81903d1d7782487081edd1dbf9f65f75" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-5531000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
  <!--Net cash provided by investing activities-Parent Company [Member]-->
  <us-gaap:NetCashProvidedByUsedInInvestingActivities id="Fact_08debdfb9b004c3891579425c1564049" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">0</us-gaap:NetCashProvidedByUsedInInvestingActivities>
  <!--Net cash provided by investing activities-Parent Company [Member]-->
  <us-gaap:NetCashProvidedByUsedInInvestingActivities id="Fact_c1bfda11cc3847c0a2ddb9cb40ebb6be" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">946000</us-gaap:NetCashProvidedByUsedInInvestingActivities>
  <!--Net cash provided by financing activities-->
  <us-gaap:NetCashProvidedByUsedInFinancingActivities id="Fact_83d77839b1c64e1f880761eb92b69877" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">87445000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
  <!--Net cash provided by financing activities-->
  <us-gaap:NetCashProvidedByUsedInFinancingActivities id="Fact_bf2e83c4eaf14e87b1f32863ffc1bc0a" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">5123000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
  <!--Net cash provided by financing activities-Parent Company [Member]-->
  <us-gaap:NetCashProvidedByUsedInFinancingActivities id="Fact_069ff0b7400e474e9e4455fcaefcdbd4" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">3510000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
  <!--Net cash provided by financing activities-Parent Company [Member]-->
  <us-gaap:NetCashProvidedByUsedInFinancingActivities id="Fact_7a83aee95e5f4d02aefe71be3cb17e0a" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">23347000</us-gaap:NetCashProvidedByUsedInFinancingActivities>
  <!--Net Income (Loss) Attributable to Parent-->
  <us-gaap:NetIncomeLoss id="Fact_80d33457cc8847abafcb90dde707ecd8" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">6574000</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-->
  <us-gaap:NetIncomeLoss id="Fact_e15cbe39629245a88a03495356a68461" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">18894000</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-Additional Paid-In Capital [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_0fc02a26230540d8ac022883c5337ceb" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">0</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-AOCI Attributable to Parent [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_17b9d4f9587b4811ab320a573d014b42" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">0</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-Additional Paid-In Capital [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_4f319cd8c249439695e534c1c4b2fce4" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">0</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-Common Stock [Member]-Common Class B [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_523216921b3e4c5d94d12750048e18f5" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-Common Class A [Member]-Common Stock [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_6dcdcee003484bbcba666662109949b6" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-Retained Earnings [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_8b81098fe2fe480684c18a36967b873b" contextRef="c20190101to20191231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">18894000</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-AOCI Attributable to Parent [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_bbdeed0fe14c4229b7257119aa512459" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">0</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-Retained Earnings [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_c40145bee7b549f0ae072cd5fa463387" contextRef="c20180101to20181231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">6574000</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_c62ceba54a9c423884a8616d52bdb413" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-Common Class B [Member]-Common Stock [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_ecdbcb0e8e51425f8fb96ff16ffcd2f3" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-Parent Company [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_a5710ca9ca9b48419c7a7dd698f73e17" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">18894000</us-gaap:NetIncomeLoss>
  <!--Net Income (Loss) Attributable to Parent-Parent Company [Member]-->
  <us-gaap:NetIncomeLoss id="Fact_c8de903d856942628db841bcfe66e800" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">6574000</us-gaap:NetIncomeLoss>
  <!--Recent Accounting Pronouncements-->
  <us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock id="Fact_14450ff0cb4149e3a9f220b6ae8ecae5" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-style: italic; font-weight: bold; text-align: justify;"&gt;Recently Adopted Accounting Pronouncements&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In February 2016, the Financial Accounting Standards Board (&amp;#8220;FASB&amp;#8221;) issued Accounting Standards Update (&amp;#8220;ASU&amp;#8221;) 2016-02, &lt;font style="font-style: italic;"&gt;Leases (Topic 842)&lt;/font&gt;. The amendments in &lt;font style="color: rgb(0, 0, 0);"&gt;ASU 2016-02&lt;/font&gt; create Topic 842, &lt;font style="font-style: italic;"&gt;Leases&lt;/font&gt;, and supersede the leases requirements in Topic&amp;#160;840, &lt;font style="font-style: italic;"&gt;Leases&lt;/font&gt;. Topic 842 specifies the accounting for leases. The objective of Topic 842 is to establish the principles that lessees and lessors shall apply to report useful information to users of financial statements about the amount, timing, and uncertainty of cash flows arising from a lease. The main difference between Topic 842 and Topic 840 is the recognition of lease assets and lease liabilities for those leases classified as operating leases under Topic 840. Topic 842 retains a distinction between finance leases and operating leases. The classification criteria for distinguishing between finance leases and operating leases are substantially similar to the classification criteria for distinguishing between capital leases and operating leases in the previous lease guidance. The result of retaining a distinction between finance leases and operating leases is that under the lessee accounting model in Topic 842, the effect of leases in the statement of comprehensive income and the statement of cash flows is largely unchanged from previous GAAP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #000000;"&gt;Effective January 1, 2019, the Company adopted ASU 2016-02. The original guidance required application on a modified retrospective basis with the earliest period presented. In August 2018, the FASB issued ASU 2018-11, &lt;font style="font-style: italic;"&gt;Targeted Improvements to ASC 842&lt;/font&gt;, &lt;font style="font-style: italic;"&gt;Leases&lt;/font&gt;, which included an option to not restate comparative periods in transition and elect to use the effective date of Accounting Standards Codification (&amp;#8220;ASC&amp;#8221;) 842&lt;font style="font-style: italic;"&gt;&amp;#160;&lt;/font&gt;as the date of initial application of transition, which the Company elected. As a result of its adoption of ASC 842 as of January 1, 2019, the Company recorded operating lease right-of-use assets of $5,109 and lease liabilities of $5,109. The adoption of ASC 842 had no impact on the Company&amp;#8217;s profit or cash flows for the year ended December 31, 2019. In addition, the Company elected the package of practical expedients permitted under the transition guidance within the new standard, which allowed the Company to carry forward the historical lease classification. Additional information and disclosures required by this new standard are contained in note&amp;#160;8.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In June 2018, the FASB issued ASU 2018-07, &lt;font style="font-style: italic;"&gt;Compensation&amp;#8212;Stock Compensation (Topic 718)&amp;#8212;Improvements to Nonemployee Share-Based Payment Accounting&lt;/font&gt;, which simplifies several aspects of the accounting for nonemployee share-based payment transactions resulting from expanding the scope of Topic 718, &lt;font style="font-style: italic;"&gt;Compensation&amp;#8212;Stock Compensation&lt;/font&gt;, to include share-based payment transactions for acquiring goods and services from nonemployees. Some of the areas for simplification apply only to nonpublic entities. ASU 2018-07 specifies that Topic 718 applies to all share-based payment transactions in which a grantor acquires goods or services to be used or consumed in a grantor&amp;#8217;s own operations by issuing share-based payment awards. ASU 2018-07 also clarifies that Topic 718 does not apply to share-based payments used to effectively provide (1) financing to the issuer or (2) awards granted in conjunction with selling goods or services to customers as part of a contract accounted for under the new revenue recognition standard set forth in ASU 2014-09, &lt;font style="font-style: italic;"&gt;Revenue from Contracts with Customers (Topic 606)&lt;/font&gt;. Effective January 1, 2019, the Company adopted ASU 2018-07, which did not have a material impact on the Company&amp;#8217;s consolidated financial statements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In February 2018, the FASB issued ASU No. 2018-02, &lt;font style="font-style: italic;"&gt;&amp;#8220;Income Statement&amp;#8212;Reporting Comprehensive Income (Topic 220): Reclassification of Certain Tax Effects from Accumulated Other Comprehensive Income&amp;#8221; &lt;/font&gt;(&amp;#8220;ASU 2018-02&amp;#8221;) which provides financial statement preparers with an option to reclassify stranded tax effects within accumulated other comprehensive income to retained earnings in each period in which the effect of the change in the U.S. federal corporate income tax rate in the Tax Cuts and Jobs Act (or portion thereof) is recorded. The amendments in this ASU are effective for all entities for fiscal years beginning after December 15, 2018, and interim periods within those fiscal years. Early adoption of ASU 2018-02 is permitted, including adoption in any interim period for the public business entities for reporting periods for which financial statements have not yet been issued. The amendments in this ASU should be applied either in the period of adoption or retrospectively to each period (or periods) in which the effect of the change in the U.S. federal corporate income tax rate in the Tax Cuts and Jobs Act is recognized. The adoption of the ASU 2018-02 did not have a material impact on the Company&amp;#8217;s consolidated financial statements.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Recent Accounting Pronouncements Not Yet Adopted&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In August 2018, the FASB issued ASU 2018-13,&lt;font style="font-style: italic;"&gt; Fair Value Measurement (Topic 820)&lt;/font&gt;, which eliminates, adds and modifies certain disclosure requirements for fair value measurements. The modified standard eliminates the requirement to disclose changes in unrealized gains and losses included in earnings for recurring Level 3 fair value measurements and requires changes in unrealized gains and losses be included in other comprehensive income for recurring Level 3 fair value measurements of instruments. The standard also requires the disclosure of the range and weighted average used to develop significant unobservable inputs and how weighted average is calculate for recurring and nonrecurring Level 3 fair value measurements. The amendment is effective for fiscal years beginning after December&amp;#160;15, 2019 and interim periods within that fiscal year, with early adoption permitted. The Company does not expect the adoption of ASU 2018-13 to have a material impact on its consolidated financial statements.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In January 2017, the FASB issued ASU 2017-04, &lt;font style="font-style: italic;"&gt;Intangibles&amp;#8212;Goodwill and Other (Topic 350): Simplifying the Test for Goodwill Impairment&lt;/font&gt;, which removes Step 2 from the goodwill impairment test. An entity will apply a one-step quantitative test and record the amount of goodwill impairment as the excess of a reporting unit&amp;#8217;s carrying amount over its fair value, not to exceed the total amount of goodwill allocated to the reporting unit. &lt;font style="color: rgb(0, 0, 0);"&gt;ASU 2017-04&lt;/font&gt; does not amend the optional qualitative assessment of goodwill impairment. A business entity that files periodic reports with the Securities and Exchange Commission must adopt the amendments in &lt;font style="color: rgb(0, 0, 0);"&gt;ASU 2017-04&lt;/font&gt; for its annual or any interim goodwill impairment test in fiscal years beginning after December 15, 2019. Early adoption is permitted for interim or annual goodwill impairment tests performed on testing dates after January 1, 2017. The Company does not expect the adoption of ASU 2017-04 to have a material impact on its consolidated financial statements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In June 2016, the FASB issued ASU 2016-13, &lt;font style="font-style: italic;"&gt;Financial Instruments-Credit Losses (Topic 326): Measurement of Credit Losses on Financial Instruments&lt;/font&gt;. ASU 2016-13 replaced the incurred loss impairment methodology under current GAAP with a methodology that reflects expected credit losses and requires consideration of a broader range of reasonable and supportable information to inform credit loss estimates. ASU 2016-13 requires use of a forward-looking expected credit loss model for accounts receivables, loans, and other financial instruments. ASU 2016-13 is effective for fiscal years beginning after December 15, 2019, with early adoption permitted. Adoption of the standard requires using a modified retrospective approach through a cumulative-effect adjustment to retained earnings as of the effective date to align existing credit loss methodology with the new standard. The Company will adopt ASU 2016-13 effective January 1, 2020. The Company is evaluating the impact of this standard on its consolidated financial statements, including accounting policies, processes, and systems, and expects the standard will have a minor impact on its consolidated financial statements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In December 2019, the FASB issued ASU No. 2019-12, &lt;font style="font-style: italic;"&gt;Income Taxes (Topic 740): Simplifying the Accounting for Income Taxes&lt;/font&gt;. ASU 2019-12 will simplify the accounting for income taxes by removing certain exceptions to the general principles in Topic 740. The amendments also improve consistent application of and simplify GAAP for other areas of Topic 740 by clarifying and amending existing guidance. For public business entities, the amendments in this Update are effective for fiscal years, and interim periods within those fiscal years, beginning after December 15, 2020. For all other entities, the amendments are effective for fiscal years beginning after December 15, 2021, and interim periods within fiscal years beginning after December 15, 2022. The Company is evaluating the impact of the adoption of ASU 2019-12 on its consolidated financial statements.&lt;/div&gt;&lt;/div&gt;</us-gaap:NewAccountingPronouncementsPolicyPolicyTextBlock>
  <!--Non-operating income (expense), net-Parent Company [Member]-->
  <us-gaap:NonoperatingIncomeExpense id="Fact_87d8a857011640f287d06a35cd25d665" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">178000</us-gaap:NonoperatingIncomeExpense>
  <!--Non-operating income (expense), net-Parent Company [Member]-->
  <us-gaap:NonoperatingIncomeExpense id="Fact_fd3cc28ec9654f57961b63764faf6412" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">108000</us-gaap:NonoperatingIncomeExpense>
  <!--Number of Reportable Segments-->
  <us-gaap:NumberOfReportableSegments id="Fact_dfb209cbd98943c7a26cc4815c23cbf0" contextRef="c20190101to20191231" unitRef="U011" decimals="INF">1</us-gaap:NumberOfReportableSegments>
  <!--Weighted average remaining lease term-->
  <us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1 id="Fact_905c0e7a49884d1a8b5457bd9bf580cf" contextRef="c20191231">P3Y0M7D</us-gaap:OperatingLeaseWeightedAverageRemainingLeaseTerm1>
  <!--Operating lease right-of-use assets, net (note 8)-->
  <us-gaap:OperatingLeaseRightOfUseAsset id="Fact_3b0f03df62bd4ffa8ae361fe270608d7" contextRef="c20181231" unitRef="U001" decimals="-3">0</us-gaap:OperatingLeaseRightOfUseAsset>
  <!--Operating lease right-of-use assets, net (note 8)-->
  <us-gaap:OperatingLeaseRightOfUseAsset id="Fact_a8ea3d7c87f1410594e800579015381d" contextRef="c20191231" unitRef="U001" decimals="-3">3887000</us-gaap:OperatingLeaseRightOfUseAsset>
  <!--Operating lease right-of-use assets, net (note 8)-Accounting Standards Update 2016-02 [Member]-->
  <us-gaap:OperatingLeaseRightOfUseAsset id="Fact_96d249cb549d43929e5225f9071a9998" contextRef="c20191231_AdjustmentsForNewAccountingPronouncementsAxis_AccountingStandardsUpdate201602Member" unitRef="U001" decimals="-3">5109000</us-gaap:OperatingLeaseRightOfUseAsset>
  <!--Operating lease cost-->
  <us-gaap:OperatingLeaseCost id="Fact_7cb5072241504144b112eaeeb6140e73" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">1432000</us-gaap:OperatingLeaseCost>
  <!--Operating Lease, Expense-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:OperatingLeaseExpense id="Fact_9abcebd82eda42c3834d6fe9c001b060" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-3">620000</us-gaap:OperatingLeaseExpense>
  <!--Operating Lease, Expense-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:OperatingLeaseExpense id="Fact_c6de9bd57e4e410e8cf843d4ce840117" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-3">595000</us-gaap:OperatingLeaseExpense>
  <!--Operating Expenses-->
  <us-gaap:OperatingExpenses id="Fact_2d1682965ae540e2952a75c628a07515" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">27978000</us-gaap:OperatingExpenses>
  <!--Operating Expenses-->
  <us-gaap:OperatingExpenses id="Fact_9d2aa1d835e14d02be696b2e1ea4c9a4" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">32863000</us-gaap:OperatingExpenses>
  <!--Weighted average discount rate-->
  <us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent id="Fact_586251a47b7d45f6bb5658a5ef780b78" contextRef="c20191231" unitRef="U004" decimals="4">0.0543</us-gaap:OperatingLeaseWeightedAverageDiscountRatePercent>
  <!--Operating Income (Loss)-->
  <us-gaap:OperatingIncomeLoss id="Fact_91c8745bd91a444b869a9805ca40cbf3" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">6471000</us-gaap:OperatingIncomeLoss>
  <!--Operating Income (Loss)-->
  <us-gaap:OperatingIncomeLoss id="Fact_c83b01b3ba8c4f8c8d6e5e5bdb6bd87b" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">17791000</us-gaap:OperatingIncomeLoss>
  <!--Operating Income (Loss)-Parent Company [Member]-->
  <us-gaap:OperatingIncomeLoss id="Fact_2152a248308147c79614692f6ba01d21" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">-4060000</us-gaap:OperatingIncomeLoss>
  <!--Operating Income (Loss)-Parent Company [Member]-->
  <us-gaap:OperatingIncomeLoss id="Fact_9d2277b0e5ea4330849a0703834aecf8" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">-3958000</us-gaap:OperatingIncomeLoss>
  <!--Current portion of operating lease liability (note 8)-->
  <us-gaap:OperatingLeaseLiabilityCurrent id="Fact_2983d34059da41acae3fe409e15b5553" contextRef="c20181231" unitRef="U001" decimals="-3">0</us-gaap:OperatingLeaseLiabilityCurrent>
  <!--Current portion of operating lease liability (note 8)-->
  <us-gaap:OperatingLeaseLiabilityCurrent id="Fact_8e380b6a8d9145f1811de1916d82ed56" contextRef="c20191231" unitRef="U001" decimals="-3">1355000</us-gaap:OperatingLeaseLiabilityCurrent>
  <!--Long-term operating lease liability (note 8)-->
  <us-gaap:OperatingLeaseLiabilityNoncurrent id="Fact_a17be0ff20534c83b74375bc7be015a6" contextRef="c20191231" unitRef="U001" decimals="-3">2532000</us-gaap:OperatingLeaseLiabilityNoncurrent>
  <!--Long-term operating lease liability (note 8)-->
  <us-gaap:OperatingLeaseLiabilityNoncurrent id="Fact_f01142c8811d4e9e9e7446dc138f053f" contextRef="c20181231" unitRef="U001" decimals="-3">0</us-gaap:OperatingLeaseLiabilityNoncurrent>
  <!--Operating cash outflow from operating leases-->
  <us-gaap:OperatingLeasePayments id="Fact_36c4534bb1c941e8ad8edd1b7e6884dc" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">1597000</us-gaap:OperatingLeasePayments>
  <!--Operating loss carry-forwards, expiration date-State and Local Jurisdiction [Member]-->
  <us-gaap:OperatingLossCarryforwardsExpirationDate id="Fact_6fb4d4b88e95417fadb86d0fa413da48" contextRef="c20190101to20191231_IncomeTaxAuthorityAxis_StateAndLocalJurisdictionMember">2032-12-31</us-gaap:OperatingLossCarryforwardsExpirationDate>
  <!--Operating loss carry-forwards, expiration date-Domestic Tax Authority [Member]-->
  <us-gaap:OperatingLossCarryforwardsExpirationDate id="Fact_a7e6a04e6ef7441b8a35ae2af71a1320" contextRef="c20190101to20191231_IncomeTaxAuthorityAxis_DomesticCountryMember">2023-12-31</us-gaap:OperatingLossCarryforwardsExpirationDate>
  <!--Operating loss carry-forwards, expiration date-Foreign Tax Authority [Member]-->
  <us-gaap:OperatingLossCarryforwardsExpirationDate id="Fact_ccd9cea623dd42a0bf1babb0d09cfc8c" contextRef="c20190101to20191231_IncomeTaxAuthorityAxis_ForeignCountryMember">2019-12-31</us-gaap:OperatingLossCarryforwardsExpirationDate>
  <!--Present value of lease liabilities-Accounting Standards Update 2016-02 [Member]-->
  <us-gaap:OperatingLeaseLiability id="Fact_c58346b841d147598de70e02f99d0ed6" contextRef="c20191231_AdjustmentsForNewAccountingPronouncementsAxis_AccountingStandardsUpdate201602Member" unitRef="U001" decimals="-3">5109000</us-gaap:OperatingLeaseLiability>
  <!--Present value of lease liabilities-->
  <us-gaap:OperatingLeaseLiability id="Fact_82f2d5d6e6e14a519b06b1dd68ef2a83" contextRef="c20191231" unitRef="U001" decimals="-3">3887000</us-gaap:OperatingLeaseLiability>
  <!--Net operating loss carry-forwards-Domestic Tax Authority [Member]-->
  <us-gaap:OperatingLossCarryforwards id="Fact_01b3e2967dd5436b9d826ee3447bdba0" contextRef="c20191231_IncomeTaxAuthorityAxis_DomesticCountryMember" unitRef="U001" decimals="-3">12158000</us-gaap:OperatingLossCarryforwards>
  <!--Net operating loss carry-forwards-Domestic Tax Authority [Member]-->
  <us-gaap:OperatingLossCarryforwards id="Fact_14aedca26ac24d9d9b6f1907d0cc62d9" contextRef="c20181231_IncomeTaxAuthorityAxis_DomesticCountryMember" unitRef="U001" decimals="-3">15867000</us-gaap:OperatingLossCarryforwards>
  <!--Net operating loss carry-forwards-Foreign Tax Authority [Member]-->
  <us-gaap:OperatingLossCarryforwards id="Fact_207df231342f472a81799bdc0d6bf290" contextRef="c20191231_IncomeTaxAuthorityAxis_ForeignCountryMember" unitRef="U001" decimals="-3">66000</us-gaap:OperatingLossCarryforwards>
  <!--Net operating loss carry-forwards-Foreign Tax Authority [Member]-->
  <us-gaap:OperatingLossCarryforwards id="Fact_272379e710884c76a4bddf8d33b7b90b" contextRef="c20181231_IncomeTaxAuthorityAxis_ForeignCountryMember" unitRef="U001" decimals="-3">66000</us-gaap:OperatingLossCarryforwards>
  <!--Net operating loss carry-forwards-State and Local Jurisdiction [Member]-->
  <us-gaap:OperatingLossCarryforwards id="Fact_ae4003a92dab4edeaf032242a4b1b546" contextRef="c20181231_IncomeTaxAuthorityAxis_StateAndLocalJurisdictionMember" unitRef="U001" decimals="-3">714000</us-gaap:OperatingLossCarryforwards>
  <!--Net operating loss carry-forwards-State and Local Jurisdiction [Member]-->
  <us-gaap:OperatingLossCarryforwards id="Fact_ed348cdd7953449c94870ef84b2905f1" contextRef="c20191231_IncomeTaxAuthorityAxis_StateAndLocalJurisdictionMember" unitRef="U001" decimals="-3">634000</us-gaap:OperatingLossCarryforwards>
  <!--Other Noncurrent Liabilities [Table Text Block]-->
  <us-gaap:OtherNoncurrentLiabilitiesTableTextBlock id="Fact_cc8ee361b313486aa5da9d1ed0be20a3" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div&gt;As of December 31, 2019 and 2018, other long-term liabilities consisted of the following unearned government subsidies:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Subsidies&amp;#160;to&amp;#160;Stress&amp;#160;Free&amp;#160;Polishing&amp;#160;project,&amp;#160;commenced&amp;#160;in&amp;#160;2008&amp;#160;and&amp;#160;2017&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;1,251&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,483&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Subsidies&amp;#160;to&amp;#160;Electro&amp;#160;Copper&amp;#160;Plating&amp;#160;project,&amp;#160;commenced&amp;#160;in&amp;#160;2014&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;2,666&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,860&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;&lt;div style="color: #000000;"&gt;Subsidies&amp;#160;to&amp;#160;Polytetrafluoroethylene project,&amp;#160;commenced&amp;#160;in&amp;#160;2018&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;135&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;178&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Other&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;134&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;62&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;4,186&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;4,583&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:OtherNoncurrentLiabilitiesTableTextBlock>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax-->
  <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax id="Fact_e1c0031e60f04cbfb18ec12e42eef9e8" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">899000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax-->
  <us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax id="Fact_eada53d491cd4c2289803b9386eebf1f" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">979000</us-gaap:OtherComprehensiveIncomeLossForeignCurrencyTransactionAndTranslationAdjustmentNetOfTax>
  <!--Other receivables-->
  <us-gaap:OtherReceivablesNetCurrent id="Fact_0d0a4a95a7f04feeb67a9ae1525ec13f" contextRef="c20191231" unitRef="U001" decimals="-3">2603000</us-gaap:OtherReceivablesNetCurrent>
  <!--Other receivables-->
  <us-gaap:OtherReceivablesNetCurrent id="Fact_15f29afc507e45c3b401c9a1005c8225" contextRef="c20181231" unitRef="U001" decimals="-3">3547000</us-gaap:OtherReceivablesNetCurrent>
  <!--Other receivables-Parent Company [Member]-->
  <us-gaap:OtherReceivablesNetCurrent id="Fact_2623e7365760419b8b4298f3f348ae93" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">5000</us-gaap:OtherReceivablesNetCurrent>
  <!--Other receivables-Parent Company [Member]-->
  <us-gaap:OtherReceivablesNetCurrent id="Fact_524c419af5e34329955bd8846235d2f9" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">175000</us-gaap:OtherReceivablesNetCurrent>
  <!--Other payables and accrued expenses (note 7)-->
  <us-gaap:OtherAccountsPayableAndAccruedLiabilities id="Fact_3f2dca40242544b5b334c6f4f2e6b885" contextRef="c20191231" unitRef="U001" decimals="-3">12874000</us-gaap:OtherAccountsPayableAndAccruedLiabilities>
  <!--Other payables and accrued expenses (note 7)-->
  <us-gaap:OtherAccountsPayableAndAccruedLiabilities id="Fact_aa67a3ce4a414baebc16863f24a14db4" contextRef="c20181231" unitRef="U001" decimals="-3">10410000</us-gaap:OtherAccountsPayableAndAccruedLiabilities>
  <!--Other long-term assets-->
  <us-gaap:OtherAssetsNoncurrent id="Fact_75b55a691c66436983699331282f9e18" contextRef="c20191231" unitRef="U001" decimals="-3">192000</us-gaap:OtherAssetsNoncurrent>
  <!--Other long-term assets-->
  <us-gaap:OtherAssetsNoncurrent id="Fact_87b73741cec24cd7af777ef066b94b4c" contextRef="c20181231" unitRef="U001" decimals="-3">40000</us-gaap:OtherAssetsNoncurrent>
  <!--OTHER LONG-TERM LIABILITIES-->
  <us-gaap:OtherLiabilitiesDisclosureTextBlock id="Fact_110b68ae5b30475bbee0231cdfe9dbc1" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="color: #000000; font-weight: bold;"&gt;NOTE&amp;#160;9&amp;#8211; OTHER LONG-TERM LIABILITIES&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div&gt;Other long-term liabilities represent government subsidies received from PRC governmental authorities for development and commercialization of certain technology but not yet recognized (note 2). As of December 31, 2019 and 2018, other long-term liabilities consisted of the following unearned government subsidies:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Subsidies&amp;#160;to&amp;#160;Stress&amp;#160;Free&amp;#160;Polishing&amp;#160;project,&amp;#160;commenced&amp;#160;in&amp;#160;2008&amp;#160;and&amp;#160;2017&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;1,251&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,483&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Subsidies&amp;#160;to&amp;#160;Electro&amp;#160;Copper&amp;#160;Plating&amp;#160;project,&amp;#160;commenced&amp;#160;in&amp;#160;2014&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;2,666&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,860&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;&lt;div style="color: #000000;"&gt;Subsidies&amp;#160;to&amp;#160;Polytetrafluoroethylene project,&amp;#160;commenced&amp;#160;in&amp;#160;2018&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;135&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;178&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Other&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;134&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;62&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;4,186&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;4,583&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:OtherLiabilitiesDisclosureTextBlock>
  <!--Other income, net-->
  <us-gaap:OtherNonoperatingIncomeExpense id="Fact_adcdceaa723e4e81bd3ee4499ff3d860" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">1393000</us-gaap:OtherNonoperatingIncomeExpense>
  <!--Other income, net-->
  <us-gaap:OtherNonoperatingIncomeExpense id="Fact_bbd1f26b0bbd430baa5c9191915cb3ca" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">1255000</us-gaap:OtherNonoperatingIncomeExpense>
  <!--Other long-term liabilities (note 9)-->
  <us-gaap:OtherLiabilitiesNoncurrent id="Fact_a4a0fd4d7097435081339ad988f1d9b8" contextRef="c20181231" unitRef="U001" decimals="-3">4583000</us-gaap:OtherLiabilitiesNoncurrent>
  <!--Other long-term liabilities (note 9)-->
  <us-gaap:OtherLiabilitiesNoncurrent id="Fact_fe7f2a16b27d4bd68111b71abf76d69c" contextRef="c20191231" unitRef="U001" decimals="-3">4186000</us-gaap:OtherLiabilitiesNoncurrent>
  <!--Other long-term liabilities (note 9)-Other [Member]-->
  <us-gaap:OtherLiabilitiesNoncurrent id="Fact_02a0039e5d4f42db8d028db55755d56d" contextRef="c20191231_DebtInstrumentAxis_OtherMember" unitRef="U001" decimals="-3">134000</us-gaap:OtherLiabilitiesNoncurrent>
  <!--Other long-term liabilities (note 9)-Subsidies to Polytetrafluoroethylene [Member]-->
  <us-gaap:OtherLiabilitiesNoncurrent id="Fact_169a9c7fac9d4278812ded6fc99c8bd0" contextRef="c20191231_DebtInstrumentAxis_SubsidiesToPolytetrafluoroethyleneMember" unitRef="U001" decimals="-3">135000</us-gaap:OtherLiabilitiesNoncurrent>
  <!--Other long-term liabilities (note 9)-Subsidies to Polytetrafluoroethylene [Member]-->
  <us-gaap:OtherLiabilitiesNoncurrent id="Fact_1e36a6ec0cfa404fa8e9610a58d2d771" contextRef="c20181231_DebtInstrumentAxis_SubsidiesToPolytetrafluoroethyleneMember" unitRef="U001" decimals="-3">178000</us-gaap:OtherLiabilitiesNoncurrent>
  <!--Other long-term liabilities (note 9)-Subsidies to Electro Copper Plating project [Member]-->
  <us-gaap:OtherLiabilitiesNoncurrent id="Fact_64fc909e4f8c420f8655dc652e4012da" contextRef="c20181231_DebtInstrumentAxis_SubsidiesToElectroCopperPlatingProjectMember" unitRef="U001" decimals="-3">2860000</us-gaap:OtherLiabilitiesNoncurrent>
  <!--Other long-term liabilities (note 9)-Subsidies to Electro Copper Plating project [Member]-->
  <us-gaap:OtherLiabilitiesNoncurrent id="Fact_70d3418969b44a5cb452f0f21310080e" contextRef="c20191231_DebtInstrumentAxis_SubsidiesToElectroCopperPlatingProjectMember" unitRef="U001" decimals="-3">2666000</us-gaap:OtherLiabilitiesNoncurrent>
  <!--Other long-term liabilities (note 9)-Subsidies to Stress Free Polishing project [Member]-->
  <us-gaap:OtherLiabilitiesNoncurrent id="Fact_89813adbd35546ca8b3a63f9f6cce738" contextRef="c20181231_DebtInstrumentAxis_SubsidiesToStressFreePolishingProjectMember" unitRef="U001" decimals="-3">1483000</us-gaap:OtherLiabilitiesNoncurrent>
  <!--Other long-term liabilities (note 9)-Other [Member]-->
  <us-gaap:OtherLiabilitiesNoncurrent id="Fact_c01ba87a61db47b59c465767006bace8" contextRef="c20181231_DebtInstrumentAxis_OtherMember" unitRef="U001" decimals="-3">62000</us-gaap:OtherLiabilitiesNoncurrent>
  <!--Other long-term liabilities (note 9)-Subsidies to Stress Free Polishing project [Member]-->
  <us-gaap:OtherLiabilitiesNoncurrent id="Fact_d59009ad3ca149fdbd642d33886cbbb0" contextRef="c20191231_DebtInstrumentAxis_SubsidiesToStressFreePolishingProjectMember" unitRef="U001" decimals="-3">1251000</us-gaap:OtherLiabilitiesNoncurrent>
  <!--Other payable-Parent Company [Member]-->
  <us-gaap:OtherNotesPayable id="Fact_b2930a309b304ae0b72b8c14d6b079dc" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">589000</us-gaap:OtherNotesPayable>
  <!--Other payable-Parent Company [Member]-->
  <us-gaap:OtherNotesPayable id="Fact_cc33c6b780c54a8e8ff51fc4f48af69c" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">58000</us-gaap:OtherNotesPayable>
  <!--Other Comprehensive Income (Loss), Foreign Currency Translation Adjustment, Tax, Portion Attributable to Noncontrolling Interest-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTranslationAdjustmentTaxPortionAttributableToNoncontrollingInterest id="Fact_ae498c4338c94614b521138fdbf82055" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-81000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTranslationAdjustmentTaxPortionAttributableToNoncontrollingInterest>
  <!--Others-->
  <us-gaap:OtherAccruedLiabilitiesCurrent id="Fact_60b899a6a79b44c199978c13e2593871" contextRef="c20181231" unitRef="U001" decimals="-3">1950000</us-gaap:OtherAccruedLiabilitiesCurrent>
  <!--Others-->
  <us-gaap:OtherAccruedLiabilitiesCurrent id="Fact_80ab1d06b4bb477383377706ff0c0f01" contextRef="c20191231" unitRef="U001" decimals="-3">2268000</us-gaap:OtherAccruedLiabilitiesCurrent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-AOCI Attributable to Parent [Member]-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_0dfde402dbd14f329fd21251e92e1f81" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">-818000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-Retained Earnings [Member]-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_13b05b904e1f4a738e085abcb927822f" contextRef="c20180101to20181231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">0</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-Additional Paid-In Capital [Member]-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_1b8141ae41d04b2f902419b6a44bcd07" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">0</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-Additional Paid-In Capital [Member]-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_2d800d0a0ab74ae4be3b28dc3f563ea1" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">0</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-AOCI Attributable to Parent [Member]-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_5a5a03c91d2441a98e5422a0f9bbff2f" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">-979000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-Common Class B [Member]-Common Stock [Member]-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_62c1b0f7b5264923b9d6c7d963dc38dc" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_6e6980379a5d4ebe84236fd25908a717" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">-979000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_7be81d0b75764d3a8ce07bfbbe640fe2" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">-818000</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-Common Class A [Member]-Common Stock [Member]-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_8121043b0a5a41b5a2b9206d432977b0" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-Common Stock [Member]-Common Class B [Member]-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_854f299a4c3b49a7bbca40aa6e20c2e3" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_9aaf7e6e57204eaebbf0cc3fe5fae898" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Other Comprehensive Income (Loss), Foreign Currency Transaction and Translation Adjustment, Net of Tax, Portion Attributable to Parent-Retained Earnings [Member]-->
  <us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent id="Fact_c785d800e7ec4eb0b1fbd81e4f3ee274" contextRef="c20190101to20191231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">0</us-gaap:OtherComprehensiveIncomeForeignCurrencyTransactionAndTranslationAdjustmentNetOfTaxPortionAttributableToParent>
  <!--Payments for Repurchase of Common Stock-->
  <us-gaap:PaymentsForRepurchaseOfCommonStock id="Fact_d13783b5ea574efc9477ee7eda90f83a" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">2827000</us-gaap:PaymentsForRepurchaseOfCommonStock>
  <!--Payments for Repurchase of Common Stock-->
  <us-gaap:PaymentsForRepurchaseOfCommonStock id="Fact_d3210656797e43c5ad8fe543dd58a78b" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:PaymentsForRepurchaseOfCommonStock>
  <!--Monthly rental fee-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:PaymentsForRent id="Fact_337e4562c1b84986bb8d64dd2f8d532e" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-3">2000</us-gaap:PaymentsForRent>
  <!--Monthly rental fee-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:PaymentsForRent id="Fact_3fae4a2b06b74174a6f1443e3bdf8100" contextRef="c20180426to20180426_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-3">55000</us-gaap:PaymentsForRent>
  <!--Monthly rental fee-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:PaymentsForRent id="Fact_6c213e79ccd24c28b89a1df74eb9e60f" contextRef="c20180426to20180426_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U005" decimals="-3">366000</us-gaap:PaymentsForRent>
  <!--Monthly rental fee-Maximum [Member]-ACM Wuxi [Member]-->
  <us-gaap:PaymentsForRent id="Fact_ad00f9b50bd94136bca16387c0bdbb6f" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMWuxiMember_RangeAxis_MaximumMember" unitRef="U001" decimals="-3">1000</us-gaap:PaymentsForRent>
  <!--Payments to Acquire Intangible Assets-->
  <us-gaap:PaymentsToAcquireIntangibleAssets id="Fact_a4d726da3e644f29b600673ad6958334" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">241000</us-gaap:PaymentsToAcquireIntangibleAssets>
  <!--Payments to Acquire Intangible Assets-->
  <us-gaap:PaymentsToAcquireIntangibleAssets id="Fact_d9063804a63e4619b5a3d5e2b763d4b8" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">154000</us-gaap:PaymentsToAcquireIntangibleAssets>
  <!--Payments to Acquire Property, Plant, and Equipment-->
  <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment id="Fact_0e5b4ba8c60244608a964bd54545aa1e" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">1830000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
  <!--Payments to Acquire Property, Plant, and Equipment-->
  <us-gaap:PaymentsToAcquirePropertyPlantAndEquipment id="Fact_8217548f8c094f03a9b96b06ff559048" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">971000</us-gaap:PaymentsToAcquirePropertyPlantAndEquipment>
  <!--Payments to Acquire Interest in Subsidiaries and Affiliates-->
  <us-gaap:PaymentsToAcquireInterestInSubsidiariesAndAffiliates id="Fact_b81dd919edf44a548b6b97e4b1ed2f3b" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:PaymentsToAcquireInterestInSubsidiariesAndAffiliates>
  <!--Payments to Acquire Interest in Subsidiaries and Affiliates-->
  <us-gaap:PaymentsToAcquireInterestInSubsidiariesAndAffiliates id="Fact_e3cf92f5e789424bb2f4db3e316eeda5" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">4406000</us-gaap:PaymentsToAcquireInterestInSubsidiariesAndAffiliates>
  <!--Prepaid expenses-->
  <us-gaap:PrepaidExpenseCurrent id="Fact_9966d94875924430b2b42439e1c183ed" contextRef="c20191231" unitRef="U001" decimals="-3">2047000</us-gaap:PrepaidExpenseCurrent>
  <!--Prepaid expenses-->
  <us-gaap:PrepaidExpenseCurrent id="Fact_b080278f1a0b4ca8a997bd62a8c66c3c" contextRef="c20181231" unitRef="U001" decimals="-3">1985000</us-gaap:PrepaidExpenseCurrent>
  <!--Proceeds from Issuance of Common Stock-->
  <us-gaap:ProceedsFromIssuanceOfCommonStock id="Fact_b5aef8e559e147e5b2ed01122d8a0714" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">26434000</us-gaap:ProceedsFromIssuanceOfCommonStock>
  <!--Proceeds from Issuance of Common Stock-->
  <us-gaap:ProceedsFromIssuanceOfCommonStock id="Fact_ca353d6d3e0f417b9d1fa88291da7ae9" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:ProceedsFromIssuanceOfCommonStock>
  <!--Proceeds from Issuance of Common Stock-Common Class A [Member]-->
  <us-gaap:ProceedsFromIssuanceOfCommonStock id="Fact_40b5400df7a74a01bd9a79b333cb77f6" contextRef="c20190801to20190831_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">28750000</us-gaap:ProceedsFromIssuanceOfCommonStock>
  <!--Proceeds from sale of interest in subsidary-CleanChip Technologies Limited [Member]-->
  <us-gaap:ProceedsFromDivestitureOfInterestInConsolidatedSubsidiaries id="Fact_261b8fbeae864556b88d834223663dcc" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_CleanChipTechnologiesLimitedMember" unitRef="U001" decimals="-3">3500000</us-gaap:ProceedsFromDivestitureOfInterestInConsolidatedSubsidiaries>
  <!--Proceeds from Noncontrolling Interests-->
  <us-gaap:ProceedsFromMinorityShareholders id="Fact_4dc2e39c57ed4906a81f94d13b622dfb" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:ProceedsFromMinorityShareholders>
  <!--Proceeds from Noncontrolling Interests-->
  <us-gaap:ProceedsFromMinorityShareholders id="Fact_ed40b00d9ebc4b8da2b0b310f0470c4a" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">59679000</us-gaap:ProceedsFromMinorityShareholders>
  <!--Proceeds from stock option exercise to common stock-->
  <us-gaap:ProceedsFromStockOptionsExercised id="Fact_a5c5adce16f3427b999dd140997efde1" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">528000</us-gaap:ProceedsFromStockOptionsExercised>
  <!--Proceeds from stock option exercise to common stock-->
  <us-gaap:ProceedsFromStockOptionsExercised id="Fact_cc253883edd14775b0fa343308e0665b" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">317000</us-gaap:ProceedsFromStockOptionsExercised>
  <!--Proceeds from short-term borrowings-->
  <us-gaap:ProceedsFromShortTermDebt id="Fact_004c8748ba674e9d8f5781cae76a8721" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">18423000</us-gaap:ProceedsFromShortTermDebt>
  <!--Proceeds from short-term borrowings-->
  <us-gaap:ProceedsFromShortTermDebt id="Fact_1665480ab9534ac984bdce2ae0015370" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">17726000</us-gaap:ProceedsFromShortTermDebt>
  <!--Accrued warranty-->
  <us-gaap:ProductWarrantyAccrualClassifiedCurrent id="Fact_be76140b39df4780aecce8f1c5ee5a60" contextRef="c20181231" unitRef="U001" decimals="-3">1710000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
  <!--Accrued warranty-->
  <us-gaap:ProductWarrantyAccrualClassifiedCurrent id="Fact_f912a8709d64476096ad033aa944804c" contextRef="c20171231" unitRef="U001" decimals="-3">839000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
  <!--Accrued warranty-->
  <us-gaap:ProductWarrantyAccrualClassifiedCurrent id="Fact_37c2b29b3cc04af1bc74bd36107387f6" contextRef="c20191231" unitRef="U001" decimals="-3">2811000</us-gaap:ProductWarrantyAccrualClassifiedCurrent>
  <!--Net income-->
  <us-gaap:ProfitLoss id="Fact_43da45976a5e4732ad59ba055592535e" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">6574000</us-gaap:ProfitLoss>
  <!--Net income-->
  <us-gaap:ProfitLoss id="Fact_83ec3013b0894d0d88f156377a04bd3c" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">19458000</us-gaap:ProfitLoss>
  <!--Useful lives-UNITED STATES-Maximum [Member]-Computer and Office Equipment [Member]-->
  <us-gaap:PropertyPlantAndEquipmentUsefulLife id="Fact_0b37a9e6e3fe442e819548a39c7c58be" contextRef="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_ComputerAndOfficeEquipmentMember_RangeAxis_MaximumMember_StatementGeographicalAxis_US">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
  <!--Useful lives-UNITED STATES-Furniture and Fixtures [Member]-->
  <us-gaap:PropertyPlantAndEquipmentUsefulLife id="Fact_18ef2fda156f4b299f4432b5e2e23081" contextRef="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_FurnitureAndFixturesMember_StatementGeographicalAxis_US">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
  <!--Useful lives-Minimum [Member]-CHINA-Leasehold Improvement [Member]-->
  <us-gaap:PropertyPlantAndEquipmentUsefulLife id="Fact_1f3b48becbf4435a803b3beef062809d" contextRef="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_LeaseholdImprovementsMember_RangeAxis_MinimumMember_StatementGeographicalAxis_CN">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
  <!--Useful lives-CHINA-Maximum [Member]-Transportation Equipment [Member]-->
  <us-gaap:PropertyPlantAndEquipmentUsefulLife id="Fact_37d867ef1a3f48f2aad88dd8e3110c95" contextRef="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_TransportationEquipmentMember_RangeAxis_MaximumMember_StatementGeographicalAxis_CN">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
  <!--Useful lives-UNITED STATES-Computer and Office Equipment [Member]-Minimum [Member]-->
  <us-gaap:PropertyPlantAndEquipmentUsefulLife id="Fact_3a02934657d74a57ad38decdab092fbd" contextRef="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_ComputerAndOfficeEquipmentMember_RangeAxis_MinimumMember_StatementGeographicalAxis_US">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
  <!--Useful lives-CHINA-Furniture and Fixtures [Member]-->
  <us-gaap:PropertyPlantAndEquipmentUsefulLife id="Fact_5f92ac80e2ef428bb58247679e381369" contextRef="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_FurnitureAndFixturesMember_StatementGeographicalAxis_CN">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
  <!--Useful lives-Maximum [Member]-Electronic Equipment [Member]-CHINA-->
  <us-gaap:PropertyPlantAndEquipmentUsefulLife id="Fact_a10ab6478dd04301992934cd59b43c22" contextRef="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_ElectronicEquipmentMember_RangeAxis_MaximumMember_StatementGeographicalAxis_CN">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
  <!--Useful lives-CHINA-Electronic Equipment [Member]-Minimum [Member]-->
  <us-gaap:PropertyPlantAndEquipmentUsefulLife id="Fact_ccade9839145428aba2dee6d7f95efca" contextRef="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_ElectronicEquipmentMember_RangeAxis_MinimumMember_StatementGeographicalAxis_CN">P3Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
  <!--Useful lives-Minimum [Member]-CHINA-Transportation Equipment [Member]-->
  <us-gaap:PropertyPlantAndEquipmentUsefulLife id="Fact_de1da61609bd4cd491798578f89b9264" contextRef="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_TransportationEquipmentMember_RangeAxis_MinimumMember_StatementGeographicalAxis_CN">P4Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
  <!--Useful lives-Manufacturing Equipment [Member]-CHINA-->
  <us-gaap:PropertyPlantAndEquipmentUsefulLife id="Fact_e83f9fbd74034c5780dc68b2aed5f7f5" contextRef="c20190101to20191231_PropertyPlantAndEquipmentByTypeAxis_ManufacturingEquipmentMember_StatementGeographicalAxis_CN">P5Y</us-gaap:PropertyPlantAndEquipmentUsefulLife>
  <!--Total cost-->
  <us-gaap:PropertyPlantAndEquipmentGross id="Fact_332823a0c55f424e91bafb0ec9a5d152" contextRef="c20181231" unitRef="U001" decimals="-3">11778000</us-gaap:PropertyPlantAndEquipmentGross>
  <!--Total cost-Leasehold Improvement [Member]-->
  <us-gaap:PropertyPlantAndEquipmentGross id="Fact_594a18ff0f404c9c8de8c8a525acbe54" contextRef="c20181231_PropertyPlantAndEquipmentByTypeAxis_LeaseholdImprovementsMember" unitRef="U001" decimals="-3">1379000</us-gaap:PropertyPlantAndEquipmentGross>
  <!--Total cost-Office Equipment [Member]-->
  <us-gaap:PropertyPlantAndEquipmentGross id="Fact_612c1abb5a774a18b413b2e8cc978d0c" contextRef="c20181231_PropertyPlantAndEquipmentByTypeAxis_OfficeEquipmentMember" unitRef="U001" decimals="-3">512000</us-gaap:PropertyPlantAndEquipmentGross>
  <!--Total cost-Leasehold Improvement [Member]-->
  <us-gaap:PropertyPlantAndEquipmentGross id="Fact_8a1b4e5be86c414d97a6a4f3277a5e94" contextRef="c20191231_PropertyPlantAndEquipmentByTypeAxis_LeaseholdImprovementsMember" unitRef="U001" decimals="-3">1442000</us-gaap:PropertyPlantAndEquipmentGross>
  <!--Total cost-Office Equipment [Member]-->
  <us-gaap:PropertyPlantAndEquipmentGross id="Fact_94b8533d8e2d4b5fbf63f5fc5b84a6e6" contextRef="c20191231_PropertyPlantAndEquipmentByTypeAxis_OfficeEquipmentMember" unitRef="U001" decimals="-3">627000</us-gaap:PropertyPlantAndEquipmentGross>
  <!--Total cost-Transportation Equipment [Member]-->
  <us-gaap:PropertyPlantAndEquipmentGross id="Fact_b44d386b1fd048189a6cd175dc1a93c6" contextRef="c20191231_PropertyPlantAndEquipmentByTypeAxis_TransportationEquipmentMember" unitRef="U001" decimals="-3">124000</us-gaap:PropertyPlantAndEquipmentGross>
  <!--Total cost-->
  <us-gaap:PropertyPlantAndEquipmentGross id="Fact_dd973d9472d641138e25f74df58eb351" contextRef="c20191231" unitRef="U001" decimals="-3">6095000</us-gaap:PropertyPlantAndEquipmentGross>
  <!--Total cost-Equipment [Member]-->
  <us-gaap:PropertyPlantAndEquipmentGross id="Fact_e1991220c3e9482481e3a5d6b8e67198" contextRef="c20181231_PropertyPlantAndEquipmentByTypeAxis_EquipmentMember" unitRef="U001" decimals="-3">9703000</us-gaap:PropertyPlantAndEquipmentGross>
  <!--Total cost-Equipment [Member]-->
  <us-gaap:PropertyPlantAndEquipmentGross id="Fact_e6e3ed60488246fd8be66256ca3a4be3" contextRef="c20191231_PropertyPlantAndEquipmentByTypeAxis_EquipmentMember" unitRef="U001" decimals="-3">3902000</us-gaap:PropertyPlantAndEquipmentGross>
  <!--Total cost-Transportation Equipment [Member]-->
  <us-gaap:PropertyPlantAndEquipmentGross id="Fact_eccab8904c814000bf9628cb9f63c54c" contextRef="c20181231_PropertyPlantAndEquipmentByTypeAxis_TransportationEquipmentMember" unitRef="U001" decimals="-3">184000</us-gaap:PropertyPlantAndEquipmentGross>
  <!--Property, Plant and Equipment Disclosure [Text Block]-->
  <us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock id="Fact_2fa7ea3d342d4c02a13c97b231b89a1b" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold;"&gt;NOTE 5&amp;#160;&amp;#8211; PROPERTY, PLANT AND EQUIPMENT, NET&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div&gt;At December&amp;#160;31, 2019 and 2018, property, plant and equipment consisted of the following:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: rgb(0, 0, 0); width: 90%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Manufacturing&amp;#160;equipment&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;3,902&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;9,703&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Office&amp;#160;equipment&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;627&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;512&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Transportation&amp;#160;equipment&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;124&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;184&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Leasehold&amp;#160;improvement&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;1,442&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,379&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&amp;#160;cost&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;6,095&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;11,778&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Less:&amp;#160;Total&amp;#160;accumulated&amp;#160;depreciation&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;(3,077&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(8,102&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Construction&amp;#160;in&amp;#160;progress&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;601&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;32&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&amp;#160;property,&amp;#160;plant&amp;#160;and&amp;#160;equipment,&amp;#160;net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;3,619&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;3,708&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Depreciation expense was $713 and $350 for the years ended December&amp;#160;31, 2019 and 2018, respectively. During the year ended December 31, 2019, the Company retired certain fully depreciated manufacturing equipment with cost of $5,824.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentDisclosureTextBlock>
  <!--Manufacturing equipment retired-->
  <us-gaap:PropertyPlantAndEquipmentDisposals id="Fact_b45f47771a834e3aa53bef4ea70ea5bc" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">5824000</us-gaap:PropertyPlantAndEquipmentDisposals>
  <!--Property, Plant and Equipment [Table Text Block]-->
  <us-gaap:PropertyPlantAndEquipmentTextBlock id="Fact_8fb81b0bb0794269ad2ad1ff3d7d0229" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div&gt;At December&amp;#160;31, 2019 and 2018, property, plant and equipment consisted of the following:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: rgb(0, 0, 0); width: 90%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Manufacturing&amp;#160;equipment&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;3,902&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;9,703&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Office&amp;#160;equipment&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;627&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;512&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Transportation&amp;#160;equipment&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;124&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;184&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Leasehold&amp;#160;improvement&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;1,442&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,379&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&amp;#160;cost&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;6,095&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;11,778&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Less:&amp;#160;Total&amp;#160;accumulated&amp;#160;depreciation&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;(3,077&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(8,102&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Construction&amp;#160;in&amp;#160;progress&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;601&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;32&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&amp;#160;property,&amp;#160;plant&amp;#160;and&amp;#160;equipment,&amp;#160;net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;3,619&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;3,708&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentTextBlock>
  <!--Property, plant and equipment, net (note 5)-->
  <us-gaap:PropertyPlantAndEquipmentNet id="Fact_2cc9c448c9bc4dc28570dfc861f615f0" contextRef="c20181231" unitRef="U001" decimals="-3">3708000</us-gaap:PropertyPlantAndEquipmentNet>
  <!--Property, plant and equipment, net (note 5)-->
  <us-gaap:PropertyPlantAndEquipmentNet id="Fact_f3478606a2e24b0cb9b67772ceb91afc" contextRef="c20191231" unitRef="U001" decimals="-3">3619000</us-gaap:PropertyPlantAndEquipmentNet>
  <!--Property, Plant and Equipment, Policy [Policy Text Block]-->
  <us-gaap:PropertyPlantAndEquipmentPolicyTextBlock id="Fact_203cb2678fa5454eb436f7d6ad0b7664" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Property, Plant and Equipment, Net&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Property, plant and equipment are recorded at cost less accumulated depreciation and any provision for impairment in value. Depreciation begins when the asset is placed in service and is calculated by using the straight-line method over the estimated useful life of an asset (or, if shorter, over the lease term). Betterments or renewals are capitalized when incurred. Plant, property and equipment is reviewed each year to determine whether any events or circumstances indicate that the carrying amount of the assets may not be recoverable.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; text-indent: 27.35pt;"&gt;Estimated useful lives of assets in the United States are as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 90%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -12pt; margin-left: 12pt;"&gt;Computer and office equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;3 to 5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -12pt; margin-left: 12pt;"&gt;Furniture and fixtures&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -12pt; margin-left: 12pt;"&gt;Leasehold improvements&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;shorter&amp;#160;of&amp;#160;lease&amp;#160;term&amp;#160;or&amp;#160;estimated useful life&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM&amp;#8217;s subsidiaries follow regulations for depreciation of fixed assets implemented under the PRC&amp;#8217;s Enterprise Income Tax Law, which state that the minimum useful lives used for calculating depreciation for fixed assets are as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; width: 90%; border-collapse: collapse; text-align: left; color: rgb(0, 0, 0);"&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;Manufacturing equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;for small to medium-sized equipment, 5 years; for large equipment,&lt;/div&gt;&lt;div&gt;estimated by purchasing department at time of acceptance&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;Furniture and fixtures&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;Transportation equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;4 to 5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;Electronic equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;3 to 5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;Leasehold improvements&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;remaining lease term for improvements on leased fixed assets or,&lt;/div&gt;&lt;div&gt;for large improvements, estimated useful life;&lt;/div&gt;&lt;div&gt;not less than 3 years for non-fixed asset repairs&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Expenditures for maintenance and repairs that neither materially add to the value of the property nor appreciably prolong the life of the property are charged to expense as incurred. Upon retirement or sale of an asset, the cost of the asset and the related accumulated depreciation are eliminated from the accounts and any resulting gain or loss is credited or charged to income.&lt;/div&gt;&lt;/div&gt;</us-gaap:PropertyPlantAndEquipmentPolicyTextBlock>
  <!--Receivable [Policy Text Block]-->
  <us-gaap:ReceivablesPolicyTextBlock id="Fact_d9819c0bdea44784847da18991c68cec" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Accounts Receivable&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Accounts receivable are presented net of an allowance for doubtful accounts. The Company reviews its accounts receivable on a periodic basis and makes general and specific allowances when there is doubt as to the collectability of individual balances. In evaluating the collectability of individual receivable balances, the Company considers many factors, including the age of the balance, a customer&amp;#8217;s historical payment history and credit worthiness, and current economic trends. Accounts are written off after all collection efforts have been exhausted. At December 31, 2019 and 2018, the Company, based on a review of its outstanding balances and its customers, determined the allowance for doubtful accounts in the amount of $0 and $0 respectively.&lt;/div&gt;&lt;/div&gt;</us-gaap:ReceivablesPolicyTextBlock>
  <!--Components of Change in Redeemable Non-controlling Interests-->
  <us-gaap:RedeemableNoncontrollingInterestTableTextBlock id="Fact_cb7ce124b67e43c39832c3ab238ed631" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;The components of the change in the redeemable non-controlling interests for the year ended December 31, 2019 are presented in the following table:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 80%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000; font-weight: bold;"&gt;Balance at January 1, 2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #0D0D0D;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 68%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Increase in redeemable non-controlling interests due to issuance of common stock&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 68%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Tranche 1:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;27,264&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 68%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Tranche 2:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;32,415&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net income attributable to redeemable non-controlling interests&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;564&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 68%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Effect of foreign currency translation loss attributable to redeemable non-controlling interests&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(81&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000; font-weight: bold;"&gt;Balance at December 31, 2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;60,162&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:RedeemableNoncontrollingInterestTableTextBlock>
  <!--Redeemable non-controlling interests (note 13)-->
  <us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount id="Fact_7cf1de5832884c5abb481c3bfe82e514" contextRef="c20191231" unitRef="U001" decimals="-3">60162000</us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount>
  <!--Redeemable non-controlling interests (note 13)-->
  <us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount id="Fact_fa7894de34204862aabf8915a29c7233" contextRef="c20181231" unitRef="U001" decimals="-3">0</us-gaap:RedeemableNoncontrollingInterestEquityCarryingAmount>
  <!--Lease expenses and payable for leasehold improvement due to a related party-Shanghai Zhangjiang Group Co., Ltd. [Member]-->
  <us-gaap:RelatedPartyTransactionAmountsOfTransaction id="Fact_0c57fb9218f341d0bcbee1f764d00057" contextRef="c20190101to20191231_RelatedPartyTransactionsByRelatedPartyAxis_ShanghaiZhangjiangGroupCoLtdMember" unitRef="U001" decimals="-3">0</us-gaap:RelatedPartyTransactionAmountsOfTransaction>
  <!--Lease expenses and payable for leasehold improvement due to a related party-Shanghai Zhangjiang Group Co., Ltd. [Member]-->
  <us-gaap:RelatedPartyTransactionAmountsOfTransaction id="Fact_4fee360c657d422e89abb65df61a02a5" contextRef="c20180101to20181231_RelatedPartyTransactionsByRelatedPartyAxis_ShanghaiZhangjiangGroupCoLtdMember" unitRef="U001" decimals="-3">53000</us-gaap:RelatedPartyTransactionAmountsOfTransaction>
  <!--Related Party Transactions Disclosure [Text Block]-->
  <us-gaap:RelatedPartyTransactionsDisclosureTextBlock id="Fact_39c2a19c294140a496acfde2721a49fd" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold; text-align: justify;"&gt;NOTE 11 &amp;#8211; RELATED PARTY BALANCES AND TRANSACTIONS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;On August 18, 2017, ACM and Ninebell, its equity method investment affiliate (note 10), entered into a loan agreement pursuant to which ACM made an interest-free loan of $946 to Ninebell, payable in 180 days or automatically extended another 180 days if in default. The loan was secured by a pledge of Ninebell&amp;#8217;s accounts receivable due from ACM and all money that Ninebell received from ACM. Ninebell repaid the loan in March 2018. ACM purchased materials from Ninebell amounting to $8,572 and $7,785 during the years ended December 31, 2019 and 2018, respectively. As of December 31, 2019 and 2018, accounts payable due to Ninebell were $727 and $1,477, respectively, and prepaid to Ninebell for material purchases were $348 and $572, respectively.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;ACM purchased materials from Shengyi amounting to $856 during the year ended December 31, 2019. As of December 31, 2019, accounts payable due to Shengyi was $488.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;In 2007 ACM Shanghai entered into an operating lease agreement with Shanghai Zhangjiang Group Co., Ltd. (&amp;#8220;Zhangjiang Group&amp;#8221;) to lease manufacturing and office space located in Shanghai, China. An affiliate of Zhangjiang Group holds 787,098 shares of Class A common stock that it acquired in September 2017 for $5,903. Pursuant to the lease agreement, Zhangjiang Group provided $771 to ACM Shanghai for leasehold improvements. In September 2016 the lease agreement was amended to modify payment terms and extend the lease through December 31, 2017. From January 1 to April 25, 2018, ACM Shanghai leased the property on a month-to-month basis. On April 26, 2018, ACM Shanghai entered into a renewed lease with Zhangjiang Group for the period from January 1, 2018 through December 31, 2022. Under the lease, ACM Shanghai would pay a monthly rental fee of approximately RMB 366 (equivalent to $55). The required security deposit is RMB 1,077 (equivalent to $163). The Company incurred leasing expenses under the lease agreement of $595 and $620 during the years ended December 31, 2019 and 2018, respectively. As of December 31, 2019 and 2018, payables to Zhangjiang Group for lease expenses and leasehold improvements recorded as other payables and accrued expenses amounted to $0 and $53, respectively (note 7).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;On December 9, 2016, Shengxin (Shanghai) Management Consulting Limited Partnership (&amp;#8220;SMC&amp;#8221;), a&amp;#160;PRC limited partnership owned by employees of ACM Shanghai, including Jian Wang, the Chief Executive Officer and President of ACM Shanghai and the brother of David H. Wang (a related party, see note 11), delivered RMB 20,124 ($2,981 as of the close of business on such date) in cash (the &amp;#8220;SMC Investment&amp;#8221;) to ACM Shanghai for potential investment pursuant to terms to be subsequently negotiated. On March 14, 2017, ACM, ACM Shanghai and SMC entered into a securities purchase agreement (the &amp;#8220;SMC Agreement&amp;#8221;) pursuant to which, in exchange for the SMC Investment, (a)&amp;#160;ACM issued to SMC a warrant (the &amp;#8220;SMC Warrant&amp;#8221;) exercisable, for cash or on a cashless basis, to purchase, at any time on or before May&amp;#160;17, 2023, all, but not less than all, of 397,502 shares of Class A common stock at a price of $7.50 per share, for a total exercise price of $2,981 and (b)&amp;#160;ACM Shanghai agreed to repay the SMC Investment within 60 days after exercise of the SMC Warrant. On March 30, 2018, SMC exercised the SMC Warrant in full and purchased 397,502 shares of Class A common stock (note 12). SMC borrowed the funds to pay the SMC Warrant exercise price pursuant to a senior secured promissory note in the principal amount of $2,981 issued to the Company. The note bears interest at a rate of 3.01% per annum and matures on August 17, 2023 and is secured by a pledge of the shares issued upon exercise of the SMC Warrant. As described in the following paragraph, in the third quarter of 2019 ACM repurchased a total of 154,821 of the SMC Warrant shares from SMC at a per share price of $13.195, of which (a) $1,161 was applied to reduce SMC&amp;#8217;s obligations to ACM Shanghai under the SMC Note and the remaining $882 was paid to SMC. In a separate transaction in August, 2019, ACM Shanghai repaid $1,161 of the SMC Investment in cash.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;On August 14, 2019, ACM entered into an equity purchase agreement (the &amp;#8220;Equity Purchase Agreement&amp;#8221;) under which it agreed to repurchase, at a price per share of $13.195 (the net proceeds per share ACM received in a public offering of Class A common stock, as described in note 12), shares of Class A common stock from certain directors, employees and SMC upon the exercise of the underwriters&amp;#8217; over-allotment option in connection with the public offering in August 2019. The total consideration to the directors, employees and SMC, in exchange for their surrender of an aggregate of 214,286 shares of Class A common stock and cancellation of options to acquire 53,571 shares of Class A common stock (note 14) amounted to a total of $3,403, which was based at a price of $13.195 per share equal to the net proceeds per share ACM received from the over-allotment option in connection with the offering.&lt;/div&gt;&lt;/div&gt;</us-gaap:RelatedPartyTransactionsDisclosureTextBlock>
  <!--Purchased materials amount-Ninebell Co., Ltd [Member]-->
  <us-gaap:RelatedPartyTransactionPurchasesFromRelatedParty id="Fact_1f498ba50ad04cc991ce13798bd0f28c" contextRef="c20190101to20191231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember" unitRef="U001" decimals="-3">8572000</us-gaap:RelatedPartyTransactionPurchasesFromRelatedParty>
  <!--Purchased materials amount-Ninebell Co., Ltd [Member]-->
  <us-gaap:RelatedPartyTransactionPurchasesFromRelatedParty id="Fact_22589e1ed331488bb76d7495ef7e9421" contextRef="c20180101to20181231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember" unitRef="U001" decimals="-3">7785000</us-gaap:RelatedPartyTransactionPurchasesFromRelatedParty>
  <!--Purchased materials amount-Shengyi Semiconductor Technology Company Limited [Member]-->
  <us-gaap:RelatedPartyTransactionPurchasesFromRelatedParty id="Fact_5450ba00f53e41ef8738e2030c16f314" contextRef="c20190101to20191231_RelatedPartyTransactionsByRelatedPartyAxis_ShengyiSemiconductorTechnologyCompanyLimitedMember" unitRef="U001" decimals="-3">856000</us-gaap:RelatedPartyTransactionPurchasesFromRelatedParty>
  <!--Repayment of Notes Receivable from Related Parties-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <us-gaap:RepaymentOfNotesReceivableFromRelatedParties id="Fact_514832d3a390445198feb9ed903df5c9" contextRef="c20190701to20190930_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember" unitRef="U001" decimals="-3">882000</us-gaap:RepaymentOfNotesReceivableFromRelatedParties>
  <!--Repayment of Notes Receivable from Related Parties-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:RepaymentOfNotesReceivableFromRelatedParties id="Fact_78fe6f3b7cca46c389103ada58cd68ef" contextRef="c20190801to20190831_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-3">1161000</us-gaap:RepaymentOfNotesReceivableFromRelatedParties>
  <!--Short-term borrowings repaid-->
  <us-gaap:RepaymentsOfShortTermDebt id="Fact_275f36df97b043c9b445d63b0af1e220" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">14005000</us-gaap:RepaymentsOfShortTermDebt>
  <!--Short-term borrowings repaid-->
  <us-gaap:RepaymentsOfShortTermDebt id="Fact_52da2b9235a54c90bcfbe17c4625face" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">13131000</us-gaap:RepaymentsOfShortTermDebt>
  <!--Short-term borrowings repaid-Line of Credit 3 [Member]-->
  <us-gaap:RepaymentsOfShortTermDebt id="Fact_d7dcee9afade4918b805937e7989ee98" contextRef="c20191213to20191213_DebtInstrumentAxis_LineOfCredit3Member" unitRef="U005" decimals="-3">14500000</us-gaap:RepaymentsOfShortTermDebt>
  <!--Research and Development Expense, Policy [Policy Text Block]-->
  <us-gaap:ResearchAndDevelopmentExpensePolicy id="Fact_8a0c15fc5d6849fdaf43158ccc03d40f" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Research and Development Costs&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Research and development costs relating to the development of new products and processes, including significant improvements and refinements to existing products or to the process of supporting customer evaluations of tools, including the development of new tools for evaluation by customers during the product demonstration process, are expensed as incurred.&lt;/div&gt;&lt;/div&gt;</us-gaap:ResearchAndDevelopmentExpensePolicy>
  <!--Research and development-->
  <us-gaap:ResearchAndDevelopmentExpense id="Fact_92baee9e63e24472a7031a9d040a465b" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">10380000</us-gaap:ResearchAndDevelopmentExpense>
  <!--Research and development-->
  <us-gaap:ResearchAndDevelopmentExpense id="Fact_f649688da75541cba52bcbce0fa33582" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">12900000</us-gaap:ResearchAndDevelopmentExpense>
  <!--Research and development-Parent Company [Member]-->
  <us-gaap:ResearchAndDevelopmentExpense id="Fact_028ff512d9ad4afc858b8cdd47581023" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">255000</us-gaap:ResearchAndDevelopmentExpense>
  <!--Research and development-Parent Company [Member]-->
  <us-gaap:ResearchAndDevelopmentExpense id="Fact_e9bd46f540c446ccb256171d62209af3" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">476000</us-gaap:ResearchAndDevelopmentExpense>
  <!--RESTRICTED NET ASSETS-->
  <us-gaap:RestrictedAssetsDisclosureTextBlock id="Fact_310cc92ba3cf48f98237bb566b7a9474" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold; text-align: justify;"&gt;NOTE 19 &amp;#8211; RESTRICTED NET ASSETS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;In accordance with the PRC&amp;#8217;s Foreign Enterprise Law, ACM Shanghai and ACM Wuxi are required to make contributions to a statutory surplus reserve (note 2).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;As a result of PRC laws and regulations that require annual appropriations of 10% of net after-tax profits to be set aside prior to payment of dividends as a general reserve fund or statutory surplus fund, ACM Shanghai is restricted in its ability to transfer a portion of its net assets to ACM (including any assets received as distributions from ACM Wuxi). Amounts restricted included paid-in capital and statutory reserve funds, as determined pursuant to PRC accounting standards and regulations, were $113,168 and $32,076 as of December&amp;#160;31, 2019 and 2018.&lt;/div&gt;&lt;/div&gt;</us-gaap:RestrictedAssetsDisclosureTextBlock>
  <!--Restricted cash-->
  <us-gaap:RestrictedCashCurrent id="Fact_c0a2c48b2dd84d7982129ce75cea2ef3" contextRef="c20181231" unitRef="U001" decimals="-3">0</us-gaap:RestrictedCashCurrent>
  <!--Restricted cash-->
  <us-gaap:RestrictedCashCurrent id="Fact_c9d22a63db7d4944887ab9b2c8c954a1" contextRef="c20191231" unitRef="U001" decimals="-3">59598000</us-gaap:RestrictedCashCurrent>
  <!--Accumulated surplus (deficit)-->
  <us-gaap:RetainedEarningsAccumulatedDeficit id="Fact_5a25ef4036fe40a2bd2ffc1364ccbd64" contextRef="c20191231" unitRef="U001" decimals="-3">15507000</us-gaap:RetainedEarningsAccumulatedDeficit>
  <!--Accumulated surplus (deficit)-->
  <us-gaap:RetainedEarningsAccumulatedDeficit id="Fact_bddc48a90fef4f71bc3587834e0280fa" contextRef="c20181231" unitRef="U001" decimals="-3">-3387000</us-gaap:RetainedEarningsAccumulatedDeficit>
  <!--Revenue from Contract with Customer [Policy Text Block]-->
  <us-gaap:RevenueFromContractWithCustomerPolicyTextBlock id="Fact_d64bb0be69bd46e1889076fac5d698df" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Revenue Recognition&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company derives revenue principally from the sale of single-wafer wet cleaning equipment. Revenue from contracts with customers is recognized using the following five steps pursuant ASC Topic 606, &lt;font style="font-style: italic;"&gt;Revenue from Contracts with Customers&lt;/font&gt;:&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 24.5pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 11.5pt; vertical-align: top; align: right;"&gt;1.&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Identify the contract(s) with a customer;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 24.5pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 11.5pt; vertical-align: top; align: right;"&gt;2.&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Identify the performance obligations in the contract;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 24.5pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 11.5pt; vertical-align: top; align: right;"&gt;3.&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Determine the transaction price;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 24.5pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 11.5pt; vertical-align: top; align: right;"&gt;4.&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Allocate the transaction price to the performance obligations in the contract; and&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 24.5pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 11.5pt; vertical-align: top; align: right;"&gt;5.&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Recognize revenue when (or as) the entity satisfies a performance obligation.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A contract contains a promise (or promises) to transfer goods or services to a customer. A performance obligation is a promise (or a group of promises) that is distinct. The transaction price is the amount of consideration a company expects to be entitled from a customer in exchange for providing the goods or services.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The unit of account for revenue recognition is a performance obligation (a good or service). A contract may contain one or more performance obligations. Performance obligations are accounted for separately if they are distinct. A good or service is distinct if the customer can benefit from the good or service either on its own or together with other resources that are readily available to the customer, and the good or service is distinct in the context of the contract. Otherwise performance obligations are combined with other promised goods or services until the Company identifies a bundle of goods or services that is distinct. Promises in contracts which do not result in the transfer of a good or service are not performance obligations, as well as those promises that are administrative in nature, or are immaterial in the context of the contract. The Company has addressed whether various goods and services promised to the customer represent distinct performance obligations. The Company applied the guidance of ASC Topic 606-10-25-16 through 18 in order to verify which promises should be assessed for classification as distinct performance obligations. The Company&amp;#8217;s contracts with customers include more than one performance obligation. For example, the delivery of a piece of equipment generally includes the promise to install the equipment in the customer&amp;#8217;s facility. The Company&amp;#8217;s performance obligations in connection with a sale of equipment generally include production, delivery and installation, together with the provision of a warranty.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The transaction price is allocated to all the separate performance obligations in an arrangement. It reflects the amount of consideration to which the Company expects to be entitled in exchange for transferring goods or services, which may include an estimate of variable consideration to the extent that it is probable of not being subject to significant reversals in the future based on the Company&amp;#8217;s experience with similar arrangements. The transaction price excludes amounts collected on behalf of third parties, such as sales taxes. This is done on a relative selling price basis using standalone selling prices (&amp;#8220;SSP&amp;#8221;). The SSP represents the price at which the Company would sell that good or service on a standalone basis at the inception of the contract. Given the requirement for establishing SSP for all performance obligations, if the SSP is directly observable through standalone sales, then such sales should be considered in the establishment of the SSP for the performance obligation. The Company does not have observable SSPs for most performance obligations as the obligations are not regularly sold on a standalone basis. Production, delivery and installation of a product, together with provision of a warranty, are a single unit of accounting.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Revenue is recognized when the Company satisfies each performance obligation by transferring control of the promised goods or services to the customer. Goods or services can transfer at a point in time (upon the acceptance of the products or upon the arrival at the destination as stipulated in the shipment terms) in a sale arrangement. In general, the Company recognizes revenue when a tool has been demonstrated to meet the customer&amp;#8217;s predetermined specifications and is accepted by the customer. If terms of the sale provide for a lapsing customer acceptance period, the Company recognizes revenue as of the earlier of the expiration of the lapsing acceptance period and customer acceptance. In the following circumstances, however, the Company recognizes revenue upon shipment or delivery, when legal title to the tool is passed to a customer as follows:&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 36pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;When the customer has previously accepted the same tool with the same specifications and the Company can objectively demonstrate that the tool meets all of the required acceptance criteria;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 36pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;When the sales contract or purchase order contains no acceptance agreement or lapsing acceptance provision and the Company can objectively demonstrate that the tool meets all of the required acceptance criteria;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 36pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;When the customer withholds acceptance due to issues unrelated to product performance, in which case revenue is recognized when the system is performing as intended and meets predetermined specifications; or&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 36pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;When the Company&amp;#8217;s sales arrangements do not include a general right of return.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company offers post-warranty period services, which consist principally of the installation and replacement of parts and small-scale modifications to the equipment. The related revenue and costs of revenue are recognized when parts have been delivered and installed, risk of loss has passed to the customer, and collection is probable. The Company does not expect revenue from extended maintenance service contracts to represent a material portion of its revenue in the future. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company incurs costs related to the acquisition of its contracts with customers in the form of sales commissions. Sales commissions are paid to third party representatives and distributors. Contractual agreements with these parties outline commission structures and rates to be paid. Generally speaking, the contracts are all individual procurement decisions by the customers and are not for significant periods of time, nor do they include renewal provisions. As such, all contracts have an economic life of significantly less than a year. Accordingly, the Company expenses sales commissions when incurred. These costs are recorded within sales and marketing expenses.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company does not incur any costs to fulfill the contracts with customers that are not already reported in compliance with another applicable standard (for example, inventory or plant, property and equipment).&lt;/div&gt;&lt;/div&gt;</us-gaap:RevenueFromContractWithCustomerPolicyTextBlock>
  <!--Revenue from Contract with Customer, Excluding Assessed Tax-->
  <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax id="Fact_2d88c446769e4dedb15c2a2aae5235a4" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">74643000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
  <!--Revenue from Contract with Customer, Excluding Assessed Tax-->
  <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax id="Fact_8143bd28502d4959917b846d4825b1a8" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">107524000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
  <!--Revenue from Contract with Customer, Excluding Assessed Tax-Parent Company [Member]-->
  <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax id="Fact_4a8e5cc9ccb84e829ac6cfe37cc8c3d5" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">10683000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
  <!--Revenue from Contract with Customer, Excluding Assessed Tax-Parent Company [Member]-->
  <us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax id="Fact_eeee4a2befe141c59f0250040d211bee" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">25506000</us-gaap:RevenueFromContractWithCustomerExcludingAssessedTax>
  <!--Options unvested (in shares)-Common Class A [Member]-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares id="Fact_53812417d57345828e9f632d381a1200" contextRef="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">1441899</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares>
  <!--Options unvested (in shares)-Common Class A [Member]-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares id="Fact_9fec4a17602047038623d44082a57a47" contextRef="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">1298614</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedNumberOfShares>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Option, Nonvested, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue id="Fact_c3bd0283ad6341c886e47bf40b4f296d" contextRef="c20171231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">0.78</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Option, Nonvested, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue id="Fact_f320c73eec5746659434d2de6d159197" contextRef="c20171231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">0.66</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Option, Nonvested, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue id="Fact_0331dca68df6489d95d90d194524b91b" contextRef="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">0.78</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Option, Nonvested, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue id="Fact_1aa8d4a747d44684a7eed43cb7324769" contextRef="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">0.82</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Option, Nonvested, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue id="Fact_e20585a03b2a494b8ed38ba8816451a5" contextRef="c20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">2.59</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Option, Nonvested, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue id="Fact_e4b4474b81914c908d86b574d397d937" contextRef="c20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">0.91</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Nonvested Options Forfeited, Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedOptionsForfeitedWeightedAverageGrantDateFairValue id="Fact_2f3c4c13c58149a09d8ba0108ac2b6ce" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">0.55</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedOptionsForfeitedWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Nonvested Options Forfeited, Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedOptionsForfeitedWeightedAverageGrantDateFairValue id="Fact_7269f691e19f41f4bddf280138cbb5ab" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">0.97</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedOptionsForfeitedWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Nonvested Options Forfeited, Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedOptionsForfeitedWeightedAverageGrantDateFairValue id="Fact_81c52f6d14c44deebdcfeb4b92f2f5c6" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">2.38</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedOptionsForfeitedWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Nonvested Options Forfeited, Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedOptionsForfeitedWeightedAverageGrantDateFairValue id="Fact_8b4d8a8ad85a49ea8d073c2ef112ab33" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="0">0</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsNonvestedOptionsForfeitedWeightedAverageGrantDateFairValue>
  <!--Expected term in years-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1 id="Fact_5927103c088047b69591f4dd377c4ec7" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember">P6Y3M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
  <!--Expected term in years-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1 id="Fact_81265ed3b08a4ec0bc86aad92d8dbb55" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember">P6Y3M</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardFairValueAssumptionsExpectedTerm1>
  <!--Option price at the time of grant, fair market value of stock price percentage-1998 Stock Option Plan [Member]-Maximum [Member]-Incentive Stock options [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent id="Fact_72832d8eb02844108a21445484eea589" contextRef="c19980429to19980429_AwardTypeAxis_IncentiveStockOptionsMember_PlanNameAxis_One998StockOptionPlanMember_RangeAxis_MaximumMember" unitRef="U004" decimals="INF">1</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent>
  <!--Option price at the time of grant, fair market value of stock price percentage-Maximum [Member]-Nonstatutory Stock Options [Member]-1998 Stock Option Plan [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent id="Fact_afff7610f9414312b0203c9fa93f57e9" contextRef="c19980429to19980429_AwardTypeAxis_NonstatutoryStockOptionsMember_PlanNameAxis_One998StockOptionPlanMember_RangeAxis_MaximumMember" unitRef="U004" decimals="INF">0.85</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardPurchasePriceOfCommonStockPercent>
  <!--Outstanding weighed average remaining contractual term-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2 id="Fact_1c0a8661b5524ff8b36f338f74fff1a6" contextRef="c20170101to20171231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">P7Y6M14D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
  <!--Outstanding weighed average remaining contractual term-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2 id="Fact_3579cfcad6f448a9ab2d1ad7816ea765" contextRef="c20170101to20171231_AwardTypeAxis_EmployeeStockOptionMember">P7Y6M25D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
  <!--Outstanding weighed average remaining contractual term-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2 id="Fact_46e01d92564d48a5a185a95f9aed4c46" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember">P7Y0M18D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
  <!--Outstanding weighed average remaining contractual term-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2 id="Fact_7b20a80ff2e847cc986ff5cbaebc8642" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">P5Y10M6D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
  <!--Outstanding weighed average remaining contractual term-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2 id="Fact_92bd12fbfc9c46a095359ee317aba3ed" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">P6Y7M28D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
  <!--Outstanding weighed average remaining contractual term-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2 id="Fact_a0d4e12a86354e5fae06d6408ab15399" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember">P7Y3M18D</us-gaap:SharebasedCompensationArrangementBySharebasedPaymentAwardOptionsOutstandingWeightedAverageRemainingContractualTerm2>
  <!--Sale of Stock, Price Per Share-ACM Research (Shanghai), Inc. [Member]-Second Tranche Investors [Member]-->
  <us-gaap:SaleOfStockPricePerShare id="Fact_5b6a626903c249f8b4bdd9d7c165d49a" contextRef="c20191129_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember" unitRef="U007" decimals="0">13</us-gaap:SaleOfStockPricePerShare>
  <!--Schedule of Product Warranty Liability [Table Text Block]-->
  <us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock id="Fact_c6f954c786df4623a9d0b988eb2c16ef" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div&gt;The following table shows changes in the Company&amp;#8217;s warranty obligations for the year ended December 31, 2019 and 2018, respectively.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Balance at beginning of period&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,710&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;839&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Additions&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;2,105&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;1,412&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Utilized&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(1,004&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(541&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 46%; background-color: rgb(255, 255, 255); border-bottom: 4px double rgb(0, 0, 0);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Balance at end of period&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 4px double rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,811&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,710&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfProductWarrantyLiabilityTableTextBlock>
  <!--Aggregate Changes in Balance of Gross Unrecognized Tax Benefits-->
  <us-gaap:ScheduleOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForwardTableTextBlock id="Fact_e73020b653e048e8931299c4b03585bb" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div&gt;The aggregate changes in the balance of gross unrecognized tax benefits, which excludes interest and penalties, for&amp;#160;the years ended December&amp;#160;31, 2019 and 2018, are as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; padding-left: 9pt; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; padding-left: 9pt; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Beginning balance&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;44&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;44&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Increase/ (decrease) of unecognized tax benefits taken in prior years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;-&lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Increase/ (decrease) of unecognized tax benefits related to current year&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Increase/ (decrease) of unrecognized tax benefits related to settlements&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Reductions to unrecognized tax benefits related to lapsing statute of limitations&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Ending balance&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;44&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;44&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfUnrecognizedTaxBenefitsExcludingAmountsPertainingToExaminedTaxReturnsRollForwardTableTextBlock>
  <!--Schedule of Inventory, Current [Table Text Block]-->
  <us-gaap:ScheduleOfInventoryCurrentTableTextBlock id="Fact_35bc01735bc94885974cdbfd3c961e68" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;At December 31, 2019 and 2018, inventory consisted of the following:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 90%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Raw&amp;#160;materials&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;15,105&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;12,646&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Work&amp;#160;in&amp;#160;process&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;10,407&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;9,631&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Finished&amp;#160;goods&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;19,284&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;16,487&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Total&amp;#160;inventory,&amp;#160;gross&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;44,796&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;38,764&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Inventory&amp;#160;reserve&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: justify; text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&amp;#160;inventory,&amp;#160;net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;44,796&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;38,764&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfInventoryCurrentTableTextBlock>
  <!--Assumptions Used to Determine Fair Value of Share Options Granted-->
  <us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock id="Fact_a5ba850a7ffb4583845b054a07a87b36" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;The fair value of each option granted to employee is estimated on the grant date using the Black-Scholes valuation model with the following assumptions.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 80%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 56%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 56%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 56%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Fair&amp;#160;value&amp;#160;of&amp;#160;common&amp;#160;share(1)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;13.64-16.81&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;5.31-13.85&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 56%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expected&amp;#160;term&amp;#160;in&amp;#160;years(2)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;6.25&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;6.25&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 56%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Volatility(3)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;39.91%-40.35&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;39.14%-43.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 56%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Risk-free&amp;#160;interest&amp;#160;rate(4)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;1.69%-2.46&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2.55%-2.96&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 56%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expected&amp;#160;dividend(5)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;0&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;0&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;br /&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;(1)&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;&lt;font style="background-color: rgb(255, 255, 255);"&gt;Common stock value was the close market value on the grant date.&lt;/font&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;(2)&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Expected term of share options is based on the average of the vesting period and the contractual term for each grant according to Staff Accounting Bulletin 110.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;(3)&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Volatility is calculated based on the historical volatility of ACM&amp;#8217;s comparable companies in the period equal to the expected term of each grant.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;(4)&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Risk-free interest rate is based on the yields of U.S. Treasury securities with maturities similar to the expected term of the share options in effect at the time of grant.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;(5)&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Expected dividend is assumed to be 0% as ACM has no history or expectation of paying a dividend on its common stock.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedPaymentAwardStockOptionsValuationAssumptionsTableTextBlock>
  <!--Share-based Payment Arrangement, Option, Activity [Table Text Block]-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock id="Fact_dd1be386ca03472091e13b4836cc0949" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;The following table summarizes the Company&amp;#8217;s non-employee share option activities during the year ended December 31, 2018 and 2019:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 90%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 42%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Number of&lt;br /&gt; Option Shares&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Weighted&lt;br /&gt; Average Grant&lt;br /&gt; Date Fair Value&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Weighted&lt;br /&gt; Average Exercise&lt;br /&gt; Price&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Weighted Average&lt;br /&gt; Remaining&lt;br /&gt; Contractual Term&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; background-color: rgb(204, 238, 255); width: 42%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December&amp;#160;31,&amp;#160;2017&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;1,326,676&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;0.78&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;2.52&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;7.54 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 42%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Granted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 42%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Exercised&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(114,302&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;0.43&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1.92&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 42%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expired&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 42%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Forfeited&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 42%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December&amp;#160;31,&amp;#160;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(255, 255, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;1,212,374&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(255, 255, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;0.78&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(255, 255, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;2.57&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: right; color: #000000;"&gt;6.66 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 42%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Granted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 42%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Exercised&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(88,529&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;0.45&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;1.06&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 42%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expired&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 42%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Forfeited/cancelled&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(22,232&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;0.55&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;3.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; background-color: rgb(204, 238, 255); width: 42%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December 31,&amp;#160;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;1,101,613&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;0.82&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: rgb(204, 238, 255); width: 9%;"&gt;&lt;div style="color: #000000;"&gt;2.69&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; color: #000000;"&gt;5.85 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 42%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Vested&amp;#160;and&amp;#160;exercisable&amp;#160;at&amp;#160;December 31,&amp;#160;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;1,024,017&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
  <!--Share-based Payment Arrangement, Option, Activity [Table Text Block]-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock id="Fact_8c521d4b560f4172aa6d97a28c9a2d39" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;The following table summarizes the Company&amp;#8217;s employee share option activities during the years ended December 31, 2018 and December&amp;#160;31, 2019:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; text-align: center; width: 41%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; text-align: center; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Number of&lt;br /&gt; Option Share&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="text-align: center; vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; text-align: center; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Weighted&lt;br /&gt; Average Grant&lt;br /&gt; Date Fair Value&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="text-align: center; vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; text-align: center; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Weighted&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Average&lt;/div&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Exercise&lt;br /&gt; Price&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="text-align: center; vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="text-align: center; vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0); width: 12%;"&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Weighed Average&lt;/div&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Remaining&lt;/div&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0); font-weight: bold;"&gt;Contractual Term&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December&amp;#160;31,&amp;#160;2017&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2,045,616&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;0.66&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2.46&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;7.57 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Granted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;745,700&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1.52&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;8.12&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Exercised&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(151,650&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;0.53&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2.06&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expired&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(4,622&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;0.55&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;3.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Forfeited&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(131,639&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;0.97&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;3.87&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December&amp;#160;31,&amp;#160;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,503,405&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;0.91&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;4.09&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: right; color: #000000;"&gt;7.30 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Granted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;656,000&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.29&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;16.21&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Exercised&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(106,768&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;0.60&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2.09&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Expired&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(2,757&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;3.34&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;8.16&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;&amp;#160;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Forfeited/cancelled&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(55,817&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2.38&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;6.23&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Outstanding&amp;#160;at&amp;#160;December 31,&amp;#160;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2,994,063&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2.59&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.77&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 12%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: right; text-indent: 10pt; color: #000000;"&gt;7.05 years&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 41%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Vested&amp;#160;and&amp;#160;exercisable&amp;#160;at&amp;#160;December 31,&amp;#160;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,773,048&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 12%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&amp;#160;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfShareBasedCompensationStockOptionsActivityTableTextBlock>
  <!--Schedule of Accounts Payable and Accrued Liabilities [Table Text Block]-->
  <us-gaap:ScheduleOfAccountsPayableAndAccruedLiabilitiesTableTextBlock id="Fact_b149c5b01c754de88d248b2491240c86" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;At December&amp;#160;31, 2019 and 2018, other payable and accrued expenses consisted of the following:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 90%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 66%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Lease&amp;#160;expenses&amp;#160;and&amp;#160;payable&amp;#160;for&amp;#160;leasehold&amp;#160;improvement&amp;#160;due&amp;#160;to&amp;#160;a&amp;#160;related&amp;#160;party&amp;#160;(note&amp;#160;11)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;53&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accrued commissions&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;4,082&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,931&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accrued&amp;#160;warranty&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2,811&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,710&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accrued&amp;#160;payroll&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,092&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;626&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accrued&amp;#160;professional&amp;#160;fees&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;165&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;64&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accrued&amp;#160;machine&amp;#160;testing&amp;#160;fees&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,456&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;3,076&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 66%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Others&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2,268&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,950&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 66%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000; font-weight: bold;"&gt;Total&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;12,874&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;10,410&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfAccountsPayableAndAccruedLiabilitiesTableTextBlock>
  <!--Schedule of Components of Income Tax Expense (Benefit) [Table Text Block]-->
  <us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock id="Fact_c6588505d796404a890812f3dd566365" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div&gt;The following represent components of the income tax benefit (expense) for the years ended December 31, 2019 and 2018:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Current:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;U.S.&amp;#160;federal&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(204, 238, 255); text-align: right;"&gt;&amp;#160;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: #CCEEFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; background-color: #FFFFFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;U.S.&amp;#160;state&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td nowrap="nowrap" valign="bottom" style="vertical-align: middle; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td nowrap="nowrap" valign="bottom" style="vertical-align: middle; background-color: rgb(255, 255, 255); text-align: right;"&gt;&amp;#160;-&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; background-color: #FFFFFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;Foreign&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;(3,176&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;(1,149&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;Total current tax expense&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div&gt;(3,176&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div&gt;(1,149&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: #CCEEFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Deferred:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: #FFFFFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;U.S.&amp;#160;federal&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;3,728&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: #CCEEFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;U.S.&amp;#160;state&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;Foreign&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;(34&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;343&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt;"&gt;Total deferred tax benefit&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;3,694&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;343&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt;"&gt;&lt;div style="color: #000000;"&gt;Total income tax benefit (expense)&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;518&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;(806&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;</us-gaap:ScheduleOfComponentsOfIncomeTaxExpenseBenefitTableTextBlock>
  <!--Deferred tax Assets-->
  <us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock id="Fact_d5c5b958babb4002a266b5f7ea75a7a9" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;Tax effects of temporary differences that give rise to significant portions of the Company&amp;#8217;s deferred tax assets at December 31, 2019 and 2018 are presented below:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle;"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Deferred tax assets:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Net operating loss carry forwards (offshore)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;216&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;16&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Net operating loss carry forwards (U.S.) and credit&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;3,218&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;4,105&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Deferred revenue (offshore)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;1,181&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;558&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Accruals (U.S.)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;15&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;11&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Reserves and other (offshore)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;426&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;1,080&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Stock-based compensation (U.S.)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;1,168&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;1,021&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Property and equipment (U.S.)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;3&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;1&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Total gross deferred tax assets&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;6,227&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;6,792&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;&lt;div style="color: #000000;"&gt;Less: valuation allowance&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;(896&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;(5,155&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Total deferred tax assets&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;5,331&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;1,637&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;Total deferred tax liabilities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Translation difference&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;Deferred tax assets, net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;5,331&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;1,637&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfDeferredTaxAssetsAndLiabilitiesTableTextBlock>
  <!--Schedule of Earnings Per Share, Basic and Diluted [Table Text Block]-->
  <us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock id="Fact_e718ac0ffd614054858870ce76bdadb0" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="color: #000000;"&gt;Basic and diluted net income per common share are calculated as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 60%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 36%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 36%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Numerator:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Net&amp;#160;income&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;19,458&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;6,574&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Net income attributable to redeemable non-controlling interest&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div&gt;564&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net income available to common stockholders, basic and diluted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;18,894&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;6,574&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Weighted&amp;#160;average&amp;#160;shares&amp;#160;outstanding,&amp;#160;basic&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;16,800,623&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;15,788,460&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Effect&amp;#160;of&amp;#160;dilutive&amp;#160;securities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;2,334,874&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;2,123,645&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Weighted&amp;#160;average&amp;#160;shares&amp;#160;outstanding,&amp;#160;diluted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;19,135,497&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;17,912,105&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net income per common share:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Basic&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;1.12&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;0.42&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Diluted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;0.99&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;0.37&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfEarningsPerShareBasicAndDilutedTableTextBlock>
  <!--Schedule of Effective Income Tax Rate Reconciliation [Table Text Block]-->
  <us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock id="Fact_5aeb296466c84999a9d16a6c9282cda4" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div&gt;Income tax expense for the years ended December&amp;#160;31, 2019 and 2018 differed from the amounts computed by applying the statutory federal income tax rate of 21% to pretax income (loss) as a result of the following:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; padding-left: 9pt; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; padding-left: 9pt; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: #000000 solid 2px;"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; padding-left: 9pt;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle;"&gt;&lt;div style="text-indent: -9pt; margin-left: 9pt;"&gt;Effective tax rate reconciliation:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 18pt;"&gt;Income tax provision at statutory rate&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;21.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;21.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 18pt;"&gt;Foreign rate differential&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(12.26&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;(20.88&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Other permanent difference&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;8.71&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;15.59&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -9pt; margin-left: 18pt;"&gt;Change in valuation allowance&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;(20.19&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;(4.78&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;Total income tax expense (benefit)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(2.74&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;%)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;10.93&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfEffectiveIncomeTaxRateReconciliationTableTextBlock>
  <!--Schedule of Antidilutive Securities Excluded from Computation of Earnings Per Share [Table Text Block]-->
  <us-gaap:ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock id="Fact_e66c1784e5e04d08b2b709e92f1e59bf" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div&gt;The potentially dilutive securities that were not included in the calculation of diluted net income per share in the periods presented where their inclusion would be anti-dilutive are as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: top; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: top; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: top; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Stock Options&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;4,095,676&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;3,715,779&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; width: 46%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Warrant&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;77,810&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;80,000&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; width: 46%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;4,173,486&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;3,795,779&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfAntidilutiveSecuritiesExcludedFromComputationOfEarningsPerShareTextBlock>
  <!--Schedule of Short-term Debt [Table Text Block]-->
  <us-gaap:ScheduleOfShortTermDebtTextBlock id="Fact_128c1591cd144167909ed4302d604a5f" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;At December 31, 2019 and 2018, short-term borrowings consisted of the following:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 50,000 from Bank of Shanghai Pudong Branch, due on April 17,2019 with an annual interest rate of 4.99%, guaranteed by the Company&amp;#8217;s CEO and fully repaid on March 27, 2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;3,133&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 50,000 from Bank of Shanghai Pudong Branch, due on February 14,2019 with an annual interest rate of 5.15%, guaranteed by the Company&amp;#8217;s CEO and fully repaid on February 14, 2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;485&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 50,000 from Bank of Shanghai Pudong Branch, due on January 23, 2020 with an annual interest rate of 5.22%, guaranteed by the Company&amp;#8217;s CEO and Cleanchip Technologies Limited.Only RMB 14,500 was repaid on December 13,2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;5,057&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 30,000 from Bank of China Pudong Branch, due on June 6,2019 with annual interest rate of 5.22%,secured by certain of the Company&amp;#8217;s intellectual property and the Company&amp;#8217;s CEO and fully repaid on June 6,2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,186&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 30,000 from Bank of China Pudong Branch, due on June 13,2019 with annual interest rate of 5.22%,secured by certain of the Company&amp;#8217;s intellectual property and the Company&amp;#8217;s CEO and fully repaid on June 13,2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2,186&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 10,000 from Shanghai Rural Commercial Bank, due on January 23, 2019 with an annual interest rate of 5.44%, guaranteed by the Company&amp;#8217;s CEO and pledged by accounts receivable,and fully repaid on January 23, 2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,457&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 20,000 from Shanghai Rural Commercial Bank, due on February 21, 2020 with an annual interest rate of 5.66%, guaranteed by the Company&amp;#8217;s CEO and pledged by accounts receivable.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,433&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 20,000 from Bank of Communications, due on January 18, 2020 with an annual interest rate of 5.66%.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,433&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 20,000 from Bank of Communications, due on January 22, 2020 with an annual interest rate of 5.66%.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;717&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 20,000 from Bank of Communications, due on February 14, 2020 with an annual interest rate of 5.66%.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;717&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 50,000 from China Everbright Bank, due on March 25, 2020 with an annual interest rate of 4.94%, guaranteed by the Company&amp;#8217;s CEO.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;3,250&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 50,000 from China Everbright Bank, due on April 17, 2020 with an annual interest rate of 5.66%, guaranteed by the Company&amp;#8217;s CEO.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;1,146&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;13,753&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;9,447&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfShortTermDebtTextBlock>
  <!--Accounts Receivable-->
  <us-gaap:ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock id="Fact_21fd016164e84e41a81de5f958ab9ffa" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify; color: #000000;"&gt;At December 31, 2019 and 2018, accounts receivable consisted of the following:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom;"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Accounts&amp;#160;receivable&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;31,091&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;24,608&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 46%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Less:&amp;#160;Allowance&amp;#160;for&amp;#160;doubtful&amp;#160;accounts&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;31,091&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;24,608&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:ScheduleOfAccountsNotesLoansAndFinancingReceivableTextBlock>
  <!--Schedules of Concentration of Risk, by Risk Factor [Table Text Block]-->
  <us-gaap:SchedulesOfConcentrationOfRiskByRiskFactorTextBlock id="Fact_b8b054c92cbc4c26b9b52eedfeb8a945" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div&gt;Three customers individually accounted for greater than ten percent of the Company&amp;#8217;s revenue for the year ended 2019 and the year ended 2018:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Customer A&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;26.46&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;24.17&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Customer B&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;19.84&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;23.83&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;% &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Customer C&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;27.50&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;39.63&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;% &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:SchedulesOfConcentrationOfRiskByRiskFactorTextBlock>
  <!--Security deposit amount-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:SecurityDeposit id="Fact_826aea1195f3480091a308031076f0ce" contextRef="c20180426_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U005" decimals="-3">1077000</us-gaap:SecurityDeposit>
  <!--Security deposit amount-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:SecurityDeposit id="Fact_d800784b955f4950ad559a0f0c6a44d3" contextRef="c20180426_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-3">163000</us-gaap:SecurityDeposit>
  <!--SEGMENT INFORMATION-->
  <us-gaap:SegmentReportingDisclosureTextBlock id="Fact_4c3bc6fdc91a4d72a2546e4dc66a1b37" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold; text-align: justify;"&gt;NOTE 16 &amp;#8211; SEGMENT INFORMATION&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;The Company is engaged in the developing, manufacture and sale of single-wafer wet cleaning equipment, which have been organized as one reporting segment as they have substantially similar nature and economic characteristics. The Company&amp;#8217;s principal operating decision maker, the Chief Executive Officer, receives and reviews the results of the operations for all major type of equipment as a whole when making decisions about allocating resources and assessing performance of the Company. In accordance with FASB ASC 280-10, the Company is not required to report the segment information.&lt;/div&gt;&lt;/div&gt;</us-gaap:SegmentReportingDisclosureTextBlock>
  <!--Selling and Marketing Expense-->
  <us-gaap:SellingAndMarketingExpense id="Fact_cde65dedda0743b7a1d7145667521246" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">9611000</us-gaap:SellingAndMarketingExpense>
  <!--Selling and Marketing Expense-->
  <us-gaap:SellingAndMarketingExpense id="Fact_d208e5544b9d420d83e9ab0a4d0a05d9" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">11902000</us-gaap:SellingAndMarketingExpense>
  <!--Selling and Marketing Expense-Shipping and Handling [Member]-->
  <us-gaap:SellingAndMarketingExpense id="Fact_654e646840ce4d8eba2e694e1ea582cd" contextRef="c20190101to20191231_ProductOrServiceAxis_ShippingAndHandlingMember" unitRef="U001" decimals="-3">172000</us-gaap:SellingAndMarketingExpense>
  <!--Selling and Marketing Expense-Shipping and Handling [Member]-->
  <us-gaap:SellingAndMarketingExpense id="Fact_d1021f3d820948199f926b52e4f5436d" contextRef="c20180101to20181231_ProductOrServiceAxis_ShippingAndHandlingMember" unitRef="U001" decimals="-3">146000</us-gaap:SellingAndMarketingExpense>
  <!--Selling and Marketing Expense-Parent Company [Member]-->
  <us-gaap:SellingAndMarketingExpense id="Fact_4390805dc48b450aa1f719b8e6af6276" contextRef="c20180101to20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">301000</us-gaap:SellingAndMarketingExpense>
  <!--Selling and Marketing Expense-Parent Company [Member]-->
  <us-gaap:SellingAndMarketingExpense id="Fact_da729d75cbb74470ac178cc4ffaa151c" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">490000</us-gaap:SellingAndMarketingExpense>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice id="Fact_3fac8d8f357e4321a05969d20799cb63" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">1.92</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice id="Fact_afea40a688754e6f85489dfc2875e945" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">2.09</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice id="Fact_bbf780f3ba844dd8a23da19c50186968" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">1.06</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Exercises in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice id="Fact_f341484c64404c86835f1047dab3a9d0" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">2.06</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExercisesInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Grants in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice id="Fact_0b13ffde23fd474382abe54b8dca6ebc" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="0">0</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Grants in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice id="Fact_40fc69582e05407cacc788a020cf02ae" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="0">0</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Grants in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice id="Fact_a7916c3dcd7d4ddbb844a558cfd51d80" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">16.21</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Grants in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice id="Fact_bc456f2945744143831371c283d960e9" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">8.12</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Expirations in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice id="Fact_0851c0337f614908a66f56673568a3b3" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">3.00</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Expirations in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice id="Fact_12669668dc3046ccbf2705b64bf4895c" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">8.16</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Expirations in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice id="Fact_26622851c32a485f99028b4dd6484c58" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="0">0</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Expirations in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice id="Fact_5dd123ae4c224cec82a0bf95bee4aea7" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="0">0</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsExpirationsInPeriodWeightedAverageExercisePrice>
  <!--Share-based Payment Arrangement, Noncash Expense-->
  <us-gaap:ShareBasedCompensation id="Fact_8429336ad26c4993b09c35514e481682" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">3572000</us-gaap:ShareBasedCompensation>
  <!--Share-based Payment Arrangement, Noncash Expense-->
  <us-gaap:ShareBasedCompensation id="Fact_9eadc114aa104c7d8c025b9a24fea679" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">3363000</us-gaap:ShareBasedCompensation>
  <!--Stock price (in dollars per share)-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <us-gaap:SharePrice id="Fact_ca18a926a12b4ec6bf89d4ffcd968ff3" contextRef="c20190930_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember" unitRef="U003" decimals="3">13.195</us-gaap:SharePrice>
  <!--Stock price (in dollars per share)-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-Common Class A [Member]-->
  <us-gaap:SharePrice id="Fact_d4b8f6149bd24500960a84af2132b9af" contextRef="c20190814_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U003" decimals="3">13.195</us-gaap:SharePrice>
  <!--Stock price (in dollars per share)-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-Common Class A [Member]-->
  <us-gaap:SharePrice id="Fact_e0f1c187c5da493bb0e54341497f2d1e" contextRef="c20170314_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U003" decimals="INF">7.50</us-gaap:SharePrice>
  <!--Stock price (in dollars per share)-Common Class A [Member]-->
  <us-gaap:SharePrice id="Fact_e5745e3ca26443ae9555fc65bfdda62f" contextRef="c20190831_StatementClassOfStockAxis_CommonClassAMember" unitRef="U003" decimals="2">14.00</us-gaap:SharePrice>
  <!--Stock price (in dollars per share)-Minimum [Member]-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharePrice id="Fact_3ba96ea374fa4258b3cbd6e27da1f211" contextRef="c20191231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MinimumMember" unitRef="U003" decimals="2">13.64</us-gaap:SharePrice>
  <!--Stock price (in dollars per share)-Maximum [Member]-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:SharePrice id="Fact_3f5b16b0bf524b8bb4a2ac8129d8e5ce" contextRef="c20191231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MaximumMember" unitRef="U003" decimals="2">16.81</us-gaap:SharePrice>
  <!--Stock price (in dollars per share)-Share-based Payment Arrangement, Option [Member]-Maximum [Member]-->
  <us-gaap:SharePrice id="Fact_ce473c9332ea443e83fde09f1099cbe8" contextRef="c20181231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MaximumMember" unitRef="U003" decimals="2">13.85</us-gaap:SharePrice>
  <!--Stock price (in dollars per share)-Share-based Payment Arrangement, Option [Member]-Minimum [Member]-->
  <us-gaap:SharePrice id="Fact_f11ba745e4f04090958bf9ad6bd7eb40" contextRef="c20181231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MinimumMember" unitRef="U003" decimals="2">5.31</us-gaap:SharePrice>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Gross-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross id="Fact_053c6cfa339a4681b07e186388821d84" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">745700</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Gross-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross id="Fact_27e51957cb674958a7db801c8e2e2690" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Gross-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross id="Fact_520dc6f957b84cb08ef9ea172a68da9c" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Gross-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross id="Fact_eb364069a221484baf8a059354e320f5" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">656000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodGross>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice id="Fact_279c92c9a6e042a6be0948e52aedbbde" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">6.23</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice id="Fact_91f4857178fd4685837f7e21689864e0" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">3.00</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice id="Fact_ac07ffcff0f4485883ec7e12dcec0467" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="0">0</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangements by Share-based Payment Award, Options, Forfeitures in Period, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice id="Fact_ceb2b586611f4e99a2d4a1e46588ec99" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">3.87</us-gaap:ShareBasedCompensationArrangementsByShareBasedPaymentAwardOptionsForfeituresInPeriodWeightedAverageExercisePrice>
  <!--Expected dividend-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate id="Fact_524cc99dd46444cabdd14c1388b8b37a" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U004" decimals="0">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
  <!--Expected dividend-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate id="Fact_e26919c3f49b4f2f81595b4f1f9902d8" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U004" decimals="0">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedDividendRate>
  <!--Volatility-Share-based Payment Arrangement, Option [Member]-Minimum [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate id="Fact_ab87d16100454a6988940d80d2c40bb3" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MinimumMember" unitRef="U004" decimals="4">0.3991</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
  <!--Volatility-Maximum [Member]-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate id="Fact_b3ee2840a2d6473db53b2ac27d77bd97" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MaximumMember" unitRef="U004" decimals="4">0.4300</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
  <!--Volatility-Minimum [Member]-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate id="Fact_c4f472d3a92548af917026b6d302159f" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MinimumMember" unitRef="U004" decimals="4">0.3914</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
  <!--Volatility-Maximum [Member]-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate id="Fact_d2527ed4e3e64b2cbe987b2bdf466061" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MaximumMember" unitRef="U004" decimals="4">0.4035</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsExpectedVolatilityRate>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue id="Fact_2002d84e2f2b4234a4911ab48868ebf5" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">1.52</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue id="Fact_4df02236fcff46968ddbf38282d5edc2" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="0">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue id="Fact_d981aff8c0f8476db0ec4c7e470db593" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="0">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Grants in Period, Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue id="Fact_f1818ff47a8d45b7a4f100be500534e8" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">6.29</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsGrantsInPeriodWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Number-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber id="Fact_054019b7bf984ace9778323cac264e4b" contextRef="c20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">1773048</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Exercisable, Number-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber id="Fact_f6d6a75e51c2466c8a55de433d32afe4" contextRef="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">1024017</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisableNumber>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Expirations in Period-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod id="Fact_0442ba661203494682e768bbd676ee53" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Expirations in Period-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod id="Fact_7c3c76035a5143959ca80cf4dbad8c51" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">4622</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Expirations in Period-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod id="Fact_85db16ed02b44b01ba75ffa8999d936e" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Expirations in Period-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod id="Fact_acabf6bae3be44b4b5b6e60e0ba78b89" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">2757</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpirationsInPeriod>
  <!--Risk-free interest rate-Maximum [Member]-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate id="Fact_0958e6c7e5f64d5590f77531ab003af6" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MaximumMember" unitRef="U004" decimals="4">0.0296</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
  <!--Risk-free interest rate-Maximum [Member]-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate id="Fact_57540c11ba3443459457d57fbdaae753" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MaximumMember" unitRef="U004" decimals="4">0.0246</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
  <!--Risk-free interest rate-Minimum [Member]-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate id="Fact_6d87c56e96e340299006ff3305d7afec" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MinimumMember" unitRef="U004" decimals="4">0.0255</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
  <!--Risk-free interest rate-Share-based Payment Arrangement, Option [Member]-Minimum [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate id="Fact_d6ef295e53f5432093acae057938cac0" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_RangeAxis_MinimumMember" unitRef="U004" decimals="4">0.0169</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardFairValueAssumptionsRiskFreeInterestRate>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Forfeitures in Period-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod id="Fact_14c7df8bae854440b0cc01853b6aa9b8" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">131639</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Forfeitures in Period-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod id="Fact_1d8db33fc6a3490fb15c6dd81cbaff88" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">22232</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Forfeitures in Period-Share-based Payment Arrangement, Non Employee Stock Option [Member]-Director [Member]-Common Class A [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod id="Fact_3442ddbfa34647a7959e3fa380f7937e" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember_TitleOfIndividualAxis_DirectorMember" unitRef="U002" decimals="INF">22232</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Forfeitures in Period-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod id="Fact_4548ca07af494891800fbf3c541a5fe5" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">55817</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Forfeitures in Period-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod id="Fact_bbc4ced5aab5473f984c64bdc58d44ab" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">0</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsForfeituresInPeriod>
  <!--Options vested intrinsic value-Common Class A [Member]-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue id="Fact_325b51f4d2b34a5088eb21de5b6dc473" contextRef="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">43400000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue>
  <!--Options vested intrinsic value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-Common Class A [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue id="Fact_eb584a7121054b0bbeb452a716d3d850" contextRef="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">20000000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingAggregateIntrinsicValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Number-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber id="Fact_0a93438e23ab46e8aeea0e706e1693a1" contextRef="c20171231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">2045616</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Number-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber id="Fact_8c782991dd2f44598fed9f32b130c12a" contextRef="c20171231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">1326676</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Number-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber id="Fact_0329279b810d4042a37dbe5afffc3a2e" contextRef="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">1212374</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Number-Share-based Payment Arrangement, Non Employee Stock Option [Member]-Common Class A [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber id="Fact_43ae5743a8c7421488a31b4a0dac3f1d" contextRef="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">4095676</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Number-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber id="Fact_6c67b2355b524728b3fd41641cb427ee" contextRef="c20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">2503405</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Number-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber id="Fact_709d1a7e86194ffdb28a843afb69e268" contextRef="c20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">2994063</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Number-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber id="Fact_c58a9a4111764ec79bf2031669f2e7fe" contextRef="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">1101613</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Number-Common Class A [Member]-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber id="Fact_de412d877b7645428e1c5421afc6da49" contextRef="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">3715779</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingNumber>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice id="Fact_84fac337860b4bec90851192cd8ff099" contextRef="c20171231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">2.52</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice id="Fact_df29be98ee864c69947e2f964154f9b2" contextRef="c20171231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">2.46</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice id="Fact_3009a8fc76e64122aa0b46c21905b87a" contextRef="c20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">4.09</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice id="Fact_a3441f2e42344652b4dba6162c8f1b02" contextRef="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">2.69</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Exercise Price-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice id="Fact_bc0fa1f750d9448d98eb5b4c3cd8c861" contextRef="c20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">6.77</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
  <!--Share-based Compensation Arrangement by Share-based Payment Award, Options, Outstanding, Weighted Average Exercise Price-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice id="Fact_c3f364201e0c4fa28c3148b0d27761e1" contextRef="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">2.57</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingWeightedAverageExercisePrice>
  <!--Outstanding stock options intrinsic value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-Common Class A [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue id="Fact_3eff4ca3509a440688f660cce773382d" contextRef="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">27100000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
  <!--Outstanding stock options intrinsic value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-Common Class A [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue id="Fact_6e25cbf3fb684f2da382418ea8e74bc3" contextRef="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">52300000</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsOutstandingIntrinsicValue>
  <!--Options vested (in shares)-Share-based Payment Arrangement, Non Employee Stock Option [Member]-Common Class A [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber id="Fact_8f246d933f5d4652a4ccaa61c1744d36" contextRef="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">2797062</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber>
  <!--Options vested (in shares)-Common Class A [Member]-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber id="Fact_963d6bb6eb984c3c90c192e0a2f25cf7" contextRef="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">2273880</us-gaap:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsVestedAndExpectedToVestOutstandingNumber>
  <!--Share-based Payment Arrangement [Policy Text Block]-->
  <us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy id="Fact_f5584c4ffb7b4d5d8486c1a37f9aa93d" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Stock-based Compensation&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM grants stock options to employees and non-employee consultants and directors and accounts for those stock-based awards in accordance with FASB ASC Topic 718, Compensation &amp;#8211; Stock Compensation.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Stock-based awards granted to employees and non-employee consultants and directors are measured at the fair value of the awards on the grant date and are recognized as expenses either (a)&amp;#160;immediately on grant, if no vesting conditions are required or (b)&amp;#160;using the graded vesting method, net of estimated forfeitures, over the requisite service period. The fair value of stock options is determined using the Black-Scholes valuation model. Stock-based compensation expense, when recognized, is charged to the category of operating expense corresponding to the service function of the employees and non-employee consultants and directors.&lt;/div&gt;&lt;/div&gt;</us-gaap:ShareBasedCompensationOptionAndIncentivePlansPolicy>
  <!--Shares, Issued-Ninebell Company Limited [Member]-Common Class A [Member]-->
  <us-gaap:SharesIssued id="Fact_d5ce61557477443d9c4f27bd4ba01d57" contextRef="c20170911_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCompanyLimitedMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">133334</us-gaap:SharesIssued>
  <!--Shares, Outstanding-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:SharesOutstanding id="Fact_a809f54cf1d54dfcaae39b5b07f7c4bf" contextRef="c20171231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">12935546</us-gaap:SharesOutstanding>
  <!--Shares, Outstanding-Common Stock [Member]-Common Class B [Member]-->
  <us-gaap:SharesOutstanding id="Fact_bf9e413b86c140af9bd5c17b4eb34143" contextRef="c20171231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">2409738</us-gaap:SharesOutstanding>
  <!--Shares, Outstanding-Common Stock [Member]-Common Class B [Member]-->
  <us-gaap:SharesOutstanding id="Fact_454c898c04d545ceb0a6d033bf1dde83" contextRef="c20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">1898423</us-gaap:SharesOutstanding>
  <!--Shares, Outstanding-Common Class A [Member]-Common Stock [Member]-->
  <us-gaap:SharesOutstanding id="Fact_6fc54b9b761e453ab05d11e502f585d8" contextRef="c20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">14110315</us-gaap:SharesOutstanding>
  <!--Shares, Outstanding-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:SharesOutstanding id="Fact_7db3ba5b4a674333aab812aa83c0e416" contextRef="c20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">16182151</us-gaap:SharesOutstanding>
  <!--Shares, Outstanding-Common Stock [Member]-Common Class B [Member]-->
  <us-gaap:SharesOutstanding id="Fact_db4abd2843434b0ab3f638d4c4f73067" contextRef="c20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">1862608</us-gaap:SharesOutstanding>
  <!--Share price (in dollars per share)-Ninebell Company Limited [Member]-Common Class A [Member]-->
  <us-gaap:SharesIssuedPricePerShare id="Fact_b475e0b4b5764d40ada678708acacd35" contextRef="c20170911_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCompanyLimitedMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U003" decimals="2">7.50</us-gaap:SharesIssuedPricePerShare>
  <!--Shipping and Handling Cost, Policy [Policy Text Block]-->
  <us-gaap:ShippingAndHandlingCostPolicyTextBlock id="Fact_49c0614b331d449fae6c371de9dc58e2" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Shipping and Handling Costs&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Shipping and handling costs, which relate to transportation of products to customer locations, are charged to selling and marketing expense. For the year ended December 31, 2019 and 2018, shipping and handling costs included in sales and marketing expenses were $172 and $146&amp;#160; respectively.&lt;/div&gt;&lt;/div&gt;</us-gaap:ShippingAndHandlingCostPolicyTextBlock>
  <!--Short-term lease cost-->
  <us-gaap:ShortTermLeaseCost id="Fact_2efe95619b9741d18eb31d1823ebad77" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">165000</us-gaap:ShortTermLeaseCost>
  <!--Short-term Debt [Text Block]-->
  <us-gaap:ShortTermDebtTextBlock id="Fact_4992c360a1424171b8ed6f610d830322" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold; text-align: justify;"&gt;NOTE&amp;#160;6&amp;#160;&amp;#8211; SHORT-TERM BORROWINGS&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;At December 31, 2019 and 2018, short-term borrowings consisted of the following:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 50,000 from Bank of Shanghai Pudong Branch, due on April 17,2019 with an annual interest rate of 4.99%, guaranteed by the Company&amp;#8217;s CEO and fully repaid on March 27, 2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;3,133&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 50,000 from Bank of Shanghai Pudong Branch, due on February 14,2019 with an annual interest rate of 5.15%, guaranteed by the Company&amp;#8217;s CEO and fully repaid on February 14, 2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;485&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 50,000 from Bank of Shanghai Pudong Branch, due on January 23, 2020 with an annual interest rate of 5.22%, guaranteed by the Company&amp;#8217;s CEO and Cleanchip Technologies Limited.Only RMB 14,500 was repaid on December 13,2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;5,057&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 30,000 from Bank of China Pudong Branch, due on June 6,2019 with annual interest rate of 5.22%,secured by certain of the Company&amp;#8217;s intellectual property and the Company&amp;#8217;s CEO and fully repaid on June 6,2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,186&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 30,000 from Bank of China Pudong Branch, due on June 13,2019 with annual interest rate of 5.22%,secured by certain of the Company&amp;#8217;s intellectual property and the Company&amp;#8217;s CEO and fully repaid on June 13,2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;2,186&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 10,000 from Shanghai Rural Commercial Bank, due on January 23, 2019 with an annual interest rate of 5.44%, guaranteed by the Company&amp;#8217;s CEO and pledged by accounts receivable,and fully repaid on January 23, 2019.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,457&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 20,000 from Shanghai Rural Commercial Bank, due on February 21, 2020 with an annual interest rate of 5.66%, guaranteed by the Company&amp;#8217;s CEO and pledged by accounts receivable.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,433&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 20,000 from Bank of Communications, due on January 18, 2020 with an annual interest rate of 5.66%.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,433&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 20,000 from Bank of Communications, due on January 22, 2020 with an annual interest rate of 5.66%.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;717&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 20,000 from Bank of Communications, due on February 14, 2020 with an annual interest rate of 5.66%.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;717&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 50,000 from China Everbright Bank, due on March 25, 2020 with an annual interest rate of 4.94%, guaranteed by the Company&amp;#8217;s CEO.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;3,250&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Line of credit up to RMB 50,000 from China Everbright Bank, due on April 17, 2020 with an annual interest rate of 5.66%, guaranteed by the Company&amp;#8217;s CEO.&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;1,146&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #0D0D0D;"&gt;13,753&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;9,447&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000;"&gt;For the years ended December&amp;#160;31, 2019 and 2018, interest expense related to short-term borrowings amounted to $745 and $498, respectively.&lt;/div&gt;&lt;/div&gt;</us-gaap:ShortTermDebtTextBlock>
  <!--Short-term borrowings (note 6)-->
  <us-gaap:ShortTermBorrowings id="Fact_be666fa34466468c806d2d2b2f92c4f5" contextRef="c20191231" unitRef="U001" decimals="-3">13753000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-->
  <us-gaap:ShortTermBorrowings id="Fact_ec4bc20f0d9e4ea6bc9e2f9747ac5e43" contextRef="c20181231" unitRef="U001" decimals="-3">9447000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 9 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_0615aee31af74069bd96458037029e6c" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit9Member" unitRef="U001" decimals="-3">717000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 11 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_13bca4c4a73c4b7cb8c503a4ebfe0931" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit11Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 10 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_33f97c68943149f19983f5a84cd7d461" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit10Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 10 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_3a2e951df8494a53bb83e488bca7f641" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit10Member" unitRef="U001" decimals="-3">717000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 7 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_41d000ad7d2f4d638d4357ce6f46bd1c" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit7Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 12 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_5049d8930c534f2b8dc1072874b2c8be" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit12Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 1 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_53289a0202f7439ab68feb0dfce1be81" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit1Member" unitRef="U001" decimals="-3">3133000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 2 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_6a2b17d2d5c548fdbbd00772480da214" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit2Member" unitRef="U001" decimals="-3">485000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 6 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_6cf97ad5ce9843dfb732c01f07291ed1" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit6Member" unitRef="U001" decimals="-3">1457000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 5 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_6d94f90e5adc40d28f396c28ba0941e7" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit5Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 8 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_81f6ac1c3ff347bf8985a44c3b21cad6" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit8Member" unitRef="U001" decimals="-3">1433000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 1 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_8860ad9b91274a6aa6b8bd87d6a2ca16" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit1Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 3 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_8ddefb8d0aef4fa0bbb4fb141c4f1ed7" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit3Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 11 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_90553456ee994107b34053bc2387475a" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit11Member" unitRef="U001" decimals="-3">3250000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 8 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_907f7d4ac6d547f2aa16530e3f79bb71" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit8Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 9 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_909624a3a5854340a0bdda61a0f2c304" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit9Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 3 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_93465041397d41b687e47fa99aaed480" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit3Member" unitRef="U001" decimals="-3">5057000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 5 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_97a5cc21c0584aa88ff8276fdb3f0707" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit5Member" unitRef="U001" decimals="-3">2186000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 4 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_ca7e419cabb847388dfa566b3d0295e4" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit4Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 7 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_d839fe5be5f344a5839c82b5f8e5c5f0" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit7Member" unitRef="U001" decimals="-3">1433000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 12 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_e4b4bdd0d5b44050bf4f5dbe659c4e6d" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit12Member" unitRef="U001" decimals="-3">1146000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 4 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_e5444fc490304e469a91f86fd02fd5ef" contextRef="c20181231_DebtInstrumentAxis_LineOfCredit4Member" unitRef="U001" decimals="-3">2186000</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 2 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_e5a609ae56b44acf83be694742098cfd" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit2Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Short-term borrowings (note 6)-Line of Credit 6 [Member]-->
  <us-gaap:ShortTermBorrowings id="Fact_fc7cfd64b6344ddea8e9574ee757bb17" contextRef="c20191231_DebtInstrumentAxis_LineOfCredit6Member" unitRef="U001" decimals="-3">0</us-gaap:ShortTermBorrowings>
  <!--Significant Accounting Policies [Text Block]-->
  <us-gaap:SignificantAccountingPoliciesTextBlock id="Fact_aa16368dec574990a09669467f1742eb" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold; text-align: justify;"&gt;NOTE 2&amp;#160;&amp;#8211; SUMMARY OF SIGNIFICANT ACCOUNTING POLICIES&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Basis of Presentation and Principles of Consolidation&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The accompanying consolidated financial statements of the Company have been prepared in accordance with accounting principles generally accepted in the United States of America (&amp;#8220;GAAP&amp;#8221;). The Company&amp;#8217;s consolidated financial statements include the accounts of the Company and its subsidiaries including ACM and its subsidiary, ACM Shanghai, which includes ACM Wuxi, ACM Shengwei, and CleanChip (ACM California and ACM Korea). Subsidiaries are those entities in which ACM, directly and indirectly, controls more than one half of the voting power. All significant intercompany transactions and balances have been eliminated upon consolidation.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Use of Estimates&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The preparation of the consolidated financial statements in conformity with GAAP requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and disclosure of contingent assets and liabilities at the balance sheet date and the reported revenues and expenses during the reported period in the consolidated financial statements and accompanying notes. The Company&amp;#8217;s significant accounting estimates and assumptions include, but are not limited to, those used for the valuation and recognition of stock-based compensation arrangements and warrant liability, realization of deferred tax assets, assessment for impairment of long-lived assets, allowance for doubtful accounts, inventory valuation for excess and obsolete inventories, lower of cost and market value or net realizable value of inventories, depreciable lives of property and equipment, accrued warranty, and useful life of intangible assets.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Management evaluates these estimates and assumptions on a regular basis. Actual results could differ from those estimates and assumptions.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Cash and Cash Equivalents&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Cash and cash equivalents consist of cash on hand, bank deposits that are unrestricted as to withdrawal and use, and highly liquid investments with an original maturity date of three months or less at the date of purchase. At times, cash deposits may exceed government-insured limits.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Restricted cash&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Restricted cash represents deposits not readily available to ACM. Restricted cash as of December 31, 2019 represented cash hold in reserve, all of the proceeds received from issuance of common stock to redeemable Non-controlling interest in segregated cash and cash-equivalent accounts.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Accounts Receivable&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Accounts receivable are presented net of an allowance for doubtful accounts. The Company reviews its accounts receivable on a periodic basis and makes general and specific allowances when there is doubt as to the collectability of individual balances. In evaluating the collectability of individual receivable balances, the Company considers many factors, including the age of the balance, a customer&amp;#8217;s historical payment history and credit worthiness, and current economic trends. Accounts are written off after all collection efforts have been exhausted. At December 31, 2019 and 2018, the Company, based on a review of its outstanding balances and its customers, determined the allowance for doubtful accounts in the amount of $0 and $0 respectively.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Inventory&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Inventory consists of raw materials and related goods, work-in-progress, finished goods, and other consumable materials such as spare parts. Finished goods typically are shipped from the Company&amp;#8217;s warehouse within one month of completion.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Inventory was recorded at the lower of cost or net realizable value at December 31, 2019 and 2018.&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;The cost of a general inventory item is determined using the weighted moving average method. Under the weighted moving average method, the Company calculates the new average price of all items of a particular inventory stock each time one or more items of that stock are purchased. The then-current average price of the stock is used for purposes of determining cost of inventory or cost of revenue. The cost of an inventory item purchased specifically for a customized product is determined using the specific identification method. Low-cost consumable materials and packaging materials are expensed as incurred.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Net realizable value is the estimated selling price, in the ordinary course of business, less estimated costs to complete or dispose.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company assesses the recoverability of all inventories quarterly to determine if any adjustments are required. Potential excess or obsolete inventory is written off based on management&amp;#8217;s analysis of inventory levels and estimates of future 12-month demand and market conditions.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Property, Plant and Equipment, Net&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Property, plant and equipment are recorded at cost less accumulated depreciation and any provision for impairment in value. Depreciation begins when the asset is placed in service and is calculated by using the straight-line method over the estimated useful life of an asset (or, if shorter, over the lease term). Betterments or renewals are capitalized when incurred. Plant, property and equipment is reviewed each year to determine whether any events or circumstances indicate that the carrying amount of the assets may not be recoverable.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; text-indent: 27.35pt;"&gt;Estimated useful lives of assets in the United States are as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 90%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -12pt; margin-left: 12pt;"&gt;Computer and office equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;3 to 5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -12pt; margin-left: 12pt;"&gt;Furniture and fixtures&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -12pt; margin-left: 12pt;"&gt;Leasehold improvements&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;shorter&amp;#160;of&amp;#160;lease&amp;#160;term&amp;#160;or&amp;#160;estimated useful life&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM&amp;#8217;s subsidiaries follow regulations for depreciation of fixed assets implemented under the PRC&amp;#8217;s Enterprise Income Tax Law, which state that the minimum useful lives used for calculating depreciation for fixed assets are as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; width: 90%; border-collapse: collapse; text-align: left; color: rgb(0, 0, 0);"&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;Manufacturing equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;for small to medium-sized equipment, 5 years; for large equipment,&lt;/div&gt;&lt;div&gt;estimated by purchasing department at time of acceptance&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;Furniture and fixtures&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;Transportation equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;4 to 5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;Electronic equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;3 to 5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;Leasehold improvements&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;remaining lease term for improvements on leased fixed assets or,&lt;/div&gt;&lt;div&gt;for large improvements, estimated useful life;&lt;/div&gt;&lt;div&gt;not less than 3 years for non-fixed asset repairs&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Expenditures for maintenance and repairs that neither materially add to the value of the property nor appreciably prolong the life of the property are charged to expense as incurred. Upon retirement or sale of an asset, the cost of the asset and the related accumulated depreciation are eliminated from the accounts and any resulting gain or loss is credited or charged to income.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Intangible Assets, Net&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Intangible assets consist of software used for finance, manufacturing, and research and development purposes. Assets are valued at cost at the time of acquisition and are amortized over their beneficial periods. If a contract specifies a beneficial period, then the intangible asset is amortized over a term not exceeding the beneficial period. If the contract does not specify a beneficial period, then the intangible asset is amortized over a term not exceeding the valid period specified by local law. If neither the contract nor local law specifies a beneficial period, then the intangible asset is amortized over a period of up to 10 years. Currently, the software that the Company uses is amortized over a two-year period in accordance with the policy described above.&lt;/div&gt;&lt;p class="MsoCommentText" style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none; text-align: justify;"&gt;&lt;u&gt;&lt;font style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; background-clip: border-box; background-origin: padding-box; background-size: auto auto;"&gt;Investments&lt;/font&gt;&lt;/u&gt;&lt;/p&gt;&lt;div style="text-align: justify; color: #000000;"&gt;&lt;font style="background-color: rgb(255, 255, 255);"&gt;The Company uses the equity method of accounting for its investment in, and earning or loss of, companies that it does not control but over which it does exert significant influence. The Company considers whether the fair value of its equity method investment has declined below its carrying value whenever adverse events or changes in circumstances indicate that recorded value may not be recoverable. The Company reviews its investments for other-than-temporary impairment whenever events or changes in business circumstances indicate that the carrying value of the investment may not be fully recoverable. Investments identified as having an indication of impairment are subject to further analysis to determine if the impairment is other-than-temporary and this analysis requires estimating the fair value of the investment. The determination of fair value of the investment involves considering factors such as current economic and market conditions, the operating performance of the entities including current earnings trends and forecasted cash flows, and other company and industry specific information. If the Company considers any decline to be other than temporary (based on various factors, including historical financial results and the overall health of the investee), then a write-down would be recorded to estimated fair value. See note 10 for discussion of equity method investment.&lt;/font&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Valuation of Long-Lived Assets&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Long-lived assets are evaluated for impairment whenever events or changes in circumstance indicate that the carrying value of the assets may not be fully recoverable or that the useful life of the assets is shorter than the Company had originally estimated. When these events or changes occur, the Company evaluates the impairment of the long-lived assets by comparing the carrying value of the assets to an estimate of future undiscounted cash flows expected to be generated from the use of the assets and their eventual disposition. If the sum of the expected future undiscounted cash flow is less than the carrying value of the assets, the Company recognizes an impairment loss based on the excess of the carrying value over the fair value. No impairment charge was recognized for either of the periods presented.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Leases&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;The Company determines if an arrangement is a lease at inception. Operating leases are included in operating lease right-of-use (&amp;#8220;ROU&amp;#8221;) assets, other current liabilities and operating lease liabilities in the consolidated balance sheets.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;ROU assets represent the Company&amp;#8217;s right to use an underlying asset for the lease term, and lease liabilities represent the Company&amp;#8217;s obligation to make lease payments arising from the lease. Operating lease ROU assets and liabilities are recognized at commencement date based on the present value of lease payments over the lease term. As most of the Company&amp;#8217;s leases do not provide an implicit rate, the Company uses its incremental borrowing rate based on the information available at commencement date in determining the present value of lease payments. It uses the implicit rate when readily determinable. The operating lease ROU asset also includes any lease payments made and excludes lease incentives. The Company&amp;#8217;s lease terms may include options to extend or terminate the lease when it is reasonably certain that the Company will exercise that option. Lease expense for lease payments is recognized on a straight-line basis over the lease term.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Redeemable Convertible Preferred Stock&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company recorded each series of convertible preferred stock at fair value on the date of issuance, net of issuance costs. The convertible preferred stock is recorded outside of stockholders&amp;#8217; equity (deficit) because, in the event of certain deemed liquidation events considered not solely within the Company&amp;#8217;s control (such as a merger, acquisition, or sale of all or substantially all of the Company&amp;#8217;s assets), the convertible preferred stock will become redeemable at the option of the holders. The Company has not adjusted the carrying value of any series of convertible preferred stock to the liquidation preference of such series because it is uncertain whether or when an event would occur that would obligate the Company to pay the liquidation preferences to holders of convertible preferred stock. Subsequent adjustments to the carrying values to the liquidation preferences will be made only when it becomes probable that such a liquidation event will occur.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Redeemable Non-controlling Interests&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company recorded initial carrying amount of redeemable non-controlling interests at fair value on the date of issuance, and presented in temporary equity on the consolidated balance sheets.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As the non-controlling interests would be redeemable at a fixed purchase price, it is classified as common-share non-controlling interests redeemable at other than fair value. The Company applied the entire adjustment method (income classification) for subsequent measurement in accordance with ASC 480&amp;#8209;10-S99.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Revenue Recognition&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company derives revenue principally from the sale of single-wafer wet cleaning equipment. Revenue from contracts with customers is recognized using the following five steps pursuant ASC Topic 606, &lt;font style="font-style: italic;"&gt;Revenue from Contracts with Customers&lt;/font&gt;:&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 24.5pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 11.5pt; vertical-align: top; align: right;"&gt;1.&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Identify the contract(s) with a customer;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 24.5pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 11.5pt; vertical-align: top; align: right;"&gt;2.&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Identify the performance obligations in the contract;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 24.5pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 11.5pt; vertical-align: top; align: right;"&gt;3.&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Determine the transaction price;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 24.5pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 11.5pt; vertical-align: top; align: right;"&gt;4.&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Allocate the transaction price to the performance obligations in the contract; and&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 24.5pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 11.5pt; vertical-align: top; align: right;"&gt;5.&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Recognize revenue when (or as) the entity satisfies a performance obligation.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;A contract contains a promise (or promises) to transfer goods or services to a customer. A performance obligation is a promise (or a group of promises) that is distinct. The transaction price is the amount of consideration a company expects to be entitled from a customer in exchange for providing the goods or services.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The unit of account for revenue recognition is a performance obligation (a good or service). A contract may contain one or more performance obligations. Performance obligations are accounted for separately if they are distinct. A good or service is distinct if the customer can benefit from the good or service either on its own or together with other resources that are readily available to the customer, and the good or service is distinct in the context of the contract. Otherwise performance obligations are combined with other promised goods or services until the Company identifies a bundle of goods or services that is distinct. Promises in contracts which do not result in the transfer of a good or service are not performance obligations, as well as those promises that are administrative in nature, or are immaterial in the context of the contract. The Company has addressed whether various goods and services promised to the customer represent distinct performance obligations. The Company applied the guidance of ASC Topic 606-10-25-16 through 18 in order to verify which promises should be assessed for classification as distinct performance obligations. The Company&amp;#8217;s contracts with customers include more than one performance obligation. For example, the delivery of a piece of equipment generally includes the promise to install the equipment in the customer&amp;#8217;s facility. The Company&amp;#8217;s performance obligations in connection with a sale of equipment generally include production, delivery and installation, together with the provision of a warranty.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The transaction price is allocated to all the separate performance obligations in an arrangement. It reflects the amount of consideration to which the Company expects to be entitled in exchange for transferring goods or services, which may include an estimate of variable consideration to the extent that it is probable of not being subject to significant reversals in the future based on the Company&amp;#8217;s experience with similar arrangements. The transaction price excludes amounts collected on behalf of third parties, such as sales taxes. This is done on a relative selling price basis using standalone selling prices (&amp;#8220;SSP&amp;#8221;). The SSP represents the price at which the Company would sell that good or service on a standalone basis at the inception of the contract. Given the requirement for establishing SSP for all performance obligations, if the SSP is directly observable through standalone sales, then such sales should be considered in the establishment of the SSP for the performance obligation. The Company does not have observable SSPs for most performance obligations as the obligations are not regularly sold on a standalone basis. Production, delivery and installation of a product, together with provision of a warranty, are a single unit of accounting.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Revenue is recognized when the Company satisfies each performance obligation by transferring control of the promised goods or services to the customer. Goods or services can transfer at a point in time (upon the acceptance of the products or upon the arrival at the destination as stipulated in the shipment terms) in a sale arrangement. In general, the Company recognizes revenue when a tool has been demonstrated to meet the customer&amp;#8217;s predetermined specifications and is accepted by the customer. If terms of the sale provide for a lapsing customer acceptance period, the Company recognizes revenue as of the earlier of the expiration of the lapsing acceptance period and customer acceptance. In the following circumstances, however, the Company recognizes revenue upon shipment or delivery, when legal title to the tool is passed to a customer as follows:&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 36pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;When the customer has previously accepted the same tool with the same specifications and the Company can objectively demonstrate that the tool meets all of the required acceptance criteria;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 36pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;When the sales contract or purchase order contains no acceptance agreement or lapsing acceptance provision and the Company can objectively demonstrate that the tool meets all of the required acceptance criteria;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 36pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;When the customer withholds acceptance due to issues unrelated to product performance, in which case revenue is recognized when the system is performing as intended and meets predetermined specifications; or&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 36pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;When the Company&amp;#8217;s sales arrangements do not include a general right of return.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company offers post-warranty period services, which consist principally of the installation and replacement of parts and small-scale modifications to the equipment. The related revenue and costs of revenue are recognized when parts have been delivered and installed, risk of loss has passed to the customer, and collection is probable. The Company does not expect revenue from extended maintenance service contracts to represent a material portion of its revenue in the future. &lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company incurs costs related to the acquisition of its contracts with customers in the form of sales commissions. Sales commissions are paid to third party representatives and distributors. Contractual agreements with these parties outline commission structures and rates to be paid. Generally speaking, the contracts are all individual procurement decisions by the customers and are not for significant periods of time, nor do they include renewal provisions. As such, all contracts have an economic life of significantly less than a year. Accordingly, the Company expenses sales commissions when incurred. These costs are recorded within sales and marketing expenses.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company does not incur any costs to fulfill the contracts with customers that are not already reported in compliance with another applicable standard (for example, inventory or plant, property and equipment).&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Cost of Revenue&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Cost of revenue primarily consists of: direct materials, comprised principally of parts used in assembling equipment, together with crating and shipping costs; direct labor, including salaries and other labor related expenses attributable to the Company&amp;#8217;s manufacturing department; and allocated overhead cost, such as personnel cost, depreciation expense, and allocated administrative costs associated with supply chain management and quality assurance activities, as well as shipping insurance premiums.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Research and Development Costs&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Research and development costs relating to the development of new products and processes, including significant improvements and refinements to existing products or to the process of supporting customer evaluations of tools, including the development of new tools for evaluation by customers during the product demonstration process, are expensed as incurred.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Shipping and Handling Costs&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Shipping and handling costs, which relate to transportation of products to customer locations, are charged to selling and marketing expense. For the year ended December 31, 2019 and 2018, shipping and handling costs included in sales and marketing expenses were $172 and $146&amp;#160; respectively.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Borrowing Costs&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Borrowing costs attributable directly to the acquisition, construction or production of qualifying assets that require a substantial period of time to be ready for their intended use or sale are capitalized as part of the cost of those assets. Income earned on temporary investments of specific borrowings pending their expenditure on those assets is deducted from borrowing costs capitalized. All other borrowing costs are recognized in interest expenses in the consolidated statements of operations and comprehensive income in the period in which they are incurred. No borrowing costs were capitalized for the year ended December 31, 2019 or 2018.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div&gt;&lt;u&gt;Warranty&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For each of its products, the Company generally provides a standard warranty ranging from 12 to 36 months and covering replacement of the product during the warranty period. The Company accounts for the estimated warranty costs as sales and marketing expenses at the time revenue is recognized. Warranty obligations are affected by historical failure rates and associated replacement costs. Utilizing historical warranty cost records, the Company calculates a rate of warranty expenses to revenue to determine the estimated warranty charge. The Company updates these estimated charges on a regular basis. &lt;font style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none;"&gt;&lt;font style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; background-clip: border-box; background-origin: padding-box; background-size: auto auto;"&gt;Warranty obligations are included in other payables and accrued expenses in the consolidated balance sheets.&lt;/font&gt;&lt;/font&gt;The following table shows changes in the Company&amp;#8217;s warranty obligations for the year ended December 31, 2019 and 2018, respectively.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Balance at beginning of period&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,710&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;839&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Additions&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;2,105&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;1,412&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Utilized&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(1,004&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(541&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 46%; background-color: rgb(255, 255, 255); border-bottom: 4px double rgb(0, 0, 0);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Balance at end of period&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 4px double rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,811&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,710&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Government Subsidies&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM Shanghai has been awarded four subsidies from local and central governmental authorities in the PRC. The first subsidy, which was awarded in October 2008, relates to the development and commercialization of 65 to 45nm Stress Free Polishing technology. The second subsidy was awarded in April 2009 to fund interest expenses for short-term borrowings. The third subsidy was awarded in January 2014 and relates to the development of Electro Copper Plating technology. The fourth subsidy was awarded in June of 2018, and related to development of Polytetrafluoroethylene. The PRC governmental authorities will provide the majority of the funding, although ACM Shanghai is also required to invest certain amounts in the projects.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The government subsidies contain certain operating conditions and therefore are recorded as long-term liabilities upon receipt. The grant amounts are recognized in the statements of operations and comprehensive income:&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;Government subsidies relating to current expenses are recorded as reductions of those expenses in the periods in which the current expenses are recorded. For the years ended December&amp;#160;31, 2019 and 2018, related government subsidies recognized as reductions of relevant expenses in the consolidated statements of operations and comprehensive income were $3,195 and $1,486, respectively.&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Government subsidies related to depreciable assets are credited to income over the useful lives of the related assets for which the grant was received. For the years ended December&amp;#160;31, 2019 and 2018, related government subsidies recognized as other income in the consolidated statements of operations and comprehensive income were $147 and $144, respectively.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Unearned government subsidies received are deferred for recognition and recorded as other long-term liabilities (note 9) in the balance sheet until the criteria for such recognition are satisfied.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Stock-based Compensation&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM grants stock options to employees and non-employee consultants and directors and accounts for those stock-based awards in accordance with FASB ASC Topic 718, Compensation &amp;#8211; Stock Compensation.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Stock-based awards granted to employees and non-employee consultants and directors are measured at the fair value of the awards on the grant date and are recognized as expenses either (a)&amp;#160;immediately on grant, if no vesting conditions are required or (b)&amp;#160;using the graded vesting method, net of estimated forfeitures, over the requisite service period. The fair value of stock options is determined using the Black-Scholes valuation model. Stock-based compensation expense, when recognized, is charged to the category of operating expense corresponding to the service function of the employees and non-employee consultants and directors.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Income Taxes&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company accounts for income taxes using the liability method whereby deferred tax asset and liability account balances are determined based on differences between the financial reporting and tax bases of assets and liabilities and are measured using the enacted tax rates and laws that will be in effect when the differences are expected to reverse. The Company provides a valuation allowance, if necessary, to reduce deferred tax assets to their estimated realizable values.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In evaluating the ability to recover its deferred income tax assets, the Company considers all available positive and negative evidence, including its operating results, ongoing tax planning and forecasts of future taxable income on a jurisdiction-by-jurisdiction basis. In the event the Company determines that it would be able to realize its deferred income tax assets in the future in excess of their net recorded amount, it would make an adjustment to the valuation allowance that would reduce the provision for income taxes. Conversely, in the event that all or part of the net deferred tax assets are determined not to be realizable in the future, an adjustment to the valuation allowance would be charged to earnings in the period such determination is made.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Tax benefits related to uncertain tax positions are recognized when it is more likely than not that a tax position will be sustained during an audit. Interest and penalties related to unrecognized tax benefits are included within the provision for income tax.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Basic and Diluted Net Income per Common Share&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000;"&gt;Basic and diluted net income per common share are calculated as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 60%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 36%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 36%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Numerator:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Net&amp;#160;income&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;19,458&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;6,574&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Net income attributable to redeemable non-controlling interest&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div&gt;564&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net income available to common stockholders, basic and diluted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;18,894&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;6,574&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Weighted&amp;#160;average&amp;#160;shares&amp;#160;outstanding,&amp;#160;basic&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div&gt;16,800,623&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;15,788,460&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Effect&amp;#160;of&amp;#160;dilutive&amp;#160;securities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div&gt;2,334,874&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;2,123,645&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Weighted&amp;#160;average&amp;#160;shares&amp;#160;outstanding,&amp;#160;diluted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;19,135,497&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;17,912,105&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net income per common share:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 36%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Basic&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div&gt;1.12&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;0.42&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 36%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Diluted&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div&gt;0.99&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;0.37&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000;"&gt;Basic and diluted net income per common share are presented using the two-class method, which allocates undistributed earnings to common stock and any participating securities according to dividend rights and participation rights on a proportionate basis. Under the two-class method, basic net income (per common share is computed by dividing the sum of distributed and undistributed earnings attributable to common stockholders by the weighted average number of shares of common stock outstanding during the period. Shares of ACM&amp;#8217;s Series A, B, C, D, E and F convertible preferred stock are participating securities, as the holders are entitled to participate in and receive the same dividends as may be declared for common stockholders on a pro-rata, if-converted basis.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;ACM has been authorized to issue Class A and Class B common stock since redomesticating in Delaware in November 2016. The two classes of common stock are substantially identical in all material respects, except for voting rights. Since ACM did not declare any dividends during the years ended December 31, 2019 and 2018, the net income (loss) per common share attributable to each class is the same under the &amp;#8220;two-class&amp;#8221; method. As such, the two classes of common stock have been presented on a combined basis in the consolidated statements of operations and comprehensive income and in the above computation of net income per common share.&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Diluted net income per common share reflects the potential dilution from securities that could share in ACM&amp;#8217;s earnings. Certain potential dilutive securities were excluded from the net income per share calculation because the impact would be anti-dilutive. The potentially dilutive securities that were not included in the calculation of diluted net income per share in the periods presented where their inclusion would be anti-dilutive are as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: top; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: top; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: top; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Stock Options&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;4,095,676&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;3,715,779&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; width: 46%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Warrant&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;77,810&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;80,000&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: top; width: 46%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;4,173,486&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;3,795,779&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Comprehensive Income Attributable to the Company&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company applies FASB ASC Topic 220, Comprehensive Income, which establishes standards for the reporting and display of comprehensive income or loss, requiring its components to be reported in a financial statement with the same prominence as other financial statements. The comprehensive income attributable to the Company was $18,559 and $5,595 for the years ended December 31, 2019 and 2018, respectively.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none; text-align: justify;"&gt;&lt;u&gt;Statutory reserves&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The income of ACM&amp;#8217;s PRC subsidiaries is distributable to their shareholders after transfers to reserves as required under relevant PRC laws and regulations and the subsidiaries&amp;#8217; Articles of Association. As stipulated by the relevant laws and regulations in the PRC, the PRC subsidiaries are required to maintain reserves, including reserves for statutory surpluses and public welfare funds that are not distributable to shareholders. A PRC subsidiary&amp;#8217;s appropriations to the reserves are approved by its board of directors. At least 10% of annual statutory after-tax profits, as determined in accordance with PRC accounting standards and regulations, is required to be allocated to the statutory surplus reserves. If the cumulative total of the statutory surplus reserves reaches 50% of a PRC subsidiary&amp;#8217;s registered capital, any further appropriation is optional.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;Statutory surplus reserves may be used to offset accumulated losses or to increase the registered capital of a PRC subsidiary, subject to approval from the relevant PRC authorities, and are not available for dividend distribution to the subsidiary&amp;#8217;s shareholders. The PRC subsidiaries are prohibited from distributing dividends unless any losses from prior years have been offset. Except for offsetting prior years&amp;#8217; losses, however, statutory surplus reserves must be maintained at a minimum of 25% of share capital after such usage. ACM Shanghai estimated a statutory surplus reserve of $1,427 based on an accumulated profit as of December 31, 2019 which is included in the accumulated surplus in the consolidated balance sheets, versus no statutory surplus reserved due to accumulated losses as of December 31, 2018.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Fair Value of Financial Instruments&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Under the FASB&amp;#8217;s authoritative guidance on fair value measurements, fair value is the price that would be received to sell an asset or paid to transfer a liability in an orderly transaction between market participants at the measurement date. In determining the fair value, the Company uses various methods including market, income and cost approaches. Based on these approaches, the Company often utilizes certain assumptions that market participants would use in pricing the asset or liability, including assumptions about risk and the risks inherent in the inputs to the valuation technique. These inputs can be readily observable, market corroborated or generally unobservable inputs. The Company uses valuation techniques that maximize the use of observable inputs and minimize the use of unobservable inputs. Based on observability of the inputs used in the valuation techniques, the Company is required to provide the following information according to the fair value hierarchy. The fair value hierarchy ranks the quality and reliability of the information used to determine fair values. Financial assets and liabilities carried at fair value are classified and disclosed in one of the following three categories:&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="margin-left: 18pt; text-align: justify;"&gt;Level 1: Valuations for assets and liabilities traded in active exchange markets. Valuations are obtained from readily available pricing sources for market transactions involving identical assets or liabilities.&lt;/div&gt;&lt;div style="margin-left: 18pt; text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="margin-left: 18pt; text-align: justify;"&gt;Level 2: Valuations for assets and liabilities traded in less active dealer or broker markets. Valuations are obtained from third party pricing services for identical or similar assets or liabilities.&lt;/div&gt;&lt;div style="margin-left: 18pt; text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="margin-left: 18pt; text-align: justify;"&gt;Level 3: Valuations for assets and liabilities that are derived from other valuation methodologies, including option pricing models, discounted cash flow models and similar techniques, and not based on market exchange, dealer or broker traded transactions. Level 3 valuations incorporate certain unobservable assumptions and projections in determining the fair value assigned to such assets.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;All transfers between fair value hierarchy levels are recognized by the Company at the end of each reporting period. In certain cases, the inputs used to measure fair value may fall into different levels of the fair value hierarchy. In such cases, an investment&amp;#8217;s level within the fair value hierarchy is based on the lowest level of input that is significant to the fair value measurement in its entirety requires judgment, and considers factors specific to the investment. The inputs or methodology used for valuing financial instruments are not necessarily an indication of the risks associated with investment in those instruments.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; font-weight: bold; text-align: justify;"&gt;Fair Value Measured or Disclosed on a Recurring Basis&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;&lt;font style="font-style: italic;"&gt;Warrant liability&lt;/font&gt;&amp;#8212;The fair value of the warrant liability derives from the Black-Scholes valuation model which incorporates certain unobservable assumptions (note 8). The Company classifies the valuation techniques that use these inputs as Level 3 fair value measurement.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;font style="font-style: italic;"&gt;Other financial items for disclosure purpose&lt;/font&gt;&amp;#8212;The fair value of other financial items of the Company for disclosure purpose, including cash and cash equivalents, accounts receivable, other receivables, short-term borrowings, accounts payable, advances from customers, and other payables and accrued expenses, approximate their carrying value due to their short-term nature.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Operating and Financial Risks&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; text-align: justify;"&gt;Concentration of Credit Risk&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Financial instruments that potentially subject the Company to credit risk consist principally of cash and cash equivalents, restricted cash and accounts receivable. The Company deposits and invests its cash with financial institutions that management believes are creditworthy.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company is potentially subject to concentrations of credit risks in its accounts receivable. Three customers individually accounted for greater than ten percent of the Company&amp;#8217;s revenue for the year ended 2019 and the year ended 2018:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Customer A&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;26.46&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;24.17&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Customer B&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;19.84&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;23.83&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;% &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Customer C&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;27.50&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;39.63&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;% &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; text-align: justify;"&gt;Interest Rate Risk&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As of December 31, 2019 and 2018, the balance of bank borrowings (note 6) was short-term in nature, matured at various dates within the following year and did not expose the Company to interest rate risk.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; text-align: justify;"&gt;Liquidity Risk&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company&amp;#8217;s working capital at December 31, 2019 and 2018 was sufficient to meet its then-current requirements. The Company may, however, require additional cash due to changing business conditions or other future developments, including any investments or acquisitions the Company decides to pursue. In the long run, the Company intends to rely primarily on cash flows from operations and additional borrowings from financial institutions in order to meet its cash needs. If those sources are insufficient to meet cash requirements, the Company may seek to issue additional debt or equity.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; text-align: justify;"&gt;Country Risk&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company has significant investments in the PRC. The operating results of the Company may be adversely affected by changes in the political and social conditions in the PRC and by changes in Chinese government policies with respect to laws and regulations, anti-inflationary measures, currency conversion and remittance abroad, and rates and methods of taxation,&amp;#160;among other things.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; text-align: justify;"&gt;Foreign Currency Risk and Translation&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company&amp;#8217;s consolidated financial statements are presented in U.S. dollars, which is the Company&amp;#8217;s reporting currency, while the functional currency of ACM&amp;#8217;s subsidiaries is the Chinese Renminbi (&amp;#8220;RMB&amp;#8221;), and the Korean Won. Changes in the relative values of U.S. dollars and Chinese RMB affect the Company&amp;#8217;s reported levels of revenues and profitability as the results of its operations are translated from RMB into U.S. dollars for reporting purposes. Because the Company has not engaged in any hedging activities, it cannot predict the impact of future exchange rate fluctuations on the results of its operations and it may experience economic losses as a result of foreign currency exchange rate fluctuations.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Transactions of ACM&amp;#8217;s subsidiaries involving foreign currencies are recorded in functional currency according to the rate of exchange prevailing on the date when the transaction occurs. The ending balances of the Company&amp;#8217;s foreign currency accounts are converted into functional currency using the rate of exchange prevailing at the end of each reporting period. Net gains and losses resulting from foreign exchange fluctuations as marked to market at year-end are included in the consolidated statements of operations and comprehensive income. Total foreign currency translation adjustment was ($899) and ($979) for the years ended December&amp;#160;31, 2019 and 2018.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In accordance with FASB ASC Topic 830, &lt;font style="font-style: italic;"&gt;Foreign Currency Matters&lt;/font&gt;, the Company translates assets and liabilities into U.S. dollars from RMB or Korean Won using the rate of exchange prevailing at the applicable balance sheet date and the consolidated statements of operations and comprehensive income and consolidated statements of cash flows are translated at an average rate during the reporting period. Adjustments resulting from the translation are recorded in stockholders&amp;#8217; (deficit) equity as part of accumulated other comprehensive income (loss). Any differences between the initially recorded amount and the settlement amount are recorded as a gain or loss on foreign currency transaction in the consolidated statements of operations and comprehensive income.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Translations of amounts from RMB and Korean Won into U.S. dollars were made at the following exchange rates for the respective dates and periods:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;At December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%;"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;&lt;u&gt;Consolidated balance sheets:&lt;/u&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;RMB to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.9784&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.8634&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;KRW to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,156.07&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,114.83&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td colspan="8" nowrap="nowrap" valign="bottom" style="vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;&lt;u&gt;Consolidated statements of operations and comprehensive income:&lt;/u&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;RMB to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.8966&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.6181&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;KRW to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,165.50&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,100.11&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="font-style: italic; font-weight: bold;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; font-weight: bold; text-align: justify;"&gt;Recently Adopted Accounting Pronouncements&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In February 2016, the Financial Accounting Standards Board (&amp;#8220;FASB&amp;#8221;) issued Accounting Standards Update (&amp;#8220;ASU&amp;#8221;) 2016-02, &lt;font style="font-style: italic;"&gt;Leases (Topic 842)&lt;/font&gt;. The amendments in &lt;font style="color: rgb(0, 0, 0);"&gt;ASU 2016-02&lt;/font&gt; create Topic 842, &lt;font style="font-style: italic;"&gt;Leases&lt;/font&gt;, and supersede the leases requirements in Topic&amp;#160;840, &lt;font style="font-style: italic;"&gt;Leases&lt;/font&gt;. Topic 842 specifies the accounting for leases. The objective of Topic 842 is to establish the principles that lessees and lessors shall apply to report useful information to users of financial statements about the amount, timing, and uncertainty of cash flows arising from a lease. The main difference between Topic 842 and Topic 840 is the recognition of lease assets and lease liabilities for those leases classified as operating leases under Topic 840. Topic 842 retains a distinction between finance leases and operating leases. The classification criteria for distinguishing between finance leases and operating leases are substantially similar to the classification criteria for distinguishing between capital leases and operating leases in the previous lease guidance. The result of retaining a distinction between finance leases and operating leases is that under the lessee accounting model in Topic 842, the effect of leases in the statement of comprehensive income and the statement of cash flows is largely unchanged from previous GAAP.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: #000000;"&gt;Effective January 1, 2019, the Company adopted ASU 2016-02. The original guidance required application on a modified retrospective basis with the earliest period presented. In August 2018, the FASB issued ASU 2018-11, &lt;font style="font-style: italic;"&gt;Targeted Improvements to ASC 842&lt;/font&gt;, &lt;font style="font-style: italic;"&gt;Leases&lt;/font&gt;, which included an option to not restate comparative periods in transition and elect to use the effective date of Accounting Standards Codification (&amp;#8220;ASC&amp;#8221;) 842&lt;font style="font-style: italic;"&gt;&amp;#160;&lt;/font&gt;as the date of initial application of transition, which the Company elected. As a result of its adoption of ASC 842 as of January 1, 2019, the Company recorded operating lease right-of-use assets of $5,109 and lease liabilities of $5,109. The adoption of ASC 842 had no impact on the Company&amp;#8217;s profit or cash flows for the year ended December 31, 2019. In addition, the Company elected the package of practical expedients permitted under the transition guidance within the new standard, which allowed the Company to carry forward the historical lease classification. Additional information and disclosures required by this new standard are contained in note&amp;#160;8.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In June 2018, the FASB issued ASU 2018-07, &lt;font style="font-style: italic;"&gt;Compensation&amp;#8212;Stock Compensation (Topic 718)&amp;#8212;Improvements to Nonemployee Share-Based Payment Accounting&lt;/font&gt;, which simplifies several aspects of the accounting for nonemployee share-based payment transactions resulting from expanding the scope of Topic 718, &lt;font style="font-style: italic;"&gt;Compensation&amp;#8212;Stock Compensation&lt;/font&gt;, to include share-based payment transactions for acquiring goods and services from nonemployees. Some of the areas for simplification apply only to nonpublic entities. ASU 2018-07 specifies that Topic 718 applies to all share-based payment transactions in which a grantor acquires goods or services to be used or consumed in a grantor&amp;#8217;s own operations by issuing share-based payment awards. ASU 2018-07 also clarifies that Topic 718 does not apply to share-based payments used to effectively provide (1) financing to the issuer or (2) awards granted in conjunction with selling goods or services to customers as part of a contract accounted for under the new revenue recognition standard set forth in ASU 2014-09, &lt;font style="font-style: italic;"&gt;Revenue from Contracts with Customers (Topic 606)&lt;/font&gt;. Effective January 1, 2019, the Company adopted ASU 2018-07, which did not have a material impact on the Company&amp;#8217;s consolidated financial statements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In February 2018, the FASB issued ASU No. 2018-02, &lt;font style="font-style: italic;"&gt;&amp;#8220;Income Statement&amp;#8212;Reporting Comprehensive Income (Topic 220): Reclassification of Certain Tax Effects from Accumulated Other Comprehensive Income&amp;#8221; &lt;/font&gt;(&amp;#8220;ASU 2018-02&amp;#8221;) which provides financial statement preparers with an option to reclassify stranded tax effects within accumulated other comprehensive income to retained earnings in each period in which the effect of the change in the U.S. federal corporate income tax rate in the Tax Cuts and Jobs Act (or portion thereof) is recorded. The amendments in this ASU are effective for all entities for fiscal years beginning after December 15, 2018, and interim periods within those fiscal years. Early adoption of ASU 2018-02 is permitted, including adoption in any interim period for the public business entities for reporting periods for which financial statements have not yet been issued. The amendments in this ASU should be applied either in the period of adoption or retrospectively to each period (or periods) in which the effect of the change in the U.S. federal corporate income tax rate in the Tax Cuts and Jobs Act is recognized. The adoption of the ASU 2018-02 did not have a material impact on the Company&amp;#8217;s consolidated financial statements.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Recent Accounting Pronouncements Not Yet Adopted&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In August 2018, the FASB issued ASU 2018-13,&lt;font style="font-style: italic;"&gt; Fair Value Measurement (Topic 820)&lt;/font&gt;, which eliminates, adds and modifies certain disclosure requirements for fair value measurements. The modified standard eliminates the requirement to disclose changes in unrealized gains and losses included in earnings for recurring Level 3 fair value measurements and requires changes in unrealized gains and losses be included in other comprehensive income for recurring Level 3 fair value measurements of instruments. The standard also requires the disclosure of the range and weighted average used to develop significant unobservable inputs and how weighted average is calculate for recurring and nonrecurring Level 3 fair value measurements. The amendment is effective for fiscal years beginning after December&amp;#160;15, 2019 and interim periods within that fiscal year, with early adoption permitted. The Company does not expect the adoption of ASU 2018-13 to have a material impact on its consolidated financial statements.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In January 2017, the FASB issued ASU 2017-04, &lt;font style="font-style: italic;"&gt;Intangibles&amp;#8212;Goodwill and Other (Topic 350): Simplifying the Test for Goodwill Impairment&lt;/font&gt;, which removes Step 2 from the goodwill impairment test. An entity will apply a one-step quantitative test and record the amount of goodwill impairment as the excess of a reporting unit&amp;#8217;s carrying amount over its fair value, not to exceed the total amount of goodwill allocated to the reporting unit. &lt;font style="color: rgb(0, 0, 0);"&gt;ASU 2017-04&lt;/font&gt; does not amend the optional qualitative assessment of goodwill impairment. A business entity that files periodic reports with the Securities and Exchange Commission must adopt the amendments in &lt;font style="color: rgb(0, 0, 0);"&gt;ASU 2017-04&lt;/font&gt; for its annual or any interim goodwill impairment test in fiscal years beginning after December 15, 2019. Early adoption is permitted for interim or annual goodwill impairment tests performed on testing dates after January 1, 2017. The Company does not expect the adoption of ASU 2017-04 to have a material impact on its consolidated financial statements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In June 2016, the FASB issued ASU 2016-13, &lt;font style="font-style: italic;"&gt;Financial Instruments-Credit Losses (Topic 326): Measurement of Credit Losses on Financial Instruments&lt;/font&gt;. ASU 2016-13 replaced the incurred loss impairment methodology under current GAAP with a methodology that reflects expected credit losses and requires consideration of a broader range of reasonable and supportable information to inform credit loss estimates. ASU 2016-13 requires use of a forward-looking expected credit loss model for accounts receivables, loans, and other financial instruments. ASU 2016-13 is effective for fiscal years beginning after December 15, 2019, with early adoption permitted. Adoption of the standard requires using a modified retrospective approach through a cumulative-effect adjustment to retained earnings as of the effective date to align existing credit loss methodology with the new standard. The Company will adopt ASU 2016-13 effective January 1, 2020. The Company is evaluating the impact of this standard on its consolidated financial statements, including accounting policies, processes, and systems, and expects the standard will have a minor impact on its consolidated financial statements.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In December 2019, the FASB issued ASU No. 2019-12, &lt;font style="font-style: italic;"&gt;Income Taxes (Topic 740): Simplifying the Accounting for Income Taxes&lt;/font&gt;. ASU 2019-12 will simplify the accounting for income taxes by removing certain exceptions to the general principles in Topic 740. The amendments also improve consistent application of and simplify GAAP for other areas of Topic 740 by clarifying and amending existing guidance. For public business entities, the amendments in this Update are effective for fiscal years, and interim periods within those fiscal years, beginning after December 15, 2020. For all other entities, the amendments are effective for fiscal years beginning after December 15, 2021, and interim periods within fiscal years beginning after December 15, 2022. The Company is evaluating the impact of the adoption of ASU 2019-12 on its consolidated financial statements.&lt;/div&gt;&lt;/div&gt;</us-gaap:SignificantAccountingPoliciesTextBlock>
  <!--Standard Product Warranty, Policy [Policy Text Block]-->
  <us-gaap:StandardProductWarrantyPolicy id="Fact_8de0725b362c4512874a1ffd04036dea" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div&gt;&lt;u&gt;Warranty&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;For each of its products, the Company generally provides a standard warranty ranging from 12 to 36 months and covering replacement of the product during the warranty period. The Company accounts for the estimated warranty costs as sales and marketing expenses at the time revenue is recognized. Warranty obligations are affected by historical failure rates and associated replacement costs. Utilizing historical warranty cost records, the Company calculates a rate of warranty expenses to revenue to determine the estimated warranty charge. The Company updates these estimated charges on a regular basis. &lt;font style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none;"&gt;&lt;font style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; background-clip: border-box; background-origin: padding-box; background-size: auto auto;"&gt;Warranty obligations are included in other payables and accrued expenses in the consolidated balance sheets.&lt;/font&gt;&lt;/font&gt;The following table shows changes in the Company&amp;#8217;s warranty obligations for the year ended December 31, 2019 and 2018, respectively.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Balance at beginning of period&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,710&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;839&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Additions&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;2,105&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;1,412&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Utilized&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(1,004&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 2px solid rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;(541&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 46%; background-color: rgb(255, 255, 255); border-bottom: 4px double rgb(0, 0, 0);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Balance at end of period&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 4px double rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;2,811&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;$ &lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,710&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</us-gaap:StandardProductWarrantyPolicy>
  <!--Statutory surplus reserve-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:StatutoryAccountingPracticesStatutoryCapitalAndSurplusBalance id="Fact_036004819b3c4d10a7c9a68686cc6a25" contextRef="c20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-3">1427000</us-gaap:StatutoryAccountingPracticesStatutoryCapitalAndSurplusBalance>
  <!--Statutory surplus reserve-ACM Research (Shanghai), Inc. [Member]-->
  <us-gaap:StatutoryAccountingPracticesStatutoryCapitalAndSurplusBalance id="Fact_8ba5900b04364f63b5bd610f76bb9eae" contextRef="c20181231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-3">0</us-gaap:StatutoryAccountingPracticesStatutoryCapitalAndSurplusBalance>
  <!--Convertible shares in to Class A common stock (in shares)-Common Class B [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesConversionOfUnits id="Fact_c5d9af638ab5487db3c0ef66f3ddbc49" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U002" decimals="INF">1</us-gaap:StockIssuedDuringPeriodSharesConversionOfUnits>
  <!--Shares Issued, Value, Share-based Payment Arrangement, Forfeited-Additional Paid-In Capital [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensationForfeited id="Fact_4b1200f193c14d3293c5af4b0f40f612" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">576000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensationForfeited>
  <!--Shares Issued, Value, Share-based Payment Arrangement, Forfeited-->
  <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensationForfeited id="Fact_9223f3b0d7a34be8b2ba3c44a3862295" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">576000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensationForfeited>
  <!--Stock issued upon exercise of stock options (in shares)-Common Stock [Member]-Common Class B [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised id="Fact_2eca726d3d0741159b52f0b2d96fa45e" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">0</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
  <!--Stock issued upon exercise of stock options (in shares)-Common Class A [Member]-Common Stock [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised id="Fact_95c57cd385b442ecb644fac0a447b896" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">265952</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
  <!--Stock issued upon exercise of stock options (in shares)-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised id="Fact_afa1934c25eb484d9f5e766277c28913" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">195297</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
  <!--Stock issued upon exercise of stock options (in shares)-Common Class B [Member]-Common Stock [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised id="Fact_c769912b293444039e2bf5cbc1010260" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">0</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
  <!--Stock issued upon exercise of stock options (in shares)-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised id="Fact_05337d459db646e6a644a98621c7bcda" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">114302</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
  <!--Stock issued upon exercise of stock options (in shares)-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised id="Fact_2e3e6d54d02d4a7a8fb09ed704ac127b" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U002" decimals="INF">88529</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
  <!--Stock issued upon exercise of stock options (in shares)-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised id="Fact_2fed50dbb7c645c29de08891283854ac" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">106768</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
  <!--Stock issued upon exercise of stock options (in shares)-Share-based Payment Arrangement, Option [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised id="Fact_c996be8b7dd64c768dc1ebb9d977c29d" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U002" decimals="INF">151650</us-gaap:StockIssuedDuringPeriodSharesStockOptionsExercised>
  <!--Shares Issued, Shares, Share-based Payment Arrangement, after Forfeiture-Common Class A [Member]-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation id="Fact_44e1a3e6b6ad4bd4ac59f597c935bd73" contextRef="c20190814to20190814_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">53571</us-gaap:StockIssuedDuringPeriodSharesShareBasedCompensation>
  <!--Shares issued (in shares)-Common Stock [Member]-Common Class B [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesNewIssues id="Fact_61196037cb6e41fab1b71adbe24997b4" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">0</us-gaap:StockIssuedDuringPeriodSharesNewIssues>
  <!--Shares issued (in shares)-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesNewIssues id="Fact_a30d2f0b1e6744bab707222f8720a374" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">2053572</us-gaap:StockIssuedDuringPeriodSharesNewIssues>
  <!--Shares issued (in shares)-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-Common Class A [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesNewIssues id="Fact_dadbf98e811e4c1fbb1c475ccfcbfc0a" contextRef="c20170314to20170314_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">397502</us-gaap:StockIssuedDuringPeriodSharesNewIssues>
  <!--Shares issued (in shares)-Common Class A [Member]-Shanghai Zhangjiang Group Co., Ltd. [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesNewIssues id="Fact_dc65ac712664418e8135c62d3ced3a1a" contextRef="c20170930to20170930_RelatedPartyTransactionsByRelatedPartyAxis_ShanghaiZhangjiangGroupCoLtdMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">787098</us-gaap:StockIssuedDuringPeriodSharesNewIssues>
  <!--Shares issued (in shares)-Common Class A [Member]-->
  <us-gaap:StockIssuedDuringPeriodSharesNewIssues id="Fact_01eafe10eb58445b9db778a40cc2254a" contextRef="c20190801to20190831_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">2053572</us-gaap:StockIssuedDuringPeriodSharesNewIssues>
  <!--Stock Issued During Period, Value, Stock Options Exercised-Common Class B [Member]-Common Stock [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_233b858f0d8349fc9bd80518ff5727a4" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, Stock Options Exercised-Retained Earnings [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_3d06ca4270544ccda81f61492221f01a" contextRef="c20190101to20191231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, Stock Options Exercised-Additional Paid-In Capital [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_4b93aad175be4cf2b18870ff40aa52e5" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">528000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, Stock Options Exercised-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_741fde65fd664f7f85d4705466f9f62d" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">317000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, Stock Options Exercised-Retained Earnings [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_7de862ff1b7649ee8040f6144f038438" contextRef="c20180101to20181231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, Stock Options Exercised-Common Stock [Member]-Common Class B [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_99c0b234755646aba5f055f89513a24e" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, Stock Options Exercised-Common Class A [Member]-Common Stock [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_b74531a6893746029e71a72363e2f958" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, Stock Options Exercised-Additional Paid-In Capital [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_c22addfb6fcf4781becea42accfa3a07" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">317000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, Stock Options Exercised-AOCI Attributable to Parent [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_c459475ffbcf4960a867aa5cc4408319" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, Stock Options Exercised-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_cb767a26f3384bad8af2c0b63213133b" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">528000</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, Stock Options Exercised-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_d97cb0567ae941abb3cb7e58107ccf4d" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, Stock Options Exercised-AOCI Attributable to Parent [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised id="Fact_f9148a5a911b448daaf877a57e7c58c0" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">0</us-gaap:StockIssuedDuringPeriodValueStockOptionsExercised>
  <!--Stock Issued During Period, Value, New Issues-Common Stock [Member]-Common Class B [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueNewIssues id="Fact_13f3760e29964ae68d8605b6b150459e" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:StockIssuedDuringPeriodValueNewIssues>
  <!--Stock Issued During Period, Value, New Issues-Retained Earnings [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueNewIssues id="Fact_a2bae53bce4d48c384a6d718b2992341" contextRef="c20190101to20191231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">0</us-gaap:StockIssuedDuringPeriodValueNewIssues>
  <!--Stock Issued During Period, Value, New Issues-AOCI Attributable to Parent [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueNewIssues id="Fact_d429961137fc4b00bd9b44fc58ac6a29" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">0</us-gaap:StockIssuedDuringPeriodValueNewIssues>
  <!--Stock Issued During Period, Value, New Issues-->
  <us-gaap:StockIssuedDuringPeriodValueNewIssues id="Fact_efe1d58be765467db36a93999d8388c9" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">26435000</us-gaap:StockIssuedDuringPeriodValueNewIssues>
  <!--Stock Issued During Period, Value, New Issues-Additional Paid-In Capital [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueNewIssues id="Fact_f605b63cd33e49d586accba5e6dc1a09" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">26434000</us-gaap:StockIssuedDuringPeriodValueNewIssues>
  <!--Stock Issued During Period, Value, New Issues-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueNewIssues id="Fact_f742f72ff3284fc390471dfa2b106133" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">1000</us-gaap:StockIssuedDuringPeriodValueNewIssues>
  <!--Stock Issued During Period, Value, New Issues-Common Class A [Member]-Shanghai Zhangjiang Group Co., Ltd. [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueNewIssues id="Fact_2b324182586d44609ff24fe44e889e20" contextRef="c20170930to20170930_RelatedPartyTransactionsByRelatedPartyAxis_ShanghaiZhangjiangGroupCoLtdMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">5903000</us-gaap:StockIssuedDuringPeriodValueNewIssues>
  <!--Stock Issued During Period, Value, New Issues-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-Common Class A [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueNewIssues id="Fact_379f9596ed0446aebd5a4faf9d6312ba" contextRef="c20170314to20170314_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">2981000</us-gaap:StockIssuedDuringPeriodValueNewIssues>
  <!--Shares Issued, Value, Share-based Payment Arrangement, after Forfeiture-Common Class A [Member]-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation id="Fact_36b9570c5e91428083e69ddb24be30b1" contextRef="c20190814to20190814_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">3403000</us-gaap:StockIssuedDuringPeriodValueShareBasedCompensation>
  <!--Stock Repurchased During Period, Shares-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:StockRepurchasedDuringPeriodShares id="Fact_e981f70b7cec4ffeae63e0d67cf4f5f8" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">214286</us-gaap:StockRepurchasedDuringPeriodShares>
  <!--Stock Repurchased During Period, Shares-Common Class A [Member]-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <us-gaap:StockRepurchasedDuringPeriodShares id="Fact_afae09473c264c319005e1672477b93f" contextRef="c20190814to20190814_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">214286</us-gaap:StockRepurchasedDuringPeriodShares>
  <!--Stock Repurchased During Period, Shares-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <us-gaap:StockRepurchasedDuringPeriodShares id="Fact_b2078dad8f604dea8bf5a040d2f48280" contextRef="c20190701to20190930_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember" unitRef="U002" decimals="INF">154821</us-gaap:StockRepurchasedDuringPeriodShares>
  <!--Stock Repurchased During Period, Value-Additional Paid-In Capital [Member]-->
  <us-gaap:StockRepurchasedDuringPeriodValue id="Fact_7b80d75e8d4643d2b6dc8f887a203807" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">2827000</us-gaap:StockRepurchasedDuringPeriodValue>
  <!--Stock Repurchased During Period, Value-->
  <us-gaap:StockRepurchasedDuringPeriodValue id="Fact_af21c978b1594d1d87ba78d11b5e52d9" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">2827000</us-gaap:StockRepurchasedDuringPeriodValue>
  <!--Stockholders' Equity Note Disclosure [Text Block]-->
  <us-gaap:StockholdersEquityNoteDisclosureTextBlock id="Fact_09de34132f6d4b9cac7fe8272714be4a" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold; text-align: justify;"&gt;NOTE 12 &amp;#8211; COMMON STOCK&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM is authorized to issue 50,000,000 shares of Class A common stock and 2,409,738 shares of Class B common stock, each with a par value of $0.0001. Each share of Class A common stock is entitled to one vote, and each share of Class B common stock is entitled to twenty votes and is convertible at any time into one share of Class&amp;#160;A common stock. Shares of Class A common stock and Class B common stock are treated equally, identically and ratably with respect to any dividends declared by the Board of Directors unless the Board of Directors declares different dividends to the Class A common stock and Class B common stock by getting approval from a majority of common stock holders.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;On March 30, 2018, SMC exercised the SMC Warrant in full (note 11) to purchase 397,502 shares of Class A common stock.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;During the year ended December 31, 2019, ACM issued 195,297 shares of Class A common stock upon option exercises by employees and non-employees and an additional 35,815 shares of Class A common stock upon conversion of an equal number of shares of Class B common stock. During the year ended December 31, 2018, the Company issued 265,952 shares of Class A common stock upon options exercises by certain employees and&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;non-employees and an additional 511,315 shares of Class A common stock upon conversion of an equal number of shares of Class B common stock.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;In August 2019, ACM sold a total of 2,053,572 shares of Class A common stock to the public at a price of $14.00 per share for aggregate gross proceeds of $28,750. Net proceeds to ACM excluded an underwriting discount and offering expenses totaling $2,287. As described in note 11, ACM repurchased outstanding shares from certain directors, employees and SMC upon the exercise of the underwriters&amp;#8217; over-allotment option using a portion of ACM&amp;#8217;s net proceeds from the public offering for the purpose of share constructive retirement. A total of 214,286 repurchased shares were accounted for share retirement during the year ended December 31, 2019.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;During the year ended December 31, 2019, ACM issued 1,438 shares of Class A common stock upon cashless warrant exercises by non-employees&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;At December 31, 2019 and 2018, the number of shares of Class A common stock issued and outstanding was 16,182,151 and 14,110,315, respectively. At December 31, 2019 and 2018, the number of shares of Class B common stock issued and outstanding was 1,862,608 and 1,898,423, respectively. During the year ended December&amp;#160;31, 2019, 35,815 shares of Class B common stock were converted into Class A common stock in accordance with their terms.&lt;/div&gt;&lt;/div&gt;</us-gaap:StockholdersEquityNoteDisclosureTextBlock>
  <!--Stockholders' Equity Attributable to Parent-->
  <us-gaap:StockholdersEquity id="Fact_babca7f52cc54d1399815f639113d03c" contextRef="c20191231" unitRef="U001" decimals="-3">97321000</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-->
  <us-gaap:StockholdersEquity id="Fact_c7c437d4e2d747cd98bd82590f6d484c" contextRef="c20181231" unitRef="U001" decimals="-3">52324000</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-Additional Paid-In Capital [Member]-->
  <us-gaap:StockholdersEquity id="Fact_20c83a80a4a04c37baa97bb5a0377bd4" contextRef="c20181231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">56567000</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:StockholdersEquity id="Fact_274f6a32c1eb4ba3a45461a3a4e7cb43" contextRef="c20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">1000</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-Retained Earnings [Member]-->
  <us-gaap:StockholdersEquity id="Fact_292d1439bf2241f0a3b98d15e9584bcd" contextRef="c20191231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">15507000</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-Additional Paid-In Capital [Member]-->
  <us-gaap:StockholdersEquity id="Fact_4a1e2e7c9d6e45868898e35e62b5d012" contextRef="c20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">83487000</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-AOCI Attributable to Parent [Member]-->
  <us-gaap:StockholdersEquity id="Fact_707a27300e7d4097bb471a85d0d994bf" contextRef="c20181231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">-857000</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-Retained Earnings [Member]-->
  <us-gaap:StockholdersEquity id="Fact_a121bbfeeeae4d03ae73b5dd65a4d3ae" contextRef="c20181231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">-3387000</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-Common Stock [Member]-Common Class B [Member]-->
  <us-gaap:StockholdersEquity id="Fact_bf736a520500448fa34d481ab7cabce0" contextRef="c20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-Common Class B [Member]-Common Stock [Member]-->
  <us-gaap:StockholdersEquity id="Fact_c363b744f0474c75b1d858ef4595c9be" contextRef="c20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-Common Stock [Member]-Common Class A [Member]-->
  <us-gaap:StockholdersEquity id="Fact_e8137f3cbe534cbabbc52e184b0ba8ce" contextRef="c20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">2000</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-AOCI Attributable to Parent [Member]-->
  <us-gaap:StockholdersEquity id="Fact_e96a15d784114727a5f733a174455e84" contextRef="c20191231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">-1675000</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-Parent Company [Member]-->
  <us-gaap:StockholdersEquity id="Fact_5672f763394d4c6e9e9363d0e68f242a" contextRef="c20191231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">96395000</us-gaap:StockholdersEquity>
  <!--Stockholders' Equity Attributable to Parent-Parent Company [Member]-->
  <us-gaap:StockholdersEquity id="Fact_90a67e9b387f454797b7cbad11159c05" contextRef="c20181231_ConsolidatedEntitiesAxis_ParentCompanyMember" unitRef="U001" decimals="-3">52325000</us-gaap:StockholdersEquity>
  <!--Reverse stock split-Common Class A [Member]-->
  <us-gaap:StockholdersEquityNoteStockSplitConversionRatio1 id="Fact_67c1ba7df429498697316047b16e71cf" contextRef="c20170913to20170913_StatementClassOfStockAxis_CommonClassAMember" unitRef="U004" decimals="2">0.33</us-gaap:StockholdersEquityNoteStockSplitConversionRatio1>
  <!--Reverse stock split-Common Class B [Member]-->
  <us-gaap:StockholdersEquityNoteStockSplitConversionRatio1 id="Fact_bcd94d01a597441b83f370e52e7b1b7f" contextRef="c20170913to20170913_StatementClassOfStockAxis_CommonClassBMember" unitRef="U004" decimals="2">0.33</us-gaap:StockholdersEquityNoteStockSplitConversionRatio1>
  <!--Stockholders' Equity, Including Portion Attributable to Noncontrolling Interest-->
  <us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest id="Fact_1279d885144b419a8b779f75d4bb6477" contextRef="c20171231" unitRef="U001" decimals="-3">39857000</us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest>
  <!--Stockholders' Equity, Including Portion Attributable to Noncontrolling Interest-Common Class B [Member]-Common Stock [Member]-->
  <us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest id="Fact_3c3021c846814563af39a93cd50f70dc" contextRef="c20171231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest>
  <!--Stockholders' Equity, Including Portion Attributable to Noncontrolling Interest-AOCI Attributable to Parent [Member]-->
  <us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest id="Fact_7e287aef370f4d8696b7257d2dcc18ce" contextRef="c20171231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">122000</us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest>
  <!--Stockholders' Equity, Including Portion Attributable to Noncontrolling Interest-Additional Paid-In Capital [Member]-->
  <us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest id="Fact_9cdddedf129a461793a251fc82b40332" contextRef="c20171231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">49695000</us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest>
  <!--Stockholders' Equity, Including Portion Attributable to Noncontrolling Interest-Retained Earnings [Member]-->
  <us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest id="Fact_c0a85b2123574ff68c323ec670fb2a08" contextRef="c20171231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">-9961000</us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest>
  <!--Stockholders' Equity, Including Portion Attributable to Noncontrolling Interest-Common Class A [Member]-Common Stock [Member]-->
  <us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest id="Fact_f737daf4f3ed44d8bd95dd5413f68427" contextRef="c20171231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">1000</us-gaap:StockholdersEquityIncludingPortionAttributableToNoncontrollingInterest>
  <!--SUBSEQUENT EVENTS-->
  <us-gaap:SubsequentEventsTextBlock id="Fact_d3ec59b2d30d44629e84ca09a30f5477" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="color: #000000; font-weight: bold;"&gt;NOTE 18 &amp;#8211; SUBSEQUENT EVENTS&lt;/div&gt;&lt;div style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); font-weight: normal;"&gt;The outbreak of COVID&amp;#8209;19, the coronavirus, has grown both in the United States and globally, and related government and private sector responsive actions have adversely affecting the Company&amp;#8217;s business operations. COVID&amp;#8209;19 originated in Wuhan, China, in December 2019, and a series of emergency quarantine measures taken by the PRC government disrupted domestic business activities in the PRC during the weeks after the initial outbreak of COVID&amp;#8209;19. Since that time, an increasing number of countries, including the United States, have imposed restrictions on travel to and from the PRC and elsewhere, as well as general movement restrictions, business closures and other measures imposed to slow the spread of COVID&amp;#8209;19. The situation continues to develop rapidly, however, and it is impossible to predict the effect and ultimate impact of the COVID&amp;#8209;19 outbreak on the Company&amp;#8217;s business operations and results. While the quarantine, social distancing and other regulatory measures instituted or recommended in response to COVID&amp;#8209;19 are expected to be temporary, the duration of the business disruptions, and related financial impact, cannot be estimated at this time. The COVID&amp;#8209;19 outbreak could evolve into a worldwide health crisis that could adversely affect the economies and financial markets of many countries, resulting in an economic downturn and changes in global economic policy that could reduce demand for the Company&amp;#8217;s products and its customers&amp;#8217; chips and have a material adverse impact on the Company&amp;#8217;s business, operating results and financial condition.&lt;/div&gt;&lt;/div&gt;</us-gaap:SubsequentEventsTextBlock>
  <!--Tax credit carry-forwards, expiration date-Domestic Tax Authority [Member]-->
  <us-gaap:TaxCreditCarryforwardExpirationDate id="Fact_55a46b74d1784a508eedb68480685475" contextRef="c20190101to20191231_IncomeTaxAuthorityAxis_DomesticCountryMember">2025-12-31</us-gaap:TaxCreditCarryforwardExpirationDate>
  <!--Unrecognized Tax Benefits-->
  <us-gaap:UnrecognizedTaxBenefits id="Fact_b1048c24b5ed45ad818502add2ac89a1" contextRef="c20171231" unitRef="U001" decimals="-3">44000</us-gaap:UnrecognizedTaxBenefits>
  <!--Unrecognized Tax Benefits-->
  <us-gaap:UnrecognizedTaxBenefits id="Fact_bdd8adfb851149059bf73b7870960c80" contextRef="c20181231" unitRef="U001" decimals="-3">44000</us-gaap:UnrecognizedTaxBenefits>
  <!--Unrecognized Tax Benefits-->
  <us-gaap:UnrecognizedTaxBenefits id="Fact_e7708b5cc46f474f83a95039d0e27d3a" contextRef="c20191231" unitRef="U001" decimals="-3">44000</us-gaap:UnrecognizedTaxBenefits>
  <!--Unrecognized Tax Benefits, Reduction Resulting from Lapse of Applicable Statute of Limitations-->
  <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations id="Fact_67236a92c0524aeab892d21a358d0a6f" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
  <!--Unrecognized Tax Benefits, Reduction Resulting from Lapse of Applicable Statute of Limitations-->
  <us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations id="Fact_fcc59331badc4749bf44bbd27fb4cf59" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">0</us-gaap:UnrecognizedTaxBenefitsReductionsResultingFromLapseOfApplicableStatuteOfLimitations>
  <!--Accrued penalties-->
  <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued id="Fact_392d75b0b9704599b16d41670d5f3393" contextRef="c20181231" unitRef="U001" decimals="-3">44000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued>
  <!--Accrued penalties-->
  <us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued id="Fact_a3a7b7dda26e463196e18eb50141e8a1" contextRef="c20191231" unitRef="U001" decimals="-3">44000</us-gaap:UnrecognizedTaxBenefitsIncomeTaxPenaltiesAccrued>
  <!--Use of Estimates, Policy [Policy Text Block]-->
  <us-gaap:UseOfEstimates id="Fact_89298a7c0cf94858b2e37c2c2816a53d" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Use of Estimates&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The preparation of the consolidated financial statements in conformity with GAAP requires management to make estimates and assumptions that affect the reported amounts of assets and liabilities and disclosure of contingent assets and liabilities at the balance sheet date and the reported revenues and expenses during the reported period in the consolidated financial statements and accompanying notes. The Company&amp;#8217;s significant accounting estimates and assumptions include, but are not limited to, those used for the valuation and recognition of stock-based compensation arrangements and warrant liability, realization of deferred tax assets, assessment for impairment of long-lived assets, allowance for doubtful accounts, inventory valuation for excess and obsolete inventories, lower of cost and market value or net realizable value of inventories, depreciable lives of property and equipment, accrued warranty, and useful life of intangible assets.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Management evaluates these estimates and assumptions on a regular basis. Actual results could differ from those estimates and assumptions.&lt;/div&gt;&lt;/div&gt;</us-gaap:UseOfEstimates>
  <!--Increase (decrease) in valuation allowance-Domestic Tax Authority [Member]-->
  <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount id="Fact_20e90e1ea97c4e0e9dce62960423caf6" contextRef="c20180101to20181231_IncomeTaxAuthorityAxis_DomesticCountryMember" unitRef="U001" decimals="-3">-278000</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
  <!--Increase (decrease) in valuation allowance-Foreign Tax Authority [Member]-->
  <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount id="Fact_4ef4975b48c940e5b4df58e2fc98acc2" contextRef="c20190101to20191231_IncomeTaxAuthorityAxis_ForeignCountryMember" unitRef="U001" decimals="-3">207000</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
  <!--Increase (decrease) in valuation allowance-Domestic Tax Authority [Member]-->
  <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount id="Fact_74a0911d6515425ea0632914121036ac" contextRef="c20190101to20191231_IncomeTaxAuthorityAxis_DomesticCountryMember" unitRef="U001" decimals="-3">-4465000</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
  <!--Increase (decrease) in valuation allowance-Foreign Tax Authority [Member]-->
  <us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount id="Fact_af43e021bf7e4dd19598988c66950deb" contextRef="c20180101to20181231_IncomeTaxAuthorityAxis_ForeignCountryMember" unitRef="U001" decimals="-3">2000</us-gaap:ValuationAllowanceDeferredTaxAssetChangeInAmount>
  <!--Weighted Average Number Diluted Shares Outstanding Adjustment-->
  <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment id="Fact_95c76b9c5d0f4303b53ea44a9600e137" contextRef="c20190101to20191231" unitRef="U002" decimals="0">2334874</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
  <!--Weighted Average Number Diluted Shares Outstanding Adjustment-->
  <us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment id="Fact_c790da187ee04c5c97dba8d362c50a2b" contextRef="c20180101to20181231" unitRef="U002" decimals="0">2123645</us-gaap:WeightedAverageNumberDilutedSharesOutstandingAdjustment>
  <!--Weighted Average Number of Shares Outstanding, Basic-->
  <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic id="Fact_1f9348b9ec2c4cd1bdaaca9a319787a9" contextRef="c20180101to20181231" unitRef="U002" decimals="0">15788460</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
  <!--Weighted Average Number of Shares Outstanding, Basic-->
  <us-gaap:WeightedAverageNumberOfSharesOutstandingBasic id="Fact_6ffd3a9066f745e1bf6f944992bbaf84" contextRef="c20190101to20191231" unitRef="U002" decimals="0">16800623</us-gaap:WeightedAverageNumberOfSharesOutstandingBasic>
  <!--Diluted (in shares)-->
  <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding id="Fact_86d2cb15c3294949bdc68f6f865b0acf" contextRef="c20190101to20191231" unitRef="U002" decimals="0">19135497</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
  <!--Diluted (in shares)-->
  <us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding id="Fact_b65f8f73e1c04a79a4c6f7a89763733a" contextRef="c20180101to20181231" unitRef="U002" decimals="0">17912105</us-gaap:WeightedAverageNumberOfDilutedSharesOutstanding>
  <!--Condensed Statement of Operations-->
  <srt:ScheduleOfCondensedIncomeStatementTableTextBlock id="Fact_f467335ebd85413a9b16531da091de71" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="color: #000000; font-style: normal; font-variant: normal; font-weight: bold; text-transform: none;"&gt;CONDENSED STATEMENT OF OPERATIONS&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: rgb(0, 0, 0); width: 70%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="1" valign="bottom" style="vertical-align: middle; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; text-align: center;"&gt;(in thousands)&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Revenue&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;10,683&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;25,506&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Cost of revenue&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(10,036&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(23,927&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 34.2pt; color: rgb(0, 0, 0);"&gt;Gross profit&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;647&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,579&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Operating expenses:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Sales and marketing expenses&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(490&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(301&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;General and administrative expenses&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(3,639&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(5,083&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Research and development expenses&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(476&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(255&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Loss from operations&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(3,958&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(4,060&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Equity in earnings of unconsolidated subsidiaries&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;22,510&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;10,360&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Interest income, net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;231&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;166&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Interest expense, net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(67&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Non-operating income (expense), net&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;178&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;108&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;Income before income taxes&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;18,894&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;6,574&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Income tax expense&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Net income&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;18,894&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;6,574&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</srt:ScheduleOfCondensedIncomeStatementTableTextBlock>
  <!--Condensed Balance Sheet-->
  <srt:ScheduleOfCondensedBalanceSheetTableTextBlock id="Fact_0f538700d7704bdfa1e756cb435c6d53" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold;"&gt;CONDENSED BALANCE SHEET&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="1" valign="bottom" style="vertical-align: middle; width: 46%; font-weight: bold;"&gt;Assets&lt;/td&gt;&lt;td colspan="1" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; text-align: center;"&gt;(in thousands)&lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Current assets:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Cash and cash equivalents&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;27,733&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;13,161&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Accounts Receivable&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;983&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Inventory&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;444&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;720&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Due from intercompany&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;4,542&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;14,494&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 2px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Other receivable&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;5&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;175&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Total current assets&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;32,724&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;29,533&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Investment in unconsolidated subsidiaries&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;68,527&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;26,861&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 34.2pt; color: rgb(0, 0, 0);"&gt;Total assets&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;101,251&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;56,394&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000; font-weight: bold;"&gt;Liabilities and Stockholders&amp;#8217; Equity&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Accounts payable&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,138&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;2,818&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Other payable&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;589&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;58&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Income taxes payable&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;3,129&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;1,193&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Total liabilities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;4,856&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;4,069&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Total stockholders&amp;#8217; equity&lt;br /&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;96,395&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;52,325&lt;br /&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 4px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 25.2pt; color: rgb(0, 0, 0);"&gt;Total liabilities and stockholders&amp;#8217; equity&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;101,251&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;56,394&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</srt:ScheduleOfCondensedBalanceSheetTableTextBlock>
  <!--Condensed Statement of Cash Flows-->
  <srt:ScheduleOfCondensedCashFlowStatementTableTextBlock id="Fact_aacd2f40563f41a39d916e77b8ffbafb" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold;"&gt;CONDENSED STATEMENT OF CASH FLOWS&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td rowspan="1" valign="bottom" style="vertical-align: middle; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; text-align: center;"&gt;(in thousands)&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net cash used in operating activities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(7,957&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;(1,189&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net cash provided by investing activities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;946&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net cash provided by financing activities&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;23,347&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;3,510&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net increase in cash and cash equivalents&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;15,390&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;3,267&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Cash and cash equivalents, beginning of year&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;13,161&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;10,874&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Effect of exchange rate changes on cash and cash equivalents&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(818&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;(980&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Cash and cash equivalents, end of year&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;27,733&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;13,161&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</srt:ScheduleOfCondensedCashFlowStatementTableTextBlock>
  <!--Percentage of Redeemable Non-controlling Interests Issued-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:PercentageOfRedeemableNonControllingInterestsIssued id="Fact_1f7a517e2e504a3785f239c90592aabb" contextRef="c20191001to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U004" decimals="3">0.917</acmr:PercentageOfRedeemableNonControllingInterestsIssued>
  <!--Percentage of Redeemable Non-controlling Interests Issued-ACM Research (Shanghai), Inc. [Member]-First Tranche Investors [Member]-->
  <acmr:PercentageOfRedeemableNonControllingInterestsIssued id="Fact_6f64056e1dc146c1829d38a6c6aff28f" contextRef="c20191001to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember" unitRef="U004" decimals="3">0.038</acmr:PercentageOfRedeemableNonControllingInterestsIssued>
  <!--Percentage of Redeemable Non-controlling Interests Issued-Second Tranche Investors [Member]-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:PercentageOfRedeemableNonControllingInterestsIssued id="Fact_e8009acd637c4a6087cdc837b74d5cdd" contextRef="c20191001to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember" unitRef="U004" decimals="3">0.045</acmr:PercentageOfRedeemableNonControllingInterestsIssued>
  <!--Number of Investors Owned by Employees Entities-First Tranche Investors [Member]-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:NumberOfInvestorsOwnedByEmployeesEntities id="Fact_0dfd7376088e4268ba9c5bd9c31f3dc5" contextRef="c20190701to20190930_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember" unitRef="U006" decimals="INF">2</acmr:NumberOfInvestorsOwnedByEmployeesEntities>
  <!--Term of Supplemental Agreement-First Tranche Investors [Member]-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:TermOfSupplementalAgreement id="Fact_2c3c54c37a8e47899b67825c8d6e9ded" contextRef="c20190701to20190930_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember">P3Y</acmr:TermOfSupplementalAgreement>
  <!--Redeemable Non-Controlling Interests [Text Block]-->
  <acmr:RedeemableNonControllingInterestsTextBlock id="Fact_3674305ac91d49308f50dbaac965883d" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="color: rgb(0, 0, 0); font-weight: bold; text-align: justify;"&gt;NOTE 13 &amp;#8211; REDEEMABLE NON-CONTROLLING INTERESTS&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;As discussed in note 1, during the quarter ended September 30, 2019, ACM Shanghai issued to the First Tranche Investors equity in the form of redeemable non-controlling interests, representing 4.2% of the outstanding shares of ACM Shanghai. Two of the First Tranche Investors are entities owned by certain employees of ACM Shanghai (the &amp;#8220;Employee Entities&amp;#8221;), and the purchase price paid by the Employee Entities represented a discount of 20% from the purchase price paid by the other First Tranche Investors. The discount granted to the Employee Entities is classified as a stock-based compensation which is further discussed in note 14.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;In addition to the capital increase agreement with the First Tranche Investors, ACM Shanghai entered into a supplemental agreement (a &amp;#8220;First Tranche Supplemental Agreement&amp;#8221;) with each of the First Tranche Investors. Under each First Tranche Supplemental Agreement, ACM Shanghai and the First Tranche Investor party thereto agreed to use their respective best efforts to facilitate the completion of the Listing and the STAR IPO within three years from the date on which ACM Shanghai shares were issued to the First Tranche Investors. If, by the end of such three-year period, the Listing and the STAR IPO have not been completed and the China Securities Regulatory Commission has not otherwise approved the registration of ACM Shanghai&amp;#8217;s Listing registration application, the First Tranche Investor and ACM Shanghai each will have the right to require that ACM Shanghai repurchase the First Tranche Investor&amp;#8217;s shares for a price equal to the initial purchase price paid by the First Tranche Investor, without interest. The Supplemental Agreements will be automatically terminated on the date when ACM Shanghai formally submits the Listing registration application document to the Shanghai Stock Exchange.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;In the quarter ended December 31, 2019, ACM Shanghai issued to the Second Tranche Investors equity in the form of redeemable non-controlling interests. Following the issuance of shares to the Investors, 91.7% of the outstanding shares of ACM Shanghai were owned by ACM, 3.8% were owned by the First Tranche Investors, and 4.5% were owned by the Second Tranche Investors.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;In addition to the capital increase agreement with the Second Tranche Investors, ACM Shanghai entered into a supplemental agreement (a &amp;#8220;Second Tranche Supplemental Agreement&amp;#8221;) with each of the Second Tranche Investors. Under each Second Tranche Supplemental Agreement, if ACM Shanghai does not officially submit application documents for the Listing to the Shanghai Stock Exchange by December 31, 2022, each Second Tranche Investor will have the right to require that ACM Shanghai repurchase, and ACM Shanghai will have the right to require that each Second Tranche Investor sell to ACM Shanghai, such Second Tranche Investor&amp;#8217;s ACM Shanghai shares for a price equal to the initial purchase price paid by the Second Tranche Investor, without interest. The Second Tranche Supplemental Agreements will be automatically terminated on the date when ACM Shanghai formally submits the Listing registration application document to the Shanghai Stock Exchange. Because the First Tranche Investors and the Second Tranche Investors have the right to require ACM Shanghai to repurchase their ownership interests in ACM Shanghai at a fixed purchase price, those ownership interests are classified as redeemable non-controlling interests u&lt;font style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none;"&gt;nder ASC 480 Distinguishing Liabilities From Equity&lt;/font&gt;. The Company has elected to apply the entire adjustment method (income classification) for subsequent measurement in accordance with ASC 480&amp;#8209;10-S99.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;The components of the change in the redeemable non-controlling interests for the year ended December 31, 2019 are presented in the following table:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 80%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000; font-weight: bold;"&gt;Balance at January 1, 2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #0D0D0D;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #0D0D0D;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 68%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Increase in redeemable non-controlling interests due to issuance of common stock&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 68%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Tranche 1:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div&gt;27,264&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 68%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 16.2pt; color: rgb(0, 0, 0);"&gt;Tranche 2:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;32,415&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Net income attributable to redeemable non-controlling interests&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;564&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 68%; padding-bottom: 2px; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Effect of foreign currency translation loss attributable to redeemable non-controlling interests&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 solid 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;(81&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 2px; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000; font-weight: bold;"&gt;Balance at December 31, 2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;60,162&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</acmr:RedeemableNonControllingInterestsTextBlock>
  <!--Cash Delivered as of Close of Business-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <acmr:CashDeliveredAsOfCloseOfBusiness id="Fact_3178a269d2164abcbcfb1ffb99107e68" contextRef="c20161209_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember" unitRef="U005" decimals="-3">20124000</acmr:CashDeliveredAsOfCloseOfBusiness>
  <!--Cash Delivered as of Close of Business-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <acmr:CashDeliveredAsOfCloseOfBusiness id="Fact_aac58a49327b4b80b9df65422dbddeeb" contextRef="c20161209_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember" unitRef="U001" decimals="-3">2981000</acmr:CashDeliveredAsOfCloseOfBusiness>
  <!--Loan Extended Period-Ninebell Co., Ltd [Member]-->
  <acmr:LoanExtendedPeriod id="Fact_d5b6b3fd600e447d8e3110df0f7bcd82" contextRef="c20190101to20191231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember">P180D</acmr:LoanExtendedPeriod>
  <!--Amount Funded for Leasehold Improvements-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:AmountFundedForLeaseholdImprovements id="Fact_a5deef1016fb4dbf8eb243968e051c9e" contextRef="c20170929_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-3">771000</acmr:AmountFundedForLeaseholdImprovements>
  <!--Prepaid for material purchases-Ninebell Co., Ltd [Member]-->
  <acmr:PrepaidForMaterialPurchases id="Fact_0562eaae3f3646658adeea17e339520a" contextRef="c20191231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember" unitRef="U001" decimals="-3">348000</acmr:PrepaidForMaterialPurchases>
  <!--Prepaid for material purchases-Ninebell Co., Ltd [Member]-->
  <acmr:PrepaidForMaterialPurchases id="Fact_9bc0ce24bfca4a23b2ce52b30012ead4" contextRef="c20181231_RelatedPartyTransactionsByRelatedPartyAxis_NinebellCoLtdMember" unitRef="U001" decimals="-3">572000</acmr:PrepaidForMaterialPurchases>
  <!--Investment Repayment Period-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <acmr:InvestmentRepaymentPeriod id="Fact_0e494e83f8d2425f91841c8325d4f9e3" contextRef="c20190101to20191231_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember">P60D</acmr:InvestmentRepaymentPeriod>
  <!--Voting Rights per Share-Common Class A [Member]-->
  <acmr:VotingRightsPerShare id="Fact_37f7b6f8d2ca4e6c8d1ca0bfedb1fce8" contextRef="c20191231_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">1</acmr:VotingRightsPerShare>
  <!--Voting Rights per Share-Common Class B [Member]-->
  <acmr:VotingRightsPerShare id="Fact_87308f547d8d4588b73bed67b717262c" contextRef="c20191231_StatementClassOfStockAxis_CommonClassBMember" unitRef="U002" decimals="INF">20</acmr:VotingRightsPerShare>
  <!--Underwriting Discount and Offering Expenses-Common Class A [Member]-->
  <acmr:UnderwritingDiscountAndOfferingExpenses id="Fact_83741aa11cc543cf8836beca7b6feb31" contextRef="c20190801to20190831_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">2287000</acmr:UnderwritingDiscountAndOfferingExpenses>
  <!--Noncontrolling Interest, Percentage of Discount on Purchase Price for Employee Entities-First Tranche Investors [Member]-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:NoncontrollingInterestPercentageOfDiscountOnPurchasePriceForEmployeeEntities id="Fact_c5277e8d36bd43fe84ac1eebc87c9db1" contextRef="c20190701to20190930_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember" unitRef="U004" decimals="1">0.2</acmr:NoncontrollingInterestPercentageOfDiscountOnPurchasePriceForEmployeeEntities>
  <!--Noncontrolling Interest, Percentage of Discount on Purchase Price for Employee Entities-ACM Research (Shanghai), Inc. [Member]-Share-based Payment Arrangement, Option [Member]-->
  <acmr:NoncontrollingInterestPercentageOfDiscountOnPurchasePriceForEmployeeEntities id="Fact_ff49cb03a6cf40419c191f6def791909" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U004" decimals="1">0.2</acmr:NoncontrollingInterestPercentageOfDiscountOnPurchasePriceForEmployeeEntities>
  <!--Percentage of Shares Outstanding Immediate Preceding Year-Common Class A [Member]-2016 Omnibus Incentive Plan [Member]-->
  <acmr:PercentageOfSharesOutstandingImmediatePrecedingYear id="Fact_51012b3198e4456180f64094fba63ca0" contextRef="c20161228to20161228_PlanNameAxis_Two016OmnibusIncentivePlanMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U004" decimals="INF">0.04</acmr:PercentageOfSharesOutstandingImmediatePrecedingYear>
  <!--Percentage of Shares Outstanding Immediate Preceding Year-Common Class B [Member]-2016 Omnibus Incentive Plan [Member]-->
  <acmr:PercentageOfSharesOutstandingImmediatePrecedingYear id="Fact_895feee880184892b8781f4de59f1a5d" contextRef="c20161228to20161228_PlanNameAxis_Two016OmnibusIncentivePlanMember_StatementClassOfStockAxis_CommonClassBMember" unitRef="U004" decimals="INF">0.04</acmr:PercentageOfSharesOutstandingImmediatePrecedingYear>
  <!--Share-based Compensation Arrangement by Share-based Payment Award Options Expired in Period Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Option [Member]-->
  <acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpiredInPeriodWeightedAverageGrantDateFairValue id="Fact_08f3ac436c174188a339f05e9620450b" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">0.55</acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpiredInPeriodWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award Options Expired in Period Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpiredInPeriodWeightedAverageGrantDateFairValue id="Fact_3ddce8bd7c934f248cf2e38fc7d24d57" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="0">0</acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpiredInPeriodWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award Options Expired in Period Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpiredInPeriodWeightedAverageGrantDateFairValue id="Fact_e42aef302a65485eb5c08843960e3ad2" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="0">0</acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpiredInPeriodWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award Options Expired in Period Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Option [Member]-->
  <acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpiredInPeriodWeightedAverageGrantDateFairValue id="Fact_f5fe7763cb9f4361b2572c3f8aeb0cc1" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">3.34</acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExpiredInPeriodWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award Options Exercised in Period Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Option [Member]-->
  <acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisedInPeriodWeightedAverageGrantDateFairValue id="Fact_2a1cf5a605194c588d96305fc81b12cc" contextRef="c20180101to20181231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">0.53</acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisedInPeriodWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award Options Exercised in Period Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisedInPeriodWeightedAverageGrantDateFairValue id="Fact_709dbf499a2649679e4fecb1543062b5" contextRef="c20180101to20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">0.43</acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisedInPeriodWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award Options Exercised in Period Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Option [Member]-->
  <acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisedInPeriodWeightedAverageGrantDateFairValue id="Fact_7128636ba296407483b00d29cd057130" contextRef="c20190101to20191231_AwardTypeAxis_EmployeeStockOptionMember" unitRef="U003" decimals="2">0.60</acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisedInPeriodWeightedAverageGrantDateFairValue>
  <!--Share-based Compensation Arrangement by Share-based Payment Award Options Exercised in Period Weighted Average Grant Date Fair Value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-->
  <acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisedInPeriodWeightedAverageGrantDateFairValue id="Fact_b7fde5964de74ab5a18b619b9ae8f5a0" contextRef="c20190101to20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember" unitRef="U003" decimals="2">0.45</acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsExercisedInPeriodWeightedAverageGrantDateFairValue>
  <!--Share Based Compensation Arrangement By Share Based Payment Award Options Non Vested Outstanding Aggregate Intrinsic Value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-Common Class A [Member]-->
  <acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsNonVestedOutstandingAggregateIntrinsicValue id="Fact_0c833bd099bb471cb5d4b8c0e8214762" contextRef="c20181231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">7100000</acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsNonVestedOutstandingAggregateIntrinsicValue>
  <!--Share Based Compensation Arrangement By Share Based Payment Award Options Non Vested Outstanding Aggregate Intrinsic Value-Share-based Payment Arrangement, Non Employee Stock Option [Member]-Common Class A [Member]-->
  <acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsNonVestedOutstandingAggregateIntrinsicValue id="Fact_481aa96b09994fa2acd3c53e48efc932" contextRef="c20191231_AwardTypeAxis_ShareBasedPaymentArrangementNonEmployeeStockOptionMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U001" decimals="-3">8900000</acmr:ShareBasedCompensationArrangementByShareBasedPaymentAwardOptionsNonVestedOutstandingAggregateIntrinsicValue>
  <!--Increase/(Decrease) of unrecognized tax benefits taken in prior years-->
  <acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromPriorPeriodTaxPositions id="Fact_0f844e166d6b4f3894fc2d808f0eaec0" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">0</acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromPriorPeriodTaxPositions>
  <!--Increase/(Decrease) of unrecognized tax benefits taken in prior years-->
  <acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromPriorPeriodTaxPositions id="Fact_48bcd1de423645a7b9d76ec0b6615141" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromPriorPeriodTaxPositions>
  <!--Operating Loss Carryforwards Subject to Annual Limitation Ownership Change-->
  <acmr:OperatingLossCarryforwardsSubjectToAnnualLimitationOwnershipChange id="Fact_da077bbb3a644bb4a3938a5e579a86f1" contextRef="c20171231" unitRef="U001" decimals="-3">12000</acmr:OperatingLossCarryforwardsSubjectToAnnualLimitationOwnershipChange>
  <!--Effective period of preferential income tax rate-Foreign Tax Authority [Member]-->
  <acmr:EffectivePeriodOfPreferentialIncomeTaxRate id="Fact_12d4c3c9486e416d8b8374bb34fe1fa1" contextRef="c20190101to20191231_IncomeTaxAuthorityAxis_ForeignCountryMember">P3Y</acmr:EffectivePeriodOfPreferentialIncomeTaxRate>
  <!--Translation difference-->
  <acmr:DeferredTaxAssetsLiabilitiesTranslationDifference id="Fact_6ec410f8729245e796cb7f3ef50d1508" contextRef="c20191231" unitRef="U001" decimals="-3">0</acmr:DeferredTaxAssetsLiabilitiesTranslationDifference>
  <!--Translation difference-->
  <acmr:DeferredTaxAssetsLiabilitiesTranslationDifference id="Fact_b03781b9b6e3463e99f4b28c32cd3b01" contextRef="c20181231" unitRef="U001" decimals="-3">0</acmr:DeferredTaxAssetsLiabilitiesTranslationDifference>
  <!--Unrecognized Tax Benefits, Increase (Decrease) Resulting from Current Period Tax Positions-->
  <acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromCurrentPeriodTaxPositions id="Fact_0e15745ba8ca4ba49b35c883fecae542" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">0</acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromCurrentPeriodTaxPositions>
  <!--Unrecognized Tax Benefits, Increase (Decrease) Resulting from Current Period Tax Positions-->
  <acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromCurrentPeriodTaxPositions id="Fact_7c8376d546bf4569ad7140d1b78b31fc" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromCurrentPeriodTaxPositions>
  <!--Unrecognized Tax Benefits, Increase (Decrease) Resulting from Settlements with Taxing Authorities-->
  <acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromSettlementsWithTaxingAuthorities id="Fact_16657180412e4d65accc3f7561b5f060" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromSettlementsWithTaxingAuthorities>
  <!--Unrecognized Tax Benefits, Increase (Decrease) Resulting from Settlements with Taxing Authorities-->
  <acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromSettlementsWithTaxingAuthorities id="Fact_395748577e8f48bf8aea24ca0c759180" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">0</acmr:UnrecognizedTaxBenefitsIncreaseDecreaseResultingFromSettlementsWithTaxingAuthorities>
  <!--Foreign corporate tax rate-Foreign Tax Authority [Member]-Minimum [Member]-->
  <acmr:ForeignCorporateTaxRate id="Fact_5798d218ec21488eadfd3bfcaf80b143" contextRef="c20190101to20191231_IncomeTaxAuthorityAxis_ForeignCountryMember_RangeAxis_MinimumMember" unitRef="U004" decimals="INF">0.15</acmr:ForeignCorporateTaxRate>
  <!--Foreign corporate tax rate-Maximum [Member]-Foreign Tax Authority [Member]-->
  <acmr:ForeignCorporateTaxRate id="Fact_a96f287c84d94d48b6315c3a73292751" contextRef="c20190101to20191231_IncomeTaxAuthorityAxis_ForeignCountryMember_RangeAxis_MaximumMember" unitRef="U004" decimals="INF">0.25</acmr:ForeignCorporateTaxRate>
  <!--Product Warranty Accrual Additions-->
  <acmr:ProductWarrantyAccrualAdditions id="Fact_093619bf98b4447183586303ca879509" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">2105000</acmr:ProductWarrantyAccrualAdditions>
  <!--Product Warranty Accrual Additions-->
  <acmr:ProductWarrantyAccrualAdditions id="Fact_4427f280825d4ebb91fb6e0eca2bff9d" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">1412000</acmr:ProductWarrantyAccrualAdditions>
  <!--Product Warranty Accrual Utilized-->
  <acmr:ProductWarrantyAccrualUtilized id="Fact_120fbc4fbe954d5bb00c676ba318f77d" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">541000</acmr:ProductWarrantyAccrualUtilized>
  <!--Product Warranty Accrual Utilized-->
  <acmr:ProductWarrantyAccrualUtilized id="Fact_6c741b55135443ffb35a08570c57a710" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">1004000</acmr:ProductWarrantyAccrualUtilized>
  <!--Standard Product Warranty Period-Maximum [Member]-->
  <acmr:StandardProductWarrantyPeriod id="Fact_4ac574cd46354f66b973e8eb821cd5b9" contextRef="c20190101to20191231_RangeAxis_MaximumMember">P36M</acmr:StandardProductWarrantyPeriod>
  <!--Standard Product Warranty Period-Minimum [Member]-->
  <acmr:StandardProductWarrantyPeriod id="Fact_4d83d23db7f1481681b93ac813424eec" contextRef="c20190101to20191231_RangeAxis_MinimumMember">P12M</acmr:StandardProductWarrantyPeriod>
  <!--Schedule Of Estimated Useful Lives For Property And Equipment [Table Text Block]-->
  <acmr:ScheduleOfEstimatedUsefulLivesForPropertyAndEquipmentTableTextBlock id="Fact_d1fd9fc4d83e4ca4930c75da65afa764" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify; text-indent: 27.35pt;"&gt;Estimated useful lives of assets in the United States are as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 90%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -12pt; margin-left: 12pt;"&gt;Computer and office equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;3 to 5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -12pt; margin-left: 12pt;"&gt;Furniture and fixtures&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -12pt; margin-left: 12pt;"&gt;Leasehold improvements&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;shorter&amp;#160;of&amp;#160;lease&amp;#160;term&amp;#160;or&amp;#160;estimated useful life&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM&amp;#8217;s subsidiaries follow regulations for depreciation of fixed assets implemented under the PRC&amp;#8217;s Enterprise Income Tax Law, which state that the minimum useful lives used for calculating depreciation for fixed assets are as follows:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; width: 90%; border-collapse: collapse; text-align: left; color: rgb(0, 0, 0);"&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;Manufacturing equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;for small to medium-sized equipment, 5 years; for large equipment,&lt;/div&gt;&lt;div&gt;estimated by purchasing department at time of acceptance&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;Furniture and fixtures&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;Transportation equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;4 to 5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;Electronic equipment&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(255, 255, 255);"&gt;&lt;div&gt;3 to 5 years&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 30%; vertical-align: top; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;Leasehold improvements&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 60%; vertical-align: bottom; background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;remaining lease term for improvements on leased fixed assets or,&lt;/div&gt;&lt;div&gt;for large improvements, estimated useful life;&lt;/div&gt;&lt;div&gt;not less than 3 years for non-fixed asset repairs&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</acmr:ScheduleOfEstimatedUsefulLivesForPropertyAndEquipmentTableTextBlock>
  <!--Schedules of Translations of Foreign Exchange Rate [Table Text Block]-->
  <acmr:SchedulesOfTranslationsOfForeignExchangeRateTableTextBlock id="Fact_9db3e9408a3b4feabe61b40a41dca805" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;Translations of amounts from RMB and Korean Won into U.S. dollars were made at the following exchange rates for the respective dates and periods:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;At December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%;"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;&lt;u&gt;Consolidated balance sheets:&lt;/u&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;RMB to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.9784&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.8634&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;KRW to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,156.07&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,114.83&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td colspan="8" nowrap="nowrap" valign="bottom" style="vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;&lt;u&gt;Consolidated statements of operations and comprehensive income:&lt;/u&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;RMB to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.8966&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.6181&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;KRW to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,165.50&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,100.11&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="font-style: italic; font-weight: bold;"&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</acmr:SchedulesOfTranslationsOfForeignExchangeRateTableTextBlock>
  <!--Intangible Assets Amortization Period, Condition-Maximum [Member]-->
  <acmr:IntangibleAssetsAmortizationPeriodCondition id="Fact_2c284dc0f1b54ffb81ae91c12d204926" contextRef="c20190101to20191231_RangeAxis_MaximumMember">P10Y</acmr:IntangibleAssetsAmortizationPeriodCondition>
  <!--Maximum Shipment Period of Finished Goods from Warehouse-->
  <acmr:MaximumShipmentPeriodOfFinishedGoodsFromWarehouse id="Fact_debdfbe5b94843eb98d79b26ef12c0f1" contextRef="c20190101to20191231">P1M</acmr:MaximumShipmentPeriodOfFinishedGoodsFromWarehouse>
  <!--Foreign Currency Exchange Rate, Translation2-China, Yuan Renminbi-->
  <acmr:ForeignCurrencyExchangeRateTranslation2 id="Fact_8e85ebe22e944425a30d2eb8ca55dbca" contextRef="c20190101to20191231_CurrencyAxis_CNY" unitRef="U004" decimals="4">6.8966</acmr:ForeignCurrencyExchangeRateTranslation2>
  <!--Foreign Currency Exchange Rate, Translation2-Korea (South), Won-->
  <acmr:ForeignCurrencyExchangeRateTranslation2 id="Fact_97c33d2b848443809a0bd2acd756554d" contextRef="c20190101to20191231_CurrencyAxis_KRW" unitRef="U004" decimals="2">1165.50</acmr:ForeignCurrencyExchangeRateTranslation2>
  <!--Foreign Currency Exchange Rate, Translation2-China, Yuan Renminbi-->
  <acmr:ForeignCurrencyExchangeRateTranslation2 id="Fact_9a27acaf138c4804bcd1b9108ae52fe6" contextRef="c20180101to20181231_CurrencyAxis_CNY" unitRef="U004" decimals="4">6.6181</acmr:ForeignCurrencyExchangeRateTranslation2>
  <!--Foreign Currency Exchange Rate, Translation2-Korea (South), Won-->
  <acmr:ForeignCurrencyExchangeRateTranslation2 id="Fact_ba6ecf5ec5fd414190c05186bd4d2d8e" contextRef="c20180101to20181231_CurrencyAxis_KRW" unitRef="U004" decimals="2">1100.11</acmr:ForeignCurrencyExchangeRateTranslation2>
  <!--Number of Major Customers-Revenue Benchmark [Member]-->
  <acmr:NumberOfMajorCustomers id="Fact_23321f2041904fa7ac27392a638075a5" contextRef="c20180101to20181231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember" unitRef="U009" decimals="INF">3</acmr:NumberOfMajorCustomers>
  <!--Number of Major Customers-Revenue Benchmark [Member]-->
  <acmr:NumberOfMajorCustomers id="Fact_e2c95600a1d94bc686c9acd080bfcb16" contextRef="c20190101to20191231_ConcentrationRiskByBenchmarkAxis_SalesRevenueNetMember" unitRef="U009" decimals="INF">3</acmr:NumberOfMajorCustomers>
  <!--Statutory Reserves [Policy Text Block]-->
  <acmr:StatutoryReservesPolicyTextBlock id="Fact_12d084de14814966aba1cb420a5da679" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none; text-align: justify;"&gt;&lt;u&gt;Statutory reserves&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The income of ACM&amp;#8217;s PRC subsidiaries is distributable to their shareholders after transfers to reserves as required under relevant PRC laws and regulations and the subsidiaries&amp;#8217; Articles of Association. As stipulated by the relevant laws and regulations in the PRC, the PRC subsidiaries are required to maintain reserves, including reserves for statutory surpluses and public welfare funds that are not distributable to shareholders. A PRC subsidiary&amp;#8217;s appropriations to the reserves are approved by its board of directors. At least 10% of annual statutory after-tax profits, as determined in accordance with PRC accounting standards and regulations, is required to be allocated to the statutory surplus reserves. If the cumulative total of the statutory surplus reserves reaches 50% of a PRC subsidiary&amp;#8217;s registered capital, any further appropriation is optional.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;Statutory surplus reserves may be used to offset accumulated losses or to increase the registered capital of a PRC subsidiary, subject to approval from the relevant PRC authorities, and are not available for dividend distribution to the subsidiary&amp;#8217;s shareholders. The PRC subsidiaries are prohibited from distributing dividends unless any losses from prior years have been offset. Except for offsetting prior years&amp;#8217; losses, however, statutory surplus reserves must be maintained at a minimum of 25% of share capital after such usage. ACM Shanghai estimated a statutory surplus reserve of $1,427 based on an accumulated profit as of December 31, 2019 which is included in the accumulated surplus in the consolidated balance sheets, versus no statutory surplus reserved due to accumulated losses as of December 31, 2018.&lt;/div&gt;&lt;/div&gt;</acmr:StatutoryReservesPolicyTextBlock>
  <!--Redeemable Non-controlling Interests [Policy Text Block]-->
  <acmr:RedeemableNonControllingInterestsPolicyTextBlock id="Fact_a5a5a1581c694d90b76ab04b2cf07deb" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Redeemable Non-controlling Interests&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company recorded initial carrying amount of redeemable non-controlling interests at fair value on the date of issuance, and presented in temporary equity on the consolidated balance sheets.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As the non-controlling interests would be redeemable at a fixed purchase price, it is classified as common-share non-controlling interests redeemable at other than fair value. The Company applied the entire adjustment method (income classification) for subsequent measurement in accordance with ASC 480&amp;#8209;10-S99.&lt;/div&gt;&lt;/div&gt;</acmr:RedeemableNonControllingInterestsPolicyTextBlock>
  <!--Redeemable Convertible Preferred Stock [Policy Text Block]-->
  <acmr:RedeemableConvertiblePreferredStockPolicyTextBlock id="Fact_99dec8bc6759453087798b87bd32b668" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Redeemable Convertible Preferred Stock&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company recorded each series of convertible preferred stock at fair value on the date of issuance, net of issuance costs. The convertible preferred stock is recorded outside of stockholders&amp;#8217; equity (deficit) because, in the event of certain deemed liquidation events considered not solely within the Company&amp;#8217;s control (such as a merger, acquisition, or sale of all or substantially all of the Company&amp;#8217;s assets), the convertible preferred stock will become redeemable at the option of the holders. The Company has not adjusted the carrying value of any series of convertible preferred stock to the liquidation preference of such series because it is uncertain whether or when an event would occur that would obligate the Company to pay the liquidation preferences to holders of convertible preferred stock. Subsequent adjustments to the carrying values to the liquidation preferences will be made only when it becomes probable that such a liquidation event will occur.&lt;/div&gt;&lt;/div&gt;</acmr:RedeemableConvertiblePreferredStockPolicyTextBlock>
  <!--Government Subsidies [Policy Text Block]-->
  <acmr:GovernmentSubsidiesPolicyTextBlock id="Fact_9dd4ff1ff1f1428db38864b99bf657a8" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Government Subsidies&lt;/u&gt;&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;ACM Shanghai has been awarded four subsidies from local and central governmental authorities in the PRC. The first subsidy, which was awarded in October 2008, relates to the development and commercialization of 65 to 45nm Stress Free Polishing technology. The second subsidy was awarded in April 2009 to fund interest expenses for short-term borrowings. The third subsidy was awarded in January 2014 and relates to the development of Electro Copper Plating technology. The fourth subsidy was awarded in June of 2018, and related to development of Polytetrafluoroethylene. The PRC governmental authorities will provide the majority of the funding, although ACM Shanghai is also required to invest certain amounts in the projects.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The government subsidies contain certain operating conditions and therefore are recorded as long-term liabilities upon receipt. The grant amounts are recognized in the statements of operations and comprehensive income:&lt;/div&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div&gt;&lt;div style="text-align: justify; color: rgb(0, 0, 0);"&gt;Government subsidies relating to current expenses are recorded as reductions of those expenses in the periods in which the current expenses are recorded. For the years ended December&amp;#160;31, 2019 and 2018, related government subsidies recognized as reductions of relevant expenses in the consolidated statements of operations and comprehensive income were $3,195 and $1,486, respectively.&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;table cellpadding="0" cellspacing="0" class="DSPFListTable" style="font-family: 'Times New Roman'; font-size: 10pt; width: 100%; text-align: left; color: #000000;"&gt;&lt;tr&gt;&lt;td style="width: 18pt;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="width: 18pt; vertical-align: top; align: right;"&gt;&amp;#9679;&lt;/td&gt;&lt;td style="width: auto; vertical-align: top;"&gt;&lt;div style="text-align: justify;"&gt;Government subsidies related to depreciable assets are credited to income over the useful lives of the related assets for which the grant was received. For the years ended December&amp;#160;31, 2019 and 2018, related government subsidies recognized as other income in the consolidated statements of operations and comprehensive income were $147 and $144, respectively.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Unearned government subsidies received are deferred for recognition and recorded as other long-term liabilities (note 9) in the balance sheet until the criteria for such recognition are satisfied.&lt;/div&gt;&lt;/div&gt;</acmr:GovernmentSubsidiesPolicyTextBlock>
  <!--Basis of Presentation and Principles of Consolidation [Policy Text Block]-->
  <acmr:BasisOfPresentationAndPrinciplesOfConsolidationPolicyTextBlock id="Fact_03c8d89ce66e40e5ae4814f2b2ed2b6e" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Basis of Presentation and Principles of Consolidation&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The accompanying consolidated financial statements of the Company have been prepared in accordance with accounting principles generally accepted in the United States of America (&amp;#8220;GAAP&amp;#8221;). The Company&amp;#8217;s consolidated financial statements include the accounts of the Company and its subsidiaries including ACM and its subsidiary, ACM Shanghai, which includes ACM Wuxi, ACM Shengwei, and CleanChip (ACM California and ACM Korea). Subsidiaries are those entities in which ACM, directly and indirectly, controls more than one half of the voting power. All significant intercompany transactions and balances have been eliminated upon consolidation.&lt;/div&gt;&lt;/div&gt;</acmr:BasisOfPresentationAndPrinciplesOfConsolidationPolicyTextBlock>
  <!--Operating and Financial Risks [Policy Text Block]-->
  <acmr:OperatingAndFinancialRisksPolicyTextBlock id="Fact_963d35c73c5340249b377bbfad6b9dde" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;u&gt;Operating and Financial Risks&lt;/u&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; text-align: justify;"&gt;Concentration of Credit Risk&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Financial instruments that potentially subject the Company to credit risk consist principally of cash and cash equivalents, restricted cash and accounts receivable. The Company deposits and invests its cash with financial institutions that management believes are creditworthy.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company is potentially subject to concentrations of credit risks in its accounts receivable. Three customers individually accounted for greater than ten percent of the Company&amp;#8217;s revenue for the year ended 2019 and the year ended 2018:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;Year Ended December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Customer A&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;26.46&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;24.17&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Customer B&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;19.84&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #FFFFFF;"&gt;&lt;div style="color: #000000;"&gt;23.83&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #FFFFFF;"&gt;% &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Customer C&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;27.50&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;39.63&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;% &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; text-align: justify;"&gt;Interest Rate Risk&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;As of December 31, 2019 and 2018, the balance of bank borrowings (note 6) was short-term in nature, matured at various dates within the following year and did not expose the Company to interest rate risk.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; text-align: justify;"&gt;Liquidity Risk&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company&amp;#8217;s working capital at December 31, 2019 and 2018 was sufficient to meet its then-current requirements. The Company may, however, require additional cash due to changing business conditions or other future developments, including any investments or acquisitions the Company decides to pursue. In the long run, the Company intends to rely primarily on cash flows from operations and additional borrowings from financial institutions in order to meet its cash needs. If those sources are insufficient to meet cash requirements, the Company may seek to issue additional debt or equity.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; text-align: justify;"&gt;Country Risk&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company has significant investments in the PRC. The operating results of the Company may be adversely affected by changes in the political and social conditions in the PRC and by changes in Chinese government policies with respect to laws and regulations, anti-inflationary measures, currency conversion and remittance abroad, and rates and methods of taxation,&amp;#160;among other things.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="font-style: italic; text-align: justify;"&gt;Foreign Currency Risk and Translation&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;The Company&amp;#8217;s consolidated financial statements are presented in U.S. dollars, which is the Company&amp;#8217;s reporting currency, while the functional currency of ACM&amp;#8217;s subsidiaries is the Chinese Renminbi (&amp;#8220;RMB&amp;#8221;), and the Korean Won. Changes in the relative values of U.S. dollars and Chinese RMB affect the Company&amp;#8217;s reported levels of revenues and profitability as the results of its operations are translated from RMB into U.S. dollars for reporting purposes. Because the Company has not engaged in any hedging activities, it cannot predict the impact of future exchange rate fluctuations on the results of its operations and it may experience economic losses as a result of foreign currency exchange rate fluctuations.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Transactions of ACM&amp;#8217;s subsidiaries involving foreign currencies are recorded in functional currency according to the rate of exchange prevailing on the date when the transaction occurs. The ending balances of the Company&amp;#8217;s foreign currency accounts are converted into functional currency using the rate of exchange prevailing at the end of each reporting period. Net gains and losses resulting from foreign exchange fluctuations as marked to market at year-end are included in the consolidated statements of operations and comprehensive income. Total foreign currency translation adjustment was ($899) and ($979) for the years ended December&amp;#160;31, 2019 and 2018.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;In accordance with FASB ASC Topic 830, &lt;font style="font-style: italic;"&gt;Foreign Currency Matters&lt;/font&gt;, the Company translates assets and liabilities into U.S. dollars from RMB or Korean Won using the rate of exchange prevailing at the applicable balance sheet date and the consolidated statements of operations and comprehensive income and consolidated statements of cash flows are translated at an average rate during the reporting period. Adjustments resulting from the translation are recorded in stockholders&amp;#8217; (deficit) equity as part of accumulated other comprehensive income (loss). Any differences between the initially recorded amount and the settlement amount are recorded as a gain or loss on foreign currency transaction in the consolidated statements of operations and comprehensive income.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;Translations of amounts from RMB and Korean Won into U.S. dollars were made at the following exchange rates for the respective dates and periods:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;At December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 46%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%;"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;&lt;u&gt;Consolidated balance sheets:&lt;/u&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;RMB to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.9784&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.8634&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;KRW to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,156.07&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,114.83&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td colspan="8" nowrap="nowrap" valign="bottom" style="vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;&lt;u&gt;Consolidated statements of operations and comprehensive income:&lt;/u&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; background-color: rgb(255, 255, 255); width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: rgb(0, 0, 0); text-indent: -9pt; margin-left: 9pt;"&gt;RMB to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.8966&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;6.6181&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 46%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;KRW to $1.00&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,165.50&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;1,100.11&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="font-style: italic; font-weight: bold;"&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</acmr:OperatingAndFinancialRisksPolicyTextBlock>
  <!--Government Subsidies Recognized as Reductions of Relevant Expenses-->
  <acmr:GovernmentSubsidiesRecognizedAsReductionsOfRelevantExpenses id="Fact_1c915c3e6a97459da85881002963156f" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">3195000</acmr:GovernmentSubsidiesRecognizedAsReductionsOfRelevantExpenses>
  <!--Government Subsidies Recognized as Reductions of Relevant Expenses-->
  <acmr:GovernmentSubsidiesRecognizedAsReductionsOfRelevantExpenses id="Fact_8192de7629264f71a860d83dbdef6b5c" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">1486000</acmr:GovernmentSubsidiesRecognizedAsReductionsOfRelevantExpenses>
  <!--Number of Subsidies Awarded-->
  <acmr:NumberOfSubsidiesAwarded id="Fact_c6122ab536f644399729bf3e4e83f60d" contextRef="c20190101to20191231" unitRef="U008" decimals="INF">4</acmr:NumberOfSubsidiesAwarded>
  <!--Government Subsidies Recognized as Other Income-->
  <acmr:GovernmentSubsidiesRecognizedAsOtherIncome id="Fact_34781c90a7724eafa1d0b3fb7a13771f" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">144000</acmr:GovernmentSubsidiesRecognizedAsOtherIncome>
  <!--Government Subsidies Recognized as Other Income-->
  <acmr:GovernmentSubsidiesRecognizedAsOtherIncome id="Fact_69e4b58707044b919664f22152a0276b" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">147000</acmr:GovernmentSubsidiesRecognizedAsOtherIncome>
  <!--Direct or Indirect Interests in Subsidiaries [Table Text Block]-->
  <acmr:DirectOrIndirectInterestsInSubsidiariesTableTextBlock id="Fact_d2a76e1380a244229f332444c31acbd2" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="text-align: justify;"&gt;&lt;font style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none;"&gt;&lt;font style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; background-clip: border-box; background-origin: padding-box; background-size: auto auto;"&gt;The Company has direct or indirect interests in the following subsidiaries:&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse; width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle;"&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0);"&gt;Place and date&lt;/div&gt;&lt;div style="text-align: center; color: rgb(0, 0, 0);"&gt;of&lt;/div&gt;&lt;/td&gt;&lt;td colspan="2" style="vertical-align: bottom; text-align: center;"&gt;&lt;div style="color: rgb(0, 0, 0);"&gt;Effective interest held as at&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle;"&gt;&lt;div style="text-align: center; color: #000000;"&gt;Name of subsidiaries&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle;"&gt;&lt;div style="text-align: center; color: #000000;"&gt;incorporation&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle;"&gt;&lt;div style="text-align: center; color: #000000;"&gt;December 31, 2019&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle;"&gt;&lt;div style="text-align: center; color: #000000;"&gt;December 31, 2018&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;ACM Research (Shanghai), Inc.&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;China, May 2006&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;ACM Research (Wuxi), Inc.&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;China, July 2011&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;CleanChip Technologies Limited&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;Hong Kong, June 2017&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;ACM Research Korea CO., LTD.&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;Korea, December 2017&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;Shengwei Research (Shanghai), Inc.&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;China, March 2019&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="width: 23%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;ACM Research (CA), Inc.&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 3%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td style="width: 18%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="color: #000000;"&gt;USA, June 2019&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;91.7%&lt;/div&gt;&lt;/td&gt;&lt;td style="width: 13%; vertical-align: middle; background-color: rgb(255, 255, 255);"&gt;&lt;div style="text-align: center; color: #000000;"&gt;100.0%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</acmr:DirectOrIndirectInterestsInSubsidiariesTableTextBlock>
  <!--Business Acquisition, Percentage of Equity Interests Acquired-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:BusinessAcquisitionPercentageOfEquityInterestsAcquired id="Fact_481844636655456d933c2fa739943aec" contextRef="c20171108_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U004" decimals="4">0.1836</acmr:BusinessAcquisitionPercentageOfEquityInterestsAcquired>
  <!--Business Acquisition, Percentage of Equity Interests Acquired-ACM Research (Shanghai), Inc. [Member]-First Tranche Investors [Member]-->
  <acmr:BusinessAcquisitionPercentageOfEquityInterestsAcquired id="Fact_54b68d349e0045d7a13045d85a54b72f" contextRef="c20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember" unitRef="U004" decimals="4">0.0380</acmr:BusinessAcquisitionPercentageOfEquityInterestsAcquired>
  <!--Business Acquisition, Percentage of Equity Interests Acquired-Shengwei Research (Shanghai), Inc. [Member]-->
  <acmr:BusinessAcquisitionPercentageOfEquityInterestsAcquired id="Fact_7a881f3365dd4fcb8ede1da22059dcac" contextRef="c20191231_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember" unitRef="U004" decimals="4">0.9170</acmr:BusinessAcquisitionPercentageOfEquityInterestsAcquired>
  <!--Business Acquisition, Percentage of Equity Interests Acquired-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:BusinessAcquisitionPercentageOfEquityInterestsAcquired id="Fact_a1eca273c7104b9b9473dfd178dd6bb3" contextRef="c20170831_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U004" decimals="4">0.1877</acmr:BusinessAcquisitionPercentageOfEquityInterestsAcquired>
  <!--Business Acquisition, Percentage of Equity Interests Acquired-ACM Research (Shanghai), Inc. [Member]-Second Tranche Investors [Member]-->
  <acmr:BusinessAcquisitionPercentageOfEquityInterestsAcquired id="Fact_e0a8ceb5792044c3ae5e18bdd0b5edc4" contextRef="c20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember" unitRef="U004" decimals="4">0.0450</acmr:BusinessAcquisitionPercentageOfEquityInterestsAcquired>
  <!--Name of Subsidiary-ACM Research (Wuxi), Inc. [Member]-->
  <acmr:NameOfSubsidiary id="Fact_1e27ca3588854cdbaa8e06e302420305" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchWuxiIncMember">ACM Research (Wuxi), Inc.</acmr:NameOfSubsidiary>
  <!--Name of Subsidiary-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:NameOfSubsidiary id="Fact_32b8d60a09bd484fbb8f33d8439da706" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">ACM Research (Shanghai), Inc.</acmr:NameOfSubsidiary>
  <!--Name of Subsidiary-ACM Research (CA), Inc. [Member]-->
  <acmr:NameOfSubsidiary id="Fact_9277ef6729b44fb5b4664220f2c53272" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchCAIncMember">ACM Research (CA), Inc.</acmr:NameOfSubsidiary>
  <!--Name of Subsidiary-Shengwei Research (Shanghai), Inc. [Member]-->
  <acmr:NameOfSubsidiary id="Fact_b806d7818ff74c399b409f6689ba5e71" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember">Shengwei Research (Shanghai), Inc.</acmr:NameOfSubsidiary>
  <!--Name of Subsidiary-CleanChip Technologies Limited [Member]-->
  <acmr:NameOfSubsidiary id="Fact_dadbda95345e495cbb1445d8953a7040" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_CleanChipTechnologiesLimitedMember">CleanChip Technologies Limited</acmr:NameOfSubsidiary>
  <!--Name of Subsidiary-ACM Research Korea CO., LTD [Member]-->
  <acmr:NameOfSubsidiary id="Fact_f907747058f54822a2acc366761eb43d" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchKoreaCOLTDMember">ACM Research Korea CO., LTD.</acmr:NameOfSubsidiary>
  <!--Name of Date of Incorporation-CleanChip Technologies Limited [Member]-->
  <acmr:NameOfDateOfIncorporation id="Fact_1ba4c58194ea4cbfb915e17720dc7121" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_CleanChipTechnologiesLimitedMember">Hong Kong, June 2017</acmr:NameOfDateOfIncorporation>
  <!--Name of Date of Incorporation-ACM Research (CA), Inc. [Member]-->
  <acmr:NameOfDateOfIncorporation id="Fact_33cad25505854f289beaa618248433be" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchCAIncMember">USA, June 2019</acmr:NameOfDateOfIncorporation>
  <!--Name of Date of Incorporation-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:NameOfDateOfIncorporation id="Fact_4359cba3f8e8419aa8709f861d211e1f" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">China, May 2006</acmr:NameOfDateOfIncorporation>
  <!--Name of Date of Incorporation-ACM Research Korea CO., LTD [Member]-->
  <acmr:NameOfDateOfIncorporation id="Fact_529e970d96b64b0885871731440d33dc" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchKoreaCOLTDMember">Korea, December 2017</acmr:NameOfDateOfIncorporation>
  <!--Name of Date of Incorporation-Shengwei Research (Shanghai), Inc. [Member]-->
  <acmr:NameOfDateOfIncorporation id="Fact_7987e68526b04801829da18e3c223a56" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember">China, March 2019</acmr:NameOfDateOfIncorporation>
  <!--Name of Date of Incorporation-ACM Research (Wuxi), Inc. [Member]-->
  <acmr:NameOfDateOfIncorporation id="Fact_fa74fa70cb7d48eabdf5450438349faf" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchWuxiIncMember">China, July 2011</acmr:NameOfDateOfIncorporation>
  <!--Registered Capital-Shengwei Research (Shanghai), Inc. [Member]-->
  <acmr:RegisteredCapital id="Fact_11c5e4532b20427e862b788cd6824e0d" contextRef="c20190331_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember" unitRef="U001" decimals="-3">727000</acmr:RegisteredCapital>
  <!--Registered Capital-Shengwei Research (Shanghai), Inc. [Member]-->
  <acmr:RegisteredCapital id="Fact_f5d906b578b64bfcbbe516d42f2b367a" contextRef="c20190331_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember" unitRef="U005" decimals="-3">5000000</acmr:RegisteredCapital>
  <!--Subsidiaries Ownership Percentage-Shengwei Research (Shanghai), Inc. [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_25b31e5cd24c495a96418d65d4ca0d87" contextRef="c20191231_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember" unitRef="U004" decimals="INF">0.9170</acmr:SubsidiariesOwnershipPercentage>
  <!--Subsidiaries Ownership Percentage-ACM Research (Wuxi), Inc. [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_311f750b33cf4472afba02c40bfacb4a" contextRef="c20191231_ConsolidatedEntitiesAxis_ACMResearchWuxiIncMember" unitRef="U004" decimals="INF">0.9170</acmr:SubsidiariesOwnershipPercentage>
  <!--Subsidiaries Ownership Percentage-ACM Research Korea CO., LTD [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_3b10e21de43941bfb639db69395598e6" contextRef="c20181231_ConsolidatedEntitiesAxis_ACMResearchKoreaCOLTDMember" unitRef="U004" decimals="INF">1.0000</acmr:SubsidiariesOwnershipPercentage>
  <!--Subsidiaries Ownership Percentage-ACM Research Korea CO., LTD [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_5a5874cdaf5742f4b573555e8b39eea2" contextRef="c20191231_ConsolidatedEntitiesAxis_ACMResearchKoreaCOLTDMember" unitRef="U004" decimals="INF">0.9170</acmr:SubsidiariesOwnershipPercentage>
  <!--Subsidiaries Ownership Percentage-CleanChip Technologies Limited [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_6afccbff71cb4e98893e86497a6f2363" contextRef="c20191231_ConsolidatedEntitiesAxis_CleanChipTechnologiesLimitedMember" unitRef="U004" decimals="INF">0.9170</acmr:SubsidiariesOwnershipPercentage>
  <!--Subsidiaries Ownership Percentage-ACM Research (CA), Inc. [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_943c7e71a0374c3982ec485b56acd148" contextRef="c20181231_ConsolidatedEntitiesAxis_ACMResearchCAIncMember" unitRef="U004" decimals="INF">1.0000</acmr:SubsidiariesOwnershipPercentage>
  <!--Subsidiaries Ownership Percentage-ACM Research (CA), Inc. [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_9a9e860486004d81a4f467cbd6a4ee7f" contextRef="c20191231_ConsolidatedEntitiesAxis_ACMResearchCAIncMember" unitRef="U004" decimals="INF">0.9170</acmr:SubsidiariesOwnershipPercentage>
  <!--Subsidiaries Ownership Percentage-Shengwei Research (Shanghai), Inc. [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_ba44c9aa8f4d47909f0160472a27b4e4" contextRef="c20181231_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember" unitRef="U004" decimals="INF">1.0000</acmr:SubsidiariesOwnershipPercentage>
  <!--Subsidiaries Ownership Percentage-CleanChip Technologies Limited [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_c0164bbee9fb4d89b849fde92984c37d" contextRef="c20181231_ConsolidatedEntitiesAxis_CleanChipTechnologiesLimitedMember" unitRef="U004" decimals="INF">1.0000</acmr:SubsidiariesOwnershipPercentage>
  <!--Subsidiaries Ownership Percentage-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_cab7777f229547afb1301183afb5f3c9" contextRef="c20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U004" decimals="INF">0.9170</acmr:SubsidiariesOwnershipPercentage>
  <!--Subsidiaries Ownership Percentage-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_da3d6d7530c14451b964afa504e7c9a7" contextRef="c20181231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U004" decimals="INF">1.0000</acmr:SubsidiariesOwnershipPercentage>
  <!--Subsidiaries Ownership Percentage-ACM Research (Wuxi), Inc. [Member]-->
  <acmr:SubsidiariesOwnershipPercentage id="Fact_f47193dcceca46398d322ee155b5b162" contextRef="c20181231_ConsolidatedEntitiesAxis_ACMResearchWuxiIncMember" unitRef="U004" decimals="INF">1.0000</acmr:SubsidiariesOwnershipPercentage>
  <!--Capital Injected in Subsidiary-Shengwei Research (Shanghai), Inc. [Member]-->
  <acmr:CapitalInjectedInSubsidiary id="Fact_4ebc1dfea0eb44d7bd8d5d3c11870061" contextRef="c20191231_ConsolidatedEntitiesAxis_ShengweiResearchShanghaiIncMember" unitRef="U001" decimals="-3">142000</acmr:CapitalInjectedInSubsidiary>
  <!--Percentage of Outstanding Shares to be Sold to Investors-ACM Research (Shanghai), Inc. [Member]-First Tranche Investors [Member]-->
  <acmr:PercentageOfOutstandingSharesToBeSoldToInvestors id="Fact_c339be98fb6b42adacd462efabea244b" contextRef="c20190612to20190612_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember" unitRef="U004" decimals="3">0.042</acmr:PercentageOfOutstandingSharesToBeSoldToInvestors>
  <!--Percentage of Outstanding Shares to be Sold to Investors-First Tranche Investors [Member]-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:PercentageOfOutstandingSharesToBeSoldToInvestors id="Fact_abc58043be7d4eb7a5311b483d8783d6" contextRef="c20190701to20190930_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember" unitRef="U004" decimals="4">0.0420</acmr:PercentageOfOutstandingSharesToBeSoldToInvestors>
  <!--Purchase Price of Stock Agreed by Investors-Second Tranche Investors [Member]-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:PurchasePriceOfStockAgreedByInvestors id="Fact_1b673e7e0ad54615ad7639f78786b9e9" contextRef="c20191129to20191129_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember" unitRef="U005" decimals="-3">228200000</acmr:PurchasePriceOfStockAgreedByInvestors>
  <!--Purchase Price of Stock Agreed by Investors-ACM Research (Shanghai), Inc. [Member]-First Tranche Investors [Member]-->
  <acmr:PurchasePriceOfStockAgreedByInvestors id="Fact_75db6851bad747ffbbe55e2b25e7728b" contextRef="c20190612to20190612_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember" unitRef="U001" decimals="-3">27300000</acmr:PurchasePriceOfStockAgreedByInvestors>
  <!--Purchase Price of Stock Agreed by Investors-ACM Research (Shanghai), Inc. [Member]-First Tranche Investors [Member]-->
  <acmr:PurchasePriceOfStockAgreedByInvestors id="Fact_9bdde0a137e84b8c992005098034ef23" contextRef="c20190612to20190612_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember" unitRef="U005" decimals="-3">187900000</acmr:PurchasePriceOfStockAgreedByInvestors>
  <!--Purchase Price of Stock Agreed by Investors-Second Tranche Investors [Member]-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:PurchasePriceOfStockAgreedByInvestors id="Fact_ddb3f48f57c246d78d361cadb8fac278" contextRef="c20191129to20191129_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember" unitRef="U001" decimals="-3">32400000</acmr:PurchasePriceOfStockAgreedByInvestors>
  <!--Term to complete listing of shares-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:TermToCompleteListingOfShares id="Fact_1464f2c7f7254a8a9cf41a6b40d5253c" contextRef="c20190617to20190617_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember">P3Y</acmr:TermToCompleteListingOfShares>
  <!--Lessee Operating Lease Supplemental Cash Flow Information Related to Operating Leas [Table Text Block]-->
  <acmr:LesseeOperatingLeaseSupplementalCashFlowInformationRelatedToOperatingLeasTableTextBlock id="Fact_6abb98cb1ef84675a641f21ce6589032" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;Supplemental cash flow information related to operating leases was as follows for the period ended December 31, 2019:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 80%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 68%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;Year Ended&lt;/div&gt;&lt;div style="text-align: center; font-weight: bold;"&gt;December 31, 2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Cash paid for amounts included in the measurement of lease liabilities:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 68%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt;"&gt;Operating cash outflow from operating leases&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="text-align: right; vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: #000000 double 4px; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;1,597&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</acmr:LesseeOperatingLeaseSupplementalCashFlowInformationRelatedToOperatingLeasTableTextBlock>
  <!--Lessee, Operating Lease, Weighted Average Remaining Lease Term and Discount Rate [Table Text Block]-->
  <acmr:LesseeOperatingLeaseWeightedAverageRemainingLeaseTermAndDiscountRateTableTextBlock id="Fact_e71704c1f3154ea986df6091ccc53fae" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="color: rgb(0, 0, 0); text-align: justify;"&gt;The weighted average remaining lease terms and discount rates for all operating leases were as follows as of December 31 2019:&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;table align="center" border="0" cellpadding="0" cellspacing="0" style="width: 70%; color: #000000; font-family: 'Times New Roman'; font-size: 10pt; text-align: left;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; padding-bottom: 2px; width: 58%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31, 2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 58%;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Remaining lease term and discount rate:&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 58%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Weighted average remaining lease term (years)&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: #CCEEFF;"&gt;&lt;div style="color: #000000;"&gt;3.02&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: #CCEEFF;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 58%; background-color: rgb(255, 255, 255); padding-bottom: 4px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Weighted average discount rate&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 4px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 4px double rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 4px double rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;5.43&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 4px;"&gt;&lt;div style="color: #000000;"&gt;%&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</acmr:LesseeOperatingLeaseWeightedAverageRemainingLeaseTermAndDiscountRateTableTextBlock>
  <!--Accrued Machine Testing Fees, Current-->
  <acmr:AccruedMachineTestingFeesCurrent id="Fact_a2ca741fb7814f8b953da52405f26320" contextRef="c20181231" unitRef="U001" decimals="-3">3076000</acmr:AccruedMachineTestingFeesCurrent>
  <!--Accrued Machine Testing Fees, Current-->
  <acmr:AccruedMachineTestingFeesCurrent id="Fact_a37bd272d16f4f208b8376c3a3a59f2b" contextRef="c20191231" unitRef="U001" decimals="-3">1456000</acmr:AccruedMachineTestingFeesCurrent>
  <!--Increased Base Rent, Period 1-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:IncreasedBaseRentPeriod1 id="Fact_dd1aaa5e72ab462e828d16c2cd373695" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-2">3300</acmr:IncreasedBaseRentPeriod1>
  <!--Increased Base Rent, Period 2-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:IncreasedBaseRentPeriod2 id="Fact_46d77d2a3a0b4139bdbf7fb5b14ac85a" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U001" decimals="-2">3400</acmr:IncreasedBaseRentPeriod2>
  <!--Area of Space for Office and Warehouse-Shanghai Zhangjiang Group Co., Ltd. [Member]-->
  <acmr:AreaOfSpaceForOfficeAndWarehouse id="Fact_0ae837fe89544260b2ee11fc27e9ce63" contextRef="c20190101to20191231_RelatedPartyTransactionsByRelatedPartyAxis_ShanghaiZhangjiangGroupCoLtdMember" unitRef="U010" decimals="INF">63510</acmr:AreaOfSpaceForOfficeAndWarehouse>
  <!--Area of Space for Office and Warehouse-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:AreaOfSpaceForOfficeAndWarehouse id="Fact_265c24d67ef14343a538ec41dbc3e134" contextRef="c20180101to20180131_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U010" decimals="INF">50000</acmr:AreaOfSpaceForOfficeAndWarehouse>
  <!--Area of Space for Office and Warehouse-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:AreaOfSpaceForOfficeAndWarehouse id="Fact_b2ec8c6931de47e49557f899a0893e28" contextRef="c20190101to20191231_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember" unitRef="U010" decimals="INF">3000</acmr:AreaOfSpaceForOfficeAndWarehouse>
  <!--Proceeds from Issuance of Net of Direct Expenses-->
  <acmr:ProceedsFromIssuanceOfNetOfDirectExpenses id="Fact_89e87c75102242f7b8c1a69f7f50a7d1" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">2287000</acmr:ProceedsFromIssuanceOfNetOfDirectExpenses>
  <!--Warrant conversion to common stock-->
  <acmr:WarrantConversionToCommonStock id="Fact_647e468c06b4409faff14bec8afdf4e2" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">9000</acmr:WarrantConversionToCommonStock>
  <!--Warrant conversion to common stock-->
  <acmr:WarrantConversionToCommonStock id="Fact_f712dd3add0840558c67e0cfef15ccc8" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">3079000</acmr:WarrantConversionToCommonStock>
  <!--Payment for Cancellation of Stock Options-->
  <acmr:PaymentForCancellationOfStockOptions id="Fact_1561f11f6d0a48898653810c116aa601" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</acmr:PaymentForCancellationOfStockOptions>
  <!--Payment for Cancellation of Stock Options-->
  <acmr:PaymentForCancellationOfStockOptions id="Fact_bbc31b9cecba4216bcec45daa12b5d71" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">576000</acmr:PaymentForCancellationOfStockOptions>
  <!--Inventory Pledged as Collateral for Borrowings-->
  <acmr:InventoryPledgedAsCollateralForBorrowings id="Fact_079a622d23024fc68ad3ad1416e56cca" contextRef="c20181231" unitRef="U001" decimals="-3">0</acmr:InventoryPledgedAsCollateralForBorrowings>
  <!--Inventory Pledged as Collateral for Borrowings-->
  <acmr:InventoryPledgedAsCollateralForBorrowings id="Fact_b2695bbd70124e5fb35d609faf7b5570" contextRef="c20191231" unitRef="U001" decimals="-3">0</acmr:InventoryPledgedAsCollateralForBorrowings>
  <!--Stock Issued During Period, Shares, Common Stock Warrant Exercised-Common Stock [Member]-Common Class B [Member]-->
  <acmr:StockIssuedDuringPeriodSharesCommonStockWarrantExercised id="Fact_215ae9d8855b454b9267168b20b23ccd" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">0</acmr:StockIssuedDuringPeriodSharesCommonStockWarrantExercised>
  <!--Stock Issued During Period, Shares, Common Stock Warrant Exercised-Common Class A [Member]-Common Stock [Member]-->
  <acmr:StockIssuedDuringPeriodSharesCommonStockWarrantExercised id="Fact_294766c5e01c4a0db1f2910dad3ec15c" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">397502</acmr:StockIssuedDuringPeriodSharesCommonStockWarrantExercised>
  <!--Stock Issued During Period, Shares, Common Stock Warrant Exercised-Common Class B [Member]-Common Stock [Member]-->
  <acmr:StockIssuedDuringPeriodSharesCommonStockWarrantExercised id="Fact_7628ae86178a46a4bd847a6ad0915166" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">0</acmr:StockIssuedDuringPeriodSharesCommonStockWarrantExercised>
  <!--Stock Issued During Period, Shares, Common Stock Warrant Exercised-Common Stock [Member]-Common Class A [Member]-->
  <acmr:StockIssuedDuringPeriodSharesCommonStockWarrantExercised id="Fact_f492c7cad4cc4385a19abb67e8ba9f6c" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">1438</acmr:StockIssuedDuringPeriodSharesCommonStockWarrantExercised>
  <!--Stock Issued During Period, Shares, Common Stock Warrant Exercised-Common Class A [Member]-Shengxin (Shanghai) Management Consulting Limited Partnership [Member]-->
  <acmr:StockIssuedDuringPeriodSharesCommonStockWarrantExercised id="Fact_32150d276ebf48a09b21667aac9c8b01" contextRef="c20180330to20180330_RelatedPartyTransactionsByRelatedPartyAxis_ShengxinShanghaiManagementConsultingLimitedPartnershipSMCMember_StatementClassOfStockAxis_CommonClassAMember" unitRef="U002" decimals="INF">397502</acmr:StockIssuedDuringPeriodSharesCommonStockWarrantExercised>
  <!--Stock Issued During Period, Shares, Conversion of Class B Stock to Class A Stock-Common Stock [Member]-Common Class A [Member]-->
  <acmr:StockIssuedDuringPeriodSharesConversionOfClassBStockToClassAStock id="Fact_04c9219248ee4332a338aa29f281eb3e" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">35815</acmr:StockIssuedDuringPeriodSharesConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Shares, Conversion of Class B Stock to Class A Stock-Common Stock [Member]-Common Class B [Member]-->
  <acmr:StockIssuedDuringPeriodSharesConversionOfClassBStockToClassAStock id="Fact_05bae9154de64a9f9e7658fd869b995a" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">-35815</acmr:StockIssuedDuringPeriodSharesConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Shares, Conversion of Class B Stock to Class A Stock-Common Class A [Member]-Common Stock [Member]-->
  <acmr:StockIssuedDuringPeriodSharesConversionOfClassBStockToClassAStock id="Fact_76fea311770e493eb7b916f48cdea96c" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">511315</acmr:StockIssuedDuringPeriodSharesConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Shares, Conversion of Class B Stock to Class A Stock-Common Class B [Member]-Common Stock [Member]-->
  <acmr:StockIssuedDuringPeriodSharesConversionOfClassBStockToClassAStock id="Fact_b30413903ca64835956df3696683152d" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U002" decimals="INF">-511315</acmr:StockIssuedDuringPeriodSharesConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Shares, Conversion of Class B Stock to Class A Stock-->
  <acmr:StockIssuedDuringPeriodSharesConversionOfClassBStockToClassAStock id="Fact_09152f752bdc45aa8e71119f08cdc6d6" contextRef="c20190101to20191231" unitRef="U002" decimals="INF">35815</acmr:StockIssuedDuringPeriodSharesConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-Retained Earnings [Member]-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_016a055e472244d6a27f35a8771c3879" contextRef="c20180101to20181231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-Additional Paid-In Capital [Member]-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_1010c5d40dc945c7917ff6439f18eba0" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_2e20cd43aa5144259e01ef0d245204d6" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_56f28a87c8e04795af904c170a665811" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-Common Class A [Member]-Common Stock [Member]-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_5a661c648a7049168b3d1b1acc3cc461" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-Common Class B [Member]-Common Stock [Member]-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_5b2ff9a3e79e4d289dc36c230b5b0442" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-Common Stock [Member]-Common Class A [Member]-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_6176b16c1fba4a1eb35946b189e86053" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-Retained Earnings [Member]-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_84d5dadbbf63406f86dc8924a27a1caa" contextRef="c20190101to20191231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-AOCI Attributable to Parent [Member]-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_8afc801072874362ae3dd1d65dac6fca" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-Additional Paid-In Capital [Member]-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_9008d33c333743c6b1c7d731f5d05713" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-AOCI Attributable to Parent [Member]-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_c4f373694d1a4733b5b1bd83f1f3838d" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Conversion of Class B Stock to Class A Stock-Common Stock [Member]-Common Class B [Member]-->
  <acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock id="Fact_ead4cffe08594624a8b68da04b645c19" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueConversionOfClassBStockToClassAStock>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-Common Stock [Member]-Common Class A [Member]-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_057ece3ee90e431cbb599c0c56e92ca0" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-Retained Earnings [Member]-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_0bbf74c25b2a4d55b20f5c51d07486e6" contextRef="c20180101to20181231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-Retained Earnings [Member]-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_0cbc517b0e2f4337913721a5e5f8b6fd" contextRef="c20190101to20191231_StatementEquityComponentsAxis_RetainedEarningsMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_0d5e76e2ab3b45c38de504d2e82ba7cd" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">2981000</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-AOCI Attributable to Parent [Member]-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_0ebfb54e386344d38c9ca74e94cd14bf" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-AOCI Attributable to Parent [Member]-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_7703fb371a8240c1988255d4caf56cb8" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AccumulatedOtherComprehensiveIncomeMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-Common Class B [Member]-Common Stock [Member]-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_79c17032158f49dc8debd693fd278da8" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_97ba3963ad864a95b8e09e487c9905d9" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-Common Stock [Member]-Common Class B [Member]-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_c5648c5e5dd64fb3a0bf96d21edd64a1" contextRef="c20190101to20191231_StatementClassOfStockAxis_CommonClassBMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-Additional Paid-In Capital [Member]-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_d566ffc5e2d84fe99cb065c426cf06ee" contextRef="c20180101to20181231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">2981000</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-Common Class A [Member]-Common Stock [Member]-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_de33f8e47ff3402395ce23947472d887" contextRef="c20180101to20181231_StatementClassOfStockAxis_CommonClassAMember_StatementEquityComponentsAxis_CommonStockMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Stock Issued During Period, Value, Common Stock Warrant Exercised-Additional Paid-In Capital [Member]-->
  <acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised id="Fact_f2ea2cf8585646ffaea8ea6c98ece952" contextRef="c20190101to20191231_StatementEquityComponentsAxis_AdditionalPaidInCapitalMember" unitRef="U001" decimals="-3">0</acmr:StockIssuedDuringPeriodValueCommonStockWarrantExercised>
  <!--Long-Term Investment [Table Text Block]-->
  <acmr:LongTermInvestmentTableTextBlock id="Fact_2178edf1642b4a1da496e5f706aba6a8" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div&gt;For the years ended December 31, 2019 and 2018 the Company&amp;#8217;s share of equity investees&amp;#8217; net income was $168 and $123, respectively, which was included in income on equity method investment in the accompanying consolidated statements of operations and comprehensive income.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Investment &amp;#8211; equity method&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;5,827&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,360&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Investment &amp;#8211; cost method&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;107&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;5,934&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,360&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</acmr:LongTermInvestmentTableTextBlock>
  <!--Investment in Partnership-->
  <acmr:InvestmentInPartnership id="Fact_33c218af784a400782ce73c8a32b4b86" contextRef="c20190930" unitRef="U001" decimals="-3">4200000</acmr:InvestmentInPartnership>
  <!--Investment in Partnership-->
  <acmr:InvestmentInPartnership id="Fact_92818dd04db1400492c5c99668aa61bb" contextRef="c20190930" unitRef="U005" decimals="-3">30000000</acmr:InvestmentInPartnership>
  <!--Number of Investors with Agreements Entered-ACM Research (Shanghai), Inc. [Member]-First Tranche Investors [Member]-->
  <acmr:NumberOfInvestorsWithAgreementsEntered id="Fact_01fa2b71716146f3b4b98c908b8eccbf" contextRef="c20190612to20190612_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_FirstTrancheInvestorsMember" unitRef="U006" decimals="INF">7</acmr:NumberOfInvestorsWithAgreementsEntered>
  <!--Number of Investors with Agreements Entered-Second Tranche Investors [Member]-ACM Research (Shanghai), Inc. [Member]-->
  <acmr:NumberOfInvestorsWithAgreementsEntered id="Fact_e4d9b02635394bb180584c14e64134f4" contextRef="c20191129to20191129_ConsolidatedEntitiesAxis_ACMResearchShanghaiIncMember_RelatedPartyTransactionAxis_SecondTrancheInvestorsMember" unitRef="U006" decimals="INF">8</acmr:NumberOfInvestorsWithAgreementsEntered>
  <!--Number of Investors with Agreements Entered-Shengyi Semiconductor Technology Company Limited [Member]-->
  <acmr:NumberOfInvestorsWithAgreementsEntered id="Fact_c2e0b55dff164e699ee4dc998b417d8f" contextRef="c20190905to20190905_RelatedPartyTransactionsByRelatedPartyAxis_ShengyiSemiconductorTechnologyCompanyLimitedMember" unitRef="U006" decimals="INF">6</acmr:NumberOfInvestorsWithAgreementsEntered>
  <!--Ownership Percentage in Partnership-->
  <acmr:OwnershipPercentageInPartnership id="Fact_c79d683eb76e4dad95389b26357a7c55" contextRef="c20190930" unitRef="U004" decimals="1">0.1</acmr:OwnershipPercentageInPartnership>
  <!--Comprehensive Income (Loss) Attributable to Redeemable Non-controlling Interests-->
  <acmr:ComprehensiveIncomeLossAttributableToRedeemableNonControllingInterests id="Fact_51a036cce02c4702862d36d6d18b3a49" contextRef="c20180101to20181231" unitRef="U001" decimals="-3">0</acmr:ComprehensiveIncomeLossAttributableToRedeemableNonControllingInterests>
  <!--Comprehensive Income (Loss) Attributable to Redeemable Non-controlling Interests-->
  <acmr:ComprehensiveIncomeLossAttributableToRedeemableNonControllingInterests id="Fact_5fe49dba5893434c8127d4a45f598e73" contextRef="c20190101to20191231" unitRef="U001" decimals="-3">483000</acmr:ComprehensiveIncomeLossAttributableToRedeemableNonControllingInterests>
  <!--long-term investment [Text Block]-->
  <acmr:LongTermInvestmentTextBlock id="Fact_c01ebd6d263a4947bb9e5614e3130481" contextRef="c20190101to20191231">&lt;div style="font-family: 'Times New Roman'; font-size: 10pt;"&gt;&lt;div style="font-weight: bold;"&gt;NOTE 10 &amp;#8211; LONG-TERM INVESTMENT&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000;"&gt;On September 6, 2017, ACM and Ninebell Co., Ltd. (&amp;#8220;Ninebell&amp;#8221;), a Korean company that is one of the Company&amp;#8217;s principal material suppliers, entered into an ordinary share purchase agreement, effective as of September 11, 2017, pursuant to which Ninebell issued to ACM ordinary shares representing 20% of Ninebell&amp;#8217;s post-closing equity for a purchase price of $1,200, and a common stock purchase agreement, effective as of September 11, 2017, pursuant to which ACM issued 133,334 shares of Class A common stock to Ninebell for a purchase price of $1,000 at $7.50 per share. The investment in Ninebell is accounted for under the equity method.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="color: #000000;"&gt;On June 27, 2019, ACM Shanghai and Shengyi Semiconductor Technology Co., Ltd. (&amp;#8220;Shengyi&amp;#8221;), a company based in Wuxi, China that is one of the Company&amp;#8217;s component suppliers, entered into an agreement pursuant to which Shengyi issued to ACM Shanghai shares representing 15% of Shengyi&amp;#8217;s post-closing equity for a purchase price of $109. The investment in Shengyi is accounted for under the cost method.&lt;/div&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify; color: #000000;"&gt;On September 5, 2019, ACM Shanghai, entered into a Partnership Agreement with six other investors, as limited partners, and Beijing Shixi Qingliu Investment Co., Ltd., as general partner and manager, with respect to the formation of Hefei Shixi Chanheng Integrated Circuit Industry Venture Capital Fund Partnership (LP), a Chinese limited partnership based in Hefei, China. Pursuant to such Partnership Agreement, on September 30, 2019, ACM Shanghai invested RMB 30,000 ($4,200), which represented 10% of the Partnership&amp;#8217;s total subscribed capital. The investment in Hefei Shixi Chanheng Integrated Circuit Industry Venture Capital Fund Partnership (LP) is accounted for under the equity method in accordance with ASC 323-30-S99-1.&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&amp;#160;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;font style="background-color: rgb(255, 255, 255); font-weight: normal; color: rgb(0, 0, 0); font-style: normal; font-variant: normal; text-transform: none;"&gt;&lt;font style="background-image: none; background-repeat: repeat; background-attachment: scroll; background-position: 0% 0%; background-clip: border-box; background-origin: padding-box; background-size: auto auto;"&gt;The Company treats the equity investment in the consolidated financial statements under the equity method. Under the equity method, the investment is initially recorded at cost, adjusted for any excess of the Company&amp;#8217;s share of the incorporated-date fair values of the investee&amp;#8217;s identifiable net assets over the cost of the investment (if any). Thereafter, the investment is adjusted for the post incorporation change in the Company&amp;#8217;s share of the investee&amp;#8217;s net assets and any impairment loss relating to the investment. For the years ended December 31, 2019 and 2018 the Company&amp;#8217;s share of equity investees&amp;#8217; net income was $168 and $123, respectively, which was included in income on equity method investment in the accompanying consolidated statements of operations and comprehensive income.&lt;/font&gt;&lt;/font&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;table border="0" cellpadding="0" cellspacing="0" style="font-family: 'Times New Roman'; font-size: 10pt; text-align: left; color: #000000; width: 100%;"&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="6" nowrap="nowrap" rowspan="1" valign="bottom" style="vertical-align: bottom; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;December 31,&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 76%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2019&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="2" nowrap="nowrap" valign="bottom" style="vertical-align: middle; border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="text-align: center; color: #000000; font-weight: bold;"&gt;2018&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; padding-bottom: 2px; width: 1%;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Investment &amp;#8211; equity method&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;5,827&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,360&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: bottom; width: 76%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Investment &amp;#8211; cost method&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;107&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; background-color: rgb(255, 255, 255); border-bottom: 2px solid rgb(0, 0, 0);"&gt;&lt;div style="color: #000000;"&gt;-&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; background-color: rgb(255, 255, 255); padding-bottom: 2px;"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="bottom" style="vertical-align: middle; width: 76%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&lt;div style="text-indent: -7.2pt; margin-left: 7.2pt; color: #000000;"&gt;Total&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div&gt;5,934&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; width: 1%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;$&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" valign="bottom" style="vertical-align: bottom; text-align: right; width: 9%; border-bottom: 4px double rgb(0, 0, 0); background-color: rgb(204, 238, 255);"&gt;&lt;div style="color: #000000;"&gt;1,360&lt;/div&gt;&lt;/td&gt;&lt;td colspan="1" nowrap="nowrap" valign="bottom" style="vertical-align: bottom; width: 1%; padding-bottom: 4px; background-color: rgb(204, 238, 255);"&gt;&amp;#160;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div&gt;&amp;#160;&lt;/div&gt;&lt;/div&gt;</acmr:LongTermInvestmentTextBlock>
  <link:footnoteLink xlink:role="http://www.xbrl.org/2003/role/link" xlink:type="extended">
    <link:footnote xlink:label="Footnote-Item-1" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-US">Expected term of share options is based on the average of the vesting period and the contractual term for each grant according to Staff Accounting Bulletin 110.</link:footnote>
    <link:loc xlink:href="#Fact_5927103c088047b69591f4dd377c4ec7" xlink:label="Fact_5927103c088047b69591f4dd377c4ec7_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_5927103c088047b69591f4dd377c4ec7_lbl" xlink:to="Footnote-Item-1" xlink:type="arc" />
    <link:loc xlink:href="#Fact_81265ed3b08a4ec0bc86aad92d8dbb55" xlink:label="Fact_81265ed3b08a4ec0bc86aad92d8dbb55_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_81265ed3b08a4ec0bc86aad92d8dbb55_lbl" xlink:to="Footnote-Item-1" xlink:type="arc" />
    <link:footnote xlink:label="Footnote-Item-2" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-US">Common stock value was the close market value on the grant date.</link:footnote>
    <link:loc xlink:href="#Fact_3ba96ea374fa4258b3cbd6e27da1f211" xlink:label="Fact_3ba96ea374fa4258b3cbd6e27da1f211_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_3ba96ea374fa4258b3cbd6e27da1f211_lbl" xlink:to="Footnote-Item-2" xlink:type="arc" />
    <link:loc xlink:href="#Fact_3f5b16b0bf524b8bb4a2ac8129d8e5ce" xlink:label="Fact_3f5b16b0bf524b8bb4a2ac8129d8e5ce_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_3f5b16b0bf524b8bb4a2ac8129d8e5ce_lbl" xlink:to="Footnote-Item-2" xlink:type="arc" />
    <link:loc xlink:href="#Fact_ce473c9332ea443e83fde09f1099cbe8" xlink:label="Fact_ce473c9332ea443e83fde09f1099cbe8_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_ce473c9332ea443e83fde09f1099cbe8_lbl" xlink:to="Footnote-Item-2" xlink:type="arc" />
    <link:loc xlink:href="#Fact_f11ba745e4f04090958bf9ad6bd7eb40" xlink:label="Fact_f11ba745e4f04090958bf9ad6bd7eb40_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_f11ba745e4f04090958bf9ad6bd7eb40_lbl" xlink:to="Footnote-Item-2" xlink:type="arc" />
    <link:footnote xlink:label="Footnote-Item-3" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-US">Expected dividend is assumed to be 0% as ACM has no history or expectation of paying a dividend on its common stock.</link:footnote>
    <link:loc xlink:href="#Fact_524cc99dd46444cabdd14c1388b8b37a" xlink:label="Fact_524cc99dd46444cabdd14c1388b8b37a_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_524cc99dd46444cabdd14c1388b8b37a_lbl" xlink:to="Footnote-Item-3" xlink:type="arc" />
    <link:loc xlink:href="#Fact_e26919c3f49b4f2f81595b4f1f9902d8" xlink:label="Fact_e26919c3f49b4f2f81595b4f1f9902d8_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_e26919c3f49b4f2f81595b4f1f9902d8_lbl" xlink:to="Footnote-Item-3" xlink:type="arc" />
    <link:footnote xlink:label="Footnote-Item-4" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-US">Volatility is calculated based on the historical volatility of ACM's comparable companies in the period equal to the expected term of each grant.</link:footnote>
    <link:loc xlink:href="#Fact_ab87d16100454a6988940d80d2c40bb3" xlink:label="Fact_ab87d16100454a6988940d80d2c40bb3_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_ab87d16100454a6988940d80d2c40bb3_lbl" xlink:to="Footnote-Item-4" xlink:type="arc" />
    <link:loc xlink:href="#Fact_b3ee2840a2d6473db53b2ac27d77bd97" xlink:label="Fact_b3ee2840a2d6473db53b2ac27d77bd97_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_b3ee2840a2d6473db53b2ac27d77bd97_lbl" xlink:to="Footnote-Item-4" xlink:type="arc" />
    <link:loc xlink:href="#Fact_c4f472d3a92548af917026b6d302159f" xlink:label="Fact_c4f472d3a92548af917026b6d302159f_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_c4f472d3a92548af917026b6d302159f_lbl" xlink:to="Footnote-Item-4" xlink:type="arc" />
    <link:loc xlink:href="#Fact_d2527ed4e3e64b2cbe987b2bdf466061" xlink:label="Fact_d2527ed4e3e64b2cbe987b2bdf466061_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_d2527ed4e3e64b2cbe987b2bdf466061_lbl" xlink:to="Footnote-Item-4" xlink:type="arc" />
    <link:footnote xlink:label="Footnote-Item-5" xlink:role="http://www.xbrl.org/2003/role/footnote" xlink:type="resource" xml:lang="en-US">Risk-free interest rate is based on the yields of U.S. Treasury securities with maturities similar to the expected term of the share options in effect at the time of grant.</link:footnote>
    <link:loc xlink:href="#Fact_0958e6c7e5f64d5590f77531ab003af6" xlink:label="Fact_0958e6c7e5f64d5590f77531ab003af6_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_0958e6c7e5f64d5590f77531ab003af6_lbl" xlink:to="Footnote-Item-5" xlink:type="arc" />
    <link:loc xlink:href="#Fact_57540c11ba3443459457d57fbdaae753" xlink:label="Fact_57540c11ba3443459457d57fbdaae753_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_57540c11ba3443459457d57fbdaae753_lbl" xlink:to="Footnote-Item-5" xlink:type="arc" />
    <link:loc xlink:href="#Fact_6d87c56e96e340299006ff3305d7afec" xlink:label="Fact_6d87c56e96e340299006ff3305d7afec_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_6d87c56e96e340299006ff3305d7afec_lbl" xlink:to="Footnote-Item-5" xlink:type="arc" />
    <link:loc xlink:href="#Fact_d6ef295e53f5432093acae057938cac0" xlink:label="Fact_d6ef295e53f5432093acae057938cac0_lbl" xlink:type="locator" />
    <link:footnoteArc order="1.0" xlink:arcrole="http://www.xbrl.org/2003/arcrole/fact-footnote" xlink:from="Fact_d6ef295e53f5432093acae057938cac0_lbl" xlink:to="Footnote-Item-5" xlink:type="arc" />
  </link:footnoteLink>
</xbrl>
