Unaudited Condensed Consolidated Statements of Stockholders' Equity - USD ($) $ in Thousands | Total | Class A Common Stock | Class B Common Stock | Common StockClass A Common Stock | Common StockClass B Common Stock | Additional Paid-in Capital | Retained Earnings | Accumulated Other Comprehensive Income (Loss) |
Beginning balance at Dec. 31, 2018 | $ 194,111 | | | $ 90 | $ 21 | $ 184,216 | $ 9,713 | $ 71 |
Beginning balance, Shares at Dec. 31, 2018 | | | | 89,728,223 | 20,702,084 | | | |
Net income | 12,584 | | | | | | 12,584 | |
Stock–based compensation expense | 7,995 | | | | | 7,995 | | |
Issuance of common stock upon exercise of stock options | 697 | | | | | 697 | | |
Issuance of common stock upon exercise of stock options, Shares | | | | 447,210 | | | | |
Issuance of common stock upon vesting of restricted stock units, Shares | | | | 297,374 | | | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options | (3,954) | | | | | (3,954) | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options, Shares | | | | (102,034) | | | | |
Foreign currency translation adjustment | (424) | | | | | | | (424) |
Ending balance at Mar. 31, 2019 | 211,009 | | | $ 90 | $ 21 | 188,954 | 22,297 | (353) |
Ending balance, Shares at Mar. 31, 2019 | | | | 90,370,773 | 20,702,084 | | | |
Beginning balance at Dec. 31, 2018 | 194,111 | | | $ 90 | $ 21 | 184,216 | 9,713 | 71 |
Beginning balance, Shares at Dec. 31, 2018 | | | | 89,728,223 | 20,702,084 | | | |
Net income | 28,975 | | | | | | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options, Shares | | (345,114) | | | | | | |
Foreign currency translation adjustment | (997) | | | | | | | |
Ending balance at Sep. 30, 2019 | 237,102 | | | $ 91 | $ 21 | 199,228 | 38,688 | (926) |
Ending balance, Shares at Sep. 30, 2019 | | | | 91,312,647 | 20,502,084 | | | |
Beginning balance at Mar. 31, 2019 | 211,009 | | | $ 90 | $ 21 | 188,954 | 22,297 | (353) |
Beginning balance, Shares at Mar. 31, 2019 | | | | 90,370,773 | 20,702,084 | | | |
Net income | 6,007 | | | | | | 6,007 | |
Stock–based compensation expense | 9,260 | | | | | 9,260 | | |
Issuance of common stock upon exercise of stock options | 391 | | | | | 391 | | |
Issuance of common stock upon exercise of stock options, Shares | | | | 133,838 | | | | |
Issuance of common stock upon vesting of restricted stock units | | | | $ 1 | | (1) | | |
Issuance of common stock upon vesting of restricted stock units, Shares | | | | 362,447 | | | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options | (4,637) | | | | | (4,637) | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options, Shares | | | | (122,137) | | | | |
Foreign currency translation adjustment | 356 | | | | | | | 356 |
Ending balance at Jun. 30, 2019 | 222,386 | | | $ 91 | $ 21 | 193,967 | 28,304 | 3 |
Ending balance, Shares at Jun. 30, 2019 | | | | 90,744,921 | 20,702,084 | | | |
Net income | 10,384 | | | | | | 10,384 | |
Stock–based compensation expense | 9,085 | | | | | 9,085 | | |
Issuance of common stock upon exercise of stock options | 368 | | | | | 368 | | |
Issuance of common stock upon exercise of stock options, Shares | | | | 144,760 | | | | |
Issuance of common stock upon vesting of restricted stock units, Shares | | | | 343,909 | | | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options | (4,192) | | | | | (4,192) | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options, Shares | | (120,943) | | (120,943) | | | | |
Conversion of common stock, shares issued | | | | 200,000 | | | | |
Conversion of common stock, shares converted | | | | | (200,000) | | | |
Foreign currency translation adjustment | (929) | | | | | | | (929) |
Ending balance at Sep. 30, 2019 | 237,102 | | | $ 91 | $ 21 | 199,228 | 38,688 | (926) |
Ending balance, Shares at Sep. 30, 2019 | | | | 91,312,647 | 20,502,084 | | | |
Beginning balance at Dec. 31, 2019 | 256,855 | | | $ 92 | $ 20 | 205,234 | 51,859 | (350) |
Beginning balance, Shares at Dec. 31, 2019 | | 91,819,649 | 20,314,644 | 91,819,649 | 20,314,644 | | | |
Net income | 12,696 | | | | | | 12,696 | |
Stock–based compensation expense | 11,793 | | | | | 11,793 | | |
Issuance of common stock upon exercise of stock options | 514 | | | | | 514 | | |
Issuance of common stock upon exercise of stock options, Shares | | | | 160,668 | | | | |
Issuance of common stock upon vesting of restricted stock units | | | | $ 1 | | (1) | | |
Issuance of common stock upon vesting of restricted stock units, Shares | | | | 308,303 | | | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options | (3,397) | | | | | (3,397) | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options, Shares | | | | (106,934) | | | | |
Conversion of common stock, shares issued | | | | 335,741 | | | | |
Conversion of common stock, shares converted | | | | | (335,741) | | | |
Foreign currency translation adjustment | (493) | | | | | | | (493) |
Ending balance at Mar. 31, 2020 | 277,968 | | | $ 93 | $ 20 | 214,143 | 64,555 | (843) |
Ending balance, Shares at Mar. 31, 2020 | | | | 92,517,427 | 19,978,903 | | | |
Beginning balance at Dec. 31, 2019 | 256,855 | | | $ 92 | $ 20 | 205,234 | 51,859 | (350) |
Beginning balance, Shares at Dec. 31, 2019 | | 91,819,649 | 20,314,644 | 91,819,649 | 20,314,644 | | | |
Net income | 52,390 | | | | | | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options, Shares | | (337,313) | | | | | | |
Foreign currency translation adjustment | 1,001 | | | | | | | |
Ending balance at Sep. 30, 2020 | 338,259 | | | $ 94 | $ 19 | 233,246 | 104,249 | 651 |
Ending balance, Shares at Sep. 30, 2020 | | 94,016,568 | 19,076,500 | 94,016,568 | 19,076,500 | | | |
Beginning balance at Mar. 31, 2020 | 277,968 | | | $ 93 | $ 20 | 214,143 | 64,555 | (843) |
Beginning balance, Shares at Mar. 31, 2020 | | | | 92,517,427 | 19,978,903 | | | |
Net income | 7,131 | | | | | | 7,131 | |
Stock–based compensation expense | 12,249 | | | | | 12,249 | | |
Issuance of common stock upon exercise of stock options | 415 | | | | | 415 | | |
Issuance of common stock upon exercise of stock options, Shares | | | | 84,796 | | | | |
Issuance of common stock upon vesting of restricted stock units, Shares | | | | 375,645 | | | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options | (2,389) | | | | | (2,389) | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options, Shares | | | | (119,009) | | | | |
Conversion of common stock, shares issued | | | | 3,748 | | | | |
Conversion of common stock, shares converted | | | | | (3,748) | | | |
Foreign currency translation adjustment | 481 | | | | | | | 481 |
Ending balance at Jun. 30, 2020 | 295,855 | | | $ 93 | $ 20 | 224,418 | 71,686 | (362) |
Ending balance, Shares at Jun. 30, 2020 | | | | 92,862,607 | 19,975,155 | | | |
Net income | 32,563 | | | | | | 32,563 | |
Stock–based compensation expense | 11,684 | | | | | 11,684 | | |
Issuance of common stock upon exercise of stock options | 66 | | | | | 66 | | |
Issuance of common stock upon exercise of stock options, Shares | | | | 31,523 | | | | |
Issuance of common stock upon vesting of restricted stock units, Shares | | | | 335,153 | | | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options | (2,922) | | | | | (2,922) | | |
Payment of withholding taxes and option costs on net share settlement of restricted stock units and stock options, Shares | | (111,370) | | (111,370) | | | | |
Conversion of common stock | | | | $ 1 | | | | |
Conversion of common stock, shares issued | | | | 898,655 | | | | |
Conversion of common stock, shares converted | | | | | (898,655) | | | |
Conversion of common stock, value | | | | | $ (1) | | | |
Foreign currency translation adjustment | 1,013 | | | | | | | 1,013 |
Ending balance at Sep. 30, 2020 | $ 338,259 | | | $ 94 | $ 19 | $ 233,246 | $ 104,249 | $ 651 |
Ending balance, Shares at Sep. 30, 2020 | | 94,016,568 | 19,076,500 | 94,016,568 | 19,076,500 | | | |