@sheerid/jslib-nightly 2.286.0-alpha.2 → 2.286.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/_mysheerid-preview.css +3 -3
  2. package/_mysheerid-preview.js +36 -36
  3. package/chunk/{AddressComponent-fSIQCSHy.js → AddressComponent-BwRoRFdv.js} +5 -5
  4. package/chunk/{AddressComponent-CEvgEQMA.js.map → AddressComponent-BwRoRFdv.js.map} +1 -1
  5. package/chunk/{AddressComponent-CEvgEQMA.js → AddressComponent-CptAWPo_.js} +5 -5
  6. package/chunk/{AddressComponent-fSIQCSHy.js.map → AddressComponent-CptAWPo_.js.map} +1 -1
  7. package/chunk/AnnouncingHeader-Cm6ysN0V.js +3 -3
  8. package/chunk/AnnouncingHeader-yslSIrZR.js +3 -3
  9. package/chunk/{ApiUrls-DT6YDZwO.js → ApiUrls-CfRsXvMY.js} +4 -4
  10. package/chunk/{ApiUrls-DT6YDZwO.js.map → ApiUrls-CfRsXvMY.js.map} +1 -1
  11. package/chunk/{ApiUrls-Zdy0p875.js → ApiUrls-rjzLLn_G.js} +4 -4
  12. package/chunk/{ApiUrls-Zdy0p875.js.map → ApiUrls-rjzLLn_G.js.map} +1 -1
  13. package/chunk/{BirthDateComponent-Dv6hU22_.js → BirthDateComponent-DuJCujWB.js} +5 -5
  14. package/chunk/{BirthDateComponent-COBjAdFk.js.map → BirthDateComponent-DuJCujWB.js.map} +1 -1
  15. package/chunk/{BirthDateComponent-COBjAdFk.js → BirthDateComponent-ik15ddI4.js} +5 -5
  16. package/chunk/{BirthDateComponent-Dv6hU22_.js.map → BirthDateComponent-ik15ddI4.js.map} +1 -1
  17. package/chunk/{CaptchaComponent-Dtr_Cbvu.js → CaptchaComponent-BOrQUXZ-.js} +7 -7
  18. package/chunk/{CaptchaComponent-3qiTIduG.js.map → CaptchaComponent-BOrQUXZ-.js.map} +1 -1
  19. package/chunk/{CaptchaComponent-3qiTIduG.js → CaptchaComponent-DzXC22Ic.js} +7 -7
  20. package/chunk/{CaptchaComponent-Dtr_Cbvu.js.map → CaptchaComponent-DzXC22Ic.js.map} +1 -1
  21. package/chunk/{ChangeLocaleComponent-B4Tlnh2U.js → ChangeLocaleComponent-Cr5Qo4b_.js} +5 -5
  22. package/chunk/{ChangeLocaleComponent-B4Tlnh2U.js.map → ChangeLocaleComponent-Cr5Qo4b_.js.map} +1 -1
  23. package/chunk/{ChangeLocaleComponent-jMvrJEW-.js → ChangeLocaleComponent-QWUZxrex.js} +5 -5
  24. package/chunk/{ChangeLocaleComponent-jMvrJEW-.js.map → ChangeLocaleComponent-QWUZxrex.js.map} +1 -1
  25. package/chunk/{City-xUKTZJTo.js → City-D671IRA5.js} +5 -5
  26. package/chunk/{City-BIL97VTt.js.map → City-D671IRA5.js.map} +1 -1
  27. package/chunk/{City-BIL97VTt.js → City-JFoC6v5U.js} +5 -5
  28. package/chunk/{City-xUKTZJTo.js.map → City-JFoC6v5U.js.map} +1 -1
  29. package/chunk/{CollegeNameComponent-OwBwjKji.js → CollegeNameComponent-2R17vhcT.js} +6 -6
  30. package/chunk/{CollegeNameComponent-Hnhr9YwU.js.map → CollegeNameComponent-2R17vhcT.js.map} +1 -1
  31. package/chunk/{CollegeNameComponent-Hnhr9YwU.js → CollegeNameComponent-DpxSYhjc.js} +6 -6
  32. package/chunk/{CollegeNameComponent-OwBwjKji.js.map → CollegeNameComponent-DpxSYhjc.js.map} +1 -1
  33. package/chunk/CopyToClipboardComponent-BvzDoXkd.js +3 -3
  34. package/chunk/CopyToClipboardComponent-CHdDPJEa.js +3 -3
  35. package/chunk/{CountryComponentWrapper-B1wLa3TB.js → CountryComponentWrapper-EYWb8DVc.js} +9 -9
  36. package/chunk/{CountryComponentWrapper-B1wLa3TB.js.map → CountryComponentWrapper-EYWb8DVc.js.map} +1 -1
  37. package/chunk/{CountryComponentWrapper-DhAq6SAW.js → CountryComponentWrapper-klPIifpD.js} +9 -9
  38. package/chunk/{CountryComponentWrapper-DhAq6SAW.js.map → CountryComponentWrapper-klPIifpD.js.map} +1 -1
  39. package/chunk/{DischargeDateComponent-CjUKk-H2.js → DischargeDateComponent-12mqfw2A.js} +11 -11
  40. package/chunk/{DischargeDateComponent-CAtYqcPo.js.map → DischargeDateComponent-12mqfw2A.js.map} +1 -1
  41. package/chunk/{DischargeDateComponent-CAtYqcPo.js → DischargeDateComponent-BJP9nU0F.js} +11 -11
  42. package/chunk/{DischargeDateComponent-CjUKk-H2.js.map → DischargeDateComponent-BJP9nU0F.js.map} +1 -1
  43. package/chunk/{DriverLicenseNumberComponent-B877KIX3.js → DriverLicenseNumberComponent-BCt1L2GH.js} +5 -5
  44. package/chunk/{DriverLicenseNumberComponent-B877KIX3.js.map → DriverLicenseNumberComponent-BCt1L2GH.js.map} +1 -1
  45. package/chunk/{DriverLicenseNumberComponent-BNd8xL27.js → DriverLicenseNumberComponent-BVqwcwtG.js} +5 -5
  46. package/chunk/{DriverLicenseNumberComponent-BNd8xL27.js.map → DriverLicenseNumberComponent-BVqwcwtG.js.map} +1 -1
  47. package/chunk/{EmailLoopPending-uBm7ltwg.js → EmailLoopPending-BvpZ0zuV.js} +5 -5
  48. package/chunk/{EmailLoopPending-CUKvLcJV.js.map → EmailLoopPending-BvpZ0zuV.js.map} +1 -1
  49. package/chunk/{EmailLoopPending-CUKvLcJV.js → EmailLoopPending-DX8A2AGF.js} +5 -5
  50. package/chunk/{EmailLoopPending-uBm7ltwg.js.map → EmailLoopPending-DX8A2AGF.js.map} +1 -1
  51. package/chunk/{ExtraMessage-Bx2shBsO.js → ExtraMessage-CDIXQdFV.js} +4 -4
  52. package/chunk/{ExtraMessage-Bx2shBsO.js.map → ExtraMessage-CDIXQdFV.js.map} +1 -1
  53. package/chunk/{ExtraMessage-OwXiBnCM.js → ExtraMessage-R9KTqaA1.js} +4 -4
  54. package/chunk/{ExtraMessage-OwXiBnCM.js.map → ExtraMessage-R9KTqaA1.js.map} +1 -1
  55. package/chunk/{FirstResponderOrganizationComponent-Gj4VL7DI.js → FirstResponderOrganizationComponent-BmRZZoRu.js} +6 -6
  56. package/chunk/{FirstResponderOrganizationComponent-BtSgJTlK.js.map → FirstResponderOrganizationComponent-BmRZZoRu.js.map} +1 -1
  57. package/chunk/{FirstResponderOrganizationComponent-BtSgJTlK.js → FirstResponderOrganizationComponent-ClfR3Y9r.js} +6 -6
  58. package/chunk/{FirstResponderOrganizationComponent-Gj4VL7DI.js.map → FirstResponderOrganizationComponent-ClfR3Y9r.js.map} +1 -1
  59. package/chunk/{FormFieldInputSelect-C2JbVtSi.js → FormFieldInputSelect-BC1vqc_P.js} +4 -4
  60. package/chunk/{FormFieldInputSelect-0RWaXUZ0.js.map → FormFieldInputSelect-BC1vqc_P.js.map} +1 -1
  61. package/chunk/{FormFieldInputSelect-0RWaXUZ0.js → FormFieldInputSelect-CZQIYYGa.js} +4 -4
  62. package/chunk/{FormFieldInputSelect-C2JbVtSi.js.map → FormFieldInputSelect-CZQIYYGa.js.map} +1 -1
  63. package/chunk/FormFieldLayout-C6rbRhh0.js +3 -3
  64. package/chunk/FormFieldLayout-Ci7MzpgW.js +3 -3
  65. package/chunk/FormFieldText-Dx92JsxR.js +3 -3
  66. package/chunk/FormFieldText-blykeSRX.js +3 -3
  67. package/chunk/{FormFieldTypeahead-Fu_3FlXg.js → FormFieldTypeahead-C78-gdUf.js} +6 -6
  68. package/chunk/{FormFieldTypeahead-Fu_3FlXg.js.map → FormFieldTypeahead-C78-gdUf.js.map} +1 -1
  69. package/chunk/{FormFieldTypeahead-DIhWUSSE.js → FormFieldTypeahead-Dlzx882A.js} +6 -6
  70. package/chunk/{FormFieldTypeahead-DIhWUSSE.js.map → FormFieldTypeahead-Dlzx882A.js.map} +1 -1
  71. package/chunk/{FormFooterComponent-DYBSB7Oh.js → FormFooterComponent-C2k9WZOp.js} +6 -6
  72. package/chunk/{FormFooterComponent-DYBSB7Oh.js.map → FormFooterComponent-C2k9WZOp.js.map} +1 -1
  73. package/chunk/{FormFooterComponent-C68F5kaP.js → FormFooterComponent-C9-FFS7X.js} +6 -6
  74. package/chunk/{FormFooterComponent-C68F5kaP.js.map → FormFooterComponent-C9-FFS7X.js.map} +1 -1
  75. package/chunk/{FormSelectChoice-XdFgcHCe.js → FormSelectChoice-BckCakYz.js} +5 -5
  76. package/chunk/{FormSelectChoice-LqM1ihM5.js.map → FormSelectChoice-BckCakYz.js.map} +1 -1
  77. package/chunk/{FormSelectChoice-LqM1ihM5.js → FormSelectChoice-Mdg0fv8U.js} +5 -5
  78. package/chunk/{FormSelectChoice-XdFgcHCe.js.map → FormSelectChoice-Mdg0fv8U.js.map} +1 -1
  79. package/chunk/InputText-C79edroa.js +3 -3
  80. package/chunk/InputText-GzAnMGCC.js +3 -3
  81. package/chunk/{LicensedProfessionalOrganizationComponent-DnfCid0C.js → LicensedProfessionalOrganizationComponent-B7EHLiQp.js} +6 -6
  82. package/chunk/{LicensedProfessionalOrganizationComponent-DnfCid0C.js.map → LicensedProfessionalOrganizationComponent-B7EHLiQp.js.map} +1 -1
  83. package/chunk/{LicensedProfessionalOrganizationComponent-NJR6sc0z.js → LicensedProfessionalOrganizationComponent-CjLdW_bb.js} +6 -6
  84. package/chunk/{LicensedProfessionalOrganizationComponent-NJR6sc0z.js.map → LicensedProfessionalOrganizationComponent-CjLdW_bb.js.map} +1 -1
  85. package/chunk/LogoComponent-88BDkLwD.js +3 -3
  86. package/chunk/LogoComponent-EBhWWnBF.js +3 -3
  87. package/chunk/{LowIncomeOrganizationComponent-JbEkRbLK.js → LowIncomeOrganizationComponent-Bf9uJO03.js} +10 -10
  88. package/chunk/{LowIncomeOrganizationComponent-BW3TNx8b.js.map → LowIncomeOrganizationComponent-Bf9uJO03.js.map} +1 -1
  89. package/chunk/{LowIncomeOrganizationComponent-BW3TNx8b.js → LowIncomeOrganizationComponent-DQDOW457.js} +10 -10
  90. package/chunk/{LowIncomeOrganizationComponent-JbEkRbLK.js.map → LowIncomeOrganizationComponent-DQDOW457.js.map} +1 -1
  91. package/chunk/{MedicalProfessionalOrganizationComponent-Cp4yUfxf.js → MedicalProfessionalOrganizationComponent-BtjREt66.js} +6 -6
  92. package/chunk/{MedicalProfessionalOrganizationComponent-B3QspdhP.js.map → MedicalProfessionalOrganizationComponent-BtjREt66.js.map} +1 -1
  93. package/chunk/{MedicalProfessionalOrganizationComponent-B3QspdhP.js → MedicalProfessionalOrganizationComponent-Ih5gnrTa.js} +6 -6
  94. package/chunk/{MedicalProfessionalOrganizationComponent-Cp4yUfxf.js.map → MedicalProfessionalOrganizationComponent-Ih5gnrTa.js.map} +1 -1
  95. package/chunk/{MemberIdComponent-UMnfxBez.js → MemberIdComponent-CP1U4fQZ.js} +5 -5
  96. package/chunk/{MemberIdComponent-UMnfxBez.js.map → MemberIdComponent-CP1U4fQZ.js.map} +1 -1
  97. package/chunk/{MemberIdComponent-cwxA9cHM.js → MemberIdComponent-co7giQpp.js} +5 -5
  98. package/chunk/{MemberIdComponent-cwxA9cHM.js.map → MemberIdComponent-co7giQpp.js.map} +1 -1
  99. package/chunk/{MembershipOrganizationComponent-Vhp79C62.js → MembershipOrganizationComponent-BcAUxNlv.js} +6 -6
  100. package/chunk/{MembershipOrganizationComponent-BkWW4Yeo.js.map → MembershipOrganizationComponent-BcAUxNlv.js.map} +1 -1
  101. package/chunk/{MembershipOrganizationComponent-BkWW4Yeo.js → MembershipOrganizationComponent-hx11mlsN.js} +6 -6
  102. package/chunk/{MembershipOrganizationComponent-Vhp79C62.js.map → MembershipOrganizationComponent-hx11mlsN.js.map} +1 -1
  103. package/chunk/{Message-BunzH7fa.js → Message-C30WkE0t.js} +4 -4
  104. package/chunk/{Message-BunzH7fa.js.map → Message-C30WkE0t.js.map} +1 -1
  105. package/chunk/{Message-DJBqbWrp.js → Message-DM6-jB_q.js} +4 -4
  106. package/chunk/{Message-DJBqbWrp.js.map → Message-DM6-jB_q.js.map} +1 -1
  107. package/chunk/Onfido-CTCgAwnB.js +3 -3
  108. package/chunk/{PersonalInfoStepSubmitButton-DZaG_Bd6.js → PersonalInfoStepSubmitButton-CnRP_jr_.js} +5 -5
  109. package/chunk/{PersonalInfoStepSubmitButton-C4NAU26j.js.map → PersonalInfoStepSubmitButton-CnRP_jr_.js.map} +1 -1
  110. package/chunk/{PersonalInfoStepSubmitButton-C4NAU26j.js → PersonalInfoStepSubmitButton-D669Y5b0.js} +5 -5
  111. package/chunk/{PersonalInfoStepSubmitButton-DZaG_Bd6.js.map → PersonalInfoStepSubmitButton-D669Y5b0.js.map} +1 -1
  112. package/chunk/{PersonalInfoStepWrapper-BgmoL6ee.js → PersonalInfoStepWrapper-B4voDcYc.js} +5 -5
  113. package/chunk/{PersonalInfoStepWrapper-BgmoL6ee.js.map → PersonalInfoStepWrapper-B4voDcYc.js.map} +1 -1
  114. package/chunk/{PersonalInfoStepWrapper-Dlmhjo6N.js → PersonalInfoStepWrapper-RA-VYuSP.js} +4 -4
  115. package/chunk/{PersonalInfoStepWrapper-Dlmhjo6N.js.map → PersonalInfoStepWrapper-RA-VYuSP.js.map} +1 -1
  116. package/chunk/{PostalCodeComponent-CPZfUESZ.js → PostalCodeComponent-Bz9XorrK.js} +5 -5
  117. package/chunk/{PostalCodeComponent-CPZfUESZ.js.map → PostalCodeComponent-Bz9XorrK.js.map} +1 -1
  118. package/chunk/{PostalCodeComponent-VDfukHbY.js → PostalCodeComponent-D0zQgPdb.js} +5 -5
  119. package/chunk/{PostalCodeComponent-VDfukHbY.js.map → PostalCodeComponent-D0zQgPdb.js.map} +1 -1
  120. package/chunk/{SSN-B67W8oLs.js → SSN-BCSHGqh1.js} +5 -5
  121. package/chunk/{SSN-BVh7Dhuk.js.map → SSN-BCSHGqh1.js.map} +1 -1
  122. package/chunk/{SSN-BVh7Dhuk.js → SSN-UnLRzHIB.js} +5 -5
  123. package/chunk/{SSN-B67W8oLs.js.map → SSN-UnLRzHIB.js.map} +1 -1
  124. package/chunk/StateSelectComponent-CfLMFuMY.js +42 -0
  125. package/chunk/StateSelectComponent-CfLMFuMY.js.map +1 -0
  126. package/chunk/StateSelectComponent-vUxvraub.js +38 -0
  127. package/chunk/StateSelectComponent-vUxvraub.js.map +1 -0
  128. package/chunk/{StatusComponent-DU8VVzqB.js → StatusComponent-Cu8apStr.js} +6 -6
  129. package/chunk/{StatusComponent-CqF9cCjU.js.map → StatusComponent-Cu8apStr.js.map} +1 -1
  130. package/chunk/{StatusComponent-CqF9cCjU.js → StatusComponent-DcFCflN0.js} +6 -6
  131. package/chunk/{StatusComponent-DU8VVzqB.js.map → StatusComponent-DcFCflN0.js.map} +1 -1
  132. package/chunk/StepAgePersonalInfo-Bj2-KSvI.js +172 -0
  133. package/chunk/StepAgePersonalInfo-Bj2-KSvI.js.map +1 -0
  134. package/chunk/StepAgePersonalInfo-C1_UPCHc.js +176 -0
  135. package/chunk/StepAgePersonalInfo-C1_UPCHc.js.map +1 -0
  136. package/chunk/StepCard-D3V6UR1D.js +3 -3
  137. package/chunk/StepCard-DXc8h6Xb.js +3 -3
  138. package/chunk/{StepCollectIdentifier-DjHVmRka.js → StepCollectIdentifier-BYduI8p0.js} +6 -6
  139. package/chunk/{StepCollectIdentifier-DjHVmRka.js.map → StepCollectIdentifier-BYduI8p0.js.map} +1 -1
  140. package/chunk/{StepCollectIdentifier-pFxNA5-S.js → StepCollectIdentifier-CqevHH75.js} +6 -6
  141. package/chunk/{StepCollectIdentifier-pFxNA5-S.js.map → StepCollectIdentifier-CqevHH75.js.map} +1 -1
  142. package/chunk/StepCollectMilitaryPersonalInfoComponent-BjOTsjhj.js +246 -0
  143. package/chunk/StepCollectMilitaryPersonalInfoComponent-BjOTsjhj.js.map +1 -0
  144. package/chunk/StepCollectMilitaryPersonalInfoComponent-C4JrKQ3b.js +250 -0
  145. package/chunk/StepCollectMilitaryPersonalInfoComponent-C4JrKQ3b.js.map +1 -0
  146. package/chunk/StepCollectPersonalInfo-CXuPQQwI.js +369 -0
  147. package/chunk/StepCollectPersonalInfo-CXuPQQwI.js.map +1 -0
  148. package/chunk/StepCollectPersonalInfo-CZ1_hvGI.js +373 -0
  149. package/chunk/StepCollectPersonalInfo-CZ1_hvGI.js.map +1 -0
  150. package/chunk/{StepCompleteAuthentication-Bi-I4iQd.js → StepCompleteAuthentication-BvZXyDJw.js} +7 -7
  151. package/chunk/{StepCompleteAuthentication-Bi-I4iQd.js.map → StepCompleteAuthentication-BvZXyDJw.js.map} +1 -1
  152. package/chunk/{StepCompleteAuthentication-nlgzsvQo.js → StepCompleteAuthentication-Cy9s_oKE.js} +7 -7
  153. package/chunk/{StepCompleteAuthentication-nlgzsvQo.js.map → StepCompleteAuthentication-Cy9s_oKE.js.map} +1 -1
  154. package/chunk/{StepConsolation-C8l0AsAN.js → StepConsolation-Cxs40RDn.js} +4 -4
  155. package/chunk/{StepConsolation-C8l0AsAN.js.map → StepConsolation-Cxs40RDn.js.map} +1 -1
  156. package/chunk/{StepConsolation-Ctfums38.js → StepConsolation-Rv3zqQnC.js} +4 -4
  157. package/chunk/{StepConsolation-Ctfums38.js.map → StepConsolation-Rv3zqQnC.js.map} +1 -1
  158. package/chunk/{StepDocUpload-B6U1kt-J.js → StepDocUpload-3P_Yp41g.js} +5 -5
  159. package/chunk/{StepDocUpload-B6U1kt-J.js.map → StepDocUpload-3P_Yp41g.js.map} +1 -1
  160. package/chunk/{StepDocUpload-u87pI7B5.js → StepDocUpload-4dAxCWwL.js} +5 -5
  161. package/chunk/{StepDocUpload-u87pI7B5.js.map → StepDocUpload-4dAxCWwL.js.map} +1 -1
  162. package/chunk/StepDriverLicensePersonalInfoComponent-Bgoq1VW8.js +146 -0
  163. package/chunk/StepDriverLicensePersonalInfoComponent-Bgoq1VW8.js.map +1 -0
  164. package/chunk/StepDriverLicensePersonalInfoComponent-jEAszJTY.js +142 -0
  165. package/chunk/StepDriverLicensePersonalInfoComponent-jEAszJTY.js.map +1 -0
  166. package/chunk/{StepEmailLoop-LNvZO2lA.js → StepEmailLoop-D613_PWF.js} +8 -8
  167. package/chunk/{StepEmailLoop-LNvZO2lA.js.map → StepEmailLoop-D613_PWF.js.map} +1 -1
  168. package/chunk/{StepEmailLoop-Bep5IjIv.js → StepEmailLoop-DUZJwSDH.js} +8 -8
  169. package/chunk/{StepEmailLoop-Bep5IjIv.js.map → StepEmailLoop-DUZJwSDH.js.map} +1 -1
  170. package/chunk/{StepEmploymentPersonalInfo-C1dWVX-m.js → StepEmploymentPersonalInfo-C6k4NURL.js} +57 -56
  171. package/chunk/StepEmploymentPersonalInfo-C6k4NURL.js.map +1 -0
  172. package/chunk/{StepEmploymentPersonalInfo-D9mQOTuf.js → StepEmploymentPersonalInfo-Db5vcS8_.js} +57 -56
  173. package/chunk/StepEmploymentPersonalInfo-Db5vcS8_.js.map +1 -0
  174. package/chunk/{StepFirstResponderPersonalInfo-DlUpQoEU.js → StepFirstResponderPersonalInfo-B5zaQzeH.js} +27 -27
  175. package/chunk/{StepFirstResponderPersonalInfo-CT1gRYaq.js.map → StepFirstResponderPersonalInfo-B5zaQzeH.js.map} +1 -1
  176. package/chunk/{StepFirstResponderPersonalInfo-CT1gRYaq.js → StepFirstResponderPersonalInfo-CjnpMgey.js} +27 -27
  177. package/chunk/{StepFirstResponderPersonalInfo-DlUpQoEU.js.map → StepFirstResponderPersonalInfo-CjnpMgey.js.map} +1 -1
  178. package/chunk/{StepHybridIdentityPersonalInfoComponent-1-z8c41b.js → StepGeneralIdentityPersonalInfoComponent-BJxTz8iA.js} +38 -46
  179. package/chunk/StepGeneralIdentityPersonalInfoComponent-BJxTz8iA.js.map +1 -0
  180. package/chunk/{StepHybridIdentityPersonalInfoComponent-BwxDwJVl.js → StepGeneralIdentityPersonalInfoComponent-DE4I8lSx.js} +38 -46
  181. package/chunk/StepGeneralIdentityPersonalInfoComponent-DE4I8lSx.js.map +1 -0
  182. package/chunk/StepHybridIdentityPersonalInfoComponent-BxqRUvc6.js +184 -0
  183. package/chunk/StepHybridIdentityPersonalInfoComponent-BxqRUvc6.js.map +1 -0
  184. package/chunk/StepHybridIdentityPersonalInfoComponent-C8mwn4jE.js +188 -0
  185. package/chunk/StepHybridIdentityPersonalInfoComponent-C8mwn4jE.js.map +1 -0
  186. package/chunk/{StepIDCheckLoop-C_8ZbGg3.js → StepIDCheckLoop-BUUaQ4B-.js} +4 -4
  187. package/chunk/{StepIDCheckLoop-C_8ZbGg3.js.map → StepIDCheckLoop-BUUaQ4B-.js.map} +1 -1
  188. package/chunk/{StepIDCheckLoop-B4XZRie5.js → StepIDCheckLoop-CvWUeqvI.js} +4 -4
  189. package/chunk/{StepIDCheckLoop-B4XZRie5.js.map → StepIDCheckLoop-CvWUeqvI.js.map} +1 -1
  190. package/chunk/{StepIDCheckLoopOnfido-xcgqvCT4.js → StepIDCheckLoopOnfido-BLJGZTc6.js} +6 -6
  191. package/chunk/{StepIDCheckLoopOnfido-xcgqvCT4.js.map → StepIDCheckLoopOnfido-BLJGZTc6.js.map} +1 -1
  192. package/chunk/{StepIDCheckLoopOnfido-DHJ1eACS.js → StepIDCheckLoopOnfido-DGtINSWS.js} +6 -6
  193. package/chunk/{StepIDCheckLoopOnfido-DHJ1eACS.js.map → StepIDCheckLoopOnfido-DGtINSWS.js.map} +1 -1
  194. package/chunk/{StepIDCheckLoopRegula-BKzknlsH.js → StepIDCheckLoopRegula-BMRxvvTy.js} +5 -5
  195. package/chunk/{StepIDCheckLoopRegula-BKzknlsH.js.map → StepIDCheckLoopRegula-BMRxvvTy.js.map} +1 -1
  196. package/chunk/{StepIDCheckLoopRegula-DHBybeFp.js → StepIDCheckLoopRegula-BfM_ScIR.js} +5 -5
  197. package/chunk/{StepIDCheckLoopRegula-DHBybeFp.js.map → StepIDCheckLoopRegula-BfM_ScIR.js.map} +1 -1
  198. package/chunk/{StepLicensedProfessionalPersonalInfo-DxzL7PKs.js → StepLicensedProfessionalPersonalInfo-DpKOkRCg.js} +27 -27
  199. package/chunk/{StepLicensedProfessionalPersonalInfo-BNua2Voe.js.map → StepLicensedProfessionalPersonalInfo-DpKOkRCg.js.map} +1 -1
  200. package/chunk/{StepLicensedProfessionalPersonalInfo-BNua2Voe.js → StepLicensedProfessionalPersonalInfo-uQNA1DSw.js} +27 -27
  201. package/chunk/{StepLicensedProfessionalPersonalInfo-DxzL7PKs.js.map → StepLicensedProfessionalPersonalInfo-uQNA1DSw.js.map} +1 -1
  202. package/chunk/{StepLowIncomePersonalInfo-ChHOr4Dn.js → StepLowIncomePersonalInfo-Bw8-frSJ.js} +52 -51
  203. package/chunk/StepLowIncomePersonalInfo-Bw8-frSJ.js.map +1 -0
  204. package/chunk/{StepLowIncomePersonalInfo-zPhDWXQu.js → StepLowIncomePersonalInfo-CkIBXZbr.js} +53 -52
  205. package/chunk/StepLowIncomePersonalInfo-CkIBXZbr.js.map +1 -0
  206. package/chunk/{StepMedicalProfessionalPersonalInfo-DFjztEA9.js → StepMedicalProfessionalPersonalInfo-70WqnKsy.js} +43 -43
  207. package/chunk/{StepMedicalProfessionalPersonalInfo-CenlDA7k.js.map → StepMedicalProfessionalPersonalInfo-70WqnKsy.js.map} +1 -1
  208. package/chunk/{StepMedicalProfessionalPersonalInfo-CenlDA7k.js → StepMedicalProfessionalPersonalInfo-CPLH1B6q.js} +43 -43
  209. package/chunk/{StepMedicalProfessionalPersonalInfo-DFjztEA9.js.map → StepMedicalProfessionalPersonalInfo-CPLH1B6q.js.map} +1 -1
  210. package/chunk/{StepMemberPersonalInfo-x4tfVQwF.js → StepMemberPersonalInfo-CZTRpRpr.js} +14 -14
  211. package/chunk/{StepMemberPersonalInfo-CIrTZrzs.js.map → StepMemberPersonalInfo-CZTRpRpr.js.map} +1 -1
  212. package/chunk/{StepMemberPersonalInfo-CIrTZrzs.js → StepMemberPersonalInfo-YUgQvZKt.js} +14 -14
  213. package/chunk/{StepMemberPersonalInfo-x4tfVQwF.js.map → StepMemberPersonalInfo-YUgQvZKt.js.map} +1 -1
  214. package/chunk/{StepMoverPersonalInfo-D9AupBvx.js → StepMoverPersonalInfo-Bp9ymM2W.js} +12 -12
  215. package/chunk/{StepMoverPersonalInfo-CJOQKMaw.js.map → StepMoverPersonalInfo-Bp9ymM2W.js.map} +1 -1
  216. package/chunk/{StepMoverPersonalInfo-CJOQKMaw.js → StepMoverPersonalInfo-D7Xs7bNx.js} +12 -12
  217. package/chunk/{StepMoverPersonalInfo-D9AupBvx.js.map → StepMoverPersonalInfo-D7Xs7bNx.js.map} +1 -1
  218. package/chunk/{StepOverrideComponent-Bj7PAZ4Z.js → StepOverrideComponent-DVX0qQ9w.js} +5 -5
  219. package/chunk/{StepOverrideComponent-Bj7PAZ4Z.js.map → StepOverrideComponent-DVX0qQ9w.js.map} +1 -1
  220. package/chunk/{StepOverrideComponent-QsyKT4aZ.js → StepOverrideComponent-DsX0zPtk.js} +5 -5
  221. package/chunk/{StepOverrideComponent-QsyKT4aZ.js.map → StepOverrideComponent-DsX0zPtk.js.map} +1 -1
  222. package/chunk/{StepSMSLoop-CzViaU2K.js → StepSMSLoop-Cr-Bvu3v.js} +4 -4
  223. package/chunk/{StepSMSLoop-Bmt8tVWk.js.map → StepSMSLoop-Cr-Bvu3v.js.map} +1 -1
  224. package/chunk/{StepSMSLoop-Bmt8tVWk.js → StepSMSLoop-D7lamXMa.js} +4 -4
  225. package/chunk/{StepSMSLoop-CzViaU2K.js.map → StepSMSLoop-D7lamXMa.js.map} +1 -1
  226. package/chunk/StepSSO-BGHCbduX.js +3 -3
  227. package/chunk/StepSSO-ZHByQpHa.js +3 -3
  228. package/chunk/{StepSocialSecurityNumber-B-lac1dq.js → StepSocialSecurityNumber-1Ced_reS.js} +9 -9
  229. package/chunk/{StepSocialSecurityNumber-B-lac1dq.js.map → StepSocialSecurityNumber-1Ced_reS.js.map} +1 -1
  230. package/chunk/{StepSocialSecurityNumber-CxjWst3F.js → StepSocialSecurityNumber-kUMCKDNb.js} +9 -9
  231. package/chunk/{StepSocialSecurityNumber-CxjWst3F.js.map → StepSocialSecurityNumber-kUMCKDNb.js.map} +1 -1
  232. package/chunk/{StepStudentPersonalInfo-C19uuc35.js → StepStudentPersonalInfo-BGJbJ8A9.js} +15 -15
  233. package/chunk/{StepStudentPersonalInfo-BbNYLYQM.js.map → StepStudentPersonalInfo-BGJbJ8A9.js.map} +1 -1
  234. package/chunk/{StepStudentPersonalInfo-BbNYLYQM.js → StepStudentPersonalInfo-BxMxtPtH.js} +15 -15
  235. package/chunk/{StepStudentPersonalInfo-C19uuc35.js.map → StepStudentPersonalInfo-BxMxtPtH.js.map} +1 -1
  236. package/chunk/{StepSuccess-B8GUwLl1.js → StepSuccess-BuT40O3z.js} +5 -5
  237. package/chunk/{StepSuccess-BTjwSlUq.js.map → StepSuccess-BuT40O3z.js.map} +1 -1
  238. package/chunk/{StepSuccess-BTjwSlUq.js → StepSuccess-cqfgO6G4.js} +5 -5
  239. package/chunk/{StepSuccess-B8GUwLl1.js.map → StepSuccess-cqfgO6G4.js.map} +1 -1
  240. package/chunk/{StepTeacherPersonalInfo-C2OKI-SB.js → StepTeacherPersonalInfo-Bllm0fGF.js} +15 -15
  241. package/chunk/{StepTeacherPersonalInfo-C2OKI-SB.js.map → StepTeacherPersonalInfo-Bllm0fGF.js.map} +1 -1
  242. package/chunk/{StepTeacherPersonalInfo-DrB0FfDl.js → StepTeacherPersonalInfo-CdXr95D9.js} +15 -15
  243. package/chunk/{StepTeacherPersonalInfo-DrB0FfDl.js.map → StepTeacherPersonalInfo-CdXr95D9.js.map} +1 -1
  244. package/chunk/StepThirdPartyLoop-BrKuZcYb.js +3 -3
  245. package/chunk/StepThirdPartyLoop-CbFTIlwP.js +3 -3
  246. package/chunk/{TeacherSchoolComponent-BGCYNyOF.js → TeacherSchoolComponent-CJTlNt06.js} +6 -6
  247. package/chunk/{TeacherSchoolComponent-BGCYNyOF.js.map → TeacherSchoolComponent-CJTlNt06.js.map} +1 -1
  248. package/chunk/{TeacherSchoolComponent-C6_Q1Hyc.js → TeacherSchoolComponent-Dm2VsOJT.js} +6 -6
  249. package/chunk/{TeacherSchoolComponent-C6_Q1Hyc.js.map → TeacherSchoolComponent-Dm2VsOJT.js.map} +1 -1
  250. package/chunk/TestingRouteOverrides-BJ6TzzV2.js +3 -3
  251. package/chunk/TestingRouteOverrides-g0sNWumM.js +3 -3
  252. package/chunk/ThreatMetrix-D_TbL50B.js +3 -3
  253. package/chunk/ar-D5CO913q.js +3 -3
  254. package/chunk/bg-1mhA5kYF.js +3 -3
  255. package/chunk/bn-IN-CpDqyRb_.js +3 -3
  256. package/chunk/clsx-CB5rauS5.js +3 -3
  257. package/chunk/countryUtils-2xROZ0HR.js +3 -3
  258. package/chunk/countryUtils-BrbLtF3F.js +3 -3
  259. package/chunk/cs-Chh7FAGt.js +3 -3
  260. package/chunk/da-DwrVoxto.js +3 -3
  261. package/chunk/de-IWGZLhgY.js +3 -3
  262. package/chunk/{downshift.esm-CUJv4odi.js → downshift.esm-4NaZxdxy.js} +4 -4
  263. package/chunk/{downshift.esm-DvaoY6u7.js.map → downshift.esm-4NaZxdxy.js.map} +1 -1
  264. package/chunk/{downshift.esm-DvaoY6u7.js → downshift.esm-CBV1y_ks.js} +4 -4
  265. package/chunk/{downshift.esm-CUJv4odi.js.map → downshift.esm-CBV1y_ks.js.map} +1 -1
  266. package/chunk/el-DbDcvSPJ.js +3 -3
  267. package/chunk/empties-CrGLsC5v.js +3 -3
  268. package/chunk/empties-DVYWFiU4.js +3 -3
  269. package/chunk/en-GB-BBkjjtqq.js +3 -3
  270. package/chunk/es-ES-DWimqEZ_.js +3 -3
  271. package/chunk/es-qhC-seq5.js +3 -3
  272. package/chunk/et-yF9G-Mym.js +3 -3
  273. package/chunk/eventEmitter-CSG6jR7V.js +3 -3
  274. package/chunk/fa-BcdSf7og.js +3 -3
  275. package/chunk/fi-D-IP_KHm.js +3 -3
  276. package/chunk/fr-BmUuYxk0.js +3 -3
  277. package/chunk/fr-CA-DVQ4xmzZ.js +3 -3
  278. package/chunk/ga-DuZycND3.js +3 -3
  279. package/chunk/hi-IN-l6Rn5Ewm.js +3 -3
  280. package/chunk/hooks-Bl6VU6hP.js +3 -3
  281. package/chunk/hooks-j2dPIOl1.js +3 -3
  282. package/chunk/hr-BtqyDzDB.js +3 -3
  283. package/chunk/hu-C6syKJfb.js +3 -3
  284. package/chunk/id-GgI-Z2a5.js +3 -3
  285. package/chunk/intl-D0f52P7V.js +3 -3
  286. package/chunk/is-CvmKEON9.js +3 -3
  287. package/chunk/it-CnmveGgC.js +3 -3
  288. package/chunk/iw-DFUYHkxF.js +3 -3
  289. package/chunk/ja-CjVb2tWW.js +3 -3
  290. package/chunk/jsx-runtime-ClghfwTa.js +3 -3
  291. package/chunk/jsx-runtime-FfARtXk2.js +3 -3
  292. package/chunk/kk-Dvz4nK6K.js +3 -3
  293. package/chunk/ko-DzOqBMGC.js +3 -3
  294. package/chunk/lo-C2WPq55d.js +3 -3
  295. package/chunk/lt-BSDYvjTF.js +3 -3
  296. package/chunk/lv-CefDPT-M.js +3 -3
  297. package/chunk/mockProgramTheme-CBqgtg7A.js +3 -3
  298. package/chunk/mocks-Baq-FHji.js +3 -3
  299. package/chunk/mocks-DLTwXwzM.js +3 -3
  300. package/chunk/ms-BjestZxy.js +3 -3
  301. package/chunk/nl-B1FyUfCT.js +3 -3
  302. package/chunk/nl-BE-CbeAd3nq.js +3 -3
  303. package/chunk/no-Dr633Ddi.js +3 -3
  304. package/chunk/options-CvRaXPRs.js +3 -3
  305. package/chunk/pl-UYTjMIq_.js +3 -3
  306. package/chunk/programThemeGetters-Bhp4oSEn.js +3 -3
  307. package/chunk/programThemeGetters-CQmR9Vit.js +3 -3
  308. package/chunk/pt-BR-C8SYMT-J.js +3 -3
  309. package/chunk/pt-uH-M3GdN.js +3 -3
  310. package/chunk/refs-Mq0rtW9K.js +3 -3
  311. package/chunk/ro-CAOSXZ7h.js +3 -3
  312. package/chunk/ru-iwYoEydL.js +3 -3
  313. package/chunk/runtimeTypes-B2AGNJMT.js +3 -3
  314. package/chunk/sk-DYYNV3zw.js +3 -3
  315. package/chunk/sl-D_-eeM5N.js +3 -3
  316. package/chunk/sr-BTi9_anL.js +3 -3
  317. package/chunk/{stepComponentHelpers-CmZT1Man.js → stepComponentHelpers-CHUPcQfA.js} +9 -12
  318. package/chunk/stepComponentHelpers-CHUPcQfA.js.map +1 -0
  319. package/chunk/{stepComponentHelpers-BweXuNBz.js → stepComponentHelpers-aRQ5l0V5.js} +9 -12
  320. package/chunk/stepComponentHelpers-aRQ5l0V5.js.map +1 -0
  321. package/chunk/strings-DWLVdUcm.js +3 -3
  322. package/chunk/sv-DRwY4shG.js +3 -3
  323. package/chunk/sw-Bvj2mYmM.js +3 -3
  324. package/chunk/ta-CmtaYoNe.js +3 -3
  325. package/chunk/th-12r2yKkJ.js +3 -3
  326. package/chunk/tl-BGNfO7md.js +3 -3
  327. package/chunk/tr-DH2ZSJhs.js +3 -3
  328. package/chunk/uk-CELBZlTd.js +3 -3
  329. package/chunk/ur-MR8DTbmd.js +3 -3
  330. package/chunk/{useCollectFieldsEndpoint-D15FcoFB.js → useCollectFieldsEndpoint-DCvQvahC.js} +5 -5
  331. package/chunk/{useCollectFieldsEndpoint-DV9zk9Je.js.map → useCollectFieldsEndpoint-DCvQvahC.js.map} +1 -1
  332. package/chunk/{useCollectFieldsEndpoint-DV9zk9Je.js → useCollectFieldsEndpoint-iJZftsof.js} +5 -5
  333. package/chunk/{useCollectFieldsEndpoint-D15FcoFB.js.map → useCollectFieldsEndpoint-iJZftsof.js.map} +1 -1
  334. package/chunk/useMetrics-BEoV8Edp.js +3 -3
  335. package/chunk/useMetrics-CRK2aOGa.js +3 -3
  336. package/chunk/vi-DtZ-SqD5.js +3 -3
  337. package/chunk/zh-DjyVyYac.js +3 -3
  338. package/chunk/zh-HK-CN1HarHq.js +3 -3
  339. package/chunk/zu-DPhgIh1z.js +3 -3
  340. package/package.json +1 -1
  341. package/sheerid-install.css +3 -3
  342. package/sheerid-install.js +3 -3
  343. package/sheerid.css +3 -3
  344. package/sheerid.js +36 -36
  345. package/chunk/StateSelectComponent-BG1HTtFx.js +0 -42
  346. package/chunk/StateSelectComponent-BG1HTtFx.js.map +0 -1
  347. package/chunk/StateSelectComponent-DSZEVrkF.js +0 -46
  348. package/chunk/StateSelectComponent-DSZEVrkF.js.map +0 -1
  349. package/chunk/StepAgePersonalInfo-CDNNfePx.js +0 -171
  350. package/chunk/StepAgePersonalInfo-CDNNfePx.js.map +0 -1
  351. package/chunk/StepAgePersonalInfo-X8ebAelC.js +0 -175
  352. package/chunk/StepAgePersonalInfo-X8ebAelC.js.map +0 -1
  353. package/chunk/StepCollectMilitaryPersonalInfoComponent-CQxkr8wE.js +0 -245
  354. package/chunk/StepCollectMilitaryPersonalInfoComponent-CQxkr8wE.js.map +0 -1
  355. package/chunk/StepCollectMilitaryPersonalInfoComponent-DhTY2O6C.js +0 -249
  356. package/chunk/StepCollectMilitaryPersonalInfoComponent-DhTY2O6C.js.map +0 -1
  357. package/chunk/StepCollectPersonalInfo-B_X0PZhC.js +0 -372
  358. package/chunk/StepCollectPersonalInfo-B_X0PZhC.js.map +0 -1
  359. package/chunk/StepCollectPersonalInfo-LiUa8Sv9.js +0 -368
  360. package/chunk/StepCollectPersonalInfo-LiUa8Sv9.js.map +0 -1
  361. package/chunk/StepDriverLicensePersonalInfoComponent-CZi9FjFw.js +0 -145
  362. package/chunk/StepDriverLicensePersonalInfoComponent-CZi9FjFw.js.map +0 -1
  363. package/chunk/StepDriverLicensePersonalInfoComponent-DhwEyS4H.js +0 -141
  364. package/chunk/StepDriverLicensePersonalInfoComponent-DhwEyS4H.js.map +0 -1
  365. package/chunk/StepEmploymentPersonalInfo-C1dWVX-m.js.map +0 -1
  366. package/chunk/StepEmploymentPersonalInfo-D9mQOTuf.js.map +0 -1
  367. package/chunk/StepGeneralIdentityPersonalInfoComponent-ARiVwAek.js +0 -174
  368. package/chunk/StepGeneralIdentityPersonalInfoComponent-ARiVwAek.js.map +0 -1
  369. package/chunk/StepGeneralIdentityPersonalInfoComponent-Z5qswwCp.js +0 -178
  370. package/chunk/StepGeneralIdentityPersonalInfoComponent-Z5qswwCp.js.map +0 -1
  371. package/chunk/StepHybridIdentityPersonalInfoComponent-1-z8c41b.js.map +0 -1
  372. package/chunk/StepHybridIdentityPersonalInfoComponent-BwxDwJVl.js.map +0 -1
  373. package/chunk/StepLowIncomePersonalInfo-ChHOr4Dn.js.map +0 -1
  374. package/chunk/StepLowIncomePersonalInfo-zPhDWXQu.js.map +0 -1
  375. package/chunk/stepComponentHelpers-BweXuNBz.js.map +0 -1
  376. package/chunk/stepComponentHelpers-CmZT1Man.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"FormFooterComponent-DYBSB7Oh.js","names":["_objectSpread"],"sources":["../../src/lib/frames/postMessageFromIframe.ts","../../src/lib/hooks/index.ts","../../src/lib/utils/browser/windowHelpers.ts","../../../node_modules/fingerprintjs2/fingerprint2.js","../../../node_modules/@fingerprintjs/fingerprintjs-pro/dist/fp.esm.min.js","../../src/lib/fingerprint/fingerprintUtils.ts","../../src/lib/metadata/metadata.ts","../../src/lib/ServerApi/VerificationRequestGetters.ts","../../src/lib/VerificationService/VerificationServiceHelpers.ts","../../src/lib/VerificationService/VerificationServiceActions.ts","../../src/components/FormFooter/FooterTextComponent.tsx","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../node_modules/redux/es/redux.js","../../src/lib/VerificationService/verificationServiceReducer.ts","../../src/lib/VerificationService/VerificationServiceStoreMiddleware.ts","../../src/lib/VerificationService/VerificationServiceStore.ts","../../src/lib/VerificationService/ViewModel.ts","../../src/components/FormFooter/FormFooterComponent.tsx"],"sourcesContent":["import { type PostMessageAction, type PostMessagesOptions } from \"../types/types\";\n\n/**\n * All post messages from inside our iframes and modals should use this function\n * to post messages to the parent window. It strongly types the data and makes\n * sure we're only listening to events that have the iframeUid\n */\n\nexport function postMessageFromIframe(action: PostMessageAction): void {\n if (window.self === window.top) {\n return;\n }\n\n const origin = \"*\";\n const verificationUrl = new URL(window.location.href);\n const verificationIframeUid = verificationUrl.searchParams.get(\"verificationIframeUid\");\n\n window.parent.postMessage(\n {\n verificationIframeUid,\n action,\n },\n origin,\n );\n}\n\n// Called from the inner iFrame window to let the parent window know about size updates\nexport function postVerificationSizeUpdates(\n options: PostMessagesOptions = { origin: \"*\", interval: 100 },\n) {\n if (window.self !== window.top) {\n let bodyHeight = document.body.offsetHeight;\n const interval = window.setInterval(() => {\n if (bodyHeight !== document.body.offsetHeight) {\n bodyHeight = document.body.offsetHeight;\n\n const heightWithComputedMargins =\n bodyHeight +\n parseInt(window.getComputedStyle(document.body).marginTop, 10) +\n parseInt(window.getComputedStyle(document.body).marginBottom, 10);\n\n postMessageFromIframe({ type: \"updateHeight\", height: heightWithComputedMargins });\n }\n }, options.interval);\n\n return () => clearInterval(interval);\n }\n\n return () => {};\n}\n","import { logger } from \"@jslib/shared/utils/logger\";\nimport { getSafe } from \"@jslib/shared/utils/getSafe\";\n\nimport { type Hook, type HookEvents, type RegisteredHooks } from \"../types/types\";\nimport { assertValidHook, assertValidHookName } from \"../types/assertions\";\nimport { postMessageFromIframe } from \"../frames/postMessageFromIframe\";\n\nimport { EventEmitter, type EventArg } from \"./eventEmitter\";\n\nclass Hooks extends EventEmitter<HookEvents> {\n emit<K extends keyof HookEvents>(name: K, data: EventArg<HookEvents, K>) {\n // also emit to the iframe\n postMessageFromIframe({\n type: \"hook\",\n hook: { name, data },\n });\n super.emit(name, data);\n }\n}\n\n/**\n * This `hooks` object is the primary interaction point for listeners to events\n * inside the jslib. It's `on`, `once` and `off` methods allow interaction with\n * all `HookEvents`\n */\nexport const hooks = new Hooks();\n\n/**\n * A helper function to give the deprecated addHooks function backwards\n * compatibility. It reaches into the internals of the Maps and Sets that make\n * the hooks emitter work. It sucks, and should go away when `addHook` does.\n *\n * @private\n */\nfunction _getLegacyRegistry(): RegisteredHooks {\n const registry: RegisteredHooks = {};\n\n // eslint-disable-next-line no-restricted-syntax, dot-notation\n for (const [key, callbacks] of hooks[\"events\"]) {\n // eslint-disable-next-line dot-notation\n registry[key] = [...callbacks[\"subscribers\"].values()].map((callback) => ({\n name: key,\n callback,\n }));\n }\n\n return registry;\n}\n\n/**\n * @description Register a callback function (a \"hook\") that will be called for a given hook name.\n * Hook names are called at specific points during execution and allow some form of extensibility.\n * @param hookName A specific string, one of the HookName type.\n * @param callback The function to call when the system performs certain actions, described by the hook's name.\n * @deprecated use `hooks.on()` instead\n */\nexport const addHook = (hook: Hook): RegisteredHooks => {\n assertValidHook(hook);\n\n hooks.on(hook.name, hook.callback);\n return _getLegacyRegistry();\n};\n\n/**\n * @description Retrieve a hook object that has been stored.\n * @param hookName\n * @deprecated\n */\nexport const getHook = <K extends keyof HookEvents>(hookName: K): Function => {\n assertValidHookName(hookName);\n return (data: HookEvents[K]) => {\n hooks.emit(hookName, data);\n };\n};\n\n/**\n * @description Look for an array of Hook objects that a developer may have provided in the window.sheerId object.\n * If present, add each to the internal registry of hooks.\n *\n * @private\n * @returns true if any hooks were successfully registered.\n */\nexport const addPredefinedHooks = (): boolean => {\n let successCount = 0;\n getSafe(() => window.sheerId.hooks, []).forEach((hook: Hook) => {\n try {\n addHook(hook);\n successCount += 1;\n } catch (e) {\n logger.warn(\"Error adding hook:\", hook, e);\n }\n });\n return successCount > 0;\n};\n","import { logger } from \"@jslib/shared/utils/logger\";\n\n/**\n * @private\n */\nexport const scrollToWindowTop = () => {\n window.scrollTo(0, 0);\n logger.info(\"Scrolling window to coordinates: 0, 0\");\n};\n","/*\n* Fingerprintjs2 2.1.4 - Modern & flexible browser fingerprint library v2\n* https://github.com/fingerprintjs/fingerprintjs\n* Copyright (c) 2020 Valentin Vasilyev (valentin@fingerprintjs.com)\n* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n* ARE DISCLAIMED. IN NO EVENT SHALL VALENTIN VASILYEV BE LIABLE FOR ANY\n* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*\n* This software contains code from open-source projects:\n* MurmurHash3 by Karan Lyons (https://github.com/karanlyons/murmurHash3.js)\n*/\n\n/* global define */\n(function (name, context, definition) {\n 'use strict'\n if (typeof window !== 'undefined' && typeof define === 'function' && define.amd) { define(definition) } else if (typeof module !== 'undefined' && module.exports) { module.exports = definition() } else if (context.exports) { context.exports = definition() } else { context[name] = definition() }\n})('Fingerprint2', this, function () {\n 'use strict'\n\n // detect if object is array\n // only implement if no native implementation is available\n if (typeof Array.isArray === 'undefined') {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]'\n }\n };\n\n /// MurmurHash3 related functions\n\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // added together as a 64bit int (as an array of two 32bit ints).\n //\n var x64Add = function (m, n) {\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]\n var o = [0, 0, 0, 0]\n o[3] += m[3] + n[3]\n o[2] += o[3] >>> 16\n o[3] &= 0xffff\n o[2] += m[2] + n[2]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[1] += m[1] + n[1]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[0] += m[0] + n[0]\n o[0] &= 0xffff\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]]\n }\n\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // multiplied together as a 64bit int (as an array of two 32bit ints).\n //\n var x64Multiply = function (m, n) {\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]\n var o = [0, 0, 0, 0]\n o[3] += m[3] * n[3]\n o[2] += o[3] >>> 16\n o[3] &= 0xffff\n o[2] += m[2] * n[3]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[2] += m[3] * n[2]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[1] += m[1] * n[3]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[1] += m[2] * n[2]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[1] += m[3] * n[1]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0])\n o[0] &= 0xffff\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]]\n }\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) rotated left by that number of positions.\n //\n var x64Rotl = function (m, n) {\n n %= 64\n if (n === 32) {\n return [m[1], m[0]]\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))]\n } else {\n n -= 32\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))]\n }\n }\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) shifted left by that number of positions.\n //\n var x64LeftShift = function (m, n) {\n n %= 64\n if (n === 0) {\n return m\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n]\n } else {\n return [m[1] << (n - 32), 0]\n }\n }\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // xored together as a 64bit int (as an array of two 32bit ints).\n //\n var x64Xor = function (m, n) {\n return [m[0] ^ n[0], m[1] ^ n[1]]\n }\n //\n // Given a block, returns murmurHash3's final x64 mix of that block.\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n // only place where we need to right shift 64bit ints.)\n //\n var x64Fmix = function (h) {\n h = x64Xor(h, [0, h[0] >>> 1])\n h = x64Multiply(h, [0xff51afd7, 0xed558ccd])\n h = x64Xor(h, [0, h[0] >>> 1])\n h = x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53])\n h = x64Xor(h, [0, h[0] >>> 1])\n return h\n }\n\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n //\n var x64hash128 = function (key, seed) {\n key = key || ''\n seed = seed || 0\n var remainder = key.length % 16\n var bytes = key.length - remainder\n var h1 = [0, seed]\n var h2 = [0, seed]\n var k1 = [0, 0]\n var k2 = [0, 0]\n var c1 = [0x87c37b91, 0x114253d5]\n var c2 = [0x4cf5ad43, 0x2745937f]\n for (var i = 0; i < bytes; i = i + 16) {\n k1 = [((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24), ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24)]\n k2 = [((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24), ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24)]\n k1 = x64Multiply(k1, c1)\n k1 = x64Rotl(k1, 31)\n k1 = x64Multiply(k1, c2)\n h1 = x64Xor(h1, k1)\n h1 = x64Rotl(h1, 27)\n h1 = x64Add(h1, h2)\n h1 = x64Add(x64Multiply(h1, [0, 5]), [0, 0x52dce729])\n k2 = x64Multiply(k2, c2)\n k2 = x64Rotl(k2, 33)\n k2 = x64Multiply(k2, c1)\n h2 = x64Xor(h2, k2)\n h2 = x64Rotl(h2, 31)\n h2 = x64Add(h2, h1)\n h2 = x64Add(x64Multiply(h2, [0, 5]), [0, 0x38495ab5])\n }\n k1 = [0, 0]\n k2 = [0, 0]\n switch (remainder) {\n case 15:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 14)], 48))\n // fallthrough\n case 14:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 13)], 40))\n // fallthrough\n case 13:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 12)], 32))\n // fallthrough\n case 12:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 11)], 24))\n // fallthrough\n case 11:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 10)], 16))\n // fallthrough\n case 10:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 9)], 8))\n // fallthrough\n case 9:\n k2 = x64Xor(k2, [0, key.charCodeAt(i + 8)])\n k2 = x64Multiply(k2, c2)\n k2 = x64Rotl(k2, 33)\n k2 = x64Multiply(k2, c1)\n h2 = x64Xor(h2, k2)\n // fallthrough\n case 8:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 7)], 56))\n // fallthrough\n case 7:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 6)], 48))\n // fallthrough\n case 6:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 5)], 40))\n // fallthrough\n case 5:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 4)], 32))\n // fallthrough\n case 4:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 3)], 24))\n // fallthrough\n case 3:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 2)], 16))\n // fallthrough\n case 2:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 1)], 8))\n // fallthrough\n case 1:\n k1 = x64Xor(k1, [0, key.charCodeAt(i)])\n k1 = x64Multiply(k1, c1)\n k1 = x64Rotl(k1, 31)\n k1 = x64Multiply(k1, c2)\n h1 = x64Xor(h1, k1)\n // fallthrough\n }\n h1 = x64Xor(h1, [0, key.length])\n h2 = x64Xor(h2, [0, key.length])\n h1 = x64Add(h1, h2)\n h2 = x64Add(h2, h1)\n h1 = x64Fmix(h1)\n h2 = x64Fmix(h2)\n h1 = x64Add(h1, h2)\n h2 = x64Add(h2, h1)\n return ('00000000' + (h1[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h1[1] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[1] >>> 0).toString(16)).slice(-8)\n }\n\n var defaultOptions = {\n preprocessor: null,\n audio: {\n timeout: 1000,\n // On iOS 11, audio context can only be used in response to user interaction.\n // We require users to explicitly enable audio fingerprinting on iOS 11.\n // See https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\n excludeIOS11: true\n },\n fonts: {\n swfContainerId: 'fingerprintjs2',\n swfPath: 'flash/compiled/FontList.swf',\n userDefinedFonts: [],\n extendedJsFonts: false\n },\n screen: {\n // To ensure consistent fingerprints when users rotate their mobile devices\n detectScreenOrientation: true\n },\n plugins: {\n sortPluginsFor: [/palemoon/i],\n excludeIE: false\n },\n extraComponents: [],\n excludes: {\n // Unreliable on Windows, see https://github.com/fingerprintjs/fingerprintjs/issues/375\n 'enumerateDevices': true,\n // devicePixelRatio depends on browser zoom, and it's impossible to detect browser zoom\n 'pixelRatio': true,\n // DNT depends on incognito mode for some browsers (Chrome) and it's impossible to detect incognito mode\n 'doNotTrack': true,\n // uses js fonts already\n 'fontsFlash': true,\n // Extensions (including AdBlock) are disabled by default in Incognito mod of Chrome and Firefox\n // See https://github.com/fingerprintjs/fingerprintjs/issues/405\n 'adBlock': true\n },\n NOT_AVAILABLE: 'not available',\n ERROR: 'error',\n EXCLUDED: 'excluded'\n }\n\n var each = function (obj, iterator) {\n if (Array.prototype.forEach && obj.forEach === Array.prototype.forEach) {\n obj.forEach(iterator)\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n iterator(obj[i], i, obj)\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n iterator(obj[key], key, obj)\n }\n }\n }\n }\n\n var map = function (obj, iterator) {\n var results = []\n // Not using strict equality so that this acts as a\n // shortcut to checking for `null` and `undefined`.\n if (obj == null) {\n return results\n }\n if (Array.prototype.map && obj.map === Array.prototype.map) { return obj.map(iterator) }\n each(obj, function (value, index, list) {\n results.push(iterator(value, index, list))\n })\n return results\n }\n\n var extendSoft = function (target, source) {\n if (source == null) { return target }\n var value\n var key\n for (key in source) {\n value = source[key]\n if (value != null && !(Object.prototype.hasOwnProperty.call(target, key))) {\n target[key] = value\n }\n }\n return target\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices\n var enumerateDevicesKey = function (done, options) {\n if (!isEnumerateDevicesSupported()) {\n return done(options.NOT_AVAILABLE)\n }\n navigator.mediaDevices.enumerateDevices().then(function (devices) {\n done(devices.map(function (device) {\n return 'id=' + device.deviceId + ';gid=' + device.groupId + ';' + device.kind + ';' + device.label\n }))\n }).catch(function (error) {\n done(error)\n })\n }\n\n var isEnumerateDevicesSupported = function () {\n return (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices)\n }\n // Inspired by and based on https://github.com/cozylife/audio-fingerprint\n var audioKey = function (done, options) {\n var audioOptions = options.audio\n if (audioOptions.excludeIOS11 && navigator.userAgent.match(/OS 11.+Version\\/11.+Safari/)) {\n // See comment for excludeUserAgent and https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\n return done(options.EXCLUDED)\n }\n\n var AudioContext = window.OfflineAudioContext || window.webkitOfflineAudioContext\n\n if (AudioContext == null) {\n return done(options.NOT_AVAILABLE)\n }\n\n var context = new AudioContext(1, 44100, 44100)\n\n var oscillator = context.createOscillator()\n oscillator.type = 'triangle'\n oscillator.frequency.setValueAtTime(10000, context.currentTime)\n\n var compressor = context.createDynamicsCompressor()\n each([\n ['threshold', -50],\n ['knee', 40],\n ['ratio', 12],\n ['reduction', -20],\n ['attack', 0],\n ['release', 0.25]\n ], function (item) {\n if (compressor[item[0]] !== undefined && typeof compressor[item[0]].setValueAtTime === 'function') {\n compressor[item[0]].setValueAtTime(item[1], context.currentTime)\n }\n })\n\n oscillator.connect(compressor)\n compressor.connect(context.destination)\n oscillator.start(0)\n context.startRendering()\n\n var audioTimeoutId = setTimeout(function () {\n console.warn('Audio fingerprint timed out. Please report bug at https://github.com/fingerprintjs/fingerprintjs with your user agent: \"' + navigator.userAgent + '\".')\n context.oncomplete = function () { }\n context = null\n return done('audioTimeout')\n }, audioOptions.timeout)\n\n context.oncomplete = function (event) {\n var fingerprint\n try {\n clearTimeout(audioTimeoutId)\n fingerprint = event.renderedBuffer.getChannelData(0)\n .slice(4500, 5000)\n .reduce(function (acc, val) { return acc + Math.abs(val) }, 0)\n .toString()\n oscillator.disconnect()\n compressor.disconnect()\n } catch (error) {\n done(error)\n return\n }\n done(fingerprint)\n }\n }\n var UserAgent = function (done) {\n done(navigator.userAgent)\n }\n var webdriver = function (done, options) {\n done(navigator.webdriver == null ? options.NOT_AVAILABLE : navigator.webdriver)\n }\n var languageKey = function (done, options) {\n done(navigator.language || navigator.userLanguage || navigator.browserLanguage || navigator.systemLanguage || options.NOT_AVAILABLE)\n }\n var colorDepthKey = function (done, options) {\n done(window.screen.colorDepth || options.NOT_AVAILABLE)\n }\n var deviceMemoryKey = function (done, options) {\n done(navigator.deviceMemory || options.NOT_AVAILABLE)\n }\n var pixelRatioKey = function (done, options) {\n done(window.devicePixelRatio || options.NOT_AVAILABLE)\n }\n var screenResolutionKey = function (done, options) {\n done(getScreenResolution(options))\n }\n var getScreenResolution = function (options) {\n var resolution = [window.screen.width, window.screen.height]\n if (options.screen.detectScreenOrientation) {\n resolution.sort().reverse()\n }\n return resolution\n }\n var availableScreenResolutionKey = function (done, options) {\n done(getAvailableScreenResolution(options))\n }\n var getAvailableScreenResolution = function (options) {\n if (window.screen.availWidth && window.screen.availHeight) {\n var available = [window.screen.availHeight, window.screen.availWidth]\n if (options.screen.detectScreenOrientation) {\n available.sort().reverse()\n }\n return available\n }\n // headless browsers\n return options.NOT_AVAILABLE\n }\n var timezoneOffset = function (done) {\n done(new Date().getTimezoneOffset())\n }\n var timezone = function (done, options) {\n if (window.Intl && window.Intl.DateTimeFormat) {\n done(new window.Intl.DateTimeFormat().resolvedOptions().timeZone || options.NOT_AVAILABLE)\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var sessionStorageKey = function (done, options) {\n done(hasSessionStorage(options))\n }\n var localStorageKey = function (done, options) {\n done(hasLocalStorage(options))\n }\n var indexedDbKey = function (done, options) {\n done(hasIndexedDB(options))\n }\n var addBehaviorKey = function (done) {\n done(!!window.HTMLElement.prototype.addBehavior)\n }\n var openDatabaseKey = function (done) {\n done(!!window.openDatabase)\n }\n var cpuClassKey = function (done, options) {\n done(getNavigatorCpuClass(options))\n }\n var platformKey = function (done, options) {\n done(getNavigatorPlatform(options))\n }\n var doNotTrackKey = function (done, options) {\n done(getDoNotTrack(options))\n }\n var canvasKey = function (done, options) {\n if (isCanvasSupported()) {\n done(getCanvasFp(options))\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var webglKey = function (done, options) {\n if (isWebGlSupported()) {\n done(getWebglFp())\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var webglVendorAndRendererKey = function (done) {\n if (isWebGlSupported()) {\n done(getWebglVendorAndRenderer())\n return\n }\n done()\n }\n var adBlockKey = function (done) {\n done(getAdBlock())\n }\n var hasLiedLanguagesKey = function (done) {\n done(getHasLiedLanguages())\n }\n var hasLiedResolutionKey = function (done) {\n done(getHasLiedResolution())\n }\n var hasLiedOsKey = function (done) {\n done(getHasLiedOs())\n }\n var hasLiedBrowserKey = function (done) {\n done(getHasLiedBrowser())\n }\n // flash fonts (will increase fingerprinting time 20X to ~ 130-150ms)\n var flashFontsKey = function (done, options) {\n // we do flash if swfobject is loaded\n if (!hasSwfObjectLoaded()) {\n return done('swf object not loaded')\n }\n if (!hasMinFlashInstalled()) {\n return done('flash not installed')\n }\n if (!options.fonts.swfPath) {\n return done('missing options.fonts.swfPath')\n }\n loadSwfAndDetectFonts(function (fonts) {\n done(fonts)\n }, options)\n }\n // kudos to http://www.lalit.org/lab/javascript-css-font-detect/\n var jsFontsKey = function (done, options) {\n // a font will be compared against all the three default fonts.\n // and if it doesn't match all 3 then that font is not available.\n var baseFonts = ['monospace', 'sans-serif', 'serif']\n\n var fontList = [\n 'Andale Mono', 'Arial', 'Arial Black', 'Arial Hebrew', 'Arial MT', 'Arial Narrow', 'Arial Rounded MT Bold', 'Arial Unicode MS',\n 'Bitstream Vera Sans Mono', 'Book Antiqua', 'Bookman Old Style',\n 'Calibri', 'Cambria', 'Cambria Math', 'Century', 'Century Gothic', 'Century Schoolbook', 'Comic Sans', 'Comic Sans MS', 'Consolas', 'Courier', 'Courier New',\n 'Geneva', 'Georgia',\n 'Helvetica', 'Helvetica Neue',\n 'Impact',\n 'Lucida Bright', 'Lucida Calligraphy', 'Lucida Console', 'Lucida Fax', 'LUCIDA GRANDE', 'Lucida Handwriting', 'Lucida Sans', 'Lucida Sans Typewriter', 'Lucida Sans Unicode',\n 'Microsoft Sans Serif', 'Monaco', 'Monotype Corsiva', 'MS Gothic', 'MS Outlook', 'MS PGothic', 'MS Reference Sans Serif', 'MS Sans Serif', 'MS Serif', 'MYRIAD', 'MYRIAD PRO',\n 'Palatino', 'Palatino Linotype',\n 'Segoe Print', 'Segoe Script', 'Segoe UI', 'Segoe UI Light', 'Segoe UI Semibold', 'Segoe UI Symbol',\n 'Tahoma', 'Times', 'Times New Roman', 'Times New Roman PS', 'Trebuchet MS',\n 'Verdana', 'Wingdings', 'Wingdings 2', 'Wingdings 3'\n ]\n\n if (options.fonts.extendedJsFonts) {\n var extendedFontList = [\n 'Abadi MT Condensed Light', 'Academy Engraved LET', 'ADOBE CASLON PRO', 'Adobe Garamond', 'ADOBE GARAMOND PRO', 'Agency FB', 'Aharoni', 'Albertus Extra Bold', 'Albertus Medium', 'Algerian', 'Amazone BT', 'American Typewriter',\n 'American Typewriter Condensed', 'AmerType Md BT', 'Andalus', 'Angsana New', 'AngsanaUPC', 'Antique Olive', 'Aparajita', 'Apple Chancery', 'Apple Color Emoji', 'Apple SD Gothic Neo', 'Arabic Typesetting', 'ARCHER',\n 'ARNO PRO', 'Arrus BT', 'Aurora Cn BT', 'AvantGarde Bk BT', 'AvantGarde Md BT', 'AVENIR', 'Ayuthaya', 'Bandy', 'Bangla Sangam MN', 'Bank Gothic', 'BankGothic Md BT', 'Baskerville',\n 'Baskerville Old Face', 'Batang', 'BatangChe', 'Bauer Bodoni', 'Bauhaus 93', 'Bazooka', 'Bell MT', 'Bembo', 'Benguiat Bk BT', 'Berlin Sans FB', 'Berlin Sans FB Demi', 'Bernard MT Condensed', 'BernhardFashion BT', 'BernhardMod BT', 'Big Caslon', 'BinnerD',\n 'Blackadder ITC', 'BlairMdITC TT', 'Bodoni 72', 'Bodoni 72 Oldstyle', 'Bodoni 72 Smallcaps', 'Bodoni MT', 'Bodoni MT Black', 'Bodoni MT Condensed', 'Bodoni MT Poster Compressed',\n 'Bookshelf Symbol 7', 'Boulder', 'Bradley Hand', 'Bradley Hand ITC', 'Bremen Bd BT', 'Britannic Bold', 'Broadway', 'Browallia New', 'BrowalliaUPC', 'Brush Script MT', 'Californian FB', 'Calisto MT', 'Calligrapher', 'Candara',\n 'CaslonOpnface BT', 'Castellar', 'Centaur', 'Cezanne', 'CG Omega', 'CG Times', 'Chalkboard', 'Chalkboard SE', 'Chalkduster', 'Charlesworth', 'Charter Bd BT', 'Charter BT', 'Chaucer',\n 'ChelthmITC Bk BT', 'Chiller', 'Clarendon', 'Clarendon Condensed', 'CloisterBlack BT', 'Cochin', 'Colonna MT', 'Constantia', 'Cooper Black', 'Copperplate', 'Copperplate Gothic', 'Copperplate Gothic Bold',\n 'Copperplate Gothic Light', 'CopperplGoth Bd BT', 'Corbel', 'Cordia New', 'CordiaUPC', 'Cornerstone', 'Coronet', 'Cuckoo', 'Curlz MT', 'DaunPenh', 'Dauphin', 'David', 'DB LCD Temp', 'DELICIOUS', 'Denmark',\n 'DFKai-SB', 'Didot', 'DilleniaUPC', 'DIN', 'DokChampa', 'Dotum', 'DotumChe', 'Ebrima', 'Edwardian Script ITC', 'Elephant', 'English 111 Vivace BT', 'Engravers MT', 'EngraversGothic BT', 'Eras Bold ITC', 'Eras Demi ITC', 'Eras Light ITC', 'Eras Medium ITC',\n 'EucrosiaUPC', 'Euphemia', 'Euphemia UCAS', 'EUROSTILE', 'Exotc350 Bd BT', 'FangSong', 'Felix Titling', 'Fixedsys', 'FONTIN', 'Footlight MT Light', 'Forte',\n 'FrankRuehl', 'Fransiscan', 'Freefrm721 Blk BT', 'FreesiaUPC', 'Freestyle Script', 'French Script MT', 'FrnkGothITC Bk BT', 'Fruitger', 'FRUTIGER',\n 'Futura', 'Futura Bk BT', 'Futura Lt BT', 'Futura Md BT', 'Futura ZBlk BT', 'FuturaBlack BT', 'Gabriola', 'Galliard BT', 'Gautami', 'Geeza Pro', 'Geometr231 BT', 'Geometr231 Hv BT', 'Geometr231 Lt BT', 'GeoSlab 703 Lt BT',\n 'GeoSlab 703 XBd BT', 'Gigi', 'Gill Sans', 'Gill Sans MT', 'Gill Sans MT Condensed', 'Gill Sans MT Ext Condensed Bold', 'Gill Sans Ultra Bold', 'Gill Sans Ultra Bold Condensed', 'Gisha', 'Gloucester MT Extra Condensed', 'GOTHAM', 'GOTHAM BOLD',\n 'Goudy Old Style', 'Goudy Stout', 'GoudyHandtooled BT', 'GoudyOLSt BT', 'Gujarati Sangam MN', 'Gulim', 'GulimChe', 'Gungsuh', 'GungsuhChe', 'Gurmukhi MN', 'Haettenschweiler', 'Harlow Solid Italic', 'Harrington', 'Heather', 'Heiti SC', 'Heiti TC', 'HELV',\n 'Herald', 'High Tower Text', 'Hiragino Kaku Gothic ProN', 'Hiragino Mincho ProN', 'Hoefler Text', 'Humanst 521 Cn BT', 'Humanst521 BT', 'Humanst521 Lt BT', 'Imprint MT Shadow', 'Incised901 Bd BT', 'Incised901 BT',\n 'Incised901 Lt BT', 'INCONSOLATA', 'Informal Roman', 'Informal011 BT', 'INTERSTATE', 'IrisUPC', 'Iskoola Pota', 'JasmineUPC', 'Jazz LET', 'Jenson', 'Jester', 'Jokerman', 'Juice ITC', 'Kabel Bk BT', 'Kabel Ult BT', 'Kailasa', 'KaiTi', 'Kalinga', 'Kannada Sangam MN',\n 'Kartika', 'Kaufmann Bd BT', 'Kaufmann BT', 'Khmer UI', 'KodchiangUPC', 'Kokila', 'Korinna BT', 'Kristen ITC', 'Krungthep', 'Kunstler Script', 'Lao UI', 'Latha', 'Leelawadee', 'Letter Gothic', 'Levenim MT', 'LilyUPC', 'Lithograph', 'Lithograph Light', 'Long Island',\n 'Lydian BT', 'Magneto', 'Maiandra GD', 'Malayalam Sangam MN', 'Malgun Gothic',\n 'Mangal', 'Marigold', 'Marion', 'Marker Felt', 'Market', 'Marlett', 'Matisse ITC', 'Matura MT Script Capitals', 'Meiryo', 'Meiryo UI', 'Microsoft Himalaya', 'Microsoft JhengHei', 'Microsoft New Tai Lue', 'Microsoft PhagsPa', 'Microsoft Tai Le',\n 'Microsoft Uighur', 'Microsoft YaHei', 'Microsoft Yi Baiti', 'MingLiU', 'MingLiU_HKSCS', 'MingLiU_HKSCS-ExtB', 'MingLiU-ExtB', 'Minion', 'Minion Pro', 'Miriam', 'Miriam Fixed', 'Mistral', 'Modern', 'Modern No. 20', 'Mona Lisa Solid ITC TT', 'Mongolian Baiti',\n 'MONO', 'MoolBoran', 'Mrs Eaves', 'MS LineDraw', 'MS Mincho', 'MS PMincho', 'MS Reference Specialty', 'MS UI Gothic', 'MT Extra', 'MUSEO', 'MV Boli',\n 'Nadeem', 'Narkisim', 'NEVIS', 'News Gothic', 'News GothicMT', 'NewsGoth BT', 'Niagara Engraved', 'Niagara Solid', 'Noteworthy', 'NSimSun', 'Nyala', 'OCR A Extended', 'Old Century', 'Old English Text MT', 'Onyx', 'Onyx BT', 'OPTIMA', 'Oriya Sangam MN',\n 'OSAKA', 'OzHandicraft BT', 'Palace Script MT', 'Papyrus', 'Parchment', 'Party LET', 'Pegasus', 'Perpetua', 'Perpetua Titling MT', 'PetitaBold', 'Pickwick', 'Plantagenet Cherokee', 'Playbill', 'PMingLiU', 'PMingLiU-ExtB',\n 'Poor Richard', 'Poster', 'PosterBodoni BT', 'PRINCETOWN LET', 'Pristina', 'PTBarnum BT', 'Pythagoras', 'Raavi', 'Rage Italic', 'Ravie', 'Ribbon131 Bd BT', 'Rockwell', 'Rockwell Condensed', 'Rockwell Extra Bold', 'Rod', 'Roman', 'Sakkal Majalla',\n 'Santa Fe LET', 'Savoye LET', 'Sceptre', 'Script', 'Script MT Bold', 'SCRIPTINA', 'Serifa', 'Serifa BT', 'Serifa Th BT', 'ShelleyVolante BT', 'Sherwood',\n 'Shonar Bangla', 'Showcard Gothic', 'Shruti', 'Signboard', 'SILKSCREEN', 'SimHei', 'Simplified Arabic', 'Simplified Arabic Fixed', 'SimSun', 'SimSun-ExtB', 'Sinhala Sangam MN', 'Sketch Rockwell', 'Skia', 'Small Fonts', 'Snap ITC', 'Snell Roundhand', 'Socket',\n 'Souvenir Lt BT', 'Staccato222 BT', 'Steamer', 'Stencil', 'Storybook', 'Styllo', 'Subway', 'Swis721 BlkEx BT', 'Swiss911 XCm BT', 'Sylfaen', 'Synchro LET', 'System', 'Tamil Sangam MN', 'Technical', 'Teletype', 'Telugu Sangam MN', 'Tempus Sans ITC',\n 'Terminal', 'Thonburi', 'Traditional Arabic', 'Trajan', 'TRAJAN PRO', 'Tristan', 'Tubular', 'Tunga', 'Tw Cen MT', 'Tw Cen MT Condensed', 'Tw Cen MT Condensed Extra Bold',\n 'TypoUpright BT', 'Unicorn', 'Univers', 'Univers CE 55 Medium', 'Univers Condensed', 'Utsaah', 'Vagabond', 'Vani', 'Vijaya', 'Viner Hand ITC', 'VisualUI', 'Vivaldi', 'Vladimir Script', 'Vrinda', 'Westminster', 'WHITNEY', 'Wide Latin',\n 'ZapfEllipt BT', 'ZapfHumnst BT', 'ZapfHumnst Dm BT', 'Zapfino', 'Zurich BlkEx BT', 'Zurich Ex BT', 'ZWAdobeF']\n fontList = fontList.concat(extendedFontList)\n }\n\n fontList = fontList.concat(options.fonts.userDefinedFonts)\n\n // remove duplicate fonts\n fontList = fontList.filter(function (font, position) {\n return fontList.indexOf(font) === position\n })\n\n // we use m or w because these two characters take up the maximum width.\n // And we use a LLi so that the same matching fonts can get separated\n var testString = 'mmmmmmmmmmlli'\n\n // we test using 72px font size, we may use any size. I guess larger the better.\n var testSize = '72px'\n\n var h = document.getElementsByTagName('body')[0]\n\n // div to load spans for the base fonts\n var baseFontsDiv = document.createElement('div')\n\n // div to load spans for the fonts to detect\n var fontsDiv = document.createElement('div')\n\n var defaultWidth = {}\n var defaultHeight = {}\n\n // creates a span where the fonts will be loaded\n var createSpan = function () {\n var s = document.createElement('span')\n /*\n * We need this css as in some weird browser this\n * span elements shows up for a microSec which creates a\n * bad user experience\n */\n s.style.position = 'absolute'\n s.style.left = '-9999px'\n s.style.fontSize = testSize\n\n // css font reset to reset external styles\n s.style.fontStyle = 'normal'\n s.style.fontWeight = 'normal'\n s.style.letterSpacing = 'normal'\n s.style.lineBreak = 'auto'\n s.style.lineHeight = 'normal'\n s.style.textTransform = 'none'\n s.style.textAlign = 'left'\n s.style.textDecoration = 'none'\n s.style.textShadow = 'none'\n s.style.whiteSpace = 'normal'\n s.style.wordBreak = 'normal'\n s.style.wordSpacing = 'normal'\n\n s.innerHTML = testString\n return s\n }\n\n // creates a span and load the font to detect and a base font for fallback\n var createSpanWithFonts = function (fontToDetect, baseFont) {\n var s = createSpan()\n s.style.fontFamily = \"'\" + fontToDetect + \"',\" + baseFont\n return s\n }\n\n // creates spans for the base fonts and adds them to baseFontsDiv\n var initializeBaseFontsSpans = function () {\n var spans = []\n for (var index = 0, length = baseFonts.length; index < length; index++) {\n var s = createSpan()\n s.style.fontFamily = baseFonts[index]\n baseFontsDiv.appendChild(s)\n spans.push(s)\n }\n return spans\n }\n\n // creates spans for the fonts to detect and adds them to fontsDiv\n var initializeFontsSpans = function () {\n var spans = {}\n for (var i = 0, l = fontList.length; i < l; i++) {\n var fontSpans = []\n for (var j = 0, numDefaultFonts = baseFonts.length; j < numDefaultFonts; j++) {\n var s = createSpanWithFonts(fontList[i], baseFonts[j])\n fontsDiv.appendChild(s)\n fontSpans.push(s)\n }\n spans[fontList[i]] = fontSpans // Stores {fontName : [spans for that font]}\n }\n return spans\n }\n\n // checks if a font is available\n var isFontAvailable = function (fontSpans) {\n var detected = false\n for (var i = 0; i < baseFonts.length; i++) {\n detected = (fontSpans[i].offsetWidth !== defaultWidth[baseFonts[i]] || fontSpans[i].offsetHeight !== defaultHeight[baseFonts[i]])\n if (detected) {\n return detected\n }\n }\n return detected\n }\n\n // create spans for base fonts\n var baseFontsSpans = initializeBaseFontsSpans()\n\n // add the spans to the DOM\n h.appendChild(baseFontsDiv)\n\n // get the default width for the three base fonts\n for (var index = 0, length = baseFonts.length; index < length; index++) {\n defaultWidth[baseFonts[index]] = baseFontsSpans[index].offsetWidth // width for the default font\n defaultHeight[baseFonts[index]] = baseFontsSpans[index].offsetHeight // height for the default font\n }\n\n // create spans for fonts to detect\n var fontsSpans = initializeFontsSpans()\n\n // add all the spans to the DOM\n h.appendChild(fontsDiv)\n\n // check available fonts\n var available = []\n for (var i = 0, l = fontList.length; i < l; i++) {\n if (isFontAvailable(fontsSpans[fontList[i]])) {\n available.push(fontList[i])\n }\n }\n\n // remove spans from DOM\n h.removeChild(fontsDiv)\n h.removeChild(baseFontsDiv)\n done(available)\n }\n var pluginsComponent = function (done, options) {\n if (isIE()) {\n if (!options.plugins.excludeIE) {\n done(getIEPlugins(options))\n } else {\n done(options.EXCLUDED)\n }\n } else {\n done(getRegularPlugins(options))\n }\n }\n var getRegularPlugins = function (options) {\n if (navigator.plugins == null) {\n return options.NOT_AVAILABLE\n }\n\n var plugins = []\n // plugins isn't defined in Node envs.\n for (var i = 0, l = navigator.plugins.length; i < l; i++) {\n if (navigator.plugins[i]) { plugins.push(navigator.plugins[i]) }\n }\n\n // sorting plugins only for those user agents, that we know randomize the plugins\n // every time we try to enumerate them\n if (pluginsShouldBeSorted(options)) {\n plugins = plugins.sort(function (a, b) {\n if (a.name > b.name) { return 1 }\n if (a.name < b.name) { return -1 }\n return 0\n })\n }\n return map(plugins, function (p) {\n var mimeTypes = map(p, function (mt) {\n return [mt.type, mt.suffixes]\n })\n return [p.name, p.description, mimeTypes]\n })\n }\n var getIEPlugins = function (options) {\n var result = []\n if ((Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(window, 'ActiveXObject')) || ('ActiveXObject' in window)) {\n var names = [\n 'AcroPDF.PDF', // Adobe PDF reader 7+\n 'Adodb.Stream',\n 'AgControl.AgControl', // Silverlight\n 'DevalVRXCtrl.DevalVRXCtrl.1',\n 'MacromediaFlashPaper.MacromediaFlashPaper',\n 'Msxml2.DOMDocument',\n 'Msxml2.XMLHTTP',\n 'PDF.PdfCtrl', // Adobe PDF reader 6 and earlier, brrr\n 'QuickTime.QuickTime', // QuickTime\n 'QuickTimeCheckObject.QuickTimeCheck.1',\n 'RealPlayer',\n 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)',\n 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)',\n 'Scripting.Dictionary',\n 'SWCtl.SWCtl', // ShockWave player\n 'Shell.UIHelper',\n 'ShockwaveFlash.ShockwaveFlash', // flash plugin\n 'Skype.Detection',\n 'TDCCtl.TDCCtl',\n 'WMPlayer.OCX', // Windows media player\n 'rmocx.RealPlayer G2 Control',\n 'rmocx.RealPlayer G2 Control.1'\n ]\n // starting to detect plugins in IE\n result = map(names, function (name) {\n try {\n // eslint-disable-next-line no-new\n new window.ActiveXObject(name)\n return name\n } catch (e) {\n return options.ERROR\n }\n })\n } else {\n result.push(options.NOT_AVAILABLE)\n }\n if (navigator.plugins) {\n result = result.concat(getRegularPlugins(options))\n }\n return result\n }\n var pluginsShouldBeSorted = function (options) {\n var should = false\n for (var i = 0, l = options.plugins.sortPluginsFor.length; i < l; i++) {\n var re = options.plugins.sortPluginsFor[i]\n if (navigator.userAgent.match(re)) {\n should = true\n break\n }\n }\n return should\n }\n var touchSupportKey = function (done) {\n done(getTouchSupport())\n }\n var hardwareConcurrencyKey = function (done, options) {\n done(getHardwareConcurrency(options))\n }\n var hasSessionStorage = function (options) {\n try {\n return !!window.sessionStorage\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n\n // https://bugzilla.mozilla.org/show_bug.cgi?id=781447\n var hasLocalStorage = function (options) {\n try {\n return !!window.localStorage\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n var hasIndexedDB = function (options) {\n // IE and Edge don't allow accessing indexedDB in private mode, therefore IE and Edge will have different\n // fingerprints in normal and private modes.\n if (isIEOrOldEdge()) {\n return options.EXCLUDED\n }\n try {\n return !!window.indexedDB\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n var getHardwareConcurrency = function (options) {\n if (navigator.hardwareConcurrency) {\n return navigator.hardwareConcurrency\n }\n return options.NOT_AVAILABLE\n }\n var getNavigatorCpuClass = function (options) {\n return navigator.cpuClass || options.NOT_AVAILABLE\n }\n var getNavigatorPlatform = function (options) {\n if (navigator.platform) {\n return navigator.platform\n } else {\n return options.NOT_AVAILABLE\n }\n }\n var getDoNotTrack = function (options) {\n if (navigator.doNotTrack) {\n return navigator.doNotTrack\n } else if (navigator.msDoNotTrack) {\n return navigator.msDoNotTrack\n } else if (window.doNotTrack) {\n return window.doNotTrack\n } else {\n return options.NOT_AVAILABLE\n }\n }\n // This is a crude and primitive touch screen detection.\n // It's not possible to currently reliably detect the availability of a touch screen\n // with a JS, without actually subscribing to a touch event.\n // http://www.stucox.com/blog/you-cant-detect-a-touchscreen/\n // https://github.com/Modernizr/Modernizr/issues/548\n // method returns an array of 3 values:\n // maxTouchPoints, the success or failure of creating a TouchEvent,\n // and the availability of the 'ontouchstart' property\n\n var getTouchSupport = function () {\n var maxTouchPoints = 0\n var touchEvent\n if (typeof navigator.maxTouchPoints !== 'undefined') {\n maxTouchPoints = navigator.maxTouchPoints\n } else if (typeof navigator.msMaxTouchPoints !== 'undefined') {\n maxTouchPoints = navigator.msMaxTouchPoints\n }\n try {\n document.createEvent('TouchEvent')\n touchEvent = true\n } catch (_) {\n touchEvent = false\n }\n var touchStart = 'ontouchstart' in window\n return [maxTouchPoints, touchEvent, touchStart]\n }\n // https://www.browserleaks.com/canvas#how-does-it-work\n\n var getCanvasFp = function (options) {\n var result = []\n // Very simple now, need to make it more complex (geo shapes etc)\n var canvas = document.createElement('canvas')\n canvas.width = 2000\n canvas.height = 200\n canvas.style.display = 'inline'\n var ctx = canvas.getContext('2d')\n // detect browser support of canvas winding\n // http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/canvas/winding.js\n ctx.rect(0, 0, 10, 10)\n ctx.rect(2, 2, 6, 6)\n result.push('canvas winding:' + ((ctx.isPointInPath(5, 5, 'evenodd') === false) ? 'yes' : 'no'))\n\n ctx.textBaseline = 'alphabetic'\n ctx.fillStyle = '#f60'\n ctx.fillRect(125, 1, 62, 20)\n ctx.fillStyle = '#069'\n // https://github.com/fingerprintjs/fingerprintjs/issues/66\n if (options.dontUseFakeFontInCanvas) {\n ctx.font = '11pt Arial'\n } else {\n ctx.font = '11pt no-real-font-123'\n }\n ctx.fillText('Cwm fjordbank glyphs vext quiz, \\ud83d\\ude03', 2, 15)\n ctx.fillStyle = 'rgba(102, 204, 0, 0.2)'\n ctx.font = '18pt Arial'\n ctx.fillText('Cwm fjordbank glyphs vext quiz, \\ud83d\\ude03', 4, 45)\n\n // canvas blending\n // http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/\n // http://jsfiddle.net/NDYV8/16/\n ctx.globalCompositeOperation = 'multiply'\n ctx.fillStyle = 'rgb(255,0,255)'\n ctx.beginPath()\n ctx.arc(50, 50, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(0,255,255)'\n ctx.beginPath()\n ctx.arc(100, 50, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(255,255,0)'\n ctx.beginPath()\n ctx.arc(75, 100, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(255,0,255)'\n // canvas winding\n // http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // http://jsfiddle.net/NDYV8/19/\n ctx.arc(75, 75, 75, 0, Math.PI * 2, true)\n ctx.arc(75, 75, 25, 0, Math.PI * 2, true)\n ctx.fill('evenodd')\n\n if (canvas.toDataURL) { result.push('canvas fp:' + canvas.toDataURL()) }\n return result\n }\n var getWebglFp = function () {\n var gl\n var fa2s = function (fa) {\n gl.clearColor(0.0, 0.0, 0.0, 1.0)\n gl.enable(gl.DEPTH_TEST)\n gl.depthFunc(gl.LEQUAL)\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)\n return '[' + fa[0] + ', ' + fa[1] + ']'\n }\n var maxAnisotropy = function (gl) {\n var ext = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') || gl.getExtension('MOZ_EXT_texture_filter_anisotropic')\n if (ext) {\n var anisotropy = gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT)\n if (anisotropy === 0) {\n anisotropy = 2\n }\n return anisotropy\n } else {\n return null\n }\n }\n\n gl = getWebglCanvas()\n if (!gl) { return null }\n // WebGL fingerprinting is a combination of techniques, found in MaxMind antifraud script & Augur fingerprinting.\n // First it draws a gradient object with shaders and convers the image to the Base64 string.\n // Then it enumerates all WebGL extensions & capabilities and appends them to the Base64 string, resulting in a huge WebGL string, potentially very unique on each device\n // Since iOS supports webgl starting from version 8.1 and 8.1 runs on several graphics chips, the results may be different across ios devices, but we need to verify it.\n var result = []\n var vShaderTemplate = 'attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}'\n var fShaderTemplate = 'precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}'\n var vertexPosBuffer = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer)\n var vertices = new Float32Array([-0.2, -0.9, 0, 0.4, -0.26, 0, 0, 0.732134444, 0])\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW)\n vertexPosBuffer.itemSize = 3\n vertexPosBuffer.numItems = 3\n var program = gl.createProgram()\n var vshader = gl.createShader(gl.VERTEX_SHADER)\n gl.shaderSource(vshader, vShaderTemplate)\n gl.compileShader(vshader)\n var fshader = gl.createShader(gl.FRAGMENT_SHADER)\n gl.shaderSource(fshader, fShaderTemplate)\n gl.compileShader(fshader)\n gl.attachShader(program, vshader)\n gl.attachShader(program, fshader)\n gl.linkProgram(program)\n gl.useProgram(program)\n program.vertexPosAttrib = gl.getAttribLocation(program, 'attrVertex')\n program.offsetUniform = gl.getUniformLocation(program, 'uniformOffset')\n gl.enableVertexAttribArray(program.vertexPosArray)\n gl.vertexAttribPointer(program.vertexPosAttrib, vertexPosBuffer.itemSize, gl.FLOAT, !1, 0, 0)\n gl.uniform2f(program.offsetUniform, 1, 1)\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexPosBuffer.numItems)\n try {\n result.push(gl.canvas.toDataURL())\n } catch (e) {\n /* .toDataURL may be absent or broken (blocked by extension) */\n }\n result.push('extensions:' + (gl.getSupportedExtensions() || []).join(';'))\n result.push('webgl aliased line width range:' + fa2s(gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE)))\n result.push('webgl aliased point size range:' + fa2s(gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE)))\n result.push('webgl alpha bits:' + gl.getParameter(gl.ALPHA_BITS))\n result.push('webgl antialiasing:' + (gl.getContextAttributes().antialias ? 'yes' : 'no'))\n result.push('webgl blue bits:' + gl.getParameter(gl.BLUE_BITS))\n result.push('webgl depth bits:' + gl.getParameter(gl.DEPTH_BITS))\n result.push('webgl green bits:' + gl.getParameter(gl.GREEN_BITS))\n result.push('webgl max anisotropy:' + maxAnisotropy(gl))\n result.push('webgl max combined texture image units:' + gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS))\n result.push('webgl max cube map texture size:' + gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE))\n result.push('webgl max fragment uniform vectors:' + gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS))\n result.push('webgl max render buffer size:' + gl.getParameter(gl.MAX_RENDERBUFFER_SIZE))\n result.push('webgl max texture image units:' + gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS))\n result.push('webgl max texture size:' + gl.getParameter(gl.MAX_TEXTURE_SIZE))\n result.push('webgl max varying vectors:' + gl.getParameter(gl.MAX_VARYING_VECTORS))\n result.push('webgl max vertex attribs:' + gl.getParameter(gl.MAX_VERTEX_ATTRIBS))\n result.push('webgl max vertex texture image units:' + gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS))\n result.push('webgl max vertex uniform vectors:' + gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS))\n result.push('webgl max viewport dims:' + fa2s(gl.getParameter(gl.MAX_VIEWPORT_DIMS)))\n result.push('webgl red bits:' + gl.getParameter(gl.RED_BITS))\n result.push('webgl renderer:' + gl.getParameter(gl.RENDERER))\n result.push('webgl shading language version:' + gl.getParameter(gl.SHADING_LANGUAGE_VERSION))\n result.push('webgl stencil bits:' + gl.getParameter(gl.STENCIL_BITS))\n result.push('webgl vendor:' + gl.getParameter(gl.VENDOR))\n result.push('webgl version:' + gl.getParameter(gl.VERSION))\n\n try {\n // Add the unmasked vendor and unmasked renderer if the debug_renderer_info extension is available\n var extensionDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info')\n if (extensionDebugRendererInfo) {\n result.push('webgl unmasked vendor:' + gl.getParameter(extensionDebugRendererInfo.UNMASKED_VENDOR_WEBGL))\n result.push('webgl unmasked renderer:' + gl.getParameter(extensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL))\n }\n } catch (e) { /* squelch */ }\n\n if (!gl.getShaderPrecisionFormat) {\n loseWebglContext(gl)\n return result\n }\n\n each(['FLOAT', 'INT'], function (numType) {\n each(['VERTEX', 'FRAGMENT'], function (shader) {\n each(['HIGH', 'MEDIUM', 'LOW'], function (numSize) {\n each(['precision', 'rangeMin', 'rangeMax'], function (key) {\n var format = gl.getShaderPrecisionFormat(gl[shader + '_SHADER'], gl[numSize + '_' + numType])[key]\n if (key !== 'precision') {\n key = 'precision ' + key\n }\n var line = ['webgl ', shader.toLowerCase(), ' shader ', numSize.toLowerCase(), ' ', numType.toLowerCase(), ' ', key, ':', format].join('')\n result.push(line)\n })\n })\n })\n })\n loseWebglContext(gl)\n return result\n }\n var getWebglVendorAndRenderer = function () {\n /* This a subset of the WebGL fingerprint with a lot of entropy, while being reasonably browser-independent */\n try {\n var glContext = getWebglCanvas()\n var extensionDebugRendererInfo = glContext.getExtension('WEBGL_debug_renderer_info')\n var params = glContext.getParameter(extensionDebugRendererInfo.UNMASKED_VENDOR_WEBGL) + '~' + glContext.getParameter(extensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL)\n loseWebglContext(glContext)\n return params\n } catch (e) {\n return null\n }\n }\n var getAdBlock = function () {\n var ads = document.createElement('div')\n ads.innerHTML = '&nbsp;'\n ads.className = 'adsbox'\n var result = false\n try {\n // body may not exist, that's why we need try/catch\n document.body.appendChild(ads)\n result = document.getElementsByClassName('adsbox')[0].offsetHeight === 0\n document.body.removeChild(ads)\n } catch (e) {\n result = false\n }\n return result\n }\n var getHasLiedLanguages = function () {\n // We check if navigator.language is equal to the first language of navigator.languages\n // navigator.languages is undefined on IE11 (and potentially older IEs)\n if (typeof navigator.languages !== 'undefined') {\n try {\n var firstLanguages = navigator.languages[0].substr(0, 2)\n if (firstLanguages !== navigator.language.substr(0, 2)) {\n return true\n }\n } catch (err) {\n return true\n }\n }\n return false\n }\n var getHasLiedResolution = function () {\n return window.screen.width < window.screen.availWidth || window.screen.height < window.screen.availHeight\n }\n var getHasLiedOs = function () {\n var userAgent = navigator.userAgent.toLowerCase()\n var oscpu = navigator.oscpu\n var platform = navigator.platform.toLowerCase()\n var os\n // We extract the OS from the user agent (respect the order of the if else if statement)\n if (userAgent.indexOf('windows phone') >= 0) {\n os = 'Windows Phone'\n } else if (userAgent.indexOf('windows') >= 0 || userAgent.indexOf('win16') >= 0 || userAgent.indexOf('win32') >= 0 || userAgent.indexOf('win64') >= 0 || userAgent.indexOf('win95') >= 0 || userAgent.indexOf('win98') >= 0 || userAgent.indexOf('winnt') >= 0 || userAgent.indexOf('wow64') >= 0) {\n os = 'Windows'\n } else if (userAgent.indexOf('android') >= 0) {\n os = 'Android'\n } else if (userAgent.indexOf('linux') >= 0 || userAgent.indexOf('cros') >= 0 || userAgent.indexOf('x11') >= 0) {\n os = 'Linux'\n } else if (userAgent.indexOf('iphone') >= 0 || userAgent.indexOf('ipad') >= 0 || userAgent.indexOf('ipod') >= 0 || userAgent.indexOf('crios') >= 0 || userAgent.indexOf('fxios') >= 0) {\n os = 'iOS'\n } else if (userAgent.indexOf('macintosh') >= 0 || userAgent.indexOf('mac_powerpc)') >= 0) {\n os = 'Mac'\n } else {\n os = 'Other'\n }\n // We detect if the person uses a touch device\n var mobileDevice = (('ontouchstart' in window) ||\n (navigator.maxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0))\n\n if (mobileDevice && os !== 'Windows' && os !== 'Windows Phone' && os !== 'Android' && os !== 'iOS' && os !== 'Other' && userAgent.indexOf('cros') === -1) {\n return true\n }\n\n // We compare oscpu with the OS extracted from the UA\n if (typeof oscpu !== 'undefined') {\n oscpu = oscpu.toLowerCase()\n if (oscpu.indexOf('win') >= 0 && os !== 'Windows' && os !== 'Windows Phone') {\n return true\n } else if (oscpu.indexOf('linux') >= 0 && os !== 'Linux' && os !== 'Android') {\n return true\n } else if (oscpu.indexOf('mac') >= 0 && os !== 'Mac' && os !== 'iOS') {\n return true\n } else if ((oscpu.indexOf('win') === -1 && oscpu.indexOf('linux') === -1 && oscpu.indexOf('mac') === -1) !== (os === 'Other')) {\n return true\n }\n }\n\n // We compare platform with the OS extracted from the UA\n if (platform.indexOf('win') >= 0 && os !== 'Windows' && os !== 'Windows Phone') {\n return true\n } else if ((platform.indexOf('linux') >= 0 || platform.indexOf('android') >= 0 || platform.indexOf('pike') >= 0) && os !== 'Linux' && os !== 'Android') {\n return true\n } else if ((platform.indexOf('mac') >= 0 || platform.indexOf('ipad') >= 0 || platform.indexOf('ipod') >= 0 || platform.indexOf('iphone') >= 0) && os !== 'Mac' && os !== 'iOS') {\n return true\n } else if (platform.indexOf('arm') >= 0 && os === 'Windows Phone') {\n return false\n } else if (platform.indexOf('pike') >= 0 && userAgent.indexOf('opera mini') >= 0) {\n return false\n } else {\n var platformIsOther = platform.indexOf('win') < 0 &&\n platform.indexOf('linux') < 0 &&\n platform.indexOf('mac') < 0 &&\n platform.indexOf('iphone') < 0 &&\n platform.indexOf('ipad') < 0 &&\n platform.indexOf('ipod') < 0\n if (platformIsOther !== (os === 'Other')) {\n return true\n }\n }\n\n return typeof navigator.plugins === 'undefined' && os !== 'Windows' && os !== 'Windows Phone'\n }\n var getHasLiedBrowser = function () {\n var userAgent = navigator.userAgent.toLowerCase()\n var productSub = navigator.productSub\n\n // we extract the browser from the user agent (respect the order of the tests)\n var browser\n if (userAgent.indexOf('edge/') >= 0 || userAgent.indexOf('iemobile/') >= 0) {\n // Unreliable, different versions use EdgeHTML, Webkit, Blink, etc.\n return false\n } else if (userAgent.indexOf('opera mini') >= 0) {\n // Unreliable, different modes use Presto, WebView, Webkit, etc.\n return false\n } else if (userAgent.indexOf('firefox/') >= 0) {\n browser = 'Firefox'\n } else if (userAgent.indexOf('opera/') >= 0 || userAgent.indexOf(' opr/') >= 0) {\n browser = 'Opera'\n } else if (userAgent.indexOf('chrome/') >= 0) {\n browser = 'Chrome'\n } else if (userAgent.indexOf('safari/') >= 0) {\n if (userAgent.indexOf('android 1.') >= 0 || userAgent.indexOf('android 2.') >= 0 || userAgent.indexOf('android 3.') >= 0 || userAgent.indexOf('android 4.') >= 0) {\n browser = 'AOSP'\n } else {\n browser = 'Safari'\n }\n } else if (userAgent.indexOf('trident/') >= 0) {\n browser = 'Internet Explorer'\n } else {\n browser = 'Other'\n }\n\n if ((browser === 'Chrome' || browser === 'Safari' || browser === 'Opera') && productSub !== '20030107') {\n return true\n }\n\n // eslint-disable-next-line no-eval\n var tempRes = eval.toString().length\n if (tempRes === 37 && browser !== 'Safari' && browser !== 'Firefox' && browser !== 'Other') {\n return true\n } else if (tempRes === 39 && browser !== 'Internet Explorer' && browser !== 'Other') {\n return true\n } else if (tempRes === 33 && browser !== 'Chrome' && browser !== 'AOSP' && browser !== 'Opera' && browser !== 'Other') {\n return true\n }\n\n // We create an error to see how it is handled\n var errFirefox\n try {\n // eslint-disable-next-line no-throw-literal\n throw 'a'\n } catch (err) {\n try {\n err.toSource()\n errFirefox = true\n } catch (errOfErr) {\n errFirefox = false\n }\n }\n return errFirefox && browser !== 'Firefox' && browser !== 'Other'\n }\n var isCanvasSupported = function () {\n var elem = document.createElement('canvas')\n return !!(elem.getContext && elem.getContext('2d'))\n }\n var isWebGlSupported = function () {\n // code taken from Modernizr\n if (!isCanvasSupported()) {\n return false\n }\n\n var glContext = getWebglCanvas()\n var isSupported = !!window.WebGLRenderingContext && !!glContext\n loseWebglContext(glContext)\n return isSupported\n }\n var isIE = function () {\n if (navigator.appName === 'Microsoft Internet Explorer') {\n return true\n } else if (navigator.appName === 'Netscape' && /Trident/.test(navigator.userAgent)) { // IE 11\n return true\n }\n return false\n }\n var isIEOrOldEdge = function () {\n // The properties are checked to be in IE 10, IE 11 and Edge 18 and not to be in other browsers\n return ('msWriteProfilerMark' in window) + ('msLaunchUri' in navigator) + ('msSaveBlob' in navigator) >= 2\n }\n var hasSwfObjectLoaded = function () {\n return typeof window.swfobject !== 'undefined'\n }\n var hasMinFlashInstalled = function () {\n return window.swfobject.hasFlashPlayerVersion('9.0.0')\n }\n var addFlashDivNode = function (options) {\n var node = document.createElement('div')\n node.setAttribute('id', options.fonts.swfContainerId)\n document.body.appendChild(node)\n }\n var loadSwfAndDetectFonts = function (done, options) {\n var hiddenCallback = '___fp_swf_loaded'\n window[hiddenCallback] = function (fonts) {\n done(fonts)\n }\n var id = options.fonts.swfContainerId\n addFlashDivNode()\n var flashvars = { onReady: hiddenCallback }\n var flashparams = { allowScriptAccess: 'always', menu: 'false' }\n window.swfobject.embedSWF(options.fonts.swfPath, id, '1', '1', '9.0.0', false, flashvars, flashparams, {})\n }\n var getWebglCanvas = function () {\n var canvas = document.createElement('canvas')\n var gl = null\n try {\n gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl')\n } catch (e) { /* squelch */ }\n if (!gl) { gl = null }\n return gl\n }\n var loseWebglContext = function (context) {\n var loseContextExtension = context.getExtension('WEBGL_lose_context')\n if (loseContextExtension != null) {\n loseContextExtension.loseContext()\n }\n }\n\n var components = [\n { key: 'userAgent', getData: UserAgent },\n { key: 'webdriver', getData: webdriver },\n { key: 'language', getData: languageKey },\n { key: 'colorDepth', getData: colorDepthKey },\n { key: 'deviceMemory', getData: deviceMemoryKey },\n { key: 'pixelRatio', getData: pixelRatioKey },\n { key: 'hardwareConcurrency', getData: hardwareConcurrencyKey },\n { key: 'screenResolution', getData: screenResolutionKey },\n { key: 'availableScreenResolution', getData: availableScreenResolutionKey },\n { key: 'timezoneOffset', getData: timezoneOffset },\n { key: 'timezone', getData: timezone },\n { key: 'sessionStorage', getData: sessionStorageKey },\n { key: 'localStorage', getData: localStorageKey },\n { key: 'indexedDb', getData: indexedDbKey },\n { key: 'addBehavior', getData: addBehaviorKey },\n { key: 'openDatabase', getData: openDatabaseKey },\n { key: 'cpuClass', getData: cpuClassKey },\n { key: 'platform', getData: platformKey },\n { key: 'doNotTrack', getData: doNotTrackKey },\n { key: 'plugins', getData: pluginsComponent },\n { key: 'canvas', getData: canvasKey },\n { key: 'webgl', getData: webglKey },\n { key: 'webglVendorAndRenderer', getData: webglVendorAndRendererKey },\n { key: 'adBlock', getData: adBlockKey },\n { key: 'hasLiedLanguages', getData: hasLiedLanguagesKey },\n { key: 'hasLiedResolution', getData: hasLiedResolutionKey },\n { key: 'hasLiedOs', getData: hasLiedOsKey },\n { key: 'hasLiedBrowser', getData: hasLiedBrowserKey },\n { key: 'touchSupport', getData: touchSupportKey },\n { key: 'fonts', getData: jsFontsKey, pauseBefore: true },\n { key: 'fontsFlash', getData: flashFontsKey, pauseBefore: true },\n { key: 'audio', getData: audioKey },\n { key: 'enumerateDevices', getData: enumerateDevicesKey }\n ]\n\n var Fingerprint2 = function (options) {\n throw new Error(\"'new Fingerprint()' is deprecated, see https://github.com/fingerprintjs/fingerprintjs#upgrade-guide-from-182-to-200\")\n }\n\n Fingerprint2.get = function (options, callback) {\n if (!callback) {\n callback = options\n options = {}\n } else if (!options) {\n options = {}\n }\n extendSoft(options, defaultOptions)\n options.components = options.extraComponents.concat(components)\n\n var keys = {\n data: [],\n addPreprocessedComponent: function (key, value) {\n if (typeof options.preprocessor === 'function') {\n value = options.preprocessor(key, value)\n }\n keys.data.push({ key: key, value: value })\n }\n }\n\n var i = -1\n var chainComponents = function (alreadyWaited) {\n i += 1\n if (i >= options.components.length) { // on finish\n callback(keys.data)\n return\n }\n var component = options.components[i]\n\n if (options.excludes[component.key]) {\n chainComponents(false) // skip\n return\n }\n\n if (!alreadyWaited && component.pauseBefore) {\n i -= 1\n setTimeout(function () {\n chainComponents(true)\n }, 1)\n return\n }\n\n try {\n component.getData(function (value) {\n keys.addPreprocessedComponent(component.key, value)\n chainComponents(false)\n }, options)\n } catch (error) {\n // main body error\n keys.addPreprocessedComponent(component.key, String(error))\n chainComponents(false)\n }\n }\n\n chainComponents(false)\n }\n\n Fingerprint2.getPromise = function (options) {\n return new Promise(function (resolve, reject) {\n Fingerprint2.get(options, resolve)\n })\n }\n\n Fingerprint2.getV18 = function (options, callback) {\n if (callback == null) {\n callback = options\n options = {}\n }\n return Fingerprint2.get(options, function (components) {\n var newComponents = []\n for (var i = 0; i < components.length; i++) {\n var component = components[i]\n if (component.value === (options.NOT_AVAILABLE || 'not available')) {\n newComponents.push({ key: component.key, value: 'unknown' })\n } else if (component.key === 'plugins') {\n newComponents.push({\n key: 'plugins',\n value: map(component.value, function (p) {\n var mimeTypes = map(p[2], function (mt) {\n if (mt.join) { return mt.join('~') }\n return mt\n }).join(',')\n return [p[0], p[1], mimeTypes].join('::')\n })\n })\n } else if (['canvas', 'webgl'].indexOf(component.key) !== -1 && Array.isArray(component.value)) {\n // sometimes WebGL returns error in headless browsers (during CI testing for example)\n // so we need to join only if the values are array\n newComponents.push({ key: component.key, value: component.value.join('~') })\n } else if (['sessionStorage', 'localStorage', 'indexedDb', 'addBehavior', 'openDatabase'].indexOf(component.key) !== -1) {\n if (component.value) {\n newComponents.push({ key: component.key, value: 1 })\n } else {\n // skip\n continue\n }\n } else {\n if (component.value) {\n newComponents.push(component.value.join ? { key: component.key, value: component.value.join(';') } : component)\n } else {\n newComponents.push({ key: component.key, value: component.value })\n }\n }\n }\n var murmur = x64hash128(map(newComponents, function (component) { return component.value }).join('~~~'), 31)\n callback(murmur, newComponents)\n })\n }\n\n Fingerprint2.x64hash128 = x64hash128\n Fingerprint2.VERSION = '2.1.4'\n return Fingerprint2\n})\n","/**\n * Fingerprint v3.12.9 - Copyright (c) FingerprintJS, Inc, 2026 (https://fingerprint.com)\n */\n\nfunction e(e,t){return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:void 0}function t(e){return new Promise(((t,n)=>{if(function(e){if(!URL.prototype)return;try{return new URL(e,location.href),!1}catch(t){if(t instanceof Error&&\"TypeError\"===t.name)return!0;throw t}}(e))throw new Error(H);const r=document.createElement(\"script\"),o=()=>{var e;return null===(e=r.parentNode)||void 0===e?void 0:e.removeChild(r)},i=document.head||document.getElementsByTagName(\"head\")[0];r.onload=()=>{o(),t()},r.onerror=()=>{o(),n(new Error(Pe))},r.async=!0,r.src=e,i.appendChild(r)}))}function n({level:e,message:t}){\"error\"===e?console.error(t):\"warning\"===e?console.warn(t):console.log(t)}function r(e,t){if(e.arr.length<t){const n=new Uint8Array(Math.max(2*e.arr.length,t));n.set(e.arr),e.arr=n}}function o(){return function(){var e,t;const n=window;return[\"buildID\"in navigator,\"MozAppearance\"in(null!==(t=null===(e=document.documentElement)||void 0===e?void 0:e.style)&&void 0!==t?t:{}),\"onmozfullscreenchange\"in n,\"mozInnerScreenX\"in n,\"CSSMozDocumentRule\"in n,\"CanvasCaptureMediaStream\"in n].reduce(((e,t)=>e+(t?1:0)),0)>=4}()}function i(e){const t={len:0,arr:new Uint8Array(128)},n=fe(e);let r=0;const o=()=>(u(),n[r]===p?i():a(n[r])?c():d(M)?(r+=M.length,null):d(x)?(r+=x.length,!0):d(k)?(r+=k.length,!1):n[r]===U?s():n[r]===C?l():f()),i=()=>{for(t.len=0;r++,n[r]!==p;){if(n[r]===m){if(r++,n[r]===A){const e=parseInt(pe(n.subarray(r+1,r+5)),16);ke(t,h(String.fromCharCode(e))),r+=4;continue}const e=V[n[r]];if(e){le(t,e);continue}return f()}if(void 0===n[r])return f();le(t,n[r])}return r++,pe(function(e){return e.arr.subarray(0,e.len)}(t))},c=()=>{const e=r;for(;n[r]===b||n[r]===y||n[r]===N||n[r]===S||a(n[r]);)r++;return Number(pe(n.subarray(e,r)))},s=()=>{const e=[];for(r++;;){if(u(),n[r]===P){r++;break}if(e.length){if(n[r]!==_)return f();r++}e.push(o())}return e},l=()=>{const e={};let t=!0;for(r++;;){if(u(),n[r]===L){r++;break}if(!t){if(n[r]!==_)return f();r++,u()}if(n[r]!==p)return f();const c=i();if(u(),n[r]!==O)return f();r++,Object.defineProperty(e,c,{value:o(),configurable:!0,enumerable:!0,writable:!0}),t=!1}return e},u=()=>{for(;n[r]===w||n[r]===v||n[r]===g||n[r]===I;)r++},d=e=>{for(let t=0;t<e.length;t++)if(n[r+t]!==e[t])return!1;return!0},f=()=>{throw new SyntaxError(\"Unexpected \"+(r<n.length?`byte ${r}`:\"end\"))},R=o();return u(),void 0!==n[r]&&f(),R}function c(e,t){return function(e,t,n){const r=()=>{throw new Error(\"Invalid data\")},o=fe(e);o.length<t.length+2&&r();for(let d=0;d<t.length;++d)re(o[1+d],o[0])!==t[d]&&r();const i=1+t.length,c=re(o[i],o[0]);o.length<i+1+c+n&&r();const a=i+1+c,s=a+n,l=new ArrayBuffer(o.length-s),u=new Uint8Array(l);for(let d=0;d<u.length;++d)u[d]=o[s+d]^o[a+d%n];return l}(e,t?Ee:Re,he)}function a(e){return e>=T&&e<T+10||e===D}function s(e,t,n,r){Le((()=>{const o=`${e}=${t}`,i=`expires=${new Date(Date.now()+24*n*60*60*1e3).toUTCString()}`,c=r?`domain=${r}`:\"\";document.cookie=[o,\"path=/\",i,c,\"SameSite=Lax\"].join(\"; \")}),void 0)}function l(e,t){!function(e,t,n){if(se((t=>{!function(e,t){s(e,\"\",-1,t)}(e,t)})),n<0)return;se((r=>(s(e,t,n,r),function(e){return Le((()=>{const t=`${e}=`;for(const e of document.cookie.split(\";\")){let n=0;for(;\" \"===e[n]&&n<e.length;)++n;if(e.indexOf(t)===n)return e.slice(n+t.length)}}),void 0)}(e)===t)))}(t,e,365),function(e,t){var n;try{null===(n=null===localStorage||void 0===localStorage?void 0:localStorage.setItem)||void 0===n||n.call(localStorage,e,t)}catch(r){}}(t,e)}function u(){const e=window,t=\"__fpjs_p_l_b\",n=e[t];if(function(e,t){var n;const r=null===(n=Object.getOwnPropertyDescriptor)||void 0===n?void 0:n.call(Object,e,t);(null==r?void 0:r.configurable)?delete e[t]:r&&!r.writable||(e[t]=void 0)}(e,t),\"function\"!=typeof(null==n?void 0:n.load))throw new Error(Ce);return n}const d={default:\"endpoint\"},f={default:\"tlsEndpoint\"},R=\"_vid\";function E(e,t){return(Array.isArray(e)?e:[e]).map((e=>function(e,t){const n=encodeURIComponent;return e.replace(/<[^<>]+>/g,(e=>\"<version>\"===e?\"3\":\"<apiKey>\"===e?n(t):\"<loaderVersion>\"===e?n(Ue):e))}(String(e),t)))}function h(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;n++){const r=e.charCodeAt(n);if(r>127)return(new TextEncoder).encode(e);t[n]=r}return t}const p=34,_=44,O=58,w=32,I=9,g=13,v=10,m=92,T=48,y=101,A=117,N=69,S=43,D=45,b=46,U=91,P=93,C=123,L=125,M=/*#__PURE__*/new Uint8Array([110,A,108,108]),x=/*#__PURE__*/new Uint8Array([116,114,A,y]),k=/*#__PURE__*/new Uint8Array([102,97,108,115,y]),K={'\"':'\"',\"\\\\\":\"\\\\\",\"\\b\":\"b\",\"\\f\":\"f\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\t\":\"t\"},V=/*#__PURE__*/(()=>{const e=new Uint8Array(128);for(const[t,n]of Object.entries(K))e[n.charCodeAt(0)]=t.charCodeAt(0);return e})(),B=\"Client timeout\",F=\"Network connection error\",G=\"Network request aborted\",j=\"Response cannot be parsed\",$=\"Blocked by CSP\",H=\"The endpoint parameter is not a valid URL\",q=\"Handle on demand agent data error\",X=/*#__PURE__*/_e(\"WrongRegion\"),Y=/*#__PURE__*/_e(\"SubscriptionNotActive\"),W=/*#__PURE__*/_e(\"UnsupportedVersion\"),z=/*#__PURE__*/_e(\"InstallationMethodRestricted\"),J=/*#__PURE__*/_e(\"HostnameRestricted\"),Q=/*#__PURE__*/_e(\"IntegrationFailed\"),Z=/*#__PURE__*/_e(\"NetworkRestricted\"),ee=/*#__PURE__*/_e(\"InvalidProxyIntegrationSecret\"),te=/*#__PURE__*/_e(\"InvalidProxyIntegrationHeaders\"),ne=/*#__PURE__*/_e(\"ProxyIntegrationSecretEnvironmentMismatch\");function re(e,t){return(e-t+256)%256}function oe(e){return function(e,t,n,r){const o=document,i=\"securitypolicyviolation\";let c;const a=t=>{const n=new URL(e,location.href),{blockedURI:r}=t;r!==n.href&&r!==n.protocol.slice(0,-1)&&r!==n.origin||(c=t,s())};o.addEventListener(i,a);const s=()=>o.removeEventListener(i,a);return null==r||r.then(s,s),Promise.resolve().then(t).then((e=>(s(),e)),(e=>new Promise((e=>{const t=new MessageChannel;t.port1.onmessage=()=>e(),t.port2.postMessage(null)})).then((()=>{if(s(),c)return n(c);throw e}))))}(e,(()=>t(e)),(()=>{throw new Error($)})).then(u)}const ie=/The document is sandboxed and lacks the 'allow-same-origin' flag/,ce=/The operation is insecure/,ae=/Forbidden in a sandboxed document without the 'allow-same-origin' flag/;function se(e){const t=location.hostname,n=o();(function(e,t){let n=e.length-(\".\"===e.slice(-1)?1:0);do{if(n=n>0?e.lastIndexOf(\".\",n-1):-1,!0===t(e.slice(n+1)))return!0}while(n>=0);return!1})(t,(r=>{if(!n||!/^([^.]{1,3}\\.)*[^.]+\\.?$/.test(r)||r===t)return e(r)}))||e()}function le(e,t){r(e,e.len+1),e.arr[e.len++]=t}function ue(t){var n,r;const{picked:o,rest:i}=function(e,t){const n={},r={};for(const[o,i]of Object.entries(e))t.includes(o)?n[o]=i:r[o]=i;return{picked:n,rest:r}}(t,[\"scriptUrlPattern\",\"token\",\"apiKey\"]),c=o.token,a=null!==(n=o.apiKey)&&void 0!==n?n:c,s=null!==(r=e(t,\"scriptUrlPattern\"))&&void 0!==r?r:Me.scriptUrl,[l,u]=function(){const e=[],t=()=>{e.push({time:new Date,state:document.visibilityState})},n=(r=document,o=\"visibilitychange\",i=t,r.addEventListener(o,i,c),()=>r.removeEventListener(o,i,c));var r,o,i,c;return t(),[e,n]}();return Promise.resolve().then((()=>{if(!a||\"string\"!=typeof a)throw new Error(we);return function(e,t){const n=[],r=5,[o,i]=function(e){const t=function(e){const t=[...e];return{current:()=>t[0],postpone(){const e=t.shift();void 0!==e&&t.push(e)},exclude(){t.shift()}}}(e),n=function(e,t){let n=0;return()=>Math.random()*Math.min(t,e*Math.pow(2,n++))}(100,3e3),r=new Set;return[t.current(),(e,o)=>{let i;const c=o instanceof Error?o.message:\"\";if(c===$||c===H)t.exclude(),i=0;else if(c===Ce)t.exclude();else if(c===Pe){const n=Date.now()-e.getTime()<50,o=t.current();o&&n&&!r.has(o)&&(r.add(o),i=0),t.postpone()}else t.postpone();const a=t.current();return void 0===a?void 0:[a,null!=i?i:e.getTime()+n()-Date.now()]}]}(e);let c;if(void 0===o)return Promise.reject(new TypeError(\"The list of script URL patterns is empty\"));const a=e=>{const o=new Date,s=t=>n.push({url:e,startedAt:o,finishedAt:new Date,error:t}),l=t(e);return l.then((()=>s()),s),l.catch((e=>{if(null!=c||(c=e),n.length>=r)throw c;const t=i(o,e);if(!t)throw c;const[s,l]=t;return(u=l,new Promise((e=>setTimeout(e,u)))).then((()=>a(s)));var u}))};return a(o).then((e=>[e,n]))}(E(s,a),oe)})).catch((e=>{throw u(),function(e){return e instanceof Error&&e.message===Ce?new Error(Pe):e}(e)})).then((([e,t])=>(u(),e.load({...i,ldi:{attempts:t,visibilityStates:l}}))))}function de(e,t,...n){e&&async function(e,t){try{await e()}catch(n){return console.error(n),t}}((()=>{const r=t(...n);void 0!==r&&e(r)}))}function fe(e){return e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}const Re=[3,13],Ee=[3,14],he=9;function pe(e){if(\"function\"==typeof TextDecoder){const t=(new TextDecoder).decode(e);if(t)return t}const t=fe(e);return decodeURIComponent(escape(String.fromCharCode.apply(null,t)))}function _e(e){let t=\"\";for(let n=0;n<e.length;++n)if(n>0){const r=e[n].toLowerCase();r!==e[n]?t+=` ${r}`:t+=e[n]}else t+=e[n].toUpperCase();return t}const Oe=function(e,t={}){const{storageKey:r=R,do:o}=t;try{const t=function(e){const t=function(e){const t=atob(e),n=t.length,r=new Uint8Array(n);for(let o=0;o<n;o++)r[o]=t.charCodeAt(o);return r}(e);let n=t;try{n=c(t,!1)}catch(r){}try{return i(n)}catch(o){}return null}(e);null!==t?(t.visitorToken&&l(t.visitorToken,`${r}_t`),null==(a=t.notifications)||a.forEach(n),de(o,(()=>({e:25,result:{response:t}})))):de(o,(()=>({e:25,result:{error:new Error(\"Failed to decode response\")}})))}catch(s){throw de(o,(()=>({e:25,result:{error:s instanceof Error?s:new Error(String(s))}}))),function(e,t,n){const r=new Error(e);return void 0!==t&&(r.requestId=t),void 0!==n&&(r.raw=n),r}(q,void 0,s)}var a},we=\"API key required\",Ie=\"API key not found\",ge=\"API key expired\",ve=\"Request cannot be parsed\",me=\"Request failed\",Te=\"Request failed to process\",ye=\"Too many requests, rate limit exceeded\",Ae=\"Not available for this origin\",Ne=\"Not available with restricted header\",Se=we,De=Ie,be=ge;var Ue=\"3.12.9\";const Pe=\"Failed to load the JS script of the agent\",Ce=\"9319\";function Le(e,t){try{document.cookie}catch(n){if(function(e){if(!(e instanceof DOMException))return!1;const t=e.message;return ie.test(t)||ce.test(t)||ae.test(t)}(n))return t;throw n}return e()}const Me={scriptUrl:\"https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js\"},xe=Me.scriptUrl;function ke(e,t){r(e,e.len+t.length),e.arr.set(t,e.len),e.len+=t.length}var Ke={load:ue,defaultScriptUrlPattern:xe,ERROR_SCRIPT_LOAD_FAIL:Pe,ERROR_API_KEY_EXPIRED:ge,ERROR_API_KEY_INVALID:Ie,ERROR_API_KEY_MISSING:we,ERROR_BAD_REQUEST_FORMAT:ve,ERROR_BAD_RESPONSE_FORMAT:j,ERROR_CLIENT_TIMEOUT:B,ERROR_CSP_BLOCK:$,ERROR_FORBIDDEN_ENDPOINT:J,ERROR_FORBIDDEN_HEADER:Ne,ERROR_FORBIDDEN_ORIGIN:Ae,ERROR_GENERAL_SERVER_FAILURE:me,ERROR_HANDLE_AGENT_DATA:q,ERROR_INSTALLATION_METHOD_RESTRICTED:z,ERROR_INTEGRATION_FAILURE:Q,ERROR_INVALID_ENDPOINT:H,ERROR_INVALID_PROXY_INTEGRATION_HEADERS:te,ERROR_INVALID_PROXY_INTEGRATION_SECRET:ee,ERROR_NETWORK_ABORT:G,ERROR_NETWORK_CONNECTION:F,ERROR_NETWORK_RESTRICTED:Z,ERROR_PROXY_INTEGRATION_SECRET_ENVIRONMENT_MISMATCH:ne,ERROR_RATE_LIMIT:ye,ERROR_SERVER_TIMEOUT:Te,ERROR_SUBSCRIPTION_NOT_ACTIVE:Y,ERROR_TOKEN_EXPIRED:be,ERROR_TOKEN_INVALID:De,ERROR_TOKEN_MISSING:Se,ERROR_UNSUPPORTED_VERSION:W,ERROR_WRONG_REGION:X,defaultEndpoint:d,defaultTlsEndpoint:f,handleAgentData:Oe};export{ge as ERROR_API_KEY_EXPIRED,Ie as ERROR_API_KEY_INVALID,we as ERROR_API_KEY_MISSING,ve as ERROR_BAD_REQUEST_FORMAT,j as ERROR_BAD_RESPONSE_FORMAT,B as ERROR_CLIENT_TIMEOUT,$ as ERROR_CSP_BLOCK,J as ERROR_FORBIDDEN_ENDPOINT,Ne as ERROR_FORBIDDEN_HEADER,Ae as ERROR_FORBIDDEN_ORIGIN,me as ERROR_GENERAL_SERVER_FAILURE,q as ERROR_HANDLE_AGENT_DATA,z as ERROR_INSTALLATION_METHOD_RESTRICTED,Q as ERROR_INTEGRATION_FAILURE,H as ERROR_INVALID_ENDPOINT,te as ERROR_INVALID_PROXY_INTEGRATION_HEADERS,ee as ERROR_INVALID_PROXY_INTEGRATION_SECRET,G as ERROR_NETWORK_ABORT,F as ERROR_NETWORK_CONNECTION,Z as ERROR_NETWORK_RESTRICTED,ne as ERROR_PROXY_INTEGRATION_SECRET_ENVIRONMENT_MISMATCH,ye as ERROR_RATE_LIMIT,Pe as ERROR_SCRIPT_LOAD_FAIL,Te as ERROR_SERVER_TIMEOUT,Y as ERROR_SUBSCRIPTION_NOT_ACTIVE,be as ERROR_TOKEN_EXPIRED,De as ERROR_TOKEN_INVALID,Se as ERROR_TOKEN_MISSING,W as ERROR_UNSUPPORTED_VERSION,X as ERROR_WRONG_REGION,Ke as default,d as defaultEndpoint,xe as defaultScriptUrlPattern,f as defaultTlsEndpoint,Oe as handleAgentData,ue as load};\n","import Fingerprint2 from \"fingerprintjs2\";\nimport FingerprintJS from \"@fingerprintjs/fingerprintjs-pro\";\n\nimport { getSafe } from \"@jslib/shared/utils/getSafe\";\nimport { logger } from \"@jslib/shared/utils/logger\";\n\nimport { getOptions } from \"../../options/options\";\nimport { type ProgramTheme } from \"../types/types\";\n\ntype FingerprintProperties = {\n clientId: string;\n workerEndpoint: string;\n scriptUrl: string;\n};\n\n/**\n * @description The user's device fingerprint\n */\nlet fingerprint: string;\n\n/**\n * @description Get the digital fingerprint hash for a user, based on various digital signals.\n * Recommended: call this at least 500ms after page ready\n */\nexport const getFingerprint = async (): Promise<string> => {\n if (!getOptions().useFingerprinting) {\n return Promise.resolve(undefined);\n }\n\n if (fingerprint) {\n return Promise.resolve(fingerprint);\n }\n\n return Fingerprint2.getPromise({}).then((components) => {\n const values = components.map((component) => component.value);\n const murmur = Fingerprint2.x64hash128(values.join(\"\"), 31);\n fingerprint = murmur;\n return fingerprint;\n });\n};\n\n/**\n * @description Gets Fingerprint config from window properties passed in from view-main template.\n * This avoids env specific logic in jslib.\n */\nconst getFingerprintProperties = (): FingerprintProperties => {\n const { clientId, workerEndpoint, scriptUrl } = window.FP || {};\n if (\n !clientId ||\n !scriptUrl ||\n !scriptUrl.match(/^https:\\/\\/worker(-preview)?\\.sheerid\\.com\\//) ||\n !workerEndpoint ||\n !workerEndpoint.match(/^https:\\/\\/worker(-preview)?\\.sheerid\\.com\\//)\n ) {\n throw new Error(\"Fingerprint environment not set properly\");\n }\n\n return { clientId, workerEndpoint, scriptUrl };\n};\n\nlet fpRequestId: string | null = null;\n\nexport const getFingerprintRequestId = (): string | null => fpRequestId;\n\n/**\n * @description Loads the Fingerprint SDK and collects device signals. Returns the requestId\n * so it can be passed as metadata on submit, and saves it for retrieval via\n * getFingerprintRequestId().\n */\nexport const collectFingerprintDeviceData = async (\n programTheme: ProgramTheme,\n verificationId: string,\n): Promise<string | undefined> => {\n if (!getSafe(() => programTheme.fingerprintEnabled, false)) {\n return undefined;\n }\n\n try {\n const { clientId, workerEndpoint, scriptUrl } = getFingerprintProperties();\n\n const fp = await FingerprintJS.load({\n apiKey: clientId,\n endpoint: [workerEndpoint, FingerprintJS.defaultEndpoint],\n scriptUrlPattern: [scriptUrl, FingerprintJS.defaultScriptUrlPattern],\n });\n\n const result = await fp.get({ linkedId: verificationId });\n fpRequestId = result.requestId;\n return result.requestId;\n } catch (error) {\n logger.error(error, \"Failed to collect Fingerprint device data\");\n return undefined;\n }\n};\n","import { logger } from \"@jslib/shared/utils/logger\";\n\nimport { type Metadata } from \"../types/types\";\nimport { setOptions } from \"../../options/options\";\nimport { validateMetadata, ensureMaxMetadataKeyValueLengths } from \"../validators/validators\";\nimport { getQueryParamsFromUrl } from \"../utils/routing/Url\";\nimport { deepClone } from \"../utils/objects\";\n\nconst defaultMetadata: Metadata = {};\nlet metadata: Metadata = { ...defaultMetadata };\n\nexport const getMetadataFromUrl = (paramsFromResponse: string[]) => {\n const paramsFromQuery = getQueryParamsFromUrl();\n const validatedParams = {};\n paramsFromResponse.forEach((element) => {\n if (paramsFromQuery.get(element)) {\n validatedParams[element] = paramsFromQuery.get(element);\n }\n });\n return validatedParams;\n};\n\nexport const setMetadata = (newMetadata: Metadata) => {\n // backwards opt-in metadata key. It is supported now as an Option\n if (newMetadata && newMetadata.hasOwnProperty(\"optin\")) {\n setOptions({\n marketConsent: {\n /* keep metadata optin compatibility as string value. Set true any string but false */\n enabled: newMetadata.optin !== \"false\",\n required: false,\n message: \"\",\n },\n });\n }\n\n const isMetadataValid: boolean = validateMetadata(newMetadata);\n\n if (isMetadataValid) {\n const modifiedMetadata = ensureMaxMetadataKeyValueLengths(newMetadata);\n Object.assign(metadata, modifiedMetadata);\n logger.info(\"Added metadata: \", modifiedMetadata);\n logger.info(\"Full metadata: \", metadata);\n } else {\n logger.error(\"Metadata has not been updated. See previous error(s)\", \"setMetadata\");\n }\n};\n\nexport const resetMetadata = () => {\n metadata = { ...defaultMetadata };\n};\n\nexport const getMetadata = () =>\n Object.keys(metadata).length > 0 ? deepClone(metadata) : undefined;\n","/**\n * TODO - preamble\n */\nimport { logger } from \"@jslib/shared/utils/logger\";\n\nimport { type ViewModel, type VerificationStep } from \"../types/types\";\nimport { getAllEmptyViewModels } from \"../types/empties\";\nimport { assertValidVerificationStepName } from \"../types/assertions\";\n\n/**\n * Return an empty request object as a starting-point for our run-time model\n */\nexport const getEmptyViewModel = (currentStep: VerificationStep): ViewModel => {\n assertValidVerificationStepName(currentStep);\n const emptyViewModel = getAllEmptyViewModels()[currentStep];\n if (!emptyViewModel) {\n logger.log(`Can't find \"empty\" for ${currentStep}`);\n throw new Error(\"Check for missing empties\");\n }\n return emptyViewModel;\n};\n","import produce from \"immer\";\n\nimport {\n type ProgramTheme,\n type WithOrganization,\n type VerificationResponse,\n type ViewModel,\n type PersonalInfoResponse,\n type VerificationStep,\n type PersonalInfoViewModel,\n type DocUploadViewModel,\n type Locale,\n type Country,\n type FieldValidationErrors,\n type ErrorId,\n type FieldId,\n} from \"../types/types\";\nimport { VerificationStepsEnum } from \"../types/runtimeTypes\";\nimport { getEmptyViewModel } from \"../ServerApi/VerificationRequestGetters\";\nimport {\n MAX_DOC_UPLOAD_DOCS_ALLOWED,\n QUERY_STRING_EXTERNAL_USER_ID,\n UPLOAD_FILE_PREFIX,\n} from \"../../constants\";\nimport { deepClone } from \"../utils/objects\";\nimport { getQueryOrOption } from \"../ServerApi/TestingRouteOverrides\";\nimport { initialErrorStructure } from \"../types/empties\";\nimport { getQueryParam } from \"../utils/routing/Url\";\n\n/**\n * @todo needs tests\n * @private\n */\nexport const handleSubmitResponse = (\n verificationResponse: VerificationResponse,\n viewModel: ViewModel,\n programTheme: ProgramTheme,\n): ViewModel => {\n const { currentStep } = verificationResponse;\n let newViewModel: ViewModel;\n\n if (\n currentStep === VerificationStepsEnum.collectMilitaryStatus ||\n currentStep === VerificationStepsEnum.collectActiveMilitaryPersonalInfo ||\n currentStep === VerificationStepsEnum.collectInactiveMilitaryPersonalInfo ||\n currentStep === VerificationStepsEnum.collectMilitaryPersonalInfo\n ) {\n // Single view model across military steps — preserve as-is between renders.\n newViewModel = viewModel;\n } else if (hasFailedInstantMatch(verificationResponse as PersonalInfoResponse)) {\n newViewModel = viewModel;\n } else {\n const { locale } = verificationResponse;\n newViewModel = initViewModel({\n locale,\n previousViewModel: viewModel,\n currentStep,\n externalUserId: getQueryOrOption(QUERY_STRING_EXTERNAL_USER_ID),\n });\n }\n return newViewModel;\n};\n\n/**\n * @private\n */\nexport const hasFailedInstantMatch = (verificationResponse: PersonalInfoResponse): boolean => {\n if (verificationResponse.instantMatchAttempts && verificationResponse.instantMatchAttempts > 0) {\n return true;\n }\n return false;\n};\n\n/**\n * @private\n */\nexport const initViewModel = ({\n previousViewModel,\n currentStep,\n locale,\n fingerprint,\n country,\n externalUserId,\n}: {\n previousViewModel: ViewModel;\n currentStep: VerificationStep;\n locale: Locale;\n fingerprint?: string;\n country?: Country;\n externalUserId?: string;\n}): ViewModel => {\n const viewModel = getEmptyViewModel(currentStep);\n\n // Attempt to bring over any previousViewModel values that apply to the new viewModel\n if (previousViewModel) {\n Object.getOwnPropertyNames(viewModel).forEach((key) => {\n if (previousViewModel.hasOwnProperty(key)) {\n viewModel[key] = previousViewModel[key];\n }\n });\n }\n\n if (viewModel) {\n if (fingerprint) {\n (viewModel as PersonalInfoViewModel).deviceFingerprintHash = fingerprint;\n }\n if (locale) {\n (viewModel as PersonalInfoViewModel).localeChoice = {\n value: locale || \"en-US\",\n label: \"\",\n };\n }\n if (country && \"country\" in viewModel && viewModel.country === undefined) {\n viewModel.country = country;\n }\n if (country && \"countryChoice\" in viewModel && viewModel.countryChoice === undefined) {\n viewModel.countryChoice = {\n value: country,\n label: \"\",\n };\n }\n if (externalUserId) {\n (viewModel as PersonalInfoViewModel).externalUserId = externalUserId;\n }\n }\n\n return viewModel;\n};\n\nexport const clearUploadedFiles = (\n viewModel: DocUploadViewModel,\n): DocUploadViewModel | undefined => {\n if (viewModel) {\n return produce(viewModel, (draft) => {\n for (let i = 1; i <= MAX_DOC_UPLOAD_DOCS_ALLOWED; i += 1) {\n draft[`${UPLOAD_FILE_PREFIX}${i}`] = undefined;\n }\n });\n }\n return undefined;\n};\n\nexport const enhanceOrganizationFromTheme = (viewModel: ViewModel, programTheme: ProgramTheme) => {\n if (\n viewModel &&\n viewModel.hasOwnProperty(\"organization\") &&\n programTheme.config.orgRemoteSource\n ) {\n const cloned: ViewModel = deepClone(viewModel);\n const { organization } = cloned as WithOrganization;\n organization.source = programTheme.config.orgRemoteSource;\n return cloned;\n }\n return viewModel;\n};\n\nexport const determineCountry = (\n verificationResponse: VerificationResponse,\n countries: Country[],\n): Country => {\n if (verificationResponse?.country) return verificationResponse.country;\n\n const defaultCountry = \"US\";\n if (!Array.isArray(countries) || countries.length === 0) return defaultCountry;\n if (countries.length === 1) return countries[0];\n\n const countryQueryParam = getQueryParam(\"country\")?.toUpperCase();\n return countries.find((c) => c === countryQueryParam);\n};\n\nexport const fieldIdErrorMap = new Map<ErrorId, FieldId>([\n [\"invalidFirstName\", \"firstName\"],\n [\"invalidLastName\", \"lastName\"],\n [\"invalidMemberId\", \"memberId\"],\n [\"invalidEmail\", \"email\"],\n [\"invalidPhoneNumber\", \"phoneNumber\"],\n [\"invalidBirthDate\", \"birthDate\"],\n [\"invalidOrganization\", \"organization\"],\n [\"invalidPostalCode\", \"postalCode\"],\n [\"invalidAddress\", \"address1\"],\n [\"invalidCity\", \"city\"],\n [\"invalidCountry\", \"country\"],\n [\"invalidState\", \"state\"],\n [\"invalidActiveDutyStartDate\", \"activeDutyStartDate\"],\n [\"invalidDischargeDate\", \"dischargeDate\"],\n [\"invalidStatus\", \"status\"],\n [\"invalidStatuses\", \"statuses\"],\n [\"invalidSocialSecurityNumber\", \"socialSecurityNumber\"],\n [\"invalidDriverLicenseNumber\", \"driverLicenseNumber\"],\n [\"invalidEbtCardNumber\", \"ebtCardNumber\"],\n [\"invalidOverrideCode\", \"overrideCode\"],\n [\"invalidCvecNumber\", \"cvecNumber\"],\n [\"invalidCaptchaToken\", \"captchaToken\"],\n]);\n\nexport const getServerFieldValidationErrors = (\n serverErrorIds: ErrorId[],\n): FieldValidationErrors => {\n let fieldValidationErrors = deepClone(initialErrorStructure);\n\n serverErrorIds.forEach((serverErrorId: ErrorId) => {\n const fieldId = fieldIdErrorMap.get(serverErrorId);\n if (fieldId) {\n fieldValidationErrors = { ...fieldValidationErrors, [fieldId]: serverErrorId };\n }\n });\n\n return fieldValidationErrors;\n};\n","import { produce } from \"immer\";\nimport { type Dispatch } from \"redux\";\n\nimport { logger } from \"@jslib/shared/utils/logger\";\n\nimport i18next, { logLanguageChangeErrors } from \"@/lib/intl/i18next\";\n\nimport {\n type DatabaseId,\n type VerificationResponse,\n type ViewModel,\n type BoundAction,\n type BoundActionCreator,\n type FieldValidationErrors,\n type VerificationStep,\n type ProgramTheme,\n type Locale,\n type Segment,\n type ProgramThemeMessages,\n type DocUploadViewModel,\n type SetMessagesAction,\n type ProgramThemeAction,\n type VerificationResponseAction,\n type ViewModelAction,\n type IsLoadingAction,\n type FieldValidationErrorsAction,\n type PreviousViewModelAction,\n type PersonalInfoViewModel,\n type Country,\n type WithCoreFields,\n type StringMap,\n type WithLocaleChoiceAndCountryChoice,\n type VerificationServiceAction,\n type RequiredMetadataAndExternalIdCheckAction,\n} from \"../types/types\";\nimport {\n VerificationApiClient,\n getMockVerificationRequestErrorResponse,\n} from \"../ServerApi/VerificationApiClient\";\nimport { hooks } from \"../hooks\";\nimport { getMessages, getLocaleSafely } from \"../intl/intl\";\nimport {\n getThemeMessages,\n getMetadataConfig,\n getConfiguredCountries,\n} from \"../ProgramTheme/programThemeGetters\";\nimport { saveVerificationIdForConversion } from \"../conversion/conversion\";\nimport { scrollToWindowTop } from \"../utils/browser/windowHelpers\";\nimport { getFingerprint, getFingerprintRequestId } from \"../fingerprint/fingerprintUtils\";\nimport { getMetadataFromUrl } from \"../metadata/metadata\";\nimport { isCollectStep } from \"../types/runtimeTypes\";\nimport { getEmptyViewModel } from \"../ServerApi/VerificationRequestGetters\";\nimport { getFieldValidationErrorsEmpty, GetEmptyTheme } from \"../types/empties\";\nimport { closeTabRef } from \"../refs/refs\";\nimport { setGaDimensionTestRequest } from \"../GoogleAnalytics/ga\";\nimport { getQueryOrOption } from \"../ServerApi/TestingRouteOverrides\";\nimport { QUERY_STRING_EXTERNAL_USER_ID } from \"../../constants\";\nimport { getOptions, setOptions } from \"../../options/options\";\nimport { setProgramBaseline } from \"../state/programStore\";\nimport { getVerificationIdFromQueryString } from \"../utils/routing/Url\";\n\nimport {\n handleSubmitResponse,\n initViewModel,\n clearUploadedFiles,\n enhanceOrganizationFromTheme,\n determineCountry,\n getServerFieldValidationErrors,\n} from \"./VerificationServiceHelpers\";\nimport { type ViewModelUpdateOptions } from \"./ViewModel\";\n\n/**\n * @description Start a new verification \"flow\"\n * @param dispatch Redux action dispatch\n */\nexport const createFetchNewVerificationRequest =\n (dispatch: Dispatch) =>\n async <T extends ViewModel = ViewModel>(\n programId: DatabaseId,\n segment: Segment,\n previousViewModel?: T,\n trackingId?: string,\n forceNewVerificationRequest?: boolean,\n ) => {\n dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: true });\n try {\n const verificationResponsePromise = VerificationApiClient.fetchNewVerificationRequest(\n programId,\n trackingId,\n forceNewVerificationRequest,\n );\n return createFetchVerificationRequest({\n dispatch,\n verificationResponsePromise,\n programId,\n segment,\n previousViewModel,\n // we always fetch a \"new\" verification request. And if there's an\n // existing verification ID that's hidden in the above promise. So we\n // check again and pass it through here if there is one. Which allows\n // this function to treat new and existing requests differently.\n // TODO: refactor ALL of this.\n verificationId:\n getOptions().verificationId || getVerificationIdFromQueryString(window.location.search),\n });\n } catch (e) {\n logger.error(e, \"fetchNewVerificationRequest\");\n }\n };\n\n/**\n * @description Provided with a verificationId, continue verifying someone.\n * @param dispatch Redux action dispatch\n */\nexport const createFetchExistingVerificationRequest: BoundActionCreator =\n (dispatch: Dispatch): BoundAction =>\n async (\n programId: DatabaseId,\n verificationId: string,\n previousVerificationResponse?: VerificationResponse,\n previousViewModel?: ViewModel,\n needsLoading: boolean = true,\n ) => {\n if (needsLoading) dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: true });\n\n try {\n const verificationResponsePromise =\n VerificationApiClient.fetchExistingVerificationRequest(verificationId);\n return createFetchVerificationRequest({\n dispatch,\n verificationResponsePromise,\n programId,\n previousViewModel,\n previousVerificationResponse,\n verificationId,\n });\n } catch (e) {\n logger.error(e, \"fetchExistingVerificationRequest\");\n }\n };\n\nexport const segmentChanged = (currentSegment: Segment, nextSegment: Segment): boolean => {\n if (!nextSegment) {\n return false;\n }\n return !!(currentSegment && currentSegment !== nextSegment);\n};\n\nexport const currentStepChanged = (\n previousVerificationResponse: VerificationResponse,\n verificationResponse: VerificationResponse,\n): boolean =>\n !previousVerificationResponse ||\n previousVerificationResponse.currentStep !== verificationResponse.currentStep;\n\n/**\n * @description Await several items (new/existing verification request, program theme, etc) then update central state (redux).\n * Timing and order is very important within this function as it is bootstrapping most of the application.\n *\n * @param dispatch Redux action dispatch\n * @param verificationResponsePromise Either a new or existing verification server request.\n * @param programId\n * @param previousViewModel Optional\n * @private\n */\nexport const createFetchVerificationRequest = async ({\n dispatch,\n verificationResponsePromise,\n programId,\n segment,\n previousViewModel,\n previousVerificationResponse,\n verificationId,\n}: {\n dispatch: Dispatch;\n programId: DatabaseId;\n verificationResponsePromise: Promise<VerificationResponse>;\n segment?: Segment;\n previousViewModel?: ViewModel;\n previousVerificationResponse?: VerificationResponse;\n verificationId?: string;\n}): Promise<any> => {\n try {\n const fingerprintPromise: Promise<string> = getFingerprint();\n let verificationResponse: VerificationResponse;\n let programTheme: ProgramTheme;\n let locale: Locale;\n try {\n if (verificationId) {\n try {\n // when there's an existing verification ID we need to fetch the\n // response before the theme to ensure the correct locale.\n verificationResponse = await verificationResponsePromise;\n logger.info(\"verificationResponse received: \", verificationResponse);\n locale = getLocaleSafely(previousViewModel, verificationResponse);\n } finally {\n // fetch program theme data even if we fail to fetch an existing verification\n // response, partly to provide customCss to the error step.\n programTheme = await VerificationApiClient.fetchProgramTheme(programId, locale);\n }\n } else {\n // otherwise we can do them in parallel\n locale = getLocaleSafely(previousViewModel);\n [verificationResponse, programTheme] = await Promise.all([\n verificationResponsePromise,\n VerificationApiClient.fetchProgramTheme(programId, locale),\n ]);\n logger.info(\"verificationResponse received: \", verificationResponse);\n }\n } catch (error) {\n logger.error(error, \"verificationResponse\");\n verificationResponse = getMockVerificationRequestErrorResponse(error.message);\n locale = getLocaleSafely(previousViewModel, verificationResponse);\n programTheme = programTheme || GetEmptyTheme();\n }\n\n const nextSegment = verificationResponse.segment;\n const previousSegment = previousVerificationResponse?.segment || segment;\n const themeMessages: ProgramThemeMessages = getThemeMessages(programTheme);\n\n // Load messages resource bundle to i18next \"theme\" namespace. Move this to\n // i18next `resourcesToBackend` function definition, once moved to localization service\n i18next.addResourceBundle(locale, \"theme\", themeMessages, false, true);\n\n if (i18next.language !== locale) {\n logger.info(\n `createFetchVerificationRequest: change language from \"${i18next.language}\" to \"${locale}\"`,\n );\n await i18next.changeLanguage(locale, logLanguageChangeErrors);\n }\n\n const messagesPromise: Promise<StringMap> = getMessages(\n locale,\n themeMessages,\n verificationResponse.segment,\n );\n\n let updatedPreviousViewModel = clearUploadedFiles(previousViewModel as DocUploadViewModel); // Need to remove the file elements from state since deepClone cannot clone them\n\n if (segmentChanged(previousSegment, nextSegment)) {\n logger.info(\"segment changed: \", previousSegment, nextSegment);\n await doViewModelReset(dispatch)(verificationResponse);\n updatedPreviousViewModel = undefined;\n }\n\n const fingerprint = await fingerprintPromise;\n const { currentStep } = verificationResponse;\n const countries: Country[] = getConfiguredCountries(programTheme);\n const country: Country = determineCountry(verificationResponse, countries);\n let viewModel = initViewModel({\n currentStep,\n fingerprint,\n locale,\n country,\n previousViewModel: updatedPreviousViewModel,\n externalUserId: getQueryOrOption(QUERY_STRING_EXTERNAL_USER_ID),\n });\n viewModel = enhanceOrganizationFromTheme(viewModel, programTheme);\n\n if (currentStepChanged(previousVerificationResponse, verificationResponse)) {\n if (\n previousVerificationResponse &&\n previousVerificationResponse.currentStep === \"sso\" &&\n verificationResponse.currentStep !== \"sso\" &&\n verificationResponse.currentStep !== \"pending\"\n ) {\n // PROM-773 since we're no-longer on step sso (here in tab1), close the sso tab (tab2) we opened previously\n closeTabRef();\n }\n }\n\n saveVerificationIdForConversion(verificationResponse.verificationId);\n\n if (viewModel && viewModel.hasOwnProperty(\"metadata\")) {\n (viewModel as PersonalInfoViewModel).metadata = {\n ...(viewModel as PersonalInfoViewModel).metadata,\n ...getMetadataFromUrl(getMetadataConfig(programTheme).keys),\n };\n }\n\n const messages: StringMap = await messagesPromise;\n\n setProgramBaseline(programTheme);\n\n return Promise.all([\n dispatch<VerificationResponseAction>({ verificationResponse, type: \"VERIFICATION_RESPONSE\" }),\n dispatch<ViewModelAction>({ viewModel, type: \"VIEW_MODEL\" }),\n dispatch<ProgramThemeAction>({ programTheme, type: \"PROGRAM_THEME\" }),\n dispatch<SetMessagesAction>({ messages, type: \"SET_MESSAGES\" }),\n dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: false }),\n dispatch<RequiredMetadataAndExternalIdCheckAction>({\n type: \"REQUIRED_METADATA_AND_EXTERNAL_ID_CHECK\",\n }),\n ])\n .then(() => {\n hooks.emit(\"ON_VERIFICATION_READY\", verificationResponse);\n // This hook is a special case\n // Do not call this hook again after the page has initially loaded, such as pending step's polling behavior\n hooks.off(\"ON_VERIFICATION_READY\");\n })\n .catch((reason) => {\n logger.error(reason, \"createFetchVerificationRequest promises\");\n });\n } catch (e) {\n logger.error(e, \"createFetchVerificationRequest\");\n throw e;\n }\n};\n\n/**\n * @description Action creator to update the view model in redux.\n * @param dispatch\n */\nexport const createUpdateViewModel: BoundActionCreator =\n (dispatch: Dispatch): BoundAction =>\n async (viewModel: ViewModel, options: Partial<ViewModelUpdateOptions>) => {\n const { partial = false, metadataCheck = false, externalUserIdCheck = false } = options || {};\n const promises: VerificationServiceAction[] = [\n dispatch<ViewModelAction>({\n viewModel,\n type: \"VIEW_MODEL\",\n partial,\n }),\n ];\n if (metadataCheck || externalUserIdCheck) {\n promises.push(\n dispatch<RequiredMetadataAndExternalIdCheckAction>({\n type: \"REQUIRED_METADATA_AND_EXTERNAL_ID_CHECK\",\n }),\n );\n }\n\n return Promise.all(promises);\n };\n\ntype CreateUpdateProps = (dispatch: Dispatch, programId: DatabaseId) => BoundAction;\nexport const createUpdateLocale: CreateUpdateProps =\n (dispatch: Dispatch, programId): BoundAction =>\n async (locale: Locale, segment: Segment): Promise<object> => {\n dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: true });\n const newProgramTheme: ProgramTheme = await VerificationApiClient.fetchProgramTheme(\n programId,\n locale,\n );\n const partialVm: Partial<WithLocaleChoiceAndCountryChoice> = {\n localeChoice: { value: locale, label: locale },\n };\n setOptions({ locale });\n\n const themeMessages: ProgramThemeMessages = getThemeMessages(newProgramTheme);\n\n // Load messages resource bundle to i18next \"theme\" namespace. Move this to\n // i18n `resourcesToBackend` function definition, once moved to localization service\n i18next.addResourceBundle(locale, \"theme\", themeMessages, false, true);\n\n await i18next.changeLanguage(locale, logLanguageChangeErrors);\n\n hooks.emit(\"ON_FORM_LOCALE_CHANGE\", locale);\n return getMessages(locale, themeMessages, segment).then((messages: StringMap) =>\n Promise.all([\n dispatch<SetMessagesAction>({ messages, type: \"SET_MESSAGES\" }),\n dispatch<ViewModelAction>({ viewModel: partialVm, type: \"VIEW_MODEL\", partial: true }),\n dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: false }),\n ]),\n );\n };\n\n/**\n * @description Action creator to update the program theme in redux.\n * @param dispatch\n */\nexport const createUpdateProgramTheme: BoundActionCreator =\n (dispatch: Dispatch): BoundAction =>\n async (programTheme: ProgramTheme, partial: boolean = false) => {\n const themeMessages = getThemeMessages(programTheme);\n if (programTheme.intl && programTheme.intl.locale && programTheme.intl.messages) {\n i18next.addResourceBundle(programTheme.intl.locale, \"theme\", themeMessages, false, true);\n }\n return dispatch<ProgramThemeAction>({ programTheme, type: \"PROGRAM_THEME\", partial });\n };\n\n/**\n * @description Perform a full reset of the in-memory state\n * Useful to fully reset the form and start over again, similar to a page refresh.\n */\nexport const createResetState =\n (dispatch: Dispatch): BoundAction =>\n async () =>\n dispatch({ type: \"RESET_STATE\" });\n\n/**\n * @description Action creator to update the field validation errors, which are those that are shown to a user as they fill-in the HTML form.\n * @param dispatch\n */\nexport const createUpdateFieldValidationErrors: BoundActionCreator =\n (dispatch: Dispatch): BoundAction =>\n async (fieldValidationErrors: FieldValidationErrors) =>\n dispatch<FieldValidationErrorsAction>({\n type: \"FIELD_VALIDATION_ERRORS\",\n fieldValidationErrors,\n });\n\n/**\n * @description Action creator to submit a step to the backend REST API\n * @param dispatch\n */\ntype CreateSubmitStepProps = (dispatch: Dispatch, programTheme: ProgramTheme) => BoundAction;\nexport const createSubmitStep: CreateSubmitStepProps =\n (dispatch: Dispatch, programTheme: ProgramTheme): BoundAction =>\n async (\n stepName: VerificationStep,\n viewModel: ViewModel,\n previousResponse: VerificationResponse,\n ) => {\n logger.log(`submitStep(): submitting stepName ${stepName}, viewModel:`, viewModel);\n scrollToWindowTop();\n dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: true, loadingStep: stepName });\n logger.info(`submitting step ${stepName}`, viewModel);\n\n setGaDimensionTestRequest(viewModel as WithCoreFields);\n\n let submittedViewModel = viewModel;\n const fpSessionId = getFingerprintRequestId();\n if (isCollectStep(stepName) && fpSessionId) {\n submittedViewModel = produce(viewModel, (draft) => {\n if (!draft.metadata) {\n draft.metadata = {};\n }\n draft.metadata.fpSessionId = fpSessionId;\n });\n }\n\n const verificationResponse: VerificationResponse = await VerificationApiClient.submitStep(\n stepName,\n previousResponse,\n submittedViewModel,\n );\n const newViewModel = handleSubmitResponse(\n verificationResponse,\n submittedViewModel,\n programTheme,\n );\n\n const promiseVerificationResponse = dispatch<VerificationResponseAction>({\n verificationResponse,\n type: \"VERIFICATION_RESPONSE\",\n });\n const promiseViewModel = dispatch<ViewModelAction>({\n viewModel: newViewModel,\n type: \"VIEW_MODEL\",\n });\n\n if (\n isCollectStep(verificationResponse.currentStep) &&\n verificationResponse?.errorIds?.length !== 0\n ) {\n const fieldValidationErrors: FieldValidationErrors = getServerFieldValidationErrors(\n verificationResponse.errorIds,\n );\n\n dispatch<FieldValidationErrorsAction>({\n type: \"FIELD_VALIDATION_ERRORS\",\n fieldValidationErrors,\n });\n }\n\n const promiseIsLoading = dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: false });\n\n return Promise.all([promiseVerificationResponse, promiseViewModel, promiseIsLoading]);\n };\n\n/**\n * Perform the actual viewModel reset actions\n * @private\n */\nexport const doViewModelReset =\n (dispatch: Dispatch) =>\n (verificationResponse: VerificationResponse): Promise<any> =>\n Promise.all([\n dispatch<ViewModelAction>({\n type: \"VIEW_MODEL\",\n viewModel: getEmptyViewModel(verificationResponse.currentStep),\n }),\n dispatch<PreviousViewModelAction>({\n type: \"PREVIOUS_VIEW_MODEL\",\n previousViewModel: undefined,\n }),\n dispatch<FieldValidationErrorsAction>({\n type: \"FIELD_VALIDATION_ERRORS\",\n fieldValidationErrors: getFieldValidationErrorsEmpty(),\n }),\n ]);\n","import { isCollectStep } from \"@jslib/shared/runtimeTypes\";\n\nimport Message from \"@components/Message\";\n\nimport { useProgramTheme, useVerificationResponse } from \"@/lib/state/contextHooks\";\n\nimport { isCaptchaEnabled } from \"@/lib/ProgramTheme/programThemeGetters\";\n\nconst FooterText = () => {\n const { currentStep } = useVerificationResponse();\n const programTheme = useProgramTheme();\n const captchaEnabled = isCaptchaEnabled(programTheme);\n\n const footerClassName = \"sid-footer__text\";\n\n return (\n <div className={footerClassName}>\n {/**\n * By passing currentStep into the Translation, we enable the potential of\n * step specific overrides e.g. footerText_docUpload, while also only needing to\n * maintain a single default message.\n */}\n <Message id=\"footerText\" context={currentStep} />\n\n {captchaEnabled && isCollectStep(currentStep) && (\n <p className=\"sid-footer__captcha-text\">\n <Message id=\"captchaFooterText\" />\n </p>\n )}\n </div>\n );\n};\n\nexport { FooterText };\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","import { QUERY_STRING_EXTERNAL_USER_ID } from \"@/constants\";\n\nimport {\n type ReduxState,\n type PersonalInfoViewModel,\n type Metadata,\n type VerificationResponse,\n type VerificationServiceAction,\n type ViewModel,\n type MetadataConfig,\n type ProgramTheme,\n type FieldId,\n} from \"../types/types\";\nimport { getFieldValidationErrorsEmpty } from \"../types/empties\";\nimport { VerificationStepsEnum, isCollectStep } from \"../types/runtimeTypes\";\nimport { setMetadata, getMetadata } from \"../metadata/metadata\";\nimport { deepClone, deepMerge } from \"../utils/objects\";\nimport {\n recordVerificationResponse,\n setUserDimension,\n isTestValues,\n CustomDimensionNames,\n} from \"../GoogleAnalytics/ga\";\nimport { getMetadataConfig } from \"../ProgramTheme/programThemeGetters\";\nimport { getQueryOrOption, isMockedStep } from \"../ServerApi/TestingRouteOverrides\";\n\nconst allFields = [\n \"activeDutyStartDate\",\n \"address1\",\n \"birthDate\",\n \"city\",\n \"country\",\n \"cvecNumber\",\n \"dischargeDate\",\n \"driverLicenseNumber\",\n \"ebtCardNumber\",\n \"email\",\n \"firstName\",\n \"lastName\",\n \"marketConsentValue\",\n \"memberId\",\n \"phoneNumber\",\n \"postalCode\",\n \"socialSecurityNumber\",\n \"state\",\n \"status\",\n \"statuses\",\n];\n\n/**\n * The initial state of the verification service.\n */\nconst initialState: ReduxState = Object.freeze({\n programId: undefined,\n programTheme: undefined,\n isLoading: true,\n isErrored: false,\n viewModel: undefined,\n previousViewModel: undefined,\n previousVerificationResponse: undefined,\n verificationResponse: undefined,\n fieldValidationErrors: getFieldValidationErrorsEmpty(),\n messages: undefined,\n orgList: undefined,\n});\n\nconst getInitialState = () => deepClone(initialState);\n\n/**\n * @description Most of the state for the VerificationService\n * @example as a user fills-in the HTML form, we can track the data entered here in the view model.\n * @param state\n * @param action\n */\nexport const verificationServiceReducer = (\n state: ReduxState = getInitialState(),\n action: VerificationServiceAction,\n): ReduxState => {\n switch (action.type) {\n case \"PROGRAM_ID\":\n setUserDimension(CustomDimensionNames.programId, action.programId);\n return {\n ...state,\n programId: action.programId,\n };\n case \"VERIFICATION_RESPONSE\":\n let previousVerificationResponse: VerificationResponse;\n if (\n state.verificationResponse &&\n (state.verificationResponse.currentStep === VerificationStepsEnum.collectMilitaryStatus ||\n state.verificationResponse.currentStep === VerificationStepsEnum.sso ||\n state.verificationResponse.currentStep === VerificationStepsEnum.docUpload)\n ) {\n previousVerificationResponse = state.verificationResponse;\n } else if (state.previousVerificationResponse) {\n previousVerificationResponse = state.previousVerificationResponse;\n } else {\n previousVerificationResponse = state.verificationResponse;\n }\n\n recordVerificationResponse(action.verificationResponse);\n\n return {\n ...state,\n previousVerificationResponse,\n // When we get a verificationResponse, hold on to the last viewModel\n // before re-render, in case it needs to be referenced in the new step:\n previousViewModel: state.viewModel,\n verificationResponse: action.verificationResponse,\n };\n case \"SET_MESSAGES\":\n return {\n ...state,\n messages: action.messages,\n };\n case \"FIELD_VALIDATION_ERRORS\":\n return {\n ...state,\n fieldValidationErrors: action.fieldValidationErrors,\n };\n case \"VIEW_MODEL\":\n const newState = { ...state } satisfies ReduxState;\n\n if (action.viewModel) {\n if (action.partial) {\n // New functionality: action.viewModel can be a sparse object. Bring along all previous viewModel\n // This allows devs to set just one field, like firstName, without supplying the rest of the viewModel object\n newState.viewModel = deepMerge({}, state.viewModel, action.viewModel) as ViewModel;\n } else {\n // Existing functionality: replace viewModel object. Leave here for backwards compatibility.\n // WARNING - this is not a deep clone!\n newState.viewModel = { ...action.viewModel } as ViewModel;\n }\n }\n\n if (action.viewModel && action.viewModel.metadata) {\n setMetadata(action.viewModel.metadata);\n const metadata: Metadata = getMetadata();\n (newState.viewModel as PersonalInfoViewModel).metadata = metadata;\n }\n\n return newState;\n case \"PREVIOUS_VIEW_MODEL\":\n return {\n ...state,\n previousViewModel: action.previousViewModel,\n };\n case \"PROGRAM_THEME\":\n setUserDimension(\n CustomDimensionNames.testMode,\n action.programTheme.isTestMode ? isTestValues.TRUE : isTestValues.FALSE,\n );\n\n if (action.partial) {\n return {\n ...state,\n programTheme: deepMerge({}, state.programTheme, action.programTheme) as ProgramTheme,\n };\n }\n\n return {\n ...state,\n programTheme: action.programTheme,\n };\n\n case \"REQUIRED_METADATA_AND_EXTERNAL_ID_CHECK\": {\n if (!isCollectStep(state.verificationResponse.currentStep) || isMockedStep()) {\n return state;\n }\n\n const metadataConfig: MetadataConfig = getMetadataConfig(state.programTheme);\n const metadata: Metadata = getMetadata();\n const isExternalUserIdRequired = state.programTheme.externalUserIdRequired;\n const hasMissingMetadata =\n metadataConfig.enabled &&\n !(metadataConfig.requiredKeys || []).every((k) => metadata.hasOwnProperty(k));\n\n const isMissingExternalId =\n isExternalUserIdRequired && !getQueryOrOption(QUERY_STRING_EXTERNAL_USER_ID);\n\n const getOverrideStep = () => {\n if (hasMissingMetadata) {\n return \"missingRequiredMetadata\";\n }\n if (isMissingExternalId) {\n return \"missingRequiredExternalId\";\n }\n return undefined;\n };\n\n const overrideStep = getOverrideStep();\n\n return {\n ...state,\n overrideStep,\n };\n }\n\n case \"IS_LOADING\":\n return {\n ...state,\n isLoading: action.isLoading,\n loadingStep: action.isLoading ? action.loadingStep : undefined,\n };\n case \"IS_ERRORED\":\n return {\n ...state,\n isErrored: action.isErrored,\n };\n case \"RESET_STATE\":\n return {\n ...deepClone(getInitialState()),\n programId: state.programId,\n };\n case \"COLLECT_FIELDS\": {\n const requiredFieldKeys = action.requiredFields.map((field) => field.key);\n\n // if smsloop is enabled or country is \"US\", add phoneNumber to requiredFieldKeys\n if (\n (state.programTheme.smsLoopEnabled ||\n // @ts-ignore - initially it's country not countryChoice\n state.viewModel?.country === \"US\" ||\n state.viewModel.countryChoice?.value === \"US\") && // use countryChoice if available\n !requiredFieldKeys.includes(\"phoneNumber\")\n ) {\n requiredFieldKeys.push(\"phoneNumber\");\n }\n\n // status is always required on medical forms.\n if (state.verificationResponse.segment === \"medical\") {\n requiredFieldKeys.push(\"status\");\n }\n\n const optionalFieldKeys = (action.optionalFields || []).map((field) => field.key);\n\n // Only fields the endpoint reports as neither required nor optional go\n // unvalidated. Optional fields are still validated once the consumer\n // fills them in. This deliberately does not touch\n // fieldsToSkipValidation, which the step components own.\n const serverUnvalidatedFields = allFields.filter(\n (fieldId) =>\n !requiredFieldKeys.includes(fieldId as FieldId) &&\n !optionalFieldKeys.includes(fieldId as FieldId),\n );\n\n return {\n ...state,\n viewModel: {\n ...state.viewModel,\n serverUnvalidatedFields: serverUnvalidatedFields as FieldId[],\n } as ViewModel,\n };\n }\n case \"STATUS_INVALIDATED\": {\n const viewModel = { ...state.viewModel };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (\"statuses\" in viewModel) (viewModel as any).statuses = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (\"status\" in viewModel) (viewModel as any).status = \"\";\n\n const fieldValidationErrors = {\n ...state.fieldValidationErrors,\n status: undefined,\n statuses: undefined,\n };\n\n return { ...state, viewModel, fieldValidationErrors };\n }\n case \"FORCE_UPDATE\":\n return deepClone(state);\n default:\n return state;\n }\n};\n","import { type Middleware, type Dispatch } from \"redux\";\n\nimport { hooks } from \"@/lib/hooks\";\nimport { currentStepChanged } from \"@/lib/VerificationService/VerificationServiceActions\";\nimport { isSuccessResponse } from \"@/lib/types/runtimeTypes\";\nimport { type VerificationServiceValues, type VerificationServiceAction } from \"@/lib/types/types\";\n\nexport const verificationStoreMiddleware: Middleware<\n undefined,\n VerificationServiceValues,\n Dispatch<VerificationServiceAction>\n> = (store) => (next) => (action: VerificationServiceAction) => {\n // 1. Capture state before the reducer runs\n const prevState = store.getState();\n\n // 2. Let the reducer process the action\n const result = next(action);\n\n // 3. Capture state after the reducer runs\n const nextState = store.getState();\n\n // 4. Perform side effects based on state changes\n if (action.type === \"VERIFICATION_RESPONSE\") {\n const { verificationResponse: prevResponse } = prevState;\n const { verificationResponse: nextResponse } = nextState;\n\n if (nextResponse && currentStepChanged(prevResponse, nextResponse)) {\n queueMicrotask(() => {\n if (isSuccessResponse(nextResponse)) {\n hooks.emit(\"ON_VERIFICATION_SUCCESS\", nextResponse);\n }\n hooks.emit(\"ON_VERIFICATION_STEP_CHANGE\", nextResponse);\n });\n }\n }\n\n return result;\n};\n","import { createStore, applyMiddleware, compose } from \"redux\";\n\nimport { logger } from \"@jslib/shared/utils/logger\";\nimport { getSafe } from \"@jslib/shared/utils/getSafe\";\n\nimport {\n type ReduxState,\n type VerificationResponseAction,\n type VerificationServiceAction,\n type VerificationStore,\n} from \"../types/types\";\nimport { getOptions } from \"../../options/options\";\n\nimport { verificationServiceReducer } from \"./verificationServiceReducer\";\nimport { verificationStoreMiddleware } from \"./VerificationServiceStoreMiddleware\";\n\nlet store: VerificationStore;\n\nexport const getStore = (): VerificationStore => {\n if (!store) {\n const composeEnhancers =\n // @ts-expect-error There's no type expansion on window for Redux DevTools.\n (typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose;\n\n store = createStore<ReduxState, VerificationServiceAction, void, void>(\n verificationServiceReducer,\n composeEnhancers(applyMiddleware(verificationStoreMiddleware)),\n );\n logger.init(() => {\n const state = store.getState();\n const errorIds = getSafe(() => state.verificationResponse.errorIds);\n return {\n programId: getSafe(() => state.programId),\n isLoading: getSafe(() => state.isLoading),\n isErrored: getSafe(() => state.isErrored),\n errorIdsFromVerRsp: Array.isArray(errorIds) ? errorIds.join(\", \") : undefined,\n verificationId: getSafe(() => state.verificationResponse.verificationId),\n currentStep: getSafe(() => state.verificationResponse.currentStep),\n locale: getSafe(() => state.programTheme.intl.locale),\n isTestMode: getSafe(() => state.programTheme.isTestMode),\n openOrgSearchEnabled: getSafe(() => state.programTheme.openOrgSearchEnabled),\n /** @deprecated : Remove once NR has been updated to use clientVersion (HC-1665) */\n jslibVerActual: getSafe(() => process.env.NEXT_VERSION, \"?\"),\n clientVersion: getSafe(() => process.env.NEXT_VERSION, \"?\"),\n };\n });\n }\n\n return store;\n};\n\nexport const resetStore = () => getStore().dispatch({ type: \"RESET_STATE\" });\n\nexport const refreshStore = (): void => {\n // This prompts the form to re-render which it otherwise wouldn't because a new verification is requested only on mount\n if (getOptions().mockResponse) {\n getStore().dispatch<VerificationResponseAction>({\n verificationResponse: getOptions().mockResponse,\n type: \"VERIFICATION_RESPONSE\",\n });\n }\n getStore().dispatch({ type: \"FORCE_UPDATE\" });\n};\n","import { logger } from \"@jslib/shared/utils/logger\";\nimport { getSafe } from \"@jslib/shared/utils/getSafe\";\n\nimport {\n type ViewModel,\n type ReduxState,\n type WithLocaleChoiceAndCountryChoice,\n type VerificationResponse,\n} from \"../types/types\";\nimport { addHook } from \"../hooks\";\nimport { deepClone } from \"../utils/objects\";\nimport { setOptions } from \"../../options/options\";\n\nimport { getStore } from \"./VerificationServiceStore\";\nimport { createUpdateViewModel, doViewModelReset } from \"./VerificationServiceActions\";\n\nconst store = getStore();\n\nexport type ViewModelUpdateOptions = {\n partial: boolean;\n metadataCheck: boolean;\n externalUserIdCheck: boolean;\n};\n\n/**\n * @description Set the viewModel for the form or reset it by passing an empty object\n */\nexport const setViewModel = (\n newViewModel: ViewModel | {},\n options?: Partial<ViewModelUpdateOptions>,\n) => {\n const state: ReduxState = store.getState();\n const { partial = true, metadataCheck = false, externalUserIdCheck = false } = options || {};\n const doSet = () => {\n const updatedViewModel = deepClone(newViewModel);\n logger.info(\"Setting viewModel\", updatedViewModel);\n createUpdateViewModel(store.dispatch)(updatedViewModel, {\n partial,\n metadataCheck,\n externalUserIdCheck,\n });\n };\n\n // The viewModel may not be set until later, and default messages may fail to load\n // so re-use setOptions to make sure we know about the desire to use this locale\n const locale = getSafe(\n () => (newViewModel as WithLocaleChoiceAndCountryChoice).localeChoice.value,\n );\n if (locale) {\n setOptions({ locale });\n }\n\n if (state.isLoading) {\n addHook({\n name: \"ON_VERIFICATION_READY\",\n callback: () => {\n doSet();\n },\n });\n } else {\n doSet();\n }\n};\n\n/**\n * Schedule, or immediately perform a viewModel reset.\n * Resets fieldValidationErrors and previousViewModel as well.\n * @todo Return promise\n */\nexport const resetViewModel = () => {\n const state: ReduxState = store.getState();\n\n if (state.isLoading) {\n addHook({\n name: \"ON_VERIFICATION_READY\",\n callback: (verificationResponse: VerificationResponse) => {\n doViewModelReset(store.dispatch)(verificationResponse);\n },\n });\n } else {\n doViewModelReset(store.dispatch)(state.verificationResponse);\n }\n};\n","/* eslint-disable react/no-unstable-nested-components */\n/* this linter is causing false positives in this file because of how the tag\n * replacers are being created. Hopefully the problem will go away when we get\n * away from super old react-intl\n */\nimport React from \"react\";\n\nimport { FooterText } from \"@components/FormFooter/FooterTextComponent\";\n\nimport { useViewModel } from \"@/lib/state/contextHooks\";\nimport { getLocaleSafely } from \"@/lib/intl/intl\";\nimport { setViewModel } from \"@/lib/VerificationService/ViewModel\";\nimport { type VerificationService } from \"@/lib/types/types\";\n\nimport { useFlag } from \"../FeatureFlags/hooks\";\nexport interface FormFooterProps {\n verificationService?: VerificationService;\n children?: React.ReactNode;\n showShield?: boolean;\n}\n\nexport const FormFooterComponent = ({ children, showShield = false }: FormFooterProps) => {\n const viewModel = useViewModel();\n const locale = getLocaleSafely(viewModel);\n const privacyPolicyRef = React.useRef<any>({});\n const shouldHideIcon = useFlag(\"hc-my-sheer-id-theme-builder\");\n\n // Store the footer message that the user was shown when the user submitted\n React.useEffect(() => {\n if (!privacyPolicyRef.current) {\n return;\n }\n const privacyPolicyText = privacyPolicyRef.current.textContent;\n const updatedViewModel = { metadata: { submissionOptIn: privacyPolicyText } };\n setViewModel(updatedViewModel);\n }, [privacyPolicyRef, locale]);\n\n return (\n <div className=\"sid-footer sid-h-small-text sid-l-space-top-md\" role=\"contentinfo\">\n {(showShield || !children) && !shouldHideIcon && (\n <div className=\"sid-footer__shield\">\n <img\n alt=\"\"\n src=\"https://assets-resources.sheerid.com/common/images/2018/icons/shield-check.svg\"\n />\n </div>\n )}\n <div>\n <div className=\"sid-footer__one\" ref={privacyPolicyRef}>\n {children || <FooterText />}\n </div>\n </div>\n </div>\n );\n};\n"],"x_google_ignoreList":[3,4,11,12,13,14,15,16],"mappings":"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"}
1
+ {"version":3,"file":"FormFooterComponent-C2k9WZOp.js","names":["_objectSpread"],"sources":["../../src/lib/frames/postMessageFromIframe.ts","../../src/lib/hooks/index.ts","../../src/lib/utils/browser/windowHelpers.ts","../../../node_modules/fingerprintjs2/fingerprint2.js","../../../node_modules/@fingerprintjs/fingerprintjs-pro/dist/fp.esm.min.js","../../src/lib/fingerprint/fingerprintUtils.ts","../../src/lib/metadata/metadata.ts","../../src/lib/ServerApi/VerificationRequestGetters.ts","../../src/lib/VerificationService/VerificationServiceHelpers.ts","../../src/lib/VerificationService/VerificationServiceActions.ts","../../src/components/FormFooter/FooterTextComponent.tsx","../../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../../../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../../../node_modules/redux/es/redux.js","../../src/lib/VerificationService/verificationServiceReducer.ts","../../src/lib/VerificationService/VerificationServiceStoreMiddleware.ts","../../src/lib/VerificationService/VerificationServiceStore.ts","../../src/lib/VerificationService/ViewModel.ts","../../src/components/FormFooter/FormFooterComponent.tsx"],"sourcesContent":["import { type PostMessageAction, type PostMessagesOptions } from \"../types/types\";\n\n/**\n * All post messages from inside our iframes and modals should use this function\n * to post messages to the parent window. It strongly types the data and makes\n * sure we're only listening to events that have the iframeUid\n */\n\nexport function postMessageFromIframe(action: PostMessageAction): void {\n if (window.self === window.top) {\n return;\n }\n\n const origin = \"*\";\n const verificationUrl = new URL(window.location.href);\n const verificationIframeUid = verificationUrl.searchParams.get(\"verificationIframeUid\");\n\n window.parent.postMessage(\n {\n verificationIframeUid,\n action,\n },\n origin,\n );\n}\n\n// Called from the inner iFrame window to let the parent window know about size updates\nexport function postVerificationSizeUpdates(\n options: PostMessagesOptions = { origin: \"*\", interval: 100 },\n) {\n if (window.self !== window.top) {\n let bodyHeight = document.body.offsetHeight;\n const interval = window.setInterval(() => {\n if (bodyHeight !== document.body.offsetHeight) {\n bodyHeight = document.body.offsetHeight;\n\n const heightWithComputedMargins =\n bodyHeight +\n parseInt(window.getComputedStyle(document.body).marginTop, 10) +\n parseInt(window.getComputedStyle(document.body).marginBottom, 10);\n\n postMessageFromIframe({ type: \"updateHeight\", height: heightWithComputedMargins });\n }\n }, options.interval);\n\n return () => clearInterval(interval);\n }\n\n return () => {};\n}\n","import { logger } from \"@jslib/shared/utils/logger\";\nimport { getSafe } from \"@jslib/shared/utils/getSafe\";\n\nimport { type Hook, type HookEvents, type RegisteredHooks } from \"../types/types\";\nimport { assertValidHook, assertValidHookName } from \"../types/assertions\";\nimport { postMessageFromIframe } from \"../frames/postMessageFromIframe\";\n\nimport { EventEmitter, type EventArg } from \"./eventEmitter\";\n\nclass Hooks extends EventEmitter<HookEvents> {\n emit<K extends keyof HookEvents>(name: K, data: EventArg<HookEvents, K>) {\n // also emit to the iframe\n postMessageFromIframe({\n type: \"hook\",\n hook: { name, data },\n });\n super.emit(name, data);\n }\n}\n\n/**\n * This `hooks` object is the primary interaction point for listeners to events\n * inside the jslib. It's `on`, `once` and `off` methods allow interaction with\n * all `HookEvents`\n */\nexport const hooks = new Hooks();\n\n/**\n * A helper function to give the deprecated addHooks function backwards\n * compatibility. It reaches into the internals of the Maps and Sets that make\n * the hooks emitter work. It sucks, and should go away when `addHook` does.\n *\n * @private\n */\nfunction _getLegacyRegistry(): RegisteredHooks {\n const registry: RegisteredHooks = {};\n\n // eslint-disable-next-line no-restricted-syntax, dot-notation\n for (const [key, callbacks] of hooks[\"events\"]) {\n // eslint-disable-next-line dot-notation\n registry[key] = [...callbacks[\"subscribers\"].values()].map((callback) => ({\n name: key,\n callback,\n }));\n }\n\n return registry;\n}\n\n/**\n * @description Register a callback function (a \"hook\") that will be called for a given hook name.\n * Hook names are called at specific points during execution and allow some form of extensibility.\n * @param hookName A specific string, one of the HookName type.\n * @param callback The function to call when the system performs certain actions, described by the hook's name.\n * @deprecated use `hooks.on()` instead\n */\nexport const addHook = (hook: Hook): RegisteredHooks => {\n assertValidHook(hook);\n\n hooks.on(hook.name, hook.callback);\n return _getLegacyRegistry();\n};\n\n/**\n * @description Retrieve a hook object that has been stored.\n * @param hookName\n * @deprecated\n */\nexport const getHook = <K extends keyof HookEvents>(hookName: K): Function => {\n assertValidHookName(hookName);\n return (data: HookEvents[K]) => {\n hooks.emit(hookName, data);\n };\n};\n\n/**\n * @description Look for an array of Hook objects that a developer may have provided in the window.sheerId object.\n * If present, add each to the internal registry of hooks.\n *\n * @private\n * @returns true if any hooks were successfully registered.\n */\nexport const addPredefinedHooks = (): boolean => {\n let successCount = 0;\n getSafe(() => window.sheerId.hooks, []).forEach((hook: Hook) => {\n try {\n addHook(hook);\n successCount += 1;\n } catch (e) {\n logger.warn(\"Error adding hook:\", hook, e);\n }\n });\n return successCount > 0;\n};\n","import { logger } from \"@jslib/shared/utils/logger\";\n\n/**\n * @private\n */\nexport const scrollToWindowTop = () => {\n window.scrollTo(0, 0);\n logger.info(\"Scrolling window to coordinates: 0, 0\");\n};\n","/*\n* Fingerprintjs2 2.1.4 - Modern & flexible browser fingerprint library v2\n* https://github.com/fingerprintjs/fingerprintjs\n* Copyright (c) 2020 Valentin Vasilyev (valentin@fingerprintjs.com)\n* Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.\n*\n* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\n* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE\n* ARE DISCLAIMED. IN NO EVENT SHALL VALENTIN VASILYEV BE LIABLE FOR ANY\n* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF\n* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n/*\n* This software contains code from open-source projects:\n* MurmurHash3 by Karan Lyons (https://github.com/karanlyons/murmurHash3.js)\n*/\n\n/* global define */\n(function (name, context, definition) {\n 'use strict'\n if (typeof window !== 'undefined' && typeof define === 'function' && define.amd) { define(definition) } else if (typeof module !== 'undefined' && module.exports) { module.exports = definition() } else if (context.exports) { context.exports = definition() } else { context[name] = definition() }\n})('Fingerprint2', this, function () {\n 'use strict'\n\n // detect if object is array\n // only implement if no native implementation is available\n if (typeof Array.isArray === 'undefined') {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]'\n }\n };\n\n /// MurmurHash3 related functions\n\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // added together as a 64bit int (as an array of two 32bit ints).\n //\n var x64Add = function (m, n) {\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]\n var o = [0, 0, 0, 0]\n o[3] += m[3] + n[3]\n o[2] += o[3] >>> 16\n o[3] &= 0xffff\n o[2] += m[2] + n[2]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[1] += m[1] + n[1]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[0] += m[0] + n[0]\n o[0] &= 0xffff\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]]\n }\n\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // multiplied together as a 64bit int (as an array of two 32bit ints).\n //\n var x64Multiply = function (m, n) {\n m = [m[0] >>> 16, m[0] & 0xffff, m[1] >>> 16, m[1] & 0xffff]\n n = [n[0] >>> 16, n[0] & 0xffff, n[1] >>> 16, n[1] & 0xffff]\n var o = [0, 0, 0, 0]\n o[3] += m[3] * n[3]\n o[2] += o[3] >>> 16\n o[3] &= 0xffff\n o[2] += m[2] * n[3]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[2] += m[3] * n[2]\n o[1] += o[2] >>> 16\n o[2] &= 0xffff\n o[1] += m[1] * n[3]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[1] += m[2] * n[2]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[1] += m[3] * n[1]\n o[0] += o[1] >>> 16\n o[1] &= 0xffff\n o[0] += (m[0] * n[3]) + (m[1] * n[2]) + (m[2] * n[1]) + (m[3] * n[0])\n o[0] &= 0xffff\n return [(o[0] << 16) | o[1], (o[2] << 16) | o[3]]\n }\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) rotated left by that number of positions.\n //\n var x64Rotl = function (m, n) {\n n %= 64\n if (n === 32) {\n return [m[1], m[0]]\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), (m[1] << n) | (m[0] >>> (32 - n))]\n } else {\n n -= 32\n return [(m[1] << n) | (m[0] >>> (32 - n)), (m[0] << n) | (m[1] >>> (32 - n))]\n }\n }\n //\n // Given a 64bit int (as an array of two 32bit ints) and an int\n // representing a number of bit positions, returns the 64bit int (as an\n // array of two 32bit ints) shifted left by that number of positions.\n //\n var x64LeftShift = function (m, n) {\n n %= 64\n if (n === 0) {\n return m\n } else if (n < 32) {\n return [(m[0] << n) | (m[1] >>> (32 - n)), m[1] << n]\n } else {\n return [m[1] << (n - 32), 0]\n }\n }\n //\n // Given two 64bit ints (as an array of two 32bit ints) returns the two\n // xored together as a 64bit int (as an array of two 32bit ints).\n //\n var x64Xor = function (m, n) {\n return [m[0] ^ n[0], m[1] ^ n[1]]\n }\n //\n // Given a block, returns murmurHash3's final x64 mix of that block.\n // (`[0, h[0] >>> 1]` is a 33 bit unsigned right shift. This is the\n // only place where we need to right shift 64bit ints.)\n //\n var x64Fmix = function (h) {\n h = x64Xor(h, [0, h[0] >>> 1])\n h = x64Multiply(h, [0xff51afd7, 0xed558ccd])\n h = x64Xor(h, [0, h[0] >>> 1])\n h = x64Multiply(h, [0xc4ceb9fe, 0x1a85ec53])\n h = x64Xor(h, [0, h[0] >>> 1])\n return h\n }\n\n //\n // Given a string and an optional seed as an int, returns a 128 bit\n // hash using the x64 flavor of MurmurHash3, as an unsigned hex.\n //\n var x64hash128 = function (key, seed) {\n key = key || ''\n seed = seed || 0\n var remainder = key.length % 16\n var bytes = key.length - remainder\n var h1 = [0, seed]\n var h2 = [0, seed]\n var k1 = [0, 0]\n var k2 = [0, 0]\n var c1 = [0x87c37b91, 0x114253d5]\n var c2 = [0x4cf5ad43, 0x2745937f]\n for (var i = 0; i < bytes; i = i + 16) {\n k1 = [((key.charCodeAt(i + 4) & 0xff)) | ((key.charCodeAt(i + 5) & 0xff) << 8) | ((key.charCodeAt(i + 6) & 0xff) << 16) | ((key.charCodeAt(i + 7) & 0xff) << 24), ((key.charCodeAt(i) & 0xff)) | ((key.charCodeAt(i + 1) & 0xff) << 8) | ((key.charCodeAt(i + 2) & 0xff) << 16) | ((key.charCodeAt(i + 3) & 0xff) << 24)]\n k2 = [((key.charCodeAt(i + 12) & 0xff)) | ((key.charCodeAt(i + 13) & 0xff) << 8) | ((key.charCodeAt(i + 14) & 0xff) << 16) | ((key.charCodeAt(i + 15) & 0xff) << 24), ((key.charCodeAt(i + 8) & 0xff)) | ((key.charCodeAt(i + 9) & 0xff) << 8) | ((key.charCodeAt(i + 10) & 0xff) << 16) | ((key.charCodeAt(i + 11) & 0xff) << 24)]\n k1 = x64Multiply(k1, c1)\n k1 = x64Rotl(k1, 31)\n k1 = x64Multiply(k1, c2)\n h1 = x64Xor(h1, k1)\n h1 = x64Rotl(h1, 27)\n h1 = x64Add(h1, h2)\n h1 = x64Add(x64Multiply(h1, [0, 5]), [0, 0x52dce729])\n k2 = x64Multiply(k2, c2)\n k2 = x64Rotl(k2, 33)\n k2 = x64Multiply(k2, c1)\n h2 = x64Xor(h2, k2)\n h2 = x64Rotl(h2, 31)\n h2 = x64Add(h2, h1)\n h2 = x64Add(x64Multiply(h2, [0, 5]), [0, 0x38495ab5])\n }\n k1 = [0, 0]\n k2 = [0, 0]\n switch (remainder) {\n case 15:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 14)], 48))\n // fallthrough\n case 14:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 13)], 40))\n // fallthrough\n case 13:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 12)], 32))\n // fallthrough\n case 12:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 11)], 24))\n // fallthrough\n case 11:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 10)], 16))\n // fallthrough\n case 10:\n k2 = x64Xor(k2, x64LeftShift([0, key.charCodeAt(i + 9)], 8))\n // fallthrough\n case 9:\n k2 = x64Xor(k2, [0, key.charCodeAt(i + 8)])\n k2 = x64Multiply(k2, c2)\n k2 = x64Rotl(k2, 33)\n k2 = x64Multiply(k2, c1)\n h2 = x64Xor(h2, k2)\n // fallthrough\n case 8:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 7)], 56))\n // fallthrough\n case 7:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 6)], 48))\n // fallthrough\n case 6:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 5)], 40))\n // fallthrough\n case 5:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 4)], 32))\n // fallthrough\n case 4:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 3)], 24))\n // fallthrough\n case 3:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 2)], 16))\n // fallthrough\n case 2:\n k1 = x64Xor(k1, x64LeftShift([0, key.charCodeAt(i + 1)], 8))\n // fallthrough\n case 1:\n k1 = x64Xor(k1, [0, key.charCodeAt(i)])\n k1 = x64Multiply(k1, c1)\n k1 = x64Rotl(k1, 31)\n k1 = x64Multiply(k1, c2)\n h1 = x64Xor(h1, k1)\n // fallthrough\n }\n h1 = x64Xor(h1, [0, key.length])\n h2 = x64Xor(h2, [0, key.length])\n h1 = x64Add(h1, h2)\n h2 = x64Add(h2, h1)\n h1 = x64Fmix(h1)\n h2 = x64Fmix(h2)\n h1 = x64Add(h1, h2)\n h2 = x64Add(h2, h1)\n return ('00000000' + (h1[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h1[1] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[0] >>> 0).toString(16)).slice(-8) + ('00000000' + (h2[1] >>> 0).toString(16)).slice(-8)\n }\n\n var defaultOptions = {\n preprocessor: null,\n audio: {\n timeout: 1000,\n // On iOS 11, audio context can only be used in response to user interaction.\n // We require users to explicitly enable audio fingerprinting on iOS 11.\n // See https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\n excludeIOS11: true\n },\n fonts: {\n swfContainerId: 'fingerprintjs2',\n swfPath: 'flash/compiled/FontList.swf',\n userDefinedFonts: [],\n extendedJsFonts: false\n },\n screen: {\n // To ensure consistent fingerprints when users rotate their mobile devices\n detectScreenOrientation: true\n },\n plugins: {\n sortPluginsFor: [/palemoon/i],\n excludeIE: false\n },\n extraComponents: [],\n excludes: {\n // Unreliable on Windows, see https://github.com/fingerprintjs/fingerprintjs/issues/375\n 'enumerateDevices': true,\n // devicePixelRatio depends on browser zoom, and it's impossible to detect browser zoom\n 'pixelRatio': true,\n // DNT depends on incognito mode for some browsers (Chrome) and it's impossible to detect incognito mode\n 'doNotTrack': true,\n // uses js fonts already\n 'fontsFlash': true,\n // Extensions (including AdBlock) are disabled by default in Incognito mod of Chrome and Firefox\n // See https://github.com/fingerprintjs/fingerprintjs/issues/405\n 'adBlock': true\n },\n NOT_AVAILABLE: 'not available',\n ERROR: 'error',\n EXCLUDED: 'excluded'\n }\n\n var each = function (obj, iterator) {\n if (Array.prototype.forEach && obj.forEach === Array.prototype.forEach) {\n obj.forEach(iterator)\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i++) {\n iterator(obj[i], i, obj)\n }\n } else {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n iterator(obj[key], key, obj)\n }\n }\n }\n }\n\n var map = function (obj, iterator) {\n var results = []\n // Not using strict equality so that this acts as a\n // shortcut to checking for `null` and `undefined`.\n if (obj == null) {\n return results\n }\n if (Array.prototype.map && obj.map === Array.prototype.map) { return obj.map(iterator) }\n each(obj, function (value, index, list) {\n results.push(iterator(value, index, list))\n })\n return results\n }\n\n var extendSoft = function (target, source) {\n if (source == null) { return target }\n var value\n var key\n for (key in source) {\n value = source[key]\n if (value != null && !(Object.prototype.hasOwnProperty.call(target, key))) {\n target[key] = value\n }\n }\n return target\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/enumerateDevices\n var enumerateDevicesKey = function (done, options) {\n if (!isEnumerateDevicesSupported()) {\n return done(options.NOT_AVAILABLE)\n }\n navigator.mediaDevices.enumerateDevices().then(function (devices) {\n done(devices.map(function (device) {\n return 'id=' + device.deviceId + ';gid=' + device.groupId + ';' + device.kind + ';' + device.label\n }))\n }).catch(function (error) {\n done(error)\n })\n }\n\n var isEnumerateDevicesSupported = function () {\n return (navigator.mediaDevices && navigator.mediaDevices.enumerateDevices)\n }\n // Inspired by and based on https://github.com/cozylife/audio-fingerprint\n var audioKey = function (done, options) {\n var audioOptions = options.audio\n if (audioOptions.excludeIOS11 && navigator.userAgent.match(/OS 11.+Version\\/11.+Safari/)) {\n // See comment for excludeUserAgent and https://stackoverflow.com/questions/46363048/onaudioprocess-not-called-on-ios11#46534088\n return done(options.EXCLUDED)\n }\n\n var AudioContext = window.OfflineAudioContext || window.webkitOfflineAudioContext\n\n if (AudioContext == null) {\n return done(options.NOT_AVAILABLE)\n }\n\n var context = new AudioContext(1, 44100, 44100)\n\n var oscillator = context.createOscillator()\n oscillator.type = 'triangle'\n oscillator.frequency.setValueAtTime(10000, context.currentTime)\n\n var compressor = context.createDynamicsCompressor()\n each([\n ['threshold', -50],\n ['knee', 40],\n ['ratio', 12],\n ['reduction', -20],\n ['attack', 0],\n ['release', 0.25]\n ], function (item) {\n if (compressor[item[0]] !== undefined && typeof compressor[item[0]].setValueAtTime === 'function') {\n compressor[item[0]].setValueAtTime(item[1], context.currentTime)\n }\n })\n\n oscillator.connect(compressor)\n compressor.connect(context.destination)\n oscillator.start(0)\n context.startRendering()\n\n var audioTimeoutId = setTimeout(function () {\n console.warn('Audio fingerprint timed out. Please report bug at https://github.com/fingerprintjs/fingerprintjs with your user agent: \"' + navigator.userAgent + '\".')\n context.oncomplete = function () { }\n context = null\n return done('audioTimeout')\n }, audioOptions.timeout)\n\n context.oncomplete = function (event) {\n var fingerprint\n try {\n clearTimeout(audioTimeoutId)\n fingerprint = event.renderedBuffer.getChannelData(0)\n .slice(4500, 5000)\n .reduce(function (acc, val) { return acc + Math.abs(val) }, 0)\n .toString()\n oscillator.disconnect()\n compressor.disconnect()\n } catch (error) {\n done(error)\n return\n }\n done(fingerprint)\n }\n }\n var UserAgent = function (done) {\n done(navigator.userAgent)\n }\n var webdriver = function (done, options) {\n done(navigator.webdriver == null ? options.NOT_AVAILABLE : navigator.webdriver)\n }\n var languageKey = function (done, options) {\n done(navigator.language || navigator.userLanguage || navigator.browserLanguage || navigator.systemLanguage || options.NOT_AVAILABLE)\n }\n var colorDepthKey = function (done, options) {\n done(window.screen.colorDepth || options.NOT_AVAILABLE)\n }\n var deviceMemoryKey = function (done, options) {\n done(navigator.deviceMemory || options.NOT_AVAILABLE)\n }\n var pixelRatioKey = function (done, options) {\n done(window.devicePixelRatio || options.NOT_AVAILABLE)\n }\n var screenResolutionKey = function (done, options) {\n done(getScreenResolution(options))\n }\n var getScreenResolution = function (options) {\n var resolution = [window.screen.width, window.screen.height]\n if (options.screen.detectScreenOrientation) {\n resolution.sort().reverse()\n }\n return resolution\n }\n var availableScreenResolutionKey = function (done, options) {\n done(getAvailableScreenResolution(options))\n }\n var getAvailableScreenResolution = function (options) {\n if (window.screen.availWidth && window.screen.availHeight) {\n var available = [window.screen.availHeight, window.screen.availWidth]\n if (options.screen.detectScreenOrientation) {\n available.sort().reverse()\n }\n return available\n }\n // headless browsers\n return options.NOT_AVAILABLE\n }\n var timezoneOffset = function (done) {\n done(new Date().getTimezoneOffset())\n }\n var timezone = function (done, options) {\n if (window.Intl && window.Intl.DateTimeFormat) {\n done(new window.Intl.DateTimeFormat().resolvedOptions().timeZone || options.NOT_AVAILABLE)\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var sessionStorageKey = function (done, options) {\n done(hasSessionStorage(options))\n }\n var localStorageKey = function (done, options) {\n done(hasLocalStorage(options))\n }\n var indexedDbKey = function (done, options) {\n done(hasIndexedDB(options))\n }\n var addBehaviorKey = function (done) {\n done(!!window.HTMLElement.prototype.addBehavior)\n }\n var openDatabaseKey = function (done) {\n done(!!window.openDatabase)\n }\n var cpuClassKey = function (done, options) {\n done(getNavigatorCpuClass(options))\n }\n var platformKey = function (done, options) {\n done(getNavigatorPlatform(options))\n }\n var doNotTrackKey = function (done, options) {\n done(getDoNotTrack(options))\n }\n var canvasKey = function (done, options) {\n if (isCanvasSupported()) {\n done(getCanvasFp(options))\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var webglKey = function (done, options) {\n if (isWebGlSupported()) {\n done(getWebglFp())\n return\n }\n done(options.NOT_AVAILABLE)\n }\n var webglVendorAndRendererKey = function (done) {\n if (isWebGlSupported()) {\n done(getWebglVendorAndRenderer())\n return\n }\n done()\n }\n var adBlockKey = function (done) {\n done(getAdBlock())\n }\n var hasLiedLanguagesKey = function (done) {\n done(getHasLiedLanguages())\n }\n var hasLiedResolutionKey = function (done) {\n done(getHasLiedResolution())\n }\n var hasLiedOsKey = function (done) {\n done(getHasLiedOs())\n }\n var hasLiedBrowserKey = function (done) {\n done(getHasLiedBrowser())\n }\n // flash fonts (will increase fingerprinting time 20X to ~ 130-150ms)\n var flashFontsKey = function (done, options) {\n // we do flash if swfobject is loaded\n if (!hasSwfObjectLoaded()) {\n return done('swf object not loaded')\n }\n if (!hasMinFlashInstalled()) {\n return done('flash not installed')\n }\n if (!options.fonts.swfPath) {\n return done('missing options.fonts.swfPath')\n }\n loadSwfAndDetectFonts(function (fonts) {\n done(fonts)\n }, options)\n }\n // kudos to http://www.lalit.org/lab/javascript-css-font-detect/\n var jsFontsKey = function (done, options) {\n // a font will be compared against all the three default fonts.\n // and if it doesn't match all 3 then that font is not available.\n var baseFonts = ['monospace', 'sans-serif', 'serif']\n\n var fontList = [\n 'Andale Mono', 'Arial', 'Arial Black', 'Arial Hebrew', 'Arial MT', 'Arial Narrow', 'Arial Rounded MT Bold', 'Arial Unicode MS',\n 'Bitstream Vera Sans Mono', 'Book Antiqua', 'Bookman Old Style',\n 'Calibri', 'Cambria', 'Cambria Math', 'Century', 'Century Gothic', 'Century Schoolbook', 'Comic Sans', 'Comic Sans MS', 'Consolas', 'Courier', 'Courier New',\n 'Geneva', 'Georgia',\n 'Helvetica', 'Helvetica Neue',\n 'Impact',\n 'Lucida Bright', 'Lucida Calligraphy', 'Lucida Console', 'Lucida Fax', 'LUCIDA GRANDE', 'Lucida Handwriting', 'Lucida Sans', 'Lucida Sans Typewriter', 'Lucida Sans Unicode',\n 'Microsoft Sans Serif', 'Monaco', 'Monotype Corsiva', 'MS Gothic', 'MS Outlook', 'MS PGothic', 'MS Reference Sans Serif', 'MS Sans Serif', 'MS Serif', 'MYRIAD', 'MYRIAD PRO',\n 'Palatino', 'Palatino Linotype',\n 'Segoe Print', 'Segoe Script', 'Segoe UI', 'Segoe UI Light', 'Segoe UI Semibold', 'Segoe UI Symbol',\n 'Tahoma', 'Times', 'Times New Roman', 'Times New Roman PS', 'Trebuchet MS',\n 'Verdana', 'Wingdings', 'Wingdings 2', 'Wingdings 3'\n ]\n\n if (options.fonts.extendedJsFonts) {\n var extendedFontList = [\n 'Abadi MT Condensed Light', 'Academy Engraved LET', 'ADOBE CASLON PRO', 'Adobe Garamond', 'ADOBE GARAMOND PRO', 'Agency FB', 'Aharoni', 'Albertus Extra Bold', 'Albertus Medium', 'Algerian', 'Amazone BT', 'American Typewriter',\n 'American Typewriter Condensed', 'AmerType Md BT', 'Andalus', 'Angsana New', 'AngsanaUPC', 'Antique Olive', 'Aparajita', 'Apple Chancery', 'Apple Color Emoji', 'Apple SD Gothic Neo', 'Arabic Typesetting', 'ARCHER',\n 'ARNO PRO', 'Arrus BT', 'Aurora Cn BT', 'AvantGarde Bk BT', 'AvantGarde Md BT', 'AVENIR', 'Ayuthaya', 'Bandy', 'Bangla Sangam MN', 'Bank Gothic', 'BankGothic Md BT', 'Baskerville',\n 'Baskerville Old Face', 'Batang', 'BatangChe', 'Bauer Bodoni', 'Bauhaus 93', 'Bazooka', 'Bell MT', 'Bembo', 'Benguiat Bk BT', 'Berlin Sans FB', 'Berlin Sans FB Demi', 'Bernard MT Condensed', 'BernhardFashion BT', 'BernhardMod BT', 'Big Caslon', 'BinnerD',\n 'Blackadder ITC', 'BlairMdITC TT', 'Bodoni 72', 'Bodoni 72 Oldstyle', 'Bodoni 72 Smallcaps', 'Bodoni MT', 'Bodoni MT Black', 'Bodoni MT Condensed', 'Bodoni MT Poster Compressed',\n 'Bookshelf Symbol 7', 'Boulder', 'Bradley Hand', 'Bradley Hand ITC', 'Bremen Bd BT', 'Britannic Bold', 'Broadway', 'Browallia New', 'BrowalliaUPC', 'Brush Script MT', 'Californian FB', 'Calisto MT', 'Calligrapher', 'Candara',\n 'CaslonOpnface BT', 'Castellar', 'Centaur', 'Cezanne', 'CG Omega', 'CG Times', 'Chalkboard', 'Chalkboard SE', 'Chalkduster', 'Charlesworth', 'Charter Bd BT', 'Charter BT', 'Chaucer',\n 'ChelthmITC Bk BT', 'Chiller', 'Clarendon', 'Clarendon Condensed', 'CloisterBlack BT', 'Cochin', 'Colonna MT', 'Constantia', 'Cooper Black', 'Copperplate', 'Copperplate Gothic', 'Copperplate Gothic Bold',\n 'Copperplate Gothic Light', 'CopperplGoth Bd BT', 'Corbel', 'Cordia New', 'CordiaUPC', 'Cornerstone', 'Coronet', 'Cuckoo', 'Curlz MT', 'DaunPenh', 'Dauphin', 'David', 'DB LCD Temp', 'DELICIOUS', 'Denmark',\n 'DFKai-SB', 'Didot', 'DilleniaUPC', 'DIN', 'DokChampa', 'Dotum', 'DotumChe', 'Ebrima', 'Edwardian Script ITC', 'Elephant', 'English 111 Vivace BT', 'Engravers MT', 'EngraversGothic BT', 'Eras Bold ITC', 'Eras Demi ITC', 'Eras Light ITC', 'Eras Medium ITC',\n 'EucrosiaUPC', 'Euphemia', 'Euphemia UCAS', 'EUROSTILE', 'Exotc350 Bd BT', 'FangSong', 'Felix Titling', 'Fixedsys', 'FONTIN', 'Footlight MT Light', 'Forte',\n 'FrankRuehl', 'Fransiscan', 'Freefrm721 Blk BT', 'FreesiaUPC', 'Freestyle Script', 'French Script MT', 'FrnkGothITC Bk BT', 'Fruitger', 'FRUTIGER',\n 'Futura', 'Futura Bk BT', 'Futura Lt BT', 'Futura Md BT', 'Futura ZBlk BT', 'FuturaBlack BT', 'Gabriola', 'Galliard BT', 'Gautami', 'Geeza Pro', 'Geometr231 BT', 'Geometr231 Hv BT', 'Geometr231 Lt BT', 'GeoSlab 703 Lt BT',\n 'GeoSlab 703 XBd BT', 'Gigi', 'Gill Sans', 'Gill Sans MT', 'Gill Sans MT Condensed', 'Gill Sans MT Ext Condensed Bold', 'Gill Sans Ultra Bold', 'Gill Sans Ultra Bold Condensed', 'Gisha', 'Gloucester MT Extra Condensed', 'GOTHAM', 'GOTHAM BOLD',\n 'Goudy Old Style', 'Goudy Stout', 'GoudyHandtooled BT', 'GoudyOLSt BT', 'Gujarati Sangam MN', 'Gulim', 'GulimChe', 'Gungsuh', 'GungsuhChe', 'Gurmukhi MN', 'Haettenschweiler', 'Harlow Solid Italic', 'Harrington', 'Heather', 'Heiti SC', 'Heiti TC', 'HELV',\n 'Herald', 'High Tower Text', 'Hiragino Kaku Gothic ProN', 'Hiragino Mincho ProN', 'Hoefler Text', 'Humanst 521 Cn BT', 'Humanst521 BT', 'Humanst521 Lt BT', 'Imprint MT Shadow', 'Incised901 Bd BT', 'Incised901 BT',\n 'Incised901 Lt BT', 'INCONSOLATA', 'Informal Roman', 'Informal011 BT', 'INTERSTATE', 'IrisUPC', 'Iskoola Pota', 'JasmineUPC', 'Jazz LET', 'Jenson', 'Jester', 'Jokerman', 'Juice ITC', 'Kabel Bk BT', 'Kabel Ult BT', 'Kailasa', 'KaiTi', 'Kalinga', 'Kannada Sangam MN',\n 'Kartika', 'Kaufmann Bd BT', 'Kaufmann BT', 'Khmer UI', 'KodchiangUPC', 'Kokila', 'Korinna BT', 'Kristen ITC', 'Krungthep', 'Kunstler Script', 'Lao UI', 'Latha', 'Leelawadee', 'Letter Gothic', 'Levenim MT', 'LilyUPC', 'Lithograph', 'Lithograph Light', 'Long Island',\n 'Lydian BT', 'Magneto', 'Maiandra GD', 'Malayalam Sangam MN', 'Malgun Gothic',\n 'Mangal', 'Marigold', 'Marion', 'Marker Felt', 'Market', 'Marlett', 'Matisse ITC', 'Matura MT Script Capitals', 'Meiryo', 'Meiryo UI', 'Microsoft Himalaya', 'Microsoft JhengHei', 'Microsoft New Tai Lue', 'Microsoft PhagsPa', 'Microsoft Tai Le',\n 'Microsoft Uighur', 'Microsoft YaHei', 'Microsoft Yi Baiti', 'MingLiU', 'MingLiU_HKSCS', 'MingLiU_HKSCS-ExtB', 'MingLiU-ExtB', 'Minion', 'Minion Pro', 'Miriam', 'Miriam Fixed', 'Mistral', 'Modern', 'Modern No. 20', 'Mona Lisa Solid ITC TT', 'Mongolian Baiti',\n 'MONO', 'MoolBoran', 'Mrs Eaves', 'MS LineDraw', 'MS Mincho', 'MS PMincho', 'MS Reference Specialty', 'MS UI Gothic', 'MT Extra', 'MUSEO', 'MV Boli',\n 'Nadeem', 'Narkisim', 'NEVIS', 'News Gothic', 'News GothicMT', 'NewsGoth BT', 'Niagara Engraved', 'Niagara Solid', 'Noteworthy', 'NSimSun', 'Nyala', 'OCR A Extended', 'Old Century', 'Old English Text MT', 'Onyx', 'Onyx BT', 'OPTIMA', 'Oriya Sangam MN',\n 'OSAKA', 'OzHandicraft BT', 'Palace Script MT', 'Papyrus', 'Parchment', 'Party LET', 'Pegasus', 'Perpetua', 'Perpetua Titling MT', 'PetitaBold', 'Pickwick', 'Plantagenet Cherokee', 'Playbill', 'PMingLiU', 'PMingLiU-ExtB',\n 'Poor Richard', 'Poster', 'PosterBodoni BT', 'PRINCETOWN LET', 'Pristina', 'PTBarnum BT', 'Pythagoras', 'Raavi', 'Rage Italic', 'Ravie', 'Ribbon131 Bd BT', 'Rockwell', 'Rockwell Condensed', 'Rockwell Extra Bold', 'Rod', 'Roman', 'Sakkal Majalla',\n 'Santa Fe LET', 'Savoye LET', 'Sceptre', 'Script', 'Script MT Bold', 'SCRIPTINA', 'Serifa', 'Serifa BT', 'Serifa Th BT', 'ShelleyVolante BT', 'Sherwood',\n 'Shonar Bangla', 'Showcard Gothic', 'Shruti', 'Signboard', 'SILKSCREEN', 'SimHei', 'Simplified Arabic', 'Simplified Arabic Fixed', 'SimSun', 'SimSun-ExtB', 'Sinhala Sangam MN', 'Sketch Rockwell', 'Skia', 'Small Fonts', 'Snap ITC', 'Snell Roundhand', 'Socket',\n 'Souvenir Lt BT', 'Staccato222 BT', 'Steamer', 'Stencil', 'Storybook', 'Styllo', 'Subway', 'Swis721 BlkEx BT', 'Swiss911 XCm BT', 'Sylfaen', 'Synchro LET', 'System', 'Tamil Sangam MN', 'Technical', 'Teletype', 'Telugu Sangam MN', 'Tempus Sans ITC',\n 'Terminal', 'Thonburi', 'Traditional Arabic', 'Trajan', 'TRAJAN PRO', 'Tristan', 'Tubular', 'Tunga', 'Tw Cen MT', 'Tw Cen MT Condensed', 'Tw Cen MT Condensed Extra Bold',\n 'TypoUpright BT', 'Unicorn', 'Univers', 'Univers CE 55 Medium', 'Univers Condensed', 'Utsaah', 'Vagabond', 'Vani', 'Vijaya', 'Viner Hand ITC', 'VisualUI', 'Vivaldi', 'Vladimir Script', 'Vrinda', 'Westminster', 'WHITNEY', 'Wide Latin',\n 'ZapfEllipt BT', 'ZapfHumnst BT', 'ZapfHumnst Dm BT', 'Zapfino', 'Zurich BlkEx BT', 'Zurich Ex BT', 'ZWAdobeF']\n fontList = fontList.concat(extendedFontList)\n }\n\n fontList = fontList.concat(options.fonts.userDefinedFonts)\n\n // remove duplicate fonts\n fontList = fontList.filter(function (font, position) {\n return fontList.indexOf(font) === position\n })\n\n // we use m or w because these two characters take up the maximum width.\n // And we use a LLi so that the same matching fonts can get separated\n var testString = 'mmmmmmmmmmlli'\n\n // we test using 72px font size, we may use any size. I guess larger the better.\n var testSize = '72px'\n\n var h = document.getElementsByTagName('body')[0]\n\n // div to load spans for the base fonts\n var baseFontsDiv = document.createElement('div')\n\n // div to load spans for the fonts to detect\n var fontsDiv = document.createElement('div')\n\n var defaultWidth = {}\n var defaultHeight = {}\n\n // creates a span where the fonts will be loaded\n var createSpan = function () {\n var s = document.createElement('span')\n /*\n * We need this css as in some weird browser this\n * span elements shows up for a microSec which creates a\n * bad user experience\n */\n s.style.position = 'absolute'\n s.style.left = '-9999px'\n s.style.fontSize = testSize\n\n // css font reset to reset external styles\n s.style.fontStyle = 'normal'\n s.style.fontWeight = 'normal'\n s.style.letterSpacing = 'normal'\n s.style.lineBreak = 'auto'\n s.style.lineHeight = 'normal'\n s.style.textTransform = 'none'\n s.style.textAlign = 'left'\n s.style.textDecoration = 'none'\n s.style.textShadow = 'none'\n s.style.whiteSpace = 'normal'\n s.style.wordBreak = 'normal'\n s.style.wordSpacing = 'normal'\n\n s.innerHTML = testString\n return s\n }\n\n // creates a span and load the font to detect and a base font for fallback\n var createSpanWithFonts = function (fontToDetect, baseFont) {\n var s = createSpan()\n s.style.fontFamily = \"'\" + fontToDetect + \"',\" + baseFont\n return s\n }\n\n // creates spans for the base fonts and adds them to baseFontsDiv\n var initializeBaseFontsSpans = function () {\n var spans = []\n for (var index = 0, length = baseFonts.length; index < length; index++) {\n var s = createSpan()\n s.style.fontFamily = baseFonts[index]\n baseFontsDiv.appendChild(s)\n spans.push(s)\n }\n return spans\n }\n\n // creates spans for the fonts to detect and adds them to fontsDiv\n var initializeFontsSpans = function () {\n var spans = {}\n for (var i = 0, l = fontList.length; i < l; i++) {\n var fontSpans = []\n for (var j = 0, numDefaultFonts = baseFonts.length; j < numDefaultFonts; j++) {\n var s = createSpanWithFonts(fontList[i], baseFonts[j])\n fontsDiv.appendChild(s)\n fontSpans.push(s)\n }\n spans[fontList[i]] = fontSpans // Stores {fontName : [spans for that font]}\n }\n return spans\n }\n\n // checks if a font is available\n var isFontAvailable = function (fontSpans) {\n var detected = false\n for (var i = 0; i < baseFonts.length; i++) {\n detected = (fontSpans[i].offsetWidth !== defaultWidth[baseFonts[i]] || fontSpans[i].offsetHeight !== defaultHeight[baseFonts[i]])\n if (detected) {\n return detected\n }\n }\n return detected\n }\n\n // create spans for base fonts\n var baseFontsSpans = initializeBaseFontsSpans()\n\n // add the spans to the DOM\n h.appendChild(baseFontsDiv)\n\n // get the default width for the three base fonts\n for (var index = 0, length = baseFonts.length; index < length; index++) {\n defaultWidth[baseFonts[index]] = baseFontsSpans[index].offsetWidth // width for the default font\n defaultHeight[baseFonts[index]] = baseFontsSpans[index].offsetHeight // height for the default font\n }\n\n // create spans for fonts to detect\n var fontsSpans = initializeFontsSpans()\n\n // add all the spans to the DOM\n h.appendChild(fontsDiv)\n\n // check available fonts\n var available = []\n for (var i = 0, l = fontList.length; i < l; i++) {\n if (isFontAvailable(fontsSpans[fontList[i]])) {\n available.push(fontList[i])\n }\n }\n\n // remove spans from DOM\n h.removeChild(fontsDiv)\n h.removeChild(baseFontsDiv)\n done(available)\n }\n var pluginsComponent = function (done, options) {\n if (isIE()) {\n if (!options.plugins.excludeIE) {\n done(getIEPlugins(options))\n } else {\n done(options.EXCLUDED)\n }\n } else {\n done(getRegularPlugins(options))\n }\n }\n var getRegularPlugins = function (options) {\n if (navigator.plugins == null) {\n return options.NOT_AVAILABLE\n }\n\n var plugins = []\n // plugins isn't defined in Node envs.\n for (var i = 0, l = navigator.plugins.length; i < l; i++) {\n if (navigator.plugins[i]) { plugins.push(navigator.plugins[i]) }\n }\n\n // sorting plugins only for those user agents, that we know randomize the plugins\n // every time we try to enumerate them\n if (pluginsShouldBeSorted(options)) {\n plugins = plugins.sort(function (a, b) {\n if (a.name > b.name) { return 1 }\n if (a.name < b.name) { return -1 }\n return 0\n })\n }\n return map(plugins, function (p) {\n var mimeTypes = map(p, function (mt) {\n return [mt.type, mt.suffixes]\n })\n return [p.name, p.description, mimeTypes]\n })\n }\n var getIEPlugins = function (options) {\n var result = []\n if ((Object.getOwnPropertyDescriptor && Object.getOwnPropertyDescriptor(window, 'ActiveXObject')) || ('ActiveXObject' in window)) {\n var names = [\n 'AcroPDF.PDF', // Adobe PDF reader 7+\n 'Adodb.Stream',\n 'AgControl.AgControl', // Silverlight\n 'DevalVRXCtrl.DevalVRXCtrl.1',\n 'MacromediaFlashPaper.MacromediaFlashPaper',\n 'Msxml2.DOMDocument',\n 'Msxml2.XMLHTTP',\n 'PDF.PdfCtrl', // Adobe PDF reader 6 and earlier, brrr\n 'QuickTime.QuickTime', // QuickTime\n 'QuickTimeCheckObject.QuickTimeCheck.1',\n 'RealPlayer',\n 'RealPlayer.RealPlayer(tm) ActiveX Control (32-bit)',\n 'RealVideo.RealVideo(tm) ActiveX Control (32-bit)',\n 'Scripting.Dictionary',\n 'SWCtl.SWCtl', // ShockWave player\n 'Shell.UIHelper',\n 'ShockwaveFlash.ShockwaveFlash', // flash plugin\n 'Skype.Detection',\n 'TDCCtl.TDCCtl',\n 'WMPlayer.OCX', // Windows media player\n 'rmocx.RealPlayer G2 Control',\n 'rmocx.RealPlayer G2 Control.1'\n ]\n // starting to detect plugins in IE\n result = map(names, function (name) {\n try {\n // eslint-disable-next-line no-new\n new window.ActiveXObject(name)\n return name\n } catch (e) {\n return options.ERROR\n }\n })\n } else {\n result.push(options.NOT_AVAILABLE)\n }\n if (navigator.plugins) {\n result = result.concat(getRegularPlugins(options))\n }\n return result\n }\n var pluginsShouldBeSorted = function (options) {\n var should = false\n for (var i = 0, l = options.plugins.sortPluginsFor.length; i < l; i++) {\n var re = options.plugins.sortPluginsFor[i]\n if (navigator.userAgent.match(re)) {\n should = true\n break\n }\n }\n return should\n }\n var touchSupportKey = function (done) {\n done(getTouchSupport())\n }\n var hardwareConcurrencyKey = function (done, options) {\n done(getHardwareConcurrency(options))\n }\n var hasSessionStorage = function (options) {\n try {\n return !!window.sessionStorage\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n\n // https://bugzilla.mozilla.org/show_bug.cgi?id=781447\n var hasLocalStorage = function (options) {\n try {\n return !!window.localStorage\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n var hasIndexedDB = function (options) {\n // IE and Edge don't allow accessing indexedDB in private mode, therefore IE and Edge will have different\n // fingerprints in normal and private modes.\n if (isIEOrOldEdge()) {\n return options.EXCLUDED\n }\n try {\n return !!window.indexedDB\n } catch (e) {\n return options.ERROR // SecurityError when referencing it means it exists\n }\n }\n var getHardwareConcurrency = function (options) {\n if (navigator.hardwareConcurrency) {\n return navigator.hardwareConcurrency\n }\n return options.NOT_AVAILABLE\n }\n var getNavigatorCpuClass = function (options) {\n return navigator.cpuClass || options.NOT_AVAILABLE\n }\n var getNavigatorPlatform = function (options) {\n if (navigator.platform) {\n return navigator.platform\n } else {\n return options.NOT_AVAILABLE\n }\n }\n var getDoNotTrack = function (options) {\n if (navigator.doNotTrack) {\n return navigator.doNotTrack\n } else if (navigator.msDoNotTrack) {\n return navigator.msDoNotTrack\n } else if (window.doNotTrack) {\n return window.doNotTrack\n } else {\n return options.NOT_AVAILABLE\n }\n }\n // This is a crude and primitive touch screen detection.\n // It's not possible to currently reliably detect the availability of a touch screen\n // with a JS, without actually subscribing to a touch event.\n // http://www.stucox.com/blog/you-cant-detect-a-touchscreen/\n // https://github.com/Modernizr/Modernizr/issues/548\n // method returns an array of 3 values:\n // maxTouchPoints, the success or failure of creating a TouchEvent,\n // and the availability of the 'ontouchstart' property\n\n var getTouchSupport = function () {\n var maxTouchPoints = 0\n var touchEvent\n if (typeof navigator.maxTouchPoints !== 'undefined') {\n maxTouchPoints = navigator.maxTouchPoints\n } else if (typeof navigator.msMaxTouchPoints !== 'undefined') {\n maxTouchPoints = navigator.msMaxTouchPoints\n }\n try {\n document.createEvent('TouchEvent')\n touchEvent = true\n } catch (_) {\n touchEvent = false\n }\n var touchStart = 'ontouchstart' in window\n return [maxTouchPoints, touchEvent, touchStart]\n }\n // https://www.browserleaks.com/canvas#how-does-it-work\n\n var getCanvasFp = function (options) {\n var result = []\n // Very simple now, need to make it more complex (geo shapes etc)\n var canvas = document.createElement('canvas')\n canvas.width = 2000\n canvas.height = 200\n canvas.style.display = 'inline'\n var ctx = canvas.getContext('2d')\n // detect browser support of canvas winding\n // http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // https://github.com/Modernizr/Modernizr/blob/master/feature-detects/canvas/winding.js\n ctx.rect(0, 0, 10, 10)\n ctx.rect(2, 2, 6, 6)\n result.push('canvas winding:' + ((ctx.isPointInPath(5, 5, 'evenodd') === false) ? 'yes' : 'no'))\n\n ctx.textBaseline = 'alphabetic'\n ctx.fillStyle = '#f60'\n ctx.fillRect(125, 1, 62, 20)\n ctx.fillStyle = '#069'\n // https://github.com/fingerprintjs/fingerprintjs/issues/66\n if (options.dontUseFakeFontInCanvas) {\n ctx.font = '11pt Arial'\n } else {\n ctx.font = '11pt no-real-font-123'\n }\n ctx.fillText('Cwm fjordbank glyphs vext quiz, \\ud83d\\ude03', 2, 15)\n ctx.fillStyle = 'rgba(102, 204, 0, 0.2)'\n ctx.font = '18pt Arial'\n ctx.fillText('Cwm fjordbank glyphs vext quiz, \\ud83d\\ude03', 4, 45)\n\n // canvas blending\n // http://blogs.adobe.com/webplatform/2013/01/28/blending-features-in-canvas/\n // http://jsfiddle.net/NDYV8/16/\n ctx.globalCompositeOperation = 'multiply'\n ctx.fillStyle = 'rgb(255,0,255)'\n ctx.beginPath()\n ctx.arc(50, 50, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(0,255,255)'\n ctx.beginPath()\n ctx.arc(100, 50, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(255,255,0)'\n ctx.beginPath()\n ctx.arc(75, 100, 50, 0, Math.PI * 2, true)\n ctx.closePath()\n ctx.fill()\n ctx.fillStyle = 'rgb(255,0,255)'\n // canvas winding\n // http://blogs.adobe.com/webplatform/2013/01/30/winding-rules-in-canvas/\n // http://jsfiddle.net/NDYV8/19/\n ctx.arc(75, 75, 75, 0, Math.PI * 2, true)\n ctx.arc(75, 75, 25, 0, Math.PI * 2, true)\n ctx.fill('evenodd')\n\n if (canvas.toDataURL) { result.push('canvas fp:' + canvas.toDataURL()) }\n return result\n }\n var getWebglFp = function () {\n var gl\n var fa2s = function (fa) {\n gl.clearColor(0.0, 0.0, 0.0, 1.0)\n gl.enable(gl.DEPTH_TEST)\n gl.depthFunc(gl.LEQUAL)\n gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT)\n return '[' + fa[0] + ', ' + fa[1] + ']'\n }\n var maxAnisotropy = function (gl) {\n var ext = gl.getExtension('EXT_texture_filter_anisotropic') || gl.getExtension('WEBKIT_EXT_texture_filter_anisotropic') || gl.getExtension('MOZ_EXT_texture_filter_anisotropic')\n if (ext) {\n var anisotropy = gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT)\n if (anisotropy === 0) {\n anisotropy = 2\n }\n return anisotropy\n } else {\n return null\n }\n }\n\n gl = getWebglCanvas()\n if (!gl) { return null }\n // WebGL fingerprinting is a combination of techniques, found in MaxMind antifraud script & Augur fingerprinting.\n // First it draws a gradient object with shaders and convers the image to the Base64 string.\n // Then it enumerates all WebGL extensions & capabilities and appends them to the Base64 string, resulting in a huge WebGL string, potentially very unique on each device\n // Since iOS supports webgl starting from version 8.1 and 8.1 runs on several graphics chips, the results may be different across ios devices, but we need to verify it.\n var result = []\n var vShaderTemplate = 'attribute vec2 attrVertex;varying vec2 varyinTexCoordinate;uniform vec2 uniformOffset;void main(){varyinTexCoordinate=attrVertex+uniformOffset;gl_Position=vec4(attrVertex,0,1);}'\n var fShaderTemplate = 'precision mediump float;varying vec2 varyinTexCoordinate;void main() {gl_FragColor=vec4(varyinTexCoordinate,0,1);}'\n var vertexPosBuffer = gl.createBuffer()\n gl.bindBuffer(gl.ARRAY_BUFFER, vertexPosBuffer)\n var vertices = new Float32Array([-0.2, -0.9, 0, 0.4, -0.26, 0, 0, 0.732134444, 0])\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW)\n vertexPosBuffer.itemSize = 3\n vertexPosBuffer.numItems = 3\n var program = gl.createProgram()\n var vshader = gl.createShader(gl.VERTEX_SHADER)\n gl.shaderSource(vshader, vShaderTemplate)\n gl.compileShader(vshader)\n var fshader = gl.createShader(gl.FRAGMENT_SHADER)\n gl.shaderSource(fshader, fShaderTemplate)\n gl.compileShader(fshader)\n gl.attachShader(program, vshader)\n gl.attachShader(program, fshader)\n gl.linkProgram(program)\n gl.useProgram(program)\n program.vertexPosAttrib = gl.getAttribLocation(program, 'attrVertex')\n program.offsetUniform = gl.getUniformLocation(program, 'uniformOffset')\n gl.enableVertexAttribArray(program.vertexPosArray)\n gl.vertexAttribPointer(program.vertexPosAttrib, vertexPosBuffer.itemSize, gl.FLOAT, !1, 0, 0)\n gl.uniform2f(program.offsetUniform, 1, 1)\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, vertexPosBuffer.numItems)\n try {\n result.push(gl.canvas.toDataURL())\n } catch (e) {\n /* .toDataURL may be absent or broken (blocked by extension) */\n }\n result.push('extensions:' + (gl.getSupportedExtensions() || []).join(';'))\n result.push('webgl aliased line width range:' + fa2s(gl.getParameter(gl.ALIASED_LINE_WIDTH_RANGE)))\n result.push('webgl aliased point size range:' + fa2s(gl.getParameter(gl.ALIASED_POINT_SIZE_RANGE)))\n result.push('webgl alpha bits:' + gl.getParameter(gl.ALPHA_BITS))\n result.push('webgl antialiasing:' + (gl.getContextAttributes().antialias ? 'yes' : 'no'))\n result.push('webgl blue bits:' + gl.getParameter(gl.BLUE_BITS))\n result.push('webgl depth bits:' + gl.getParameter(gl.DEPTH_BITS))\n result.push('webgl green bits:' + gl.getParameter(gl.GREEN_BITS))\n result.push('webgl max anisotropy:' + maxAnisotropy(gl))\n result.push('webgl max combined texture image units:' + gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS))\n result.push('webgl max cube map texture size:' + gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE))\n result.push('webgl max fragment uniform vectors:' + gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS))\n result.push('webgl max render buffer size:' + gl.getParameter(gl.MAX_RENDERBUFFER_SIZE))\n result.push('webgl max texture image units:' + gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS))\n result.push('webgl max texture size:' + gl.getParameter(gl.MAX_TEXTURE_SIZE))\n result.push('webgl max varying vectors:' + gl.getParameter(gl.MAX_VARYING_VECTORS))\n result.push('webgl max vertex attribs:' + gl.getParameter(gl.MAX_VERTEX_ATTRIBS))\n result.push('webgl max vertex texture image units:' + gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS))\n result.push('webgl max vertex uniform vectors:' + gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS))\n result.push('webgl max viewport dims:' + fa2s(gl.getParameter(gl.MAX_VIEWPORT_DIMS)))\n result.push('webgl red bits:' + gl.getParameter(gl.RED_BITS))\n result.push('webgl renderer:' + gl.getParameter(gl.RENDERER))\n result.push('webgl shading language version:' + gl.getParameter(gl.SHADING_LANGUAGE_VERSION))\n result.push('webgl stencil bits:' + gl.getParameter(gl.STENCIL_BITS))\n result.push('webgl vendor:' + gl.getParameter(gl.VENDOR))\n result.push('webgl version:' + gl.getParameter(gl.VERSION))\n\n try {\n // Add the unmasked vendor and unmasked renderer if the debug_renderer_info extension is available\n var extensionDebugRendererInfo = gl.getExtension('WEBGL_debug_renderer_info')\n if (extensionDebugRendererInfo) {\n result.push('webgl unmasked vendor:' + gl.getParameter(extensionDebugRendererInfo.UNMASKED_VENDOR_WEBGL))\n result.push('webgl unmasked renderer:' + gl.getParameter(extensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL))\n }\n } catch (e) { /* squelch */ }\n\n if (!gl.getShaderPrecisionFormat) {\n loseWebglContext(gl)\n return result\n }\n\n each(['FLOAT', 'INT'], function (numType) {\n each(['VERTEX', 'FRAGMENT'], function (shader) {\n each(['HIGH', 'MEDIUM', 'LOW'], function (numSize) {\n each(['precision', 'rangeMin', 'rangeMax'], function (key) {\n var format = gl.getShaderPrecisionFormat(gl[shader + '_SHADER'], gl[numSize + '_' + numType])[key]\n if (key !== 'precision') {\n key = 'precision ' + key\n }\n var line = ['webgl ', shader.toLowerCase(), ' shader ', numSize.toLowerCase(), ' ', numType.toLowerCase(), ' ', key, ':', format].join('')\n result.push(line)\n })\n })\n })\n })\n loseWebglContext(gl)\n return result\n }\n var getWebglVendorAndRenderer = function () {\n /* This a subset of the WebGL fingerprint with a lot of entropy, while being reasonably browser-independent */\n try {\n var glContext = getWebglCanvas()\n var extensionDebugRendererInfo = glContext.getExtension('WEBGL_debug_renderer_info')\n var params = glContext.getParameter(extensionDebugRendererInfo.UNMASKED_VENDOR_WEBGL) + '~' + glContext.getParameter(extensionDebugRendererInfo.UNMASKED_RENDERER_WEBGL)\n loseWebglContext(glContext)\n return params\n } catch (e) {\n return null\n }\n }\n var getAdBlock = function () {\n var ads = document.createElement('div')\n ads.innerHTML = '&nbsp;'\n ads.className = 'adsbox'\n var result = false\n try {\n // body may not exist, that's why we need try/catch\n document.body.appendChild(ads)\n result = document.getElementsByClassName('adsbox')[0].offsetHeight === 0\n document.body.removeChild(ads)\n } catch (e) {\n result = false\n }\n return result\n }\n var getHasLiedLanguages = function () {\n // We check if navigator.language is equal to the first language of navigator.languages\n // navigator.languages is undefined on IE11 (and potentially older IEs)\n if (typeof navigator.languages !== 'undefined') {\n try {\n var firstLanguages = navigator.languages[0].substr(0, 2)\n if (firstLanguages !== navigator.language.substr(0, 2)) {\n return true\n }\n } catch (err) {\n return true\n }\n }\n return false\n }\n var getHasLiedResolution = function () {\n return window.screen.width < window.screen.availWidth || window.screen.height < window.screen.availHeight\n }\n var getHasLiedOs = function () {\n var userAgent = navigator.userAgent.toLowerCase()\n var oscpu = navigator.oscpu\n var platform = navigator.platform.toLowerCase()\n var os\n // We extract the OS from the user agent (respect the order of the if else if statement)\n if (userAgent.indexOf('windows phone') >= 0) {\n os = 'Windows Phone'\n } else if (userAgent.indexOf('windows') >= 0 || userAgent.indexOf('win16') >= 0 || userAgent.indexOf('win32') >= 0 || userAgent.indexOf('win64') >= 0 || userAgent.indexOf('win95') >= 0 || userAgent.indexOf('win98') >= 0 || userAgent.indexOf('winnt') >= 0 || userAgent.indexOf('wow64') >= 0) {\n os = 'Windows'\n } else if (userAgent.indexOf('android') >= 0) {\n os = 'Android'\n } else if (userAgent.indexOf('linux') >= 0 || userAgent.indexOf('cros') >= 0 || userAgent.indexOf('x11') >= 0) {\n os = 'Linux'\n } else if (userAgent.indexOf('iphone') >= 0 || userAgent.indexOf('ipad') >= 0 || userAgent.indexOf('ipod') >= 0 || userAgent.indexOf('crios') >= 0 || userAgent.indexOf('fxios') >= 0) {\n os = 'iOS'\n } else if (userAgent.indexOf('macintosh') >= 0 || userAgent.indexOf('mac_powerpc)') >= 0) {\n os = 'Mac'\n } else {\n os = 'Other'\n }\n // We detect if the person uses a touch device\n var mobileDevice = (('ontouchstart' in window) ||\n (navigator.maxTouchPoints > 0) ||\n (navigator.msMaxTouchPoints > 0))\n\n if (mobileDevice && os !== 'Windows' && os !== 'Windows Phone' && os !== 'Android' && os !== 'iOS' && os !== 'Other' && userAgent.indexOf('cros') === -1) {\n return true\n }\n\n // We compare oscpu with the OS extracted from the UA\n if (typeof oscpu !== 'undefined') {\n oscpu = oscpu.toLowerCase()\n if (oscpu.indexOf('win') >= 0 && os !== 'Windows' && os !== 'Windows Phone') {\n return true\n } else if (oscpu.indexOf('linux') >= 0 && os !== 'Linux' && os !== 'Android') {\n return true\n } else if (oscpu.indexOf('mac') >= 0 && os !== 'Mac' && os !== 'iOS') {\n return true\n } else if ((oscpu.indexOf('win') === -1 && oscpu.indexOf('linux') === -1 && oscpu.indexOf('mac') === -1) !== (os === 'Other')) {\n return true\n }\n }\n\n // We compare platform with the OS extracted from the UA\n if (platform.indexOf('win') >= 0 && os !== 'Windows' && os !== 'Windows Phone') {\n return true\n } else if ((platform.indexOf('linux') >= 0 || platform.indexOf('android') >= 0 || platform.indexOf('pike') >= 0) && os !== 'Linux' && os !== 'Android') {\n return true\n } else if ((platform.indexOf('mac') >= 0 || platform.indexOf('ipad') >= 0 || platform.indexOf('ipod') >= 0 || platform.indexOf('iphone') >= 0) && os !== 'Mac' && os !== 'iOS') {\n return true\n } else if (platform.indexOf('arm') >= 0 && os === 'Windows Phone') {\n return false\n } else if (platform.indexOf('pike') >= 0 && userAgent.indexOf('opera mini') >= 0) {\n return false\n } else {\n var platformIsOther = platform.indexOf('win') < 0 &&\n platform.indexOf('linux') < 0 &&\n platform.indexOf('mac') < 0 &&\n platform.indexOf('iphone') < 0 &&\n platform.indexOf('ipad') < 0 &&\n platform.indexOf('ipod') < 0\n if (platformIsOther !== (os === 'Other')) {\n return true\n }\n }\n\n return typeof navigator.plugins === 'undefined' && os !== 'Windows' && os !== 'Windows Phone'\n }\n var getHasLiedBrowser = function () {\n var userAgent = navigator.userAgent.toLowerCase()\n var productSub = navigator.productSub\n\n // we extract the browser from the user agent (respect the order of the tests)\n var browser\n if (userAgent.indexOf('edge/') >= 0 || userAgent.indexOf('iemobile/') >= 0) {\n // Unreliable, different versions use EdgeHTML, Webkit, Blink, etc.\n return false\n } else if (userAgent.indexOf('opera mini') >= 0) {\n // Unreliable, different modes use Presto, WebView, Webkit, etc.\n return false\n } else if (userAgent.indexOf('firefox/') >= 0) {\n browser = 'Firefox'\n } else if (userAgent.indexOf('opera/') >= 0 || userAgent.indexOf(' opr/') >= 0) {\n browser = 'Opera'\n } else if (userAgent.indexOf('chrome/') >= 0) {\n browser = 'Chrome'\n } else if (userAgent.indexOf('safari/') >= 0) {\n if (userAgent.indexOf('android 1.') >= 0 || userAgent.indexOf('android 2.') >= 0 || userAgent.indexOf('android 3.') >= 0 || userAgent.indexOf('android 4.') >= 0) {\n browser = 'AOSP'\n } else {\n browser = 'Safari'\n }\n } else if (userAgent.indexOf('trident/') >= 0) {\n browser = 'Internet Explorer'\n } else {\n browser = 'Other'\n }\n\n if ((browser === 'Chrome' || browser === 'Safari' || browser === 'Opera') && productSub !== '20030107') {\n return true\n }\n\n // eslint-disable-next-line no-eval\n var tempRes = eval.toString().length\n if (tempRes === 37 && browser !== 'Safari' && browser !== 'Firefox' && browser !== 'Other') {\n return true\n } else if (tempRes === 39 && browser !== 'Internet Explorer' && browser !== 'Other') {\n return true\n } else if (tempRes === 33 && browser !== 'Chrome' && browser !== 'AOSP' && browser !== 'Opera' && browser !== 'Other') {\n return true\n }\n\n // We create an error to see how it is handled\n var errFirefox\n try {\n // eslint-disable-next-line no-throw-literal\n throw 'a'\n } catch (err) {\n try {\n err.toSource()\n errFirefox = true\n } catch (errOfErr) {\n errFirefox = false\n }\n }\n return errFirefox && browser !== 'Firefox' && browser !== 'Other'\n }\n var isCanvasSupported = function () {\n var elem = document.createElement('canvas')\n return !!(elem.getContext && elem.getContext('2d'))\n }\n var isWebGlSupported = function () {\n // code taken from Modernizr\n if (!isCanvasSupported()) {\n return false\n }\n\n var glContext = getWebglCanvas()\n var isSupported = !!window.WebGLRenderingContext && !!glContext\n loseWebglContext(glContext)\n return isSupported\n }\n var isIE = function () {\n if (navigator.appName === 'Microsoft Internet Explorer') {\n return true\n } else if (navigator.appName === 'Netscape' && /Trident/.test(navigator.userAgent)) { // IE 11\n return true\n }\n return false\n }\n var isIEOrOldEdge = function () {\n // The properties are checked to be in IE 10, IE 11 and Edge 18 and not to be in other browsers\n return ('msWriteProfilerMark' in window) + ('msLaunchUri' in navigator) + ('msSaveBlob' in navigator) >= 2\n }\n var hasSwfObjectLoaded = function () {\n return typeof window.swfobject !== 'undefined'\n }\n var hasMinFlashInstalled = function () {\n return window.swfobject.hasFlashPlayerVersion('9.0.0')\n }\n var addFlashDivNode = function (options) {\n var node = document.createElement('div')\n node.setAttribute('id', options.fonts.swfContainerId)\n document.body.appendChild(node)\n }\n var loadSwfAndDetectFonts = function (done, options) {\n var hiddenCallback = '___fp_swf_loaded'\n window[hiddenCallback] = function (fonts) {\n done(fonts)\n }\n var id = options.fonts.swfContainerId\n addFlashDivNode()\n var flashvars = { onReady: hiddenCallback }\n var flashparams = { allowScriptAccess: 'always', menu: 'false' }\n window.swfobject.embedSWF(options.fonts.swfPath, id, '1', '1', '9.0.0', false, flashvars, flashparams, {})\n }\n var getWebglCanvas = function () {\n var canvas = document.createElement('canvas')\n var gl = null\n try {\n gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl')\n } catch (e) { /* squelch */ }\n if (!gl) { gl = null }\n return gl\n }\n var loseWebglContext = function (context) {\n var loseContextExtension = context.getExtension('WEBGL_lose_context')\n if (loseContextExtension != null) {\n loseContextExtension.loseContext()\n }\n }\n\n var components = [\n { key: 'userAgent', getData: UserAgent },\n { key: 'webdriver', getData: webdriver },\n { key: 'language', getData: languageKey },\n { key: 'colorDepth', getData: colorDepthKey },\n { key: 'deviceMemory', getData: deviceMemoryKey },\n { key: 'pixelRatio', getData: pixelRatioKey },\n { key: 'hardwareConcurrency', getData: hardwareConcurrencyKey },\n { key: 'screenResolution', getData: screenResolutionKey },\n { key: 'availableScreenResolution', getData: availableScreenResolutionKey },\n { key: 'timezoneOffset', getData: timezoneOffset },\n { key: 'timezone', getData: timezone },\n { key: 'sessionStorage', getData: sessionStorageKey },\n { key: 'localStorage', getData: localStorageKey },\n { key: 'indexedDb', getData: indexedDbKey },\n { key: 'addBehavior', getData: addBehaviorKey },\n { key: 'openDatabase', getData: openDatabaseKey },\n { key: 'cpuClass', getData: cpuClassKey },\n { key: 'platform', getData: platformKey },\n { key: 'doNotTrack', getData: doNotTrackKey },\n { key: 'plugins', getData: pluginsComponent },\n { key: 'canvas', getData: canvasKey },\n { key: 'webgl', getData: webglKey },\n { key: 'webglVendorAndRenderer', getData: webglVendorAndRendererKey },\n { key: 'adBlock', getData: adBlockKey },\n { key: 'hasLiedLanguages', getData: hasLiedLanguagesKey },\n { key: 'hasLiedResolution', getData: hasLiedResolutionKey },\n { key: 'hasLiedOs', getData: hasLiedOsKey },\n { key: 'hasLiedBrowser', getData: hasLiedBrowserKey },\n { key: 'touchSupport', getData: touchSupportKey },\n { key: 'fonts', getData: jsFontsKey, pauseBefore: true },\n { key: 'fontsFlash', getData: flashFontsKey, pauseBefore: true },\n { key: 'audio', getData: audioKey },\n { key: 'enumerateDevices', getData: enumerateDevicesKey }\n ]\n\n var Fingerprint2 = function (options) {\n throw new Error(\"'new Fingerprint()' is deprecated, see https://github.com/fingerprintjs/fingerprintjs#upgrade-guide-from-182-to-200\")\n }\n\n Fingerprint2.get = function (options, callback) {\n if (!callback) {\n callback = options\n options = {}\n } else if (!options) {\n options = {}\n }\n extendSoft(options, defaultOptions)\n options.components = options.extraComponents.concat(components)\n\n var keys = {\n data: [],\n addPreprocessedComponent: function (key, value) {\n if (typeof options.preprocessor === 'function') {\n value = options.preprocessor(key, value)\n }\n keys.data.push({ key: key, value: value })\n }\n }\n\n var i = -1\n var chainComponents = function (alreadyWaited) {\n i += 1\n if (i >= options.components.length) { // on finish\n callback(keys.data)\n return\n }\n var component = options.components[i]\n\n if (options.excludes[component.key]) {\n chainComponents(false) // skip\n return\n }\n\n if (!alreadyWaited && component.pauseBefore) {\n i -= 1\n setTimeout(function () {\n chainComponents(true)\n }, 1)\n return\n }\n\n try {\n component.getData(function (value) {\n keys.addPreprocessedComponent(component.key, value)\n chainComponents(false)\n }, options)\n } catch (error) {\n // main body error\n keys.addPreprocessedComponent(component.key, String(error))\n chainComponents(false)\n }\n }\n\n chainComponents(false)\n }\n\n Fingerprint2.getPromise = function (options) {\n return new Promise(function (resolve, reject) {\n Fingerprint2.get(options, resolve)\n })\n }\n\n Fingerprint2.getV18 = function (options, callback) {\n if (callback == null) {\n callback = options\n options = {}\n }\n return Fingerprint2.get(options, function (components) {\n var newComponents = []\n for (var i = 0; i < components.length; i++) {\n var component = components[i]\n if (component.value === (options.NOT_AVAILABLE || 'not available')) {\n newComponents.push({ key: component.key, value: 'unknown' })\n } else if (component.key === 'plugins') {\n newComponents.push({\n key: 'plugins',\n value: map(component.value, function (p) {\n var mimeTypes = map(p[2], function (mt) {\n if (mt.join) { return mt.join('~') }\n return mt\n }).join(',')\n return [p[0], p[1], mimeTypes].join('::')\n })\n })\n } else if (['canvas', 'webgl'].indexOf(component.key) !== -1 && Array.isArray(component.value)) {\n // sometimes WebGL returns error in headless browsers (during CI testing for example)\n // so we need to join only if the values are array\n newComponents.push({ key: component.key, value: component.value.join('~') })\n } else if (['sessionStorage', 'localStorage', 'indexedDb', 'addBehavior', 'openDatabase'].indexOf(component.key) !== -1) {\n if (component.value) {\n newComponents.push({ key: component.key, value: 1 })\n } else {\n // skip\n continue\n }\n } else {\n if (component.value) {\n newComponents.push(component.value.join ? { key: component.key, value: component.value.join(';') } : component)\n } else {\n newComponents.push({ key: component.key, value: component.value })\n }\n }\n }\n var murmur = x64hash128(map(newComponents, function (component) { return component.value }).join('~~~'), 31)\n callback(murmur, newComponents)\n })\n }\n\n Fingerprint2.x64hash128 = x64hash128\n Fingerprint2.VERSION = '2.1.4'\n return Fingerprint2\n})\n","/**\n * Fingerprint v3.12.9 - Copyright (c) FingerprintJS, Inc, 2026 (https://fingerprint.com)\n */\n\nfunction e(e,t){return function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}(e,t)?e[t]:void 0}function t(e){return new Promise(((t,n)=>{if(function(e){if(!URL.prototype)return;try{return new URL(e,location.href),!1}catch(t){if(t instanceof Error&&\"TypeError\"===t.name)return!0;throw t}}(e))throw new Error(H);const r=document.createElement(\"script\"),o=()=>{var e;return null===(e=r.parentNode)||void 0===e?void 0:e.removeChild(r)},i=document.head||document.getElementsByTagName(\"head\")[0];r.onload=()=>{o(),t()},r.onerror=()=>{o(),n(new Error(Pe))},r.async=!0,r.src=e,i.appendChild(r)}))}function n({level:e,message:t}){\"error\"===e?console.error(t):\"warning\"===e?console.warn(t):console.log(t)}function r(e,t){if(e.arr.length<t){const n=new Uint8Array(Math.max(2*e.arr.length,t));n.set(e.arr),e.arr=n}}function o(){return function(){var e,t;const n=window;return[\"buildID\"in navigator,\"MozAppearance\"in(null!==(t=null===(e=document.documentElement)||void 0===e?void 0:e.style)&&void 0!==t?t:{}),\"onmozfullscreenchange\"in n,\"mozInnerScreenX\"in n,\"CSSMozDocumentRule\"in n,\"CanvasCaptureMediaStream\"in n].reduce(((e,t)=>e+(t?1:0)),0)>=4}()}function i(e){const t={len:0,arr:new Uint8Array(128)},n=fe(e);let r=0;const o=()=>(u(),n[r]===p?i():a(n[r])?c():d(M)?(r+=M.length,null):d(x)?(r+=x.length,!0):d(k)?(r+=k.length,!1):n[r]===U?s():n[r]===C?l():f()),i=()=>{for(t.len=0;r++,n[r]!==p;){if(n[r]===m){if(r++,n[r]===A){const e=parseInt(pe(n.subarray(r+1,r+5)),16);ke(t,h(String.fromCharCode(e))),r+=4;continue}const e=V[n[r]];if(e){le(t,e);continue}return f()}if(void 0===n[r])return f();le(t,n[r])}return r++,pe(function(e){return e.arr.subarray(0,e.len)}(t))},c=()=>{const e=r;for(;n[r]===b||n[r]===y||n[r]===N||n[r]===S||a(n[r]);)r++;return Number(pe(n.subarray(e,r)))},s=()=>{const e=[];for(r++;;){if(u(),n[r]===P){r++;break}if(e.length){if(n[r]!==_)return f();r++}e.push(o())}return e},l=()=>{const e={};let t=!0;for(r++;;){if(u(),n[r]===L){r++;break}if(!t){if(n[r]!==_)return f();r++,u()}if(n[r]!==p)return f();const c=i();if(u(),n[r]!==O)return f();r++,Object.defineProperty(e,c,{value:o(),configurable:!0,enumerable:!0,writable:!0}),t=!1}return e},u=()=>{for(;n[r]===w||n[r]===v||n[r]===g||n[r]===I;)r++},d=e=>{for(let t=0;t<e.length;t++)if(n[r+t]!==e[t])return!1;return!0},f=()=>{throw new SyntaxError(\"Unexpected \"+(r<n.length?`byte ${r}`:\"end\"))},R=o();return u(),void 0!==n[r]&&f(),R}function c(e,t){return function(e,t,n){const r=()=>{throw new Error(\"Invalid data\")},o=fe(e);o.length<t.length+2&&r();for(let d=0;d<t.length;++d)re(o[1+d],o[0])!==t[d]&&r();const i=1+t.length,c=re(o[i],o[0]);o.length<i+1+c+n&&r();const a=i+1+c,s=a+n,l=new ArrayBuffer(o.length-s),u=new Uint8Array(l);for(let d=0;d<u.length;++d)u[d]=o[s+d]^o[a+d%n];return l}(e,t?Ee:Re,he)}function a(e){return e>=T&&e<T+10||e===D}function s(e,t,n,r){Le((()=>{const o=`${e}=${t}`,i=`expires=${new Date(Date.now()+24*n*60*60*1e3).toUTCString()}`,c=r?`domain=${r}`:\"\";document.cookie=[o,\"path=/\",i,c,\"SameSite=Lax\"].join(\"; \")}),void 0)}function l(e,t){!function(e,t,n){if(se((t=>{!function(e,t){s(e,\"\",-1,t)}(e,t)})),n<0)return;se((r=>(s(e,t,n,r),function(e){return Le((()=>{const t=`${e}=`;for(const e of document.cookie.split(\";\")){let n=0;for(;\" \"===e[n]&&n<e.length;)++n;if(e.indexOf(t)===n)return e.slice(n+t.length)}}),void 0)}(e)===t)))}(t,e,365),function(e,t){var n;try{null===(n=null===localStorage||void 0===localStorage?void 0:localStorage.setItem)||void 0===n||n.call(localStorage,e,t)}catch(r){}}(t,e)}function u(){const e=window,t=\"__fpjs_p_l_b\",n=e[t];if(function(e,t){var n;const r=null===(n=Object.getOwnPropertyDescriptor)||void 0===n?void 0:n.call(Object,e,t);(null==r?void 0:r.configurable)?delete e[t]:r&&!r.writable||(e[t]=void 0)}(e,t),\"function\"!=typeof(null==n?void 0:n.load))throw new Error(Ce);return n}const d={default:\"endpoint\"},f={default:\"tlsEndpoint\"},R=\"_vid\";function E(e,t){return(Array.isArray(e)?e:[e]).map((e=>function(e,t){const n=encodeURIComponent;return e.replace(/<[^<>]+>/g,(e=>\"<version>\"===e?\"3\":\"<apiKey>\"===e?n(t):\"<loaderVersion>\"===e?n(Ue):e))}(String(e),t)))}function h(e){const t=new Uint8Array(e.length);for(let n=0;n<e.length;n++){const r=e.charCodeAt(n);if(r>127)return(new TextEncoder).encode(e);t[n]=r}return t}const p=34,_=44,O=58,w=32,I=9,g=13,v=10,m=92,T=48,y=101,A=117,N=69,S=43,D=45,b=46,U=91,P=93,C=123,L=125,M=/*#__PURE__*/new Uint8Array([110,A,108,108]),x=/*#__PURE__*/new Uint8Array([116,114,A,y]),k=/*#__PURE__*/new Uint8Array([102,97,108,115,y]),K={'\"':'\"',\"\\\\\":\"\\\\\",\"\\b\":\"b\",\"\\f\":\"f\",\"\\n\":\"n\",\"\\r\":\"r\",\"\\t\":\"t\"},V=/*#__PURE__*/(()=>{const e=new Uint8Array(128);for(const[t,n]of Object.entries(K))e[n.charCodeAt(0)]=t.charCodeAt(0);return e})(),B=\"Client timeout\",F=\"Network connection error\",G=\"Network request aborted\",j=\"Response cannot be parsed\",$=\"Blocked by CSP\",H=\"The endpoint parameter is not a valid URL\",q=\"Handle on demand agent data error\",X=/*#__PURE__*/_e(\"WrongRegion\"),Y=/*#__PURE__*/_e(\"SubscriptionNotActive\"),W=/*#__PURE__*/_e(\"UnsupportedVersion\"),z=/*#__PURE__*/_e(\"InstallationMethodRestricted\"),J=/*#__PURE__*/_e(\"HostnameRestricted\"),Q=/*#__PURE__*/_e(\"IntegrationFailed\"),Z=/*#__PURE__*/_e(\"NetworkRestricted\"),ee=/*#__PURE__*/_e(\"InvalidProxyIntegrationSecret\"),te=/*#__PURE__*/_e(\"InvalidProxyIntegrationHeaders\"),ne=/*#__PURE__*/_e(\"ProxyIntegrationSecretEnvironmentMismatch\");function re(e,t){return(e-t+256)%256}function oe(e){return function(e,t,n,r){const o=document,i=\"securitypolicyviolation\";let c;const a=t=>{const n=new URL(e,location.href),{blockedURI:r}=t;r!==n.href&&r!==n.protocol.slice(0,-1)&&r!==n.origin||(c=t,s())};o.addEventListener(i,a);const s=()=>o.removeEventListener(i,a);return null==r||r.then(s,s),Promise.resolve().then(t).then((e=>(s(),e)),(e=>new Promise((e=>{const t=new MessageChannel;t.port1.onmessage=()=>e(),t.port2.postMessage(null)})).then((()=>{if(s(),c)return n(c);throw e}))))}(e,(()=>t(e)),(()=>{throw new Error($)})).then(u)}const ie=/The document is sandboxed and lacks the 'allow-same-origin' flag/,ce=/The operation is insecure/,ae=/Forbidden in a sandboxed document without the 'allow-same-origin' flag/;function se(e){const t=location.hostname,n=o();(function(e,t){let n=e.length-(\".\"===e.slice(-1)?1:0);do{if(n=n>0?e.lastIndexOf(\".\",n-1):-1,!0===t(e.slice(n+1)))return!0}while(n>=0);return!1})(t,(r=>{if(!n||!/^([^.]{1,3}\\.)*[^.]+\\.?$/.test(r)||r===t)return e(r)}))||e()}function le(e,t){r(e,e.len+1),e.arr[e.len++]=t}function ue(t){var n,r;const{picked:o,rest:i}=function(e,t){const n={},r={};for(const[o,i]of Object.entries(e))t.includes(o)?n[o]=i:r[o]=i;return{picked:n,rest:r}}(t,[\"scriptUrlPattern\",\"token\",\"apiKey\"]),c=o.token,a=null!==(n=o.apiKey)&&void 0!==n?n:c,s=null!==(r=e(t,\"scriptUrlPattern\"))&&void 0!==r?r:Me.scriptUrl,[l,u]=function(){const e=[],t=()=>{e.push({time:new Date,state:document.visibilityState})},n=(r=document,o=\"visibilitychange\",i=t,r.addEventListener(o,i,c),()=>r.removeEventListener(o,i,c));var r,o,i,c;return t(),[e,n]}();return Promise.resolve().then((()=>{if(!a||\"string\"!=typeof a)throw new Error(we);return function(e,t){const n=[],r=5,[o,i]=function(e){const t=function(e){const t=[...e];return{current:()=>t[0],postpone(){const e=t.shift();void 0!==e&&t.push(e)},exclude(){t.shift()}}}(e),n=function(e,t){let n=0;return()=>Math.random()*Math.min(t,e*Math.pow(2,n++))}(100,3e3),r=new Set;return[t.current(),(e,o)=>{let i;const c=o instanceof Error?o.message:\"\";if(c===$||c===H)t.exclude(),i=0;else if(c===Ce)t.exclude();else if(c===Pe){const n=Date.now()-e.getTime()<50,o=t.current();o&&n&&!r.has(o)&&(r.add(o),i=0),t.postpone()}else t.postpone();const a=t.current();return void 0===a?void 0:[a,null!=i?i:e.getTime()+n()-Date.now()]}]}(e);let c;if(void 0===o)return Promise.reject(new TypeError(\"The list of script URL patterns is empty\"));const a=e=>{const o=new Date,s=t=>n.push({url:e,startedAt:o,finishedAt:new Date,error:t}),l=t(e);return l.then((()=>s()),s),l.catch((e=>{if(null!=c||(c=e),n.length>=r)throw c;const t=i(o,e);if(!t)throw c;const[s,l]=t;return(u=l,new Promise((e=>setTimeout(e,u)))).then((()=>a(s)));var u}))};return a(o).then((e=>[e,n]))}(E(s,a),oe)})).catch((e=>{throw u(),function(e){return e instanceof Error&&e.message===Ce?new Error(Pe):e}(e)})).then((([e,t])=>(u(),e.load({...i,ldi:{attempts:t,visibilityStates:l}}))))}function de(e,t,...n){e&&async function(e,t){try{await e()}catch(n){return console.error(n),t}}((()=>{const r=t(...n);void 0!==r&&e(r)}))}function fe(e){return e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}const Re=[3,13],Ee=[3,14],he=9;function pe(e){if(\"function\"==typeof TextDecoder){const t=(new TextDecoder).decode(e);if(t)return t}const t=fe(e);return decodeURIComponent(escape(String.fromCharCode.apply(null,t)))}function _e(e){let t=\"\";for(let n=0;n<e.length;++n)if(n>0){const r=e[n].toLowerCase();r!==e[n]?t+=` ${r}`:t+=e[n]}else t+=e[n].toUpperCase();return t}const Oe=function(e,t={}){const{storageKey:r=R,do:o}=t;try{const t=function(e){const t=function(e){const t=atob(e),n=t.length,r=new Uint8Array(n);for(let o=0;o<n;o++)r[o]=t.charCodeAt(o);return r}(e);let n=t;try{n=c(t,!1)}catch(r){}try{return i(n)}catch(o){}return null}(e);null!==t?(t.visitorToken&&l(t.visitorToken,`${r}_t`),null==(a=t.notifications)||a.forEach(n),de(o,(()=>({e:25,result:{response:t}})))):de(o,(()=>({e:25,result:{error:new Error(\"Failed to decode response\")}})))}catch(s){throw de(o,(()=>({e:25,result:{error:s instanceof Error?s:new Error(String(s))}}))),function(e,t,n){const r=new Error(e);return void 0!==t&&(r.requestId=t),void 0!==n&&(r.raw=n),r}(q,void 0,s)}var a},we=\"API key required\",Ie=\"API key not found\",ge=\"API key expired\",ve=\"Request cannot be parsed\",me=\"Request failed\",Te=\"Request failed to process\",ye=\"Too many requests, rate limit exceeded\",Ae=\"Not available for this origin\",Ne=\"Not available with restricted header\",Se=we,De=Ie,be=ge;var Ue=\"3.12.9\";const Pe=\"Failed to load the JS script of the agent\",Ce=\"9319\";function Le(e,t){try{document.cookie}catch(n){if(function(e){if(!(e instanceof DOMException))return!1;const t=e.message;return ie.test(t)||ce.test(t)||ae.test(t)}(n))return t;throw n}return e()}const Me={scriptUrl:\"https://fpnpmcdn.net/v<version>/<apiKey>/loader_v<loaderVersion>.js\"},xe=Me.scriptUrl;function ke(e,t){r(e,e.len+t.length),e.arr.set(t,e.len),e.len+=t.length}var Ke={load:ue,defaultScriptUrlPattern:xe,ERROR_SCRIPT_LOAD_FAIL:Pe,ERROR_API_KEY_EXPIRED:ge,ERROR_API_KEY_INVALID:Ie,ERROR_API_KEY_MISSING:we,ERROR_BAD_REQUEST_FORMAT:ve,ERROR_BAD_RESPONSE_FORMAT:j,ERROR_CLIENT_TIMEOUT:B,ERROR_CSP_BLOCK:$,ERROR_FORBIDDEN_ENDPOINT:J,ERROR_FORBIDDEN_HEADER:Ne,ERROR_FORBIDDEN_ORIGIN:Ae,ERROR_GENERAL_SERVER_FAILURE:me,ERROR_HANDLE_AGENT_DATA:q,ERROR_INSTALLATION_METHOD_RESTRICTED:z,ERROR_INTEGRATION_FAILURE:Q,ERROR_INVALID_ENDPOINT:H,ERROR_INVALID_PROXY_INTEGRATION_HEADERS:te,ERROR_INVALID_PROXY_INTEGRATION_SECRET:ee,ERROR_NETWORK_ABORT:G,ERROR_NETWORK_CONNECTION:F,ERROR_NETWORK_RESTRICTED:Z,ERROR_PROXY_INTEGRATION_SECRET_ENVIRONMENT_MISMATCH:ne,ERROR_RATE_LIMIT:ye,ERROR_SERVER_TIMEOUT:Te,ERROR_SUBSCRIPTION_NOT_ACTIVE:Y,ERROR_TOKEN_EXPIRED:be,ERROR_TOKEN_INVALID:De,ERROR_TOKEN_MISSING:Se,ERROR_UNSUPPORTED_VERSION:W,ERROR_WRONG_REGION:X,defaultEndpoint:d,defaultTlsEndpoint:f,handleAgentData:Oe};export{ge as ERROR_API_KEY_EXPIRED,Ie as ERROR_API_KEY_INVALID,we as ERROR_API_KEY_MISSING,ve as ERROR_BAD_REQUEST_FORMAT,j as ERROR_BAD_RESPONSE_FORMAT,B as ERROR_CLIENT_TIMEOUT,$ as ERROR_CSP_BLOCK,J as ERROR_FORBIDDEN_ENDPOINT,Ne as ERROR_FORBIDDEN_HEADER,Ae as ERROR_FORBIDDEN_ORIGIN,me as ERROR_GENERAL_SERVER_FAILURE,q as ERROR_HANDLE_AGENT_DATA,z as ERROR_INSTALLATION_METHOD_RESTRICTED,Q as ERROR_INTEGRATION_FAILURE,H as ERROR_INVALID_ENDPOINT,te as ERROR_INVALID_PROXY_INTEGRATION_HEADERS,ee as ERROR_INVALID_PROXY_INTEGRATION_SECRET,G as ERROR_NETWORK_ABORT,F as ERROR_NETWORK_CONNECTION,Z as ERROR_NETWORK_RESTRICTED,ne as ERROR_PROXY_INTEGRATION_SECRET_ENVIRONMENT_MISMATCH,ye as ERROR_RATE_LIMIT,Pe as ERROR_SCRIPT_LOAD_FAIL,Te as ERROR_SERVER_TIMEOUT,Y as ERROR_SUBSCRIPTION_NOT_ACTIVE,be as ERROR_TOKEN_EXPIRED,De as ERROR_TOKEN_INVALID,Se as ERROR_TOKEN_MISSING,W as ERROR_UNSUPPORTED_VERSION,X as ERROR_WRONG_REGION,Ke as default,d as defaultEndpoint,xe as defaultScriptUrlPattern,f as defaultTlsEndpoint,Oe as handleAgentData,ue as load};\n","import Fingerprint2 from \"fingerprintjs2\";\nimport FingerprintJS from \"@fingerprintjs/fingerprintjs-pro\";\n\nimport { getSafe } from \"@jslib/shared/utils/getSafe\";\nimport { logger } from \"@jslib/shared/utils/logger\";\n\nimport { getOptions } from \"../../options/options\";\nimport { type ProgramTheme } from \"../types/types\";\n\ntype FingerprintProperties = {\n clientId: string;\n workerEndpoint: string;\n scriptUrl: string;\n};\n\n/**\n * @description The user's device fingerprint\n */\nlet fingerprint: string;\n\n/**\n * @description Get the digital fingerprint hash for a user, based on various digital signals.\n * Recommended: call this at least 500ms after page ready\n */\nexport const getFingerprint = async (): Promise<string> => {\n if (!getOptions().useFingerprinting) {\n return Promise.resolve(undefined);\n }\n\n if (fingerprint) {\n return Promise.resolve(fingerprint);\n }\n\n return Fingerprint2.getPromise({}).then((components) => {\n const values = components.map((component) => component.value);\n const murmur = Fingerprint2.x64hash128(values.join(\"\"), 31);\n fingerprint = murmur;\n return fingerprint;\n });\n};\n\n/**\n * @description Gets Fingerprint config from window properties passed in from view-main template.\n * This avoids env specific logic in jslib.\n */\nconst getFingerprintProperties = (): FingerprintProperties => {\n const { clientId, workerEndpoint, scriptUrl } = window.FP || {};\n if (\n !clientId ||\n !scriptUrl ||\n !scriptUrl.match(/^https:\\/\\/worker(-preview)?\\.sheerid\\.com\\//) ||\n !workerEndpoint ||\n !workerEndpoint.match(/^https:\\/\\/worker(-preview)?\\.sheerid\\.com\\//)\n ) {\n throw new Error(\"Fingerprint environment not set properly\");\n }\n\n return { clientId, workerEndpoint, scriptUrl };\n};\n\nlet fpRequestId: string | null = null;\n\nexport const getFingerprintRequestId = (): string | null => fpRequestId;\n\n/**\n * @description Loads the Fingerprint SDK and collects device signals. Returns the requestId\n * so it can be passed as metadata on submit, and saves it for retrieval via\n * getFingerprintRequestId().\n */\nexport const collectFingerprintDeviceData = async (\n programTheme: ProgramTheme,\n verificationId: string,\n): Promise<string | undefined> => {\n if (!getSafe(() => programTheme.fingerprintEnabled, false)) {\n return undefined;\n }\n\n try {\n const { clientId, workerEndpoint, scriptUrl } = getFingerprintProperties();\n\n const fp = await FingerprintJS.load({\n apiKey: clientId,\n endpoint: [workerEndpoint, FingerprintJS.defaultEndpoint],\n scriptUrlPattern: [scriptUrl, FingerprintJS.defaultScriptUrlPattern],\n });\n\n const result = await fp.get({ linkedId: verificationId });\n fpRequestId = result.requestId;\n return result.requestId;\n } catch (error) {\n logger.error(error, \"Failed to collect Fingerprint device data\");\n return undefined;\n }\n};\n","import { logger } from \"@jslib/shared/utils/logger\";\n\nimport { type Metadata } from \"../types/types\";\nimport { setOptions } from \"../../options/options\";\nimport { validateMetadata, ensureMaxMetadataKeyValueLengths } from \"../validators/validators\";\nimport { getQueryParamsFromUrl } from \"../utils/routing/Url\";\nimport { deepClone } from \"../utils/objects\";\n\nconst defaultMetadata: Metadata = {};\nlet metadata: Metadata = { ...defaultMetadata };\n\nexport const getMetadataFromUrl = (paramsFromResponse: string[]) => {\n const paramsFromQuery = getQueryParamsFromUrl();\n const validatedParams = {};\n paramsFromResponse.forEach((element) => {\n if (paramsFromQuery.get(element)) {\n validatedParams[element] = paramsFromQuery.get(element);\n }\n });\n return validatedParams;\n};\n\nexport const setMetadata = (newMetadata: Metadata) => {\n // backwards opt-in metadata key. It is supported now as an Option\n if (newMetadata && newMetadata.hasOwnProperty(\"optin\")) {\n setOptions({\n marketConsent: {\n /* keep metadata optin compatibility as string value. Set true any string but false */\n enabled: newMetadata.optin !== \"false\",\n required: false,\n message: \"\",\n },\n });\n }\n\n const isMetadataValid: boolean = validateMetadata(newMetadata);\n\n if (isMetadataValid) {\n const modifiedMetadata = ensureMaxMetadataKeyValueLengths(newMetadata);\n Object.assign(metadata, modifiedMetadata);\n logger.info(\"Added metadata: \", modifiedMetadata);\n logger.info(\"Full metadata: \", metadata);\n } else {\n logger.error(\"Metadata has not been updated. See previous error(s)\", \"setMetadata\");\n }\n};\n\nexport const resetMetadata = () => {\n metadata = { ...defaultMetadata };\n};\n\nexport const getMetadata = () =>\n Object.keys(metadata).length > 0 ? deepClone(metadata) : undefined;\n","/**\n * TODO - preamble\n */\nimport { logger } from \"@jslib/shared/utils/logger\";\n\nimport { type ViewModel, type VerificationStep } from \"../types/types\";\nimport { getAllEmptyViewModels } from \"../types/empties\";\nimport { assertValidVerificationStepName } from \"../types/assertions\";\n\n/**\n * Return an empty request object as a starting-point for our run-time model\n */\nexport const getEmptyViewModel = (currentStep: VerificationStep): ViewModel => {\n assertValidVerificationStepName(currentStep);\n const emptyViewModel = getAllEmptyViewModels()[currentStep];\n if (!emptyViewModel) {\n logger.log(`Can't find \"empty\" for ${currentStep}`);\n throw new Error(\"Check for missing empties\");\n }\n return emptyViewModel;\n};\n","import produce from \"immer\";\n\nimport {\n type ProgramTheme,\n type WithOrganization,\n type VerificationResponse,\n type ViewModel,\n type PersonalInfoResponse,\n type VerificationStep,\n type PersonalInfoViewModel,\n type DocUploadViewModel,\n type Locale,\n type Country,\n type FieldValidationErrors,\n type ErrorId,\n type FieldId,\n} from \"../types/types\";\nimport { VerificationStepsEnum } from \"../types/runtimeTypes\";\nimport { getEmptyViewModel } from \"../ServerApi/VerificationRequestGetters\";\nimport {\n MAX_DOC_UPLOAD_DOCS_ALLOWED,\n QUERY_STRING_EXTERNAL_USER_ID,\n UPLOAD_FILE_PREFIX,\n} from \"../../constants\";\nimport { deepClone } from \"../utils/objects\";\nimport { getQueryOrOption } from \"../ServerApi/TestingRouteOverrides\";\nimport { initialErrorStructure } from \"../types/empties\";\nimport { getQueryParam } from \"../utils/routing/Url\";\n\n/**\n * @todo needs tests\n * @private\n */\nexport const handleSubmitResponse = (\n verificationResponse: VerificationResponse,\n viewModel: ViewModel,\n programTheme: ProgramTheme,\n): ViewModel => {\n const { currentStep } = verificationResponse;\n let newViewModel: ViewModel;\n\n if (\n currentStep === VerificationStepsEnum.collectMilitaryStatus ||\n currentStep === VerificationStepsEnum.collectActiveMilitaryPersonalInfo ||\n currentStep === VerificationStepsEnum.collectInactiveMilitaryPersonalInfo ||\n currentStep === VerificationStepsEnum.collectMilitaryPersonalInfo\n ) {\n // Single view model across military steps — preserve as-is between renders.\n newViewModel = viewModel;\n } else if (hasFailedInstantMatch(verificationResponse as PersonalInfoResponse)) {\n newViewModel = viewModel;\n } else {\n const { locale } = verificationResponse;\n newViewModel = initViewModel({\n locale,\n previousViewModel: viewModel,\n currentStep,\n externalUserId: getQueryOrOption(QUERY_STRING_EXTERNAL_USER_ID),\n });\n }\n return newViewModel;\n};\n\n/**\n * @private\n */\nexport const hasFailedInstantMatch = (verificationResponse: PersonalInfoResponse): boolean => {\n if (verificationResponse.instantMatchAttempts && verificationResponse.instantMatchAttempts > 0) {\n return true;\n }\n return false;\n};\n\n/**\n * @private\n */\nexport const initViewModel = ({\n previousViewModel,\n currentStep,\n locale,\n fingerprint,\n country,\n externalUserId,\n}: {\n previousViewModel: ViewModel;\n currentStep: VerificationStep;\n locale: Locale;\n fingerprint?: string;\n country?: Country;\n externalUserId?: string;\n}): ViewModel => {\n const viewModel = getEmptyViewModel(currentStep);\n\n // Attempt to bring over any previousViewModel values that apply to the new viewModel\n if (previousViewModel) {\n Object.getOwnPropertyNames(viewModel).forEach((key) => {\n if (previousViewModel.hasOwnProperty(key)) {\n viewModel[key] = previousViewModel[key];\n }\n });\n }\n\n if (viewModel) {\n if (fingerprint) {\n (viewModel as PersonalInfoViewModel).deviceFingerprintHash = fingerprint;\n }\n if (locale) {\n (viewModel as PersonalInfoViewModel).localeChoice = {\n value: locale || \"en-US\",\n label: \"\",\n };\n }\n if (country && \"country\" in viewModel && viewModel.country === undefined) {\n viewModel.country = country;\n }\n if (country && \"countryChoice\" in viewModel && viewModel.countryChoice === undefined) {\n viewModel.countryChoice = {\n value: country,\n label: \"\",\n };\n }\n if (externalUserId) {\n (viewModel as PersonalInfoViewModel).externalUserId = externalUserId;\n }\n }\n\n return viewModel;\n};\n\nexport const clearUploadedFiles = (\n viewModel: DocUploadViewModel,\n): DocUploadViewModel | undefined => {\n if (viewModel) {\n return produce(viewModel, (draft) => {\n for (let i = 1; i <= MAX_DOC_UPLOAD_DOCS_ALLOWED; i += 1) {\n draft[`${UPLOAD_FILE_PREFIX}${i}`] = undefined;\n }\n });\n }\n return undefined;\n};\n\nexport const enhanceOrganizationFromTheme = (viewModel: ViewModel, programTheme: ProgramTheme) => {\n if (\n viewModel &&\n viewModel.hasOwnProperty(\"organization\") &&\n programTheme.config.orgRemoteSource\n ) {\n const cloned: ViewModel = deepClone(viewModel);\n const { organization } = cloned as WithOrganization;\n organization.source = programTheme.config.orgRemoteSource;\n return cloned;\n }\n return viewModel;\n};\n\nexport const determineCountry = (\n verificationResponse: VerificationResponse,\n countries: Country[],\n): Country => {\n if (verificationResponse?.country) return verificationResponse.country;\n\n const defaultCountry = \"US\";\n if (!Array.isArray(countries) || countries.length === 0) return defaultCountry;\n if (countries.length === 1) return countries[0];\n\n const countryQueryParam = getQueryParam(\"country\")?.toUpperCase();\n return countries.find((c) => c === countryQueryParam);\n};\n\nexport const fieldIdErrorMap = new Map<ErrorId, FieldId>([\n [\"invalidFirstName\", \"firstName\"],\n [\"invalidLastName\", \"lastName\"],\n [\"invalidMemberId\", \"memberId\"],\n [\"invalidEmail\", \"email\"],\n [\"invalidPhoneNumber\", \"phoneNumber\"],\n [\"invalidBirthDate\", \"birthDate\"],\n [\"invalidOrganization\", \"organization\"],\n [\"invalidPostalCode\", \"postalCode\"],\n [\"invalidAddress\", \"address1\"],\n [\"invalidCity\", \"city\"],\n [\"invalidCountry\", \"country\"],\n [\"invalidState\", \"state\"],\n [\"invalidActiveDutyStartDate\", \"activeDutyStartDate\"],\n [\"invalidDischargeDate\", \"dischargeDate\"],\n [\"invalidStatus\", \"status\"],\n [\"invalidStatuses\", \"statuses\"],\n [\"invalidSocialSecurityNumber\", \"socialSecurityNumber\"],\n [\"invalidDriverLicenseNumber\", \"driverLicenseNumber\"],\n [\"invalidEbtCardNumber\", \"ebtCardNumber\"],\n [\"invalidOverrideCode\", \"overrideCode\"],\n [\"invalidCvecNumber\", \"cvecNumber\"],\n [\"invalidCaptchaToken\", \"captchaToken\"],\n]);\n\nexport const getServerFieldValidationErrors = (\n serverErrorIds: ErrorId[],\n): FieldValidationErrors => {\n let fieldValidationErrors = deepClone(initialErrorStructure);\n\n serverErrorIds.forEach((serverErrorId: ErrorId) => {\n const fieldId = fieldIdErrorMap.get(serverErrorId);\n if (fieldId) {\n fieldValidationErrors = { ...fieldValidationErrors, [fieldId]: serverErrorId };\n }\n });\n\n return fieldValidationErrors;\n};\n","import { produce } from \"immer\";\nimport { type Dispatch } from \"redux\";\n\nimport { logger } from \"@jslib/shared/utils/logger\";\n\nimport i18next, { logLanguageChangeErrors } from \"@/lib/intl/i18next\";\n\nimport {\n type DatabaseId,\n type VerificationResponse,\n type ViewModel,\n type BoundAction,\n type BoundActionCreator,\n type FieldValidationErrors,\n type VerificationStep,\n type ProgramTheme,\n type Locale,\n type Segment,\n type ProgramThemeMessages,\n type DocUploadViewModel,\n type SetMessagesAction,\n type ProgramThemeAction,\n type VerificationResponseAction,\n type ViewModelAction,\n type IsLoadingAction,\n type FieldValidationErrorsAction,\n type PreviousViewModelAction,\n type PersonalInfoViewModel,\n type Country,\n type WithCoreFields,\n type StringMap,\n type WithLocaleChoiceAndCountryChoice,\n type VerificationServiceAction,\n type RequiredMetadataAndExternalIdCheckAction,\n} from \"../types/types\";\nimport {\n VerificationApiClient,\n getMockVerificationRequestErrorResponse,\n} from \"../ServerApi/VerificationApiClient\";\nimport { hooks } from \"../hooks\";\nimport { getMessages, getLocaleSafely } from \"../intl/intl\";\nimport {\n getThemeMessages,\n getMetadataConfig,\n getConfiguredCountries,\n} from \"../ProgramTheme/programThemeGetters\";\nimport { saveVerificationIdForConversion } from \"../conversion/conversion\";\nimport { scrollToWindowTop } from \"../utils/browser/windowHelpers\";\nimport { getFingerprint, getFingerprintRequestId } from \"../fingerprint/fingerprintUtils\";\nimport { getMetadataFromUrl } from \"../metadata/metadata\";\nimport { isCollectStep } from \"../types/runtimeTypes\";\nimport { getEmptyViewModel } from \"../ServerApi/VerificationRequestGetters\";\nimport { getFieldValidationErrorsEmpty, GetEmptyTheme } from \"../types/empties\";\nimport { closeTabRef } from \"../refs/refs\";\nimport { setGaDimensionTestRequest } from \"../GoogleAnalytics/ga\";\nimport { getQueryOrOption } from \"../ServerApi/TestingRouteOverrides\";\nimport { QUERY_STRING_EXTERNAL_USER_ID } from \"../../constants\";\nimport { getOptions, setOptions } from \"../../options/options\";\nimport { setProgramBaseline } from \"../state/programStore\";\nimport { getVerificationIdFromQueryString } from \"../utils/routing/Url\";\n\nimport {\n handleSubmitResponse,\n initViewModel,\n clearUploadedFiles,\n enhanceOrganizationFromTheme,\n determineCountry,\n getServerFieldValidationErrors,\n} from \"./VerificationServiceHelpers\";\nimport { type ViewModelUpdateOptions } from \"./ViewModel\";\n\n/**\n * @description Start a new verification \"flow\"\n * @param dispatch Redux action dispatch\n */\nexport const createFetchNewVerificationRequest =\n (dispatch: Dispatch) =>\n async <T extends ViewModel = ViewModel>(\n programId: DatabaseId,\n segment: Segment,\n previousViewModel?: T,\n trackingId?: string,\n forceNewVerificationRequest?: boolean,\n ) => {\n dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: true });\n try {\n const verificationResponsePromise = VerificationApiClient.fetchNewVerificationRequest(\n programId,\n trackingId,\n forceNewVerificationRequest,\n );\n return createFetchVerificationRequest({\n dispatch,\n verificationResponsePromise,\n programId,\n segment,\n previousViewModel,\n // we always fetch a \"new\" verification request. And if there's an\n // existing verification ID that's hidden in the above promise. So we\n // check again and pass it through here if there is one. Which allows\n // this function to treat new and existing requests differently.\n // TODO: refactor ALL of this.\n verificationId:\n getOptions().verificationId || getVerificationIdFromQueryString(window.location.search),\n });\n } catch (e) {\n logger.error(e, \"fetchNewVerificationRequest\");\n }\n };\n\n/**\n * @description Provided with a verificationId, continue verifying someone.\n * @param dispatch Redux action dispatch\n */\nexport const createFetchExistingVerificationRequest: BoundActionCreator =\n (dispatch: Dispatch): BoundAction =>\n async (\n programId: DatabaseId,\n verificationId: string,\n previousVerificationResponse?: VerificationResponse,\n previousViewModel?: ViewModel,\n needsLoading: boolean = true,\n ) => {\n if (needsLoading) dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: true });\n\n try {\n const verificationResponsePromise =\n VerificationApiClient.fetchExistingVerificationRequest(verificationId);\n return createFetchVerificationRequest({\n dispatch,\n verificationResponsePromise,\n programId,\n previousViewModel,\n previousVerificationResponse,\n verificationId,\n });\n } catch (e) {\n logger.error(e, \"fetchExistingVerificationRequest\");\n }\n };\n\nexport const segmentChanged = (currentSegment: Segment, nextSegment: Segment): boolean => {\n if (!nextSegment) {\n return false;\n }\n return !!(currentSegment && currentSegment !== nextSegment);\n};\n\nexport const currentStepChanged = (\n previousVerificationResponse: VerificationResponse,\n verificationResponse: VerificationResponse,\n): boolean =>\n !previousVerificationResponse ||\n previousVerificationResponse.currentStep !== verificationResponse.currentStep;\n\n/**\n * @description Await several items (new/existing verification request, program theme, etc) then update central state (redux).\n * Timing and order is very important within this function as it is bootstrapping most of the application.\n *\n * @param dispatch Redux action dispatch\n * @param verificationResponsePromise Either a new or existing verification server request.\n * @param programId\n * @param previousViewModel Optional\n * @private\n */\nexport const createFetchVerificationRequest = async ({\n dispatch,\n verificationResponsePromise,\n programId,\n segment,\n previousViewModel,\n previousVerificationResponse,\n verificationId,\n}: {\n dispatch: Dispatch;\n programId: DatabaseId;\n verificationResponsePromise: Promise<VerificationResponse>;\n segment?: Segment;\n previousViewModel?: ViewModel;\n previousVerificationResponse?: VerificationResponse;\n verificationId?: string;\n}): Promise<any> => {\n try {\n const fingerprintPromise: Promise<string> = getFingerprint();\n let verificationResponse: VerificationResponse;\n let programTheme: ProgramTheme;\n let locale: Locale;\n try {\n if (verificationId) {\n try {\n // when there's an existing verification ID we need to fetch the\n // response before the theme to ensure the correct locale.\n verificationResponse = await verificationResponsePromise;\n logger.info(\"verificationResponse received: \", verificationResponse);\n locale = getLocaleSafely(previousViewModel, verificationResponse);\n } finally {\n // fetch program theme data even if we fail to fetch an existing verification\n // response, partly to provide customCss to the error step.\n programTheme = await VerificationApiClient.fetchProgramTheme(programId, locale);\n }\n } else {\n // otherwise we can do them in parallel\n locale = getLocaleSafely(previousViewModel);\n [verificationResponse, programTheme] = await Promise.all([\n verificationResponsePromise,\n VerificationApiClient.fetchProgramTheme(programId, locale),\n ]);\n logger.info(\"verificationResponse received: \", verificationResponse);\n }\n } catch (error) {\n logger.error(error, \"verificationResponse\");\n verificationResponse = getMockVerificationRequestErrorResponse(error.message);\n locale = getLocaleSafely(previousViewModel, verificationResponse);\n programTheme = programTheme || GetEmptyTheme();\n }\n\n const nextSegment = verificationResponse.segment;\n const previousSegment = previousVerificationResponse?.segment || segment;\n const themeMessages: ProgramThemeMessages = getThemeMessages(programTheme);\n\n // Load messages resource bundle to i18next \"theme\" namespace. Move this to\n // i18next `resourcesToBackend` function definition, once moved to localization service\n i18next.addResourceBundle(locale, \"theme\", themeMessages, false, true);\n\n if (i18next.language !== locale) {\n logger.info(\n `createFetchVerificationRequest: change language from \"${i18next.language}\" to \"${locale}\"`,\n );\n await i18next.changeLanguage(locale, logLanguageChangeErrors);\n }\n\n const messagesPromise: Promise<StringMap> = getMessages(\n locale,\n themeMessages,\n verificationResponse.segment,\n );\n\n let updatedPreviousViewModel = clearUploadedFiles(previousViewModel as DocUploadViewModel); // Need to remove the file elements from state since deepClone cannot clone them\n\n if (segmentChanged(previousSegment, nextSegment)) {\n logger.info(\"segment changed: \", previousSegment, nextSegment);\n await doViewModelReset(dispatch)(verificationResponse);\n updatedPreviousViewModel = undefined;\n }\n\n const fingerprint = await fingerprintPromise;\n const { currentStep } = verificationResponse;\n const countries: Country[] = getConfiguredCountries(programTheme);\n const country: Country = determineCountry(verificationResponse, countries);\n let viewModel = initViewModel({\n currentStep,\n fingerprint,\n locale,\n country,\n previousViewModel: updatedPreviousViewModel,\n externalUserId: getQueryOrOption(QUERY_STRING_EXTERNAL_USER_ID),\n });\n viewModel = enhanceOrganizationFromTheme(viewModel, programTheme);\n\n if (currentStepChanged(previousVerificationResponse, verificationResponse)) {\n if (\n previousVerificationResponse &&\n previousVerificationResponse.currentStep === \"sso\" &&\n verificationResponse.currentStep !== \"sso\" &&\n verificationResponse.currentStep !== \"pending\"\n ) {\n // PROM-773 since we're no-longer on step sso (here in tab1), close the sso tab (tab2) we opened previously\n closeTabRef();\n }\n }\n\n saveVerificationIdForConversion(verificationResponse.verificationId);\n\n if (viewModel && viewModel.hasOwnProperty(\"metadata\")) {\n (viewModel as PersonalInfoViewModel).metadata = {\n ...(viewModel as PersonalInfoViewModel).metadata,\n ...getMetadataFromUrl(getMetadataConfig(programTheme).keys),\n };\n }\n\n const messages: StringMap = await messagesPromise;\n\n setProgramBaseline(programTheme);\n\n return Promise.all([\n dispatch<VerificationResponseAction>({ verificationResponse, type: \"VERIFICATION_RESPONSE\" }),\n dispatch<ViewModelAction>({ viewModel, type: \"VIEW_MODEL\" }),\n dispatch<ProgramThemeAction>({ programTheme, type: \"PROGRAM_THEME\" }),\n dispatch<SetMessagesAction>({ messages, type: \"SET_MESSAGES\" }),\n dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: false }),\n dispatch<RequiredMetadataAndExternalIdCheckAction>({\n type: \"REQUIRED_METADATA_AND_EXTERNAL_ID_CHECK\",\n }),\n ])\n .then(() => {\n hooks.emit(\"ON_VERIFICATION_READY\", verificationResponse);\n // This hook is a special case\n // Do not call this hook again after the page has initially loaded, such as pending step's polling behavior\n hooks.off(\"ON_VERIFICATION_READY\");\n })\n .catch((reason) => {\n logger.error(reason, \"createFetchVerificationRequest promises\");\n });\n } catch (e) {\n logger.error(e, \"createFetchVerificationRequest\");\n throw e;\n }\n};\n\n/**\n * @description Action creator to update the view model in redux.\n * @param dispatch\n */\nexport const createUpdateViewModel: BoundActionCreator =\n (dispatch: Dispatch): BoundAction =>\n async (viewModel: ViewModel, options: Partial<ViewModelUpdateOptions>) => {\n const { partial = false, metadataCheck = false, externalUserIdCheck = false } = options || {};\n const promises: VerificationServiceAction[] = [\n dispatch<ViewModelAction>({\n viewModel,\n type: \"VIEW_MODEL\",\n partial,\n }),\n ];\n if (metadataCheck || externalUserIdCheck) {\n promises.push(\n dispatch<RequiredMetadataAndExternalIdCheckAction>({\n type: \"REQUIRED_METADATA_AND_EXTERNAL_ID_CHECK\",\n }),\n );\n }\n\n return Promise.all(promises);\n };\n\ntype CreateUpdateProps = (dispatch: Dispatch, programId: DatabaseId) => BoundAction;\nexport const createUpdateLocale: CreateUpdateProps =\n (dispatch: Dispatch, programId): BoundAction =>\n async (locale: Locale, segment: Segment): Promise<object> => {\n dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: true });\n const newProgramTheme: ProgramTheme = await VerificationApiClient.fetchProgramTheme(\n programId,\n locale,\n );\n const partialVm: Partial<WithLocaleChoiceAndCountryChoice> = {\n localeChoice: { value: locale, label: locale },\n };\n setOptions({ locale });\n\n const themeMessages: ProgramThemeMessages = getThemeMessages(newProgramTheme);\n\n // Load messages resource bundle to i18next \"theme\" namespace. Move this to\n // i18n `resourcesToBackend` function definition, once moved to localization service\n i18next.addResourceBundle(locale, \"theme\", themeMessages, false, true);\n\n await i18next.changeLanguage(locale, logLanguageChangeErrors);\n\n hooks.emit(\"ON_FORM_LOCALE_CHANGE\", locale);\n return getMessages(locale, themeMessages, segment).then((messages: StringMap) =>\n Promise.all([\n dispatch<SetMessagesAction>({ messages, type: \"SET_MESSAGES\" }),\n dispatch<ViewModelAction>({ viewModel: partialVm, type: \"VIEW_MODEL\", partial: true }),\n dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: false }),\n ]),\n );\n };\n\n/**\n * @description Action creator to update the program theme in redux.\n * @param dispatch\n */\nexport const createUpdateProgramTheme: BoundActionCreator =\n (dispatch: Dispatch): BoundAction =>\n async (programTheme: ProgramTheme, partial: boolean = false) => {\n const themeMessages = getThemeMessages(programTheme);\n if (programTheme.intl && programTheme.intl.locale && programTheme.intl.messages) {\n i18next.addResourceBundle(programTheme.intl.locale, \"theme\", themeMessages, false, true);\n }\n return dispatch<ProgramThemeAction>({ programTheme, type: \"PROGRAM_THEME\", partial });\n };\n\n/**\n * @description Perform a full reset of the in-memory state\n * Useful to fully reset the form and start over again, similar to a page refresh.\n */\nexport const createResetState =\n (dispatch: Dispatch): BoundAction =>\n async () =>\n dispatch({ type: \"RESET_STATE\" });\n\n/**\n * @description Action creator to update the field validation errors, which are those that are shown to a user as they fill-in the HTML form.\n * @param dispatch\n */\nexport const createUpdateFieldValidationErrors: BoundActionCreator =\n (dispatch: Dispatch): BoundAction =>\n async (fieldValidationErrors: FieldValidationErrors) =>\n dispatch<FieldValidationErrorsAction>({\n type: \"FIELD_VALIDATION_ERRORS\",\n fieldValidationErrors,\n });\n\n/**\n * @description Action creator to submit a step to the backend REST API\n * @param dispatch\n */\ntype CreateSubmitStepProps = (dispatch: Dispatch, programTheme: ProgramTheme) => BoundAction;\nexport const createSubmitStep: CreateSubmitStepProps =\n (dispatch: Dispatch, programTheme: ProgramTheme): BoundAction =>\n async (\n stepName: VerificationStep,\n viewModel: ViewModel,\n previousResponse: VerificationResponse,\n ) => {\n logger.log(`submitStep(): submitting stepName ${stepName}, viewModel:`, viewModel);\n scrollToWindowTop();\n dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: true, loadingStep: stepName });\n logger.info(`submitting step ${stepName}`, viewModel);\n\n setGaDimensionTestRequest(viewModel as WithCoreFields);\n\n let submittedViewModel = viewModel;\n const fpSessionId = getFingerprintRequestId();\n if (isCollectStep(stepName) && fpSessionId) {\n submittedViewModel = produce(viewModel, (draft) => {\n if (!draft.metadata) {\n draft.metadata = {};\n }\n draft.metadata.fpSessionId = fpSessionId;\n });\n }\n\n const verificationResponse: VerificationResponse = await VerificationApiClient.submitStep(\n stepName,\n previousResponse,\n submittedViewModel,\n );\n const newViewModel = handleSubmitResponse(\n verificationResponse,\n submittedViewModel,\n programTheme,\n );\n\n const promiseVerificationResponse = dispatch<VerificationResponseAction>({\n verificationResponse,\n type: \"VERIFICATION_RESPONSE\",\n });\n const promiseViewModel = dispatch<ViewModelAction>({\n viewModel: newViewModel,\n type: \"VIEW_MODEL\",\n });\n\n if (\n isCollectStep(verificationResponse.currentStep) &&\n verificationResponse?.errorIds?.length !== 0\n ) {\n const fieldValidationErrors: FieldValidationErrors = getServerFieldValidationErrors(\n verificationResponse.errorIds,\n );\n\n dispatch<FieldValidationErrorsAction>({\n type: \"FIELD_VALIDATION_ERRORS\",\n fieldValidationErrors,\n });\n }\n\n const promiseIsLoading = dispatch<IsLoadingAction>({ type: \"IS_LOADING\", isLoading: false });\n\n return Promise.all([promiseVerificationResponse, promiseViewModel, promiseIsLoading]);\n };\n\n/**\n * Perform the actual viewModel reset actions\n * @private\n */\nexport const doViewModelReset =\n (dispatch: Dispatch) =>\n (verificationResponse: VerificationResponse): Promise<any> =>\n Promise.all([\n dispatch<ViewModelAction>({\n type: \"VIEW_MODEL\",\n viewModel: getEmptyViewModel(verificationResponse.currentStep),\n }),\n dispatch<PreviousViewModelAction>({\n type: \"PREVIOUS_VIEW_MODEL\",\n previousViewModel: undefined,\n }),\n dispatch<FieldValidationErrorsAction>({\n type: \"FIELD_VALIDATION_ERRORS\",\n fieldValidationErrors: getFieldValidationErrorsEmpty(),\n }),\n ]);\n","import { isCollectStep } from \"@jslib/shared/runtimeTypes\";\n\nimport Message from \"@components/Message\";\n\nimport { useProgramTheme, useVerificationResponse } from \"@/lib/state/contextHooks\";\n\nimport { isCaptchaEnabled } from \"@/lib/ProgramTheme/programThemeGetters\";\n\nconst FooterText = () => {\n const { currentStep } = useVerificationResponse();\n const programTheme = useProgramTheme();\n const captchaEnabled = isCaptchaEnabled(programTheme);\n\n const footerClassName = \"sid-footer__text\";\n\n return (\n <div className={footerClassName}>\n {/**\n * By passing currentStep into the Translation, we enable the potential of\n * step specific overrides e.g. footerText_docUpload, while also only needing to\n * maintain a single default message.\n */}\n <Message id=\"footerText\" context={currentStep} />\n\n {captchaEnabled && isCollectStep(currentStep) && (\n <p className=\"sid-footer__captcha-text\">\n <Message id=\"captchaFooterText\" />\n </p>\n )}\n </div>\n );\n};\n\nexport { FooterText };\n","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","import _typeof from \"./typeof.js\";\nfunction toPrimitive(t, r) {\n if (\"object\" != _typeof(t) || !t) return t;\n var e = t[Symbol.toPrimitive];\n if (void 0 !== e) {\n var i = e.call(t, r || \"default\");\n if (\"object\" != _typeof(i)) return i;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (\"string\" === r ? String : Number)(t);\n}\nexport { toPrimitive as default };","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nfunction toPropertyKey(t) {\n var i = toPrimitive(t, \"string\");\n return \"symbol\" == _typeof(i) ? i : i + \"\";\n}\nexport { toPropertyKey as default };","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperty(e, r, t) {\n return (r = toPropertyKey(r)) in e ? Object.defineProperty(e, r, {\n value: t,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[r] = t, e;\n}\nexport { _defineProperty as default };","import defineProperty from \"./defineProperty.js\";\nfunction ownKeys(e, r) {\n var t = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var o = Object.getOwnPropertySymbols(e);\n r && (o = o.filter(function (r) {\n return Object.getOwnPropertyDescriptor(e, r).enumerable;\n })), t.push.apply(t, o);\n }\n return t;\n}\nfunction _objectSpread2(e) {\n for (var r = 1; r < arguments.length; r++) {\n var t = null != arguments[r] ? arguments[r] : {};\n r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {\n defineProperty(e, r, t[r]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {\n Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));\n });\n }\n return e;\n}\nexport { _objectSpread2 as default };","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\n\n/**\n * Adapted from React: https://github.com/facebook/react/blob/master/packages/shared/formatProdErrorMessage.js\n *\n * Do not require this module directly! Use normal throw error calls. These messages will be replaced with error codes\n * during build.\n * @param {number} code\n */\nfunction formatProdErrorMessage(code) {\n return \"Minified Redux error #\" + code + \"; visit https://redux.js.org/Errors?code=\" + code + \" for the full message or \" + 'use the non-minified dev environment for full errors. ';\n}\n\n// Inlined version of the `symbol-observable` polyfill\nvar $$observable = (function () {\n return typeof Symbol === 'function' && Symbol.observable || '@@observable';\n})();\n\n/**\n * These are private action types reserved by Redux.\n * For any unknown actions, you must return the current state.\n * If the current state is undefined, you must return the initial state.\n * Do not reference these action types directly in your code.\n */\nvar randomString = function randomString() {\n return Math.random().toString(36).substring(7).split('').join('.');\n};\n\nvar ActionTypes = {\n INIT: \"@@redux/INIT\" + randomString(),\n REPLACE: \"@@redux/REPLACE\" + randomString(),\n PROBE_UNKNOWN_ACTION: function PROBE_UNKNOWN_ACTION() {\n return \"@@redux/PROBE_UNKNOWN_ACTION\" + randomString();\n }\n};\n\n/**\n * @param {any} obj The object to inspect.\n * @returns {boolean} True if the argument appears to be a plain object.\n */\nfunction isPlainObject(obj) {\n if (typeof obj !== 'object' || obj === null) return false;\n var proto = obj;\n\n while (Object.getPrototypeOf(proto) !== null) {\n proto = Object.getPrototypeOf(proto);\n }\n\n return Object.getPrototypeOf(obj) === proto;\n}\n\n// Inlined / shortened version of `kindOf` from https://github.com/jonschlinkert/kind-of\nfunction miniKindOf(val) {\n if (val === void 0) return 'undefined';\n if (val === null) return 'null';\n var type = typeof val;\n\n switch (type) {\n case 'boolean':\n case 'string':\n case 'number':\n case 'symbol':\n case 'function':\n {\n return type;\n }\n }\n\n if (Array.isArray(val)) return 'array';\n if (isDate(val)) return 'date';\n if (isError(val)) return 'error';\n var constructorName = ctorName(val);\n\n switch (constructorName) {\n case 'Symbol':\n case 'Promise':\n case 'WeakMap':\n case 'WeakSet':\n case 'Map':\n case 'Set':\n return constructorName;\n } // other\n\n\n return type.slice(8, -1).toLowerCase().replace(/\\s/g, '');\n}\n\nfunction ctorName(val) {\n return typeof val.constructor === 'function' ? val.constructor.name : null;\n}\n\nfunction isError(val) {\n return val instanceof Error || typeof val.message === 'string' && val.constructor && typeof val.constructor.stackTraceLimit === 'number';\n}\n\nfunction isDate(val) {\n if (val instanceof Date) return true;\n return typeof val.toDateString === 'function' && typeof val.getDate === 'function' && typeof val.setDate === 'function';\n}\n\nfunction kindOf(val) {\n var typeOfVal = typeof val;\n\n if (process.env.NODE_ENV !== 'production') {\n typeOfVal = miniKindOf(val);\n }\n\n return typeOfVal;\n}\n\n/**\n * @deprecated\n *\n * **We recommend using the `configureStore` method\n * of the `@reduxjs/toolkit` package**, which replaces `createStore`.\n *\n * Redux Toolkit is our recommended approach for writing Redux logic today,\n * including store setup, reducers, data fetching, and more.\n *\n * **For more details, please read this Redux docs page:**\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * `configureStore` from Redux Toolkit is an improved version of `createStore` that\n * simplifies setup and helps avoid common bugs.\n *\n * You should not be using the `redux` core package by itself today, except for learning purposes.\n * The `createStore` method from the core `redux` package will not be removed, but we encourage\n * all users to migrate to using Redux Toolkit for all Redux code.\n *\n * If you want to use `createStore` without this visual deprecation warning, use\n * the `legacy_createStore` import instead:\n *\n * `import { legacy_createStore as createStore} from 'redux'`\n *\n */\n\nfunction createStore(reducer, preloadedState, enhancer) {\n var _ref2;\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'function' || typeof enhancer === 'function' && typeof arguments[3] === 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(0) : 'It looks like you are passing several store enhancers to ' + 'createStore(). This is not supported. Instead, compose them ' + 'together to a single function. See https://redux.js.org/tutorials/fundamentals/part-4-store#creating-a-store-with-enhancers for an example.');\n }\n\n if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {\n enhancer = preloadedState;\n preloadedState = undefined;\n }\n\n if (typeof enhancer !== 'undefined') {\n if (typeof enhancer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(1) : \"Expected the enhancer to be a function. Instead, received: '\" + kindOf(enhancer) + \"'\");\n }\n\n return enhancer(createStore)(reducer, preloadedState);\n }\n\n if (typeof reducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(2) : \"Expected the root reducer to be a function. Instead, received: '\" + kindOf(reducer) + \"'\");\n }\n\n var currentReducer = reducer;\n var currentState = preloadedState;\n var currentListeners = [];\n var nextListeners = currentListeners;\n var isDispatching = false;\n /**\n * This makes a shallow copy of currentListeners so we can use\n * nextListeners as a temporary list while dispatching.\n *\n * This prevents any bugs around consumers calling\n * subscribe/unsubscribe in the middle of a dispatch.\n */\n\n function ensureCanMutateNextListeners() {\n if (nextListeners === currentListeners) {\n nextListeners = currentListeners.slice();\n }\n }\n /**\n * Reads the state tree managed by the store.\n *\n * @returns {any} The current state tree of your application.\n */\n\n\n function getState() {\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(3) : 'You may not call store.getState() while the reducer is executing. ' + 'The reducer has already received the state as an argument. ' + 'Pass it down from the top reducer instead of reading it from the store.');\n }\n\n return currentState;\n }\n /**\n * Adds a change listener. It will be called any time an action is dispatched,\n * and some part of the state tree may potentially have changed. You may then\n * call `getState()` to read the current state tree inside the callback.\n *\n * You may call `dispatch()` from a change listener, with the following\n * caveats:\n *\n * 1. The subscriptions are snapshotted just before every `dispatch()` call.\n * If you subscribe or unsubscribe while the listeners are being invoked, this\n * will not have any effect on the `dispatch()` that is currently in progress.\n * However, the next `dispatch()` call, whether nested or not, will use a more\n * recent snapshot of the subscription list.\n *\n * 2. The listener should not expect to see all state changes, as the state\n * might have been updated multiple times during a nested `dispatch()` before\n * the listener is called. It is, however, guaranteed that all subscribers\n * registered before the `dispatch()` started will be called with the latest\n * state by the time it exits.\n *\n * @param {Function} listener A callback to be invoked on every dispatch.\n * @returns {Function} A function to remove this change listener.\n */\n\n\n function subscribe(listener) {\n if (typeof listener !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(4) : \"Expected the listener to be a function. Instead, received: '\" + kindOf(listener) + \"'\");\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(5) : 'You may not call store.subscribe() while the reducer is executing. ' + 'If you would like to be notified after the store has been updated, subscribe from a ' + 'component and invoke store.getState() in the callback to access the latest state. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n var isSubscribed = true;\n ensureCanMutateNextListeners();\n nextListeners.push(listener);\n return function unsubscribe() {\n if (!isSubscribed) {\n return;\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(6) : 'You may not unsubscribe from a store listener while the reducer is executing. ' + 'See https://redux.js.org/api/store#subscribelistener for more details.');\n }\n\n isSubscribed = false;\n ensureCanMutateNextListeners();\n var index = nextListeners.indexOf(listener);\n nextListeners.splice(index, 1);\n currentListeners = null;\n };\n }\n /**\n * Dispatches an action. It is the only way to trigger a state change.\n *\n * The `reducer` function, used to create the store, will be called with the\n * current state tree and the given `action`. Its return value will\n * be considered the **next** state of the tree, and the change listeners\n * will be notified.\n *\n * The base implementation only supports plain object actions. If you want to\n * dispatch a Promise, an Observable, a thunk, or something else, you need to\n * wrap your store creating function into the corresponding middleware. For\n * example, see the documentation for the `redux-thunk` package. Even the\n * middleware will eventually dispatch plain object actions using this method.\n *\n * @param {Object} action A plain object representing “what changed”. It is\n * a good idea to keep actions serializable so you can record and replay user\n * sessions, or use the time travelling `redux-devtools`. An action must have\n * a `type` property which may not be `undefined`. It is a good idea to use\n * string constants for action types.\n *\n * @returns {Object} For convenience, the same action object you dispatched.\n *\n * Note that, if you use a custom middleware, it may wrap `dispatch()` to\n * return something else (for example, a Promise you can await).\n */\n\n\n function dispatch(action) {\n if (!isPlainObject(action)) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(7) : \"Actions must be plain objects. Instead, the actual type was: '\" + kindOf(action) + \"'. You may need to add middleware to your store setup to handle dispatching other values, such as 'redux-thunk' to handle dispatching functions. See https://redux.js.org/tutorials/fundamentals/part-4-store#middleware and https://redux.js.org/tutorials/fundamentals/part-6-async-logic#using-the-redux-thunk-middleware for examples.\");\n }\n\n if (typeof action.type === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(8) : 'Actions may not have an undefined \"type\" property. You may have misspelled an action type string constant.');\n }\n\n if (isDispatching) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(9) : 'Reducers may not dispatch actions.');\n }\n\n try {\n isDispatching = true;\n currentState = currentReducer(currentState, action);\n } finally {\n isDispatching = false;\n }\n\n var listeners = currentListeners = nextListeners;\n\n for (var i = 0; i < listeners.length; i++) {\n var listener = listeners[i];\n listener();\n }\n\n return action;\n }\n /**\n * Replaces the reducer currently used by the store to calculate the state.\n *\n * You might need this if your app implements code splitting and you want to\n * load some of the reducers dynamically. You might also need this if you\n * implement a hot reloading mechanism for Redux.\n *\n * @param {Function} nextReducer The reducer for the store to use instead.\n * @returns {void}\n */\n\n\n function replaceReducer(nextReducer) {\n if (typeof nextReducer !== 'function') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(10) : \"Expected the nextReducer to be a function. Instead, received: '\" + kindOf(nextReducer));\n }\n\n currentReducer = nextReducer; // This action has a similiar effect to ActionTypes.INIT.\n // Any reducers that existed in both the new and old rootReducer\n // will receive the previous state. This effectively populates\n // the new state tree with any relevant data from the old one.\n\n dispatch({\n type: ActionTypes.REPLACE\n });\n }\n /**\n * Interoperability point for observable/reactive libraries.\n * @returns {observable} A minimal observable of state changes.\n * For more information, see the observable proposal:\n * https://github.com/tc39/proposal-observable\n */\n\n\n function observable() {\n var _ref;\n\n var outerSubscribe = subscribe;\n return _ref = {\n /**\n * The minimal observable subscription method.\n * @param {Object} observer Any object that can be used as an observer.\n * The observer object should have a `next` method.\n * @returns {subscription} An object with an `unsubscribe` method that can\n * be used to unsubscribe the observable from the store, and prevent further\n * emission of values from the observable.\n */\n subscribe: function subscribe(observer) {\n if (typeof observer !== 'object' || observer === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(11) : \"Expected the observer to be an object. Instead, received: '\" + kindOf(observer) + \"'\");\n }\n\n function observeState() {\n if (observer.next) {\n observer.next(getState());\n }\n }\n\n observeState();\n var unsubscribe = outerSubscribe(observeState);\n return {\n unsubscribe: unsubscribe\n };\n }\n }, _ref[$$observable] = function () {\n return this;\n }, _ref;\n } // When a store is created, an \"INIT\" action is dispatched so that every\n // reducer returns their initial state. This effectively populates\n // the initial state tree.\n\n\n dispatch({\n type: ActionTypes.INIT\n });\n return _ref2 = {\n dispatch: dispatch,\n subscribe: subscribe,\n getState: getState,\n replaceReducer: replaceReducer\n }, _ref2[$$observable] = observable, _ref2;\n}\n/**\n * Creates a Redux store that holds the state tree.\n *\n * **We recommend using `configureStore` from the\n * `@reduxjs/toolkit` package**, which replaces `createStore`:\n * **https://redux.js.org/introduction/why-rtk-is-redux-today**\n *\n * The only way to change the data in the store is to call `dispatch()` on it.\n *\n * There should only be a single store in your app. To specify how different\n * parts of the state tree respond to actions, you may combine several reducers\n * into a single reducer function by using `combineReducers`.\n *\n * @param {Function} reducer A function that returns the next state tree, given\n * the current state tree and the action to handle.\n *\n * @param {any} [preloadedState] The initial state. You may optionally specify it\n * to hydrate the state from the server in universal apps, or to restore a\n * previously serialized user session.\n * If you use `combineReducers` to produce the root reducer function, this must be\n * an object with the same shape as `combineReducers` keys.\n *\n * @param {Function} [enhancer] The store enhancer. You may optionally specify it\n * to enhance the store with third-party capabilities such as middleware,\n * time travel, persistence, etc. The only store enhancer that ships with Redux\n * is `applyMiddleware()`.\n *\n * @returns {Store} A Redux store that lets you read the state, dispatch actions\n * and subscribe to changes.\n */\n\nvar legacy_createStore = createStore;\n\n/**\n * Prints a warning in the console if it exists.\n *\n * @param {String} message The warning message.\n * @returns {void}\n */\nfunction warning(message) {\n /* eslint-disable no-console */\n if (typeof console !== 'undefined' && typeof console.error === 'function') {\n console.error(message);\n }\n /* eslint-enable no-console */\n\n\n try {\n // This error was thrown as a convenience so that if you enable\n // \"break on all exceptions\" in your console,\n // it would pause the execution at this line.\n throw new Error(message);\n } catch (e) {} // eslint-disable-line no-empty\n\n}\n\nfunction getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {\n var reducerKeys = Object.keys(reducers);\n var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';\n\n if (reducerKeys.length === 0) {\n return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';\n }\n\n if (!isPlainObject(inputState)) {\n return \"The \" + argumentName + \" has unexpected type of \\\"\" + kindOf(inputState) + \"\\\". Expected argument to be an object with the following \" + (\"keys: \\\"\" + reducerKeys.join('\", \"') + \"\\\"\");\n }\n\n var unexpectedKeys = Object.keys(inputState).filter(function (key) {\n return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];\n });\n unexpectedKeys.forEach(function (key) {\n unexpectedKeyCache[key] = true;\n });\n if (action && action.type === ActionTypes.REPLACE) return;\n\n if (unexpectedKeys.length > 0) {\n return \"Unexpected \" + (unexpectedKeys.length > 1 ? 'keys' : 'key') + \" \" + (\"\\\"\" + unexpectedKeys.join('\", \"') + \"\\\" found in \" + argumentName + \". \") + \"Expected to find one of the known reducer keys instead: \" + (\"\\\"\" + reducerKeys.join('\", \"') + \"\\\". Unexpected keys will be ignored.\");\n }\n}\n\nfunction assertReducerShape(reducers) {\n Object.keys(reducers).forEach(function (key) {\n var reducer = reducers[key];\n var initialState = reducer(undefined, {\n type: ActionTypes.INIT\n });\n\n if (typeof initialState === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(12) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined during initialization. \" + \"If the state passed to the reducer is undefined, you must \" + \"explicitly return the initial state. The initial state may \" + \"not be undefined. If you don't want to set a value for this reducer, \" + \"you can use null instead of undefined.\");\n }\n\n if (typeof reducer(undefined, {\n type: ActionTypes.PROBE_UNKNOWN_ACTION()\n }) === 'undefined') {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(13) : \"The slice reducer for key \\\"\" + key + \"\\\" returned undefined when probed with a random type. \" + (\"Don't try to handle '\" + ActionTypes.INIT + \"' or other actions in \\\"redux/*\\\" \") + \"namespace. They are considered private. Instead, you must return the \" + \"current state for any unknown actions, unless it is undefined, \" + \"in which case you must return the initial state, regardless of the \" + \"action type. The initial state may not be undefined, but can be null.\");\n }\n });\n}\n/**\n * Turns an object whose values are different reducer functions, into a single\n * reducer function. It will call every child reducer, and gather their results\n * into a single state object, whose keys correspond to the keys of the passed\n * reducer functions.\n *\n * @param {Object} reducers An object whose values correspond to different\n * reducer functions that need to be combined into one. One handy way to obtain\n * it is to use ES6 `import * as reducers` syntax. The reducers may never return\n * undefined for any action. Instead, they should return their initial state\n * if the state passed to them was undefined, and the current state for any\n * unrecognized action.\n *\n * @returns {Function} A reducer function that invokes every reducer inside the\n * passed object, and builds a state object with the same shape.\n */\n\n\nfunction combineReducers(reducers) {\n var reducerKeys = Object.keys(reducers);\n var finalReducers = {};\n\n for (var i = 0; i < reducerKeys.length; i++) {\n var key = reducerKeys[i];\n\n if (process.env.NODE_ENV !== 'production') {\n if (typeof reducers[key] === 'undefined') {\n warning(\"No reducer provided for key \\\"\" + key + \"\\\"\");\n }\n }\n\n if (typeof reducers[key] === 'function') {\n finalReducers[key] = reducers[key];\n }\n }\n\n var finalReducerKeys = Object.keys(finalReducers); // This is used to make sure we don't warn about the same\n // keys multiple times.\n\n var unexpectedKeyCache;\n\n if (process.env.NODE_ENV !== 'production') {\n unexpectedKeyCache = {};\n }\n\n var shapeAssertionError;\n\n try {\n assertReducerShape(finalReducers);\n } catch (e) {\n shapeAssertionError = e;\n }\n\n return function combination(state, action) {\n if (state === void 0) {\n state = {};\n }\n\n if (shapeAssertionError) {\n throw shapeAssertionError;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n var warningMessage = getUnexpectedStateShapeWarningMessage(state, finalReducers, action, unexpectedKeyCache);\n\n if (warningMessage) {\n warning(warningMessage);\n }\n }\n\n var hasChanged = false;\n var nextState = {};\n\n for (var _i = 0; _i < finalReducerKeys.length; _i++) {\n var _key = finalReducerKeys[_i];\n var reducer = finalReducers[_key];\n var previousStateForKey = state[_key];\n var nextStateForKey = reducer(previousStateForKey, action);\n\n if (typeof nextStateForKey === 'undefined') {\n var actionType = action && action.type;\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(14) : \"When called with an action of type \" + (actionType ? \"\\\"\" + String(actionType) + \"\\\"\" : '(unknown type)') + \", the slice reducer for key \\\"\" + _key + \"\\\" returned undefined. \" + \"To ignore an action, you must explicitly return the previous state. \" + \"If you want this reducer to hold no value, you can return null instead of undefined.\");\n }\n\n nextState[_key] = nextStateForKey;\n hasChanged = hasChanged || nextStateForKey !== previousStateForKey;\n }\n\n hasChanged = hasChanged || finalReducerKeys.length !== Object.keys(state).length;\n return hasChanged ? nextState : state;\n };\n}\n\nfunction bindActionCreator(actionCreator, dispatch) {\n return function () {\n return dispatch(actionCreator.apply(this, arguments));\n };\n}\n/**\n * Turns an object whose values are action creators, into an object with the\n * same keys, but with every function wrapped into a `dispatch` call so they\n * may be invoked directly. This is just a convenience method, as you can call\n * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.\n *\n * For convenience, you can also pass an action creator as the first argument,\n * and get a dispatch wrapped function in return.\n *\n * @param {Function|Object} actionCreators An object whose values are action\n * creator functions. One handy way to obtain it is to use ES6 `import * as`\n * syntax. You may also pass a single function.\n *\n * @param {Function} dispatch The `dispatch` function available on your Redux\n * store.\n *\n * @returns {Function|Object} The object mimicking the original object, but with\n * every action creator wrapped into the `dispatch` call. If you passed a\n * function as `actionCreators`, the return value will also be a single\n * function.\n */\n\n\nfunction bindActionCreators(actionCreators, dispatch) {\n if (typeof actionCreators === 'function') {\n return bindActionCreator(actionCreators, dispatch);\n }\n\n if (typeof actionCreators !== 'object' || actionCreators === null) {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(16) : \"bindActionCreators expected an object or a function, but instead received: '\" + kindOf(actionCreators) + \"'. \" + \"Did you write \\\"import ActionCreators from\\\" instead of \\\"import * as ActionCreators from\\\"?\");\n }\n\n var boundActionCreators = {};\n\n for (var key in actionCreators) {\n var actionCreator = actionCreators[key];\n\n if (typeof actionCreator === 'function') {\n boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);\n }\n }\n\n return boundActionCreators;\n}\n\n/**\n * Composes single-argument functions from right to left. The rightmost\n * function can take multiple arguments as it provides the signature for\n * the resulting composite function.\n *\n * @param {...Function} funcs The functions to compose.\n * @returns {Function} A function obtained by composing the argument functions\n * from right to left. For example, compose(f, g, h) is identical to doing\n * (...args) => f(g(h(...args))).\n */\nfunction compose() {\n for (var _len = arguments.length, funcs = new Array(_len), _key = 0; _key < _len; _key++) {\n funcs[_key] = arguments[_key];\n }\n\n if (funcs.length === 0) {\n return function (arg) {\n return arg;\n };\n }\n\n if (funcs.length === 1) {\n return funcs[0];\n }\n\n return funcs.reduce(function (a, b) {\n return function () {\n return a(b.apply(void 0, arguments));\n };\n });\n}\n\n/**\n * Creates a store enhancer that applies middleware to the dispatch method\n * of the Redux store. This is handy for a variety of tasks, such as expressing\n * asynchronous actions in a concise manner, or logging every action payload.\n *\n * See `redux-thunk` package as an example of the Redux middleware.\n *\n * Because middleware is potentially asynchronous, this should be the first\n * store enhancer in the composition chain.\n *\n * Note that each middleware will be given the `dispatch` and `getState` functions\n * as named arguments.\n *\n * @param {...Function} middlewares The middleware chain to be applied.\n * @returns {Function} A store enhancer applying the middleware.\n */\n\nfunction applyMiddleware() {\n for (var _len = arguments.length, middlewares = new Array(_len), _key = 0; _key < _len; _key++) {\n middlewares[_key] = arguments[_key];\n }\n\n return function (createStore) {\n return function () {\n var store = createStore.apply(void 0, arguments);\n\n var _dispatch = function dispatch() {\n throw new Error(process.env.NODE_ENV === \"production\" ? formatProdErrorMessage(15) : 'Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.');\n };\n\n var middlewareAPI = {\n getState: store.getState,\n dispatch: function dispatch() {\n return _dispatch.apply(void 0, arguments);\n }\n };\n var chain = middlewares.map(function (middleware) {\n return middleware(middlewareAPI);\n });\n _dispatch = compose.apply(void 0, chain)(store.dispatch);\n return _objectSpread(_objectSpread({}, store), {}, {\n dispatch: _dispatch\n });\n };\n };\n}\n\nexport { ActionTypes as __DO_NOT_USE__ActionTypes, applyMiddleware, bindActionCreators, combineReducers, compose, createStore, legacy_createStore };\n","import { QUERY_STRING_EXTERNAL_USER_ID } from \"@/constants\";\n\nimport {\n type ReduxState,\n type PersonalInfoViewModel,\n type Metadata,\n type VerificationResponse,\n type VerificationServiceAction,\n type ViewModel,\n type MetadataConfig,\n type ProgramTheme,\n type FieldId,\n} from \"../types/types\";\nimport { getFieldValidationErrorsEmpty } from \"../types/empties\";\nimport { VerificationStepsEnum, isCollectStep } from \"../types/runtimeTypes\";\nimport { setMetadata, getMetadata } from \"../metadata/metadata\";\nimport { deepClone, deepMerge } from \"../utils/objects\";\nimport {\n recordVerificationResponse,\n setUserDimension,\n isTestValues,\n CustomDimensionNames,\n} from \"../GoogleAnalytics/ga\";\nimport { getMetadataConfig } from \"../ProgramTheme/programThemeGetters\";\nimport { getQueryOrOption, isMockedStep } from \"../ServerApi/TestingRouteOverrides\";\n\nconst allFields = [\n \"activeDutyStartDate\",\n \"address1\",\n \"birthDate\",\n \"city\",\n \"country\",\n \"cvecNumber\",\n \"dischargeDate\",\n \"driverLicenseNumber\",\n \"ebtCardNumber\",\n \"email\",\n \"firstName\",\n \"lastName\",\n \"marketConsentValue\",\n \"memberId\",\n \"phoneNumber\",\n \"postalCode\",\n \"socialSecurityNumber\",\n \"state\",\n \"status\",\n \"statuses\",\n];\n\n/**\n * The initial state of the verification service.\n */\nconst initialState: ReduxState = Object.freeze({\n programId: undefined,\n programTheme: undefined,\n isLoading: true,\n isErrored: false,\n viewModel: undefined,\n previousViewModel: undefined,\n previousVerificationResponse: undefined,\n verificationResponse: undefined,\n fieldValidationErrors: getFieldValidationErrorsEmpty(),\n messages: undefined,\n orgList: undefined,\n});\n\nconst getInitialState = () => deepClone(initialState);\n\n/**\n * @description Most of the state for the VerificationService\n * @example as a user fills-in the HTML form, we can track the data entered here in the view model.\n * @param state\n * @param action\n */\nexport const verificationServiceReducer = (\n state: ReduxState = getInitialState(),\n action: VerificationServiceAction,\n): ReduxState => {\n switch (action.type) {\n case \"PROGRAM_ID\":\n setUserDimension(CustomDimensionNames.programId, action.programId);\n return {\n ...state,\n programId: action.programId,\n };\n case \"VERIFICATION_RESPONSE\":\n let previousVerificationResponse: VerificationResponse;\n if (\n state.verificationResponse &&\n (state.verificationResponse.currentStep === VerificationStepsEnum.collectMilitaryStatus ||\n state.verificationResponse.currentStep === VerificationStepsEnum.sso ||\n state.verificationResponse.currentStep === VerificationStepsEnum.docUpload)\n ) {\n previousVerificationResponse = state.verificationResponse;\n } else if (state.previousVerificationResponse) {\n previousVerificationResponse = state.previousVerificationResponse;\n } else {\n previousVerificationResponse = state.verificationResponse;\n }\n\n recordVerificationResponse(action.verificationResponse);\n\n return {\n ...state,\n previousVerificationResponse,\n // When we get a verificationResponse, hold on to the last viewModel\n // before re-render, in case it needs to be referenced in the new step:\n previousViewModel: state.viewModel,\n verificationResponse: action.verificationResponse,\n };\n case \"SET_MESSAGES\":\n return {\n ...state,\n messages: action.messages,\n };\n case \"FIELD_VALIDATION_ERRORS\":\n return {\n ...state,\n fieldValidationErrors: action.fieldValidationErrors,\n };\n case \"VIEW_MODEL\":\n const newState = { ...state } satisfies ReduxState;\n\n if (action.viewModel) {\n if (action.partial) {\n // New functionality: action.viewModel can be a sparse object. Bring along all previous viewModel\n // This allows devs to set just one field, like firstName, without supplying the rest of the viewModel object\n newState.viewModel = deepMerge({}, state.viewModel, action.viewModel) as ViewModel;\n } else {\n // Existing functionality: replace viewModel object. Leave here for backwards compatibility.\n // WARNING - this is not a deep clone!\n newState.viewModel = { ...action.viewModel } as ViewModel;\n }\n }\n\n if (action.viewModel && action.viewModel.metadata) {\n setMetadata(action.viewModel.metadata);\n const metadata: Metadata = getMetadata();\n (newState.viewModel as PersonalInfoViewModel).metadata = metadata;\n }\n\n return newState;\n case \"PREVIOUS_VIEW_MODEL\":\n return {\n ...state,\n previousViewModel: action.previousViewModel,\n };\n case \"PROGRAM_THEME\":\n setUserDimension(\n CustomDimensionNames.testMode,\n action.programTheme.isTestMode ? isTestValues.TRUE : isTestValues.FALSE,\n );\n\n if (action.partial) {\n return {\n ...state,\n programTheme: deepMerge({}, state.programTheme, action.programTheme) as ProgramTheme,\n };\n }\n\n return {\n ...state,\n programTheme: action.programTheme,\n };\n\n case \"REQUIRED_METADATA_AND_EXTERNAL_ID_CHECK\": {\n if (!isCollectStep(state.verificationResponse.currentStep) || isMockedStep()) {\n return state;\n }\n\n const metadataConfig: MetadataConfig = getMetadataConfig(state.programTheme);\n const metadata: Metadata = getMetadata();\n const isExternalUserIdRequired = state.programTheme.externalUserIdRequired;\n const hasMissingMetadata =\n metadataConfig.enabled &&\n !(metadataConfig.requiredKeys || []).every((k) => metadata.hasOwnProperty(k));\n\n const isMissingExternalId =\n isExternalUserIdRequired && !getQueryOrOption(QUERY_STRING_EXTERNAL_USER_ID);\n\n const getOverrideStep = () => {\n if (hasMissingMetadata) {\n return \"missingRequiredMetadata\";\n }\n if (isMissingExternalId) {\n return \"missingRequiredExternalId\";\n }\n return undefined;\n };\n\n const overrideStep = getOverrideStep();\n\n return {\n ...state,\n overrideStep,\n };\n }\n\n case \"IS_LOADING\":\n return {\n ...state,\n isLoading: action.isLoading,\n loadingStep: action.isLoading ? action.loadingStep : undefined,\n };\n case \"IS_ERRORED\":\n return {\n ...state,\n isErrored: action.isErrored,\n };\n case \"RESET_STATE\":\n return {\n ...deepClone(getInitialState()),\n programId: state.programId,\n };\n case \"COLLECT_FIELDS\": {\n const requiredFieldKeys = action.requiredFields.map((field) => field.key);\n\n // if smsloop is enabled or country is \"US\", add phoneNumber to requiredFieldKeys\n if (\n (state.programTheme.smsLoopEnabled ||\n // @ts-ignore - initially it's country not countryChoice\n state.viewModel?.country === \"US\" ||\n state.viewModel.countryChoice?.value === \"US\") && // use countryChoice if available\n !requiredFieldKeys.includes(\"phoneNumber\")\n ) {\n requiredFieldKeys.push(\"phoneNumber\");\n }\n\n // status is always required on medical forms.\n if (state.verificationResponse.segment === \"medical\") {\n requiredFieldKeys.push(\"status\");\n }\n\n const optionalFieldKeys = (action.optionalFields || []).map((field) => field.key);\n\n // Only fields the endpoint reports as neither required nor optional go\n // unvalidated. Optional fields are still validated once the consumer\n // fills them in. This deliberately does not touch\n // fieldsToSkipValidation, which the step components own.\n const serverUnvalidatedFields = allFields.filter(\n (fieldId) =>\n !requiredFieldKeys.includes(fieldId as FieldId) &&\n !optionalFieldKeys.includes(fieldId as FieldId),\n );\n\n return {\n ...state,\n viewModel: {\n ...state.viewModel,\n serverUnvalidatedFields: serverUnvalidatedFields as FieldId[],\n } as ViewModel,\n };\n }\n case \"STATUS_INVALIDATED\": {\n const viewModel = { ...state.viewModel };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (\"statuses\" in viewModel) (viewModel as any).statuses = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (\"status\" in viewModel) (viewModel as any).status = \"\";\n\n const fieldValidationErrors = {\n ...state.fieldValidationErrors,\n status: undefined,\n statuses: undefined,\n };\n\n return { ...state, viewModel, fieldValidationErrors };\n }\n case \"FORCE_UPDATE\":\n return deepClone(state);\n default:\n return state;\n }\n};\n","import { type Middleware, type Dispatch } from \"redux\";\n\nimport { hooks } from \"@/lib/hooks\";\nimport { currentStepChanged } from \"@/lib/VerificationService/VerificationServiceActions\";\nimport { isSuccessResponse } from \"@/lib/types/runtimeTypes\";\nimport { type VerificationServiceValues, type VerificationServiceAction } from \"@/lib/types/types\";\n\nexport const verificationStoreMiddleware: Middleware<\n undefined,\n VerificationServiceValues,\n Dispatch<VerificationServiceAction>\n> = (store) => (next) => (action: VerificationServiceAction) => {\n // 1. Capture state before the reducer runs\n const prevState = store.getState();\n\n // 2. Let the reducer process the action\n const result = next(action);\n\n // 3. Capture state after the reducer runs\n const nextState = store.getState();\n\n // 4. Perform side effects based on state changes\n if (action.type === \"VERIFICATION_RESPONSE\") {\n const { verificationResponse: prevResponse } = prevState;\n const { verificationResponse: nextResponse } = nextState;\n\n if (nextResponse && currentStepChanged(prevResponse, nextResponse)) {\n queueMicrotask(() => {\n if (isSuccessResponse(nextResponse)) {\n hooks.emit(\"ON_VERIFICATION_SUCCESS\", nextResponse);\n }\n hooks.emit(\"ON_VERIFICATION_STEP_CHANGE\", nextResponse);\n });\n }\n }\n\n return result;\n};\n","import { createStore, applyMiddleware, compose } from \"redux\";\n\nimport { logger } from \"@jslib/shared/utils/logger\";\nimport { getSafe } from \"@jslib/shared/utils/getSafe\";\n\nimport {\n type ReduxState,\n type VerificationResponseAction,\n type VerificationServiceAction,\n type VerificationStore,\n} from \"../types/types\";\nimport { getOptions } from \"../../options/options\";\n\nimport { verificationServiceReducer } from \"./verificationServiceReducer\";\nimport { verificationStoreMiddleware } from \"./VerificationServiceStoreMiddleware\";\n\nlet store: VerificationStore;\n\nexport const getStore = (): VerificationStore => {\n if (!store) {\n const composeEnhancers =\n // @ts-expect-error There's no type expansion on window for Redux DevTools.\n (typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__) || compose;\n\n store = createStore<ReduxState, VerificationServiceAction, void, void>(\n verificationServiceReducer,\n composeEnhancers(applyMiddleware(verificationStoreMiddleware)),\n );\n logger.init(() => {\n const state = store.getState();\n const errorIds = getSafe(() => state.verificationResponse.errorIds);\n return {\n programId: getSafe(() => state.programId),\n isLoading: getSafe(() => state.isLoading),\n isErrored: getSafe(() => state.isErrored),\n errorIdsFromVerRsp: Array.isArray(errorIds) ? errorIds.join(\", \") : undefined,\n verificationId: getSafe(() => state.verificationResponse.verificationId),\n currentStep: getSafe(() => state.verificationResponse.currentStep),\n locale: getSafe(() => state.programTheme.intl.locale),\n isTestMode: getSafe(() => state.programTheme.isTestMode),\n openOrgSearchEnabled: getSafe(() => state.programTheme.openOrgSearchEnabled),\n /** @deprecated : Remove once NR has been updated to use clientVersion (HC-1665) */\n jslibVerActual: getSafe(() => process.env.NEXT_VERSION, \"?\"),\n clientVersion: getSafe(() => process.env.NEXT_VERSION, \"?\"),\n };\n });\n }\n\n return store;\n};\n\nexport const resetStore = () => getStore().dispatch({ type: \"RESET_STATE\" });\n\nexport const refreshStore = (): void => {\n // This prompts the form to re-render which it otherwise wouldn't because a new verification is requested only on mount\n if (getOptions().mockResponse) {\n getStore().dispatch<VerificationResponseAction>({\n verificationResponse: getOptions().mockResponse,\n type: \"VERIFICATION_RESPONSE\",\n });\n }\n getStore().dispatch({ type: \"FORCE_UPDATE\" });\n};\n","import { logger } from \"@jslib/shared/utils/logger\";\nimport { getSafe } from \"@jslib/shared/utils/getSafe\";\n\nimport {\n type ViewModel,\n type ReduxState,\n type WithLocaleChoiceAndCountryChoice,\n type VerificationResponse,\n} from \"../types/types\";\nimport { addHook } from \"../hooks\";\nimport { deepClone } from \"../utils/objects\";\nimport { setOptions } from \"../../options/options\";\n\nimport { getStore } from \"./VerificationServiceStore\";\nimport { createUpdateViewModel, doViewModelReset } from \"./VerificationServiceActions\";\n\nconst store = getStore();\n\nexport type ViewModelUpdateOptions = {\n partial: boolean;\n metadataCheck: boolean;\n externalUserIdCheck: boolean;\n};\n\n/**\n * @description Set the viewModel for the form or reset it by passing an empty object\n */\nexport const setViewModel = (\n newViewModel: ViewModel | {},\n options?: Partial<ViewModelUpdateOptions>,\n) => {\n const state: ReduxState = store.getState();\n const { partial = true, metadataCheck = false, externalUserIdCheck = false } = options || {};\n const doSet = () => {\n const updatedViewModel = deepClone(newViewModel);\n logger.info(\"Setting viewModel\", updatedViewModel);\n createUpdateViewModel(store.dispatch)(updatedViewModel, {\n partial,\n metadataCheck,\n externalUserIdCheck,\n });\n };\n\n // The viewModel may not be set until later, and default messages may fail to load\n // so re-use setOptions to make sure we know about the desire to use this locale\n const locale = getSafe(\n () => (newViewModel as WithLocaleChoiceAndCountryChoice).localeChoice.value,\n );\n if (locale) {\n setOptions({ locale });\n }\n\n if (state.isLoading) {\n addHook({\n name: \"ON_VERIFICATION_READY\",\n callback: () => {\n doSet();\n },\n });\n } else {\n doSet();\n }\n};\n\n/**\n * Schedule, or immediately perform a viewModel reset.\n * Resets fieldValidationErrors and previousViewModel as well.\n * @todo Return promise\n */\nexport const resetViewModel = () => {\n const state: ReduxState = store.getState();\n\n if (state.isLoading) {\n addHook({\n name: \"ON_VERIFICATION_READY\",\n callback: (verificationResponse: VerificationResponse) => {\n doViewModelReset(store.dispatch)(verificationResponse);\n },\n });\n } else {\n doViewModelReset(store.dispatch)(state.verificationResponse);\n }\n};\n","/* eslint-disable react/no-unstable-nested-components */\n/* this linter is causing false positives in this file because of how the tag\n * replacers are being created. Hopefully the problem will go away when we get\n * away from super old react-intl\n */\nimport React from \"react\";\n\nimport { FooterText } from \"@components/FormFooter/FooterTextComponent\";\n\nimport { useViewModel } from \"@/lib/state/contextHooks\";\nimport { getLocaleSafely } from \"@/lib/intl/intl\";\nimport { setViewModel } from \"@/lib/VerificationService/ViewModel\";\nimport { type VerificationService } from \"@/lib/types/types\";\n\nimport { useFlag } from \"../FeatureFlags/hooks\";\nexport interface FormFooterProps {\n verificationService?: VerificationService;\n children?: React.ReactNode;\n showShield?: boolean;\n}\n\nexport const FormFooterComponent = ({ children, showShield = false }: FormFooterProps) => {\n const viewModel = useViewModel();\n const locale = getLocaleSafely(viewModel);\n const privacyPolicyRef = React.useRef<any>({});\n const shouldHideIcon = useFlag(\"hc-my-sheer-id-theme-builder\");\n\n // Store the footer message that the user was shown when the user submitted\n React.useEffect(() => {\n if (!privacyPolicyRef.current) {\n return;\n }\n const privacyPolicyText = privacyPolicyRef.current.textContent;\n const updatedViewModel = { metadata: { submissionOptIn: privacyPolicyText } };\n setViewModel(updatedViewModel);\n }, [privacyPolicyRef, locale]);\n\n return (\n <div className=\"sid-footer sid-h-small-text sid-l-space-top-md\" role=\"contentinfo\">\n {(showShield || !children) && !shouldHideIcon && (\n <div className=\"sid-footer__shield\">\n <img\n alt=\"\"\n src=\"https://assets-resources.sheerid.com/common/images/2018/icons/shield-check.svg\"\n />\n </div>\n )}\n <div>\n <div className=\"sid-footer__one\" ref={privacyPolicyRef}>\n {children || <FooterText />}\n </div>\n </div>\n </div>\n );\n};\n"],"x_google_ignoreList":[3,4,11,12,13,14,15,16],"mappings":"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"}