 | us-gaap:IncomeTaxAuthorityNameDomain | parent-child | http://fasb.org/us-gaap/role/disclosure/IncomeTaxes |
 | us-gaap:IncomeTaxAuthorityNameDomain | dimension-default | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxContingencyTable |
 | us-gaap:IncomeTaxAuthorityNameDomain | dimension-domain | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxContingencyTable |
 | us-gaap:IncomeTaxAuthorityNameDomain | dimension-default | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxExaminationTable |
 | us-gaap:IncomeTaxAuthorityNameDomain | dimension-domain | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxExaminationTable |
 | us-gaap:IncomeTaxAuthorityNameDomain | dimension-default | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxHolidayTable |
 | us-gaap:IncomeTaxAuthorityNameDomain | dimension-domain | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesIncomeTaxHolidayTable |
 | us-gaap:IncomeTaxAuthorityNameDomain | dimension-default | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesOperatingLossCarryforwardsTable |
 | us-gaap:IncomeTaxAuthorityNameDomain | dimension-domain | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesOperatingLossCarryforwardsTable |
 | us-gaap:IncomeTaxAuthorityNameDomain | dimension-default | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesTaxCreditCarryforwardTable |
 | us-gaap:IncomeTaxAuthorityNameDomain | dimension-domain | http://fasb.org/us-gaap/role/disclosure/IncomeTaxesTaxCreditCarryforwardTable |