@envive-ai/react-hooks 0.1.7 → 0.1.9

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 (374) hide show
  1. package/dist/NewOrgConfig-B1zC4zP0.js +10 -0
  2. package/dist/{NewOrgConfig-C5YL4Y62.cjs → NewOrgConfig-DAGaGj2d.cjs} +3 -8
  3. package/dist/{SystemSettingsContext-Cb9YHln8.cjs → SystemSettingsContext-BHi2YaQp.cjs} +2 -2
  4. package/dist/{SystemSettingsContext-D3mmGGcv.js → SystemSettingsContext-BLRfTbCC.js} +2 -2
  5. package/dist/{TrackComponentVisibleEvent-DXTEBjGM.js → TrackComponentVisibleEvent-CftWp8QR.js} +3 -3
  6. package/dist/{TrackComponentVisibleEvent-C7c_rHFW.cjs → TrackComponentVisibleEvent-Dag8vFhb.cjs} +3 -3
  7. package/dist/{amplitudeContext-CB_F-nJY.d.cts → amplitudeContext-B73xamNe.d.cts} +1 -1
  8. package/dist/{amplitudeContext-DFYBDc0h.d.ts → amplitudeContext-BhhYPJSL.d.ts} +1 -1
  9. package/dist/{amplitudeContext-Cak6ijMq.js → amplitudeContext-CwPtBPhg.js} +8 -8
  10. package/dist/{amplitudeContext-sTEsPaVG.cjs → amplitudeContext-DTC6maR0.cjs} +8 -8
  11. package/dist/api-Bc3_julZ.cjs +239 -0
  12. package/dist/api-D9gmGNAV.js +166 -0
  13. package/dist/{app-D_upYeqF.js → app-CoQ1nC-j.js} +5 -5
  14. package/dist/{app-KXTMPa4s.cjs → app-DN72spgQ.cjs} +6 -6
  15. package/dist/application/models/graphql/index.d.ts +1 -1
  16. package/dist/application/models/guards/api/index.cjs +3 -2
  17. package/dist/application/models/guards/api/index.d.ts +2 -2
  18. package/dist/application/models/guards/api/index.js +3 -2
  19. package/dist/application/models/guards/utils.cjs +3 -0
  20. package/dist/application/models/guards/utils.d.cts +2 -0
  21. package/dist/application/models/guards/utils.d.ts +2 -0
  22. package/dist/application/models/guards/utils.js +3 -0
  23. package/dist/application/models/index.cjs +7 -6
  24. package/dist/application/models/index.d.cts +8 -7
  25. package/dist/application/models/index.d.ts +11 -10
  26. package/dist/application/models/index.js +6 -5
  27. package/dist/application/models/utilityTypes/index.cjs +1 -1
  28. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  29. package/dist/application/models/utilityTypes/index.js +1 -1
  30. package/dist/application/models/variantInfo/index.cjs +1 -1
  31. package/dist/application/models/variantInfo/index.d.cts +1 -1
  32. package/dist/application/models/variantInfo/index.d.ts +1 -1
  33. package/dist/application/models/variantInfo/index.js +1 -1
  34. package/dist/application/utils/index.cjs +33 -32
  35. package/dist/application/utils/index.d.cts +13 -12
  36. package/dist/application/utils/index.d.ts +16 -15
  37. package/dist/application/utils/index.js +15 -14
  38. package/dist/{atomStore-DnPEioF4.js → atomStore-BuopbV9k.js} +1 -1
  39. package/dist/{atomStore-DEZyFCNz.cjs → atomStore-CZKe3itM.cjs} +1 -1
  40. package/dist/atoms/app/index.cjs +10 -9
  41. package/dist/atoms/app/index.d.cts +16 -15
  42. package/dist/atoms/app/index.d.ts +19 -18
  43. package/dist/atoms/app/index.js +10 -9
  44. package/dist/atoms/atomStore/index.cjs +2 -2
  45. package/dist/atoms/atomStore/index.js +2 -2
  46. package/dist/atoms/chat/index.cjs +16 -15
  47. package/dist/atoms/chat/index.d.cts +36 -35
  48. package/dist/atoms/chat/index.d.ts +39 -38
  49. package/dist/atoms/chat/index.js +16 -15
  50. package/dist/atoms/globalSearch/index.cjs +1 -1
  51. package/dist/atoms/globalSearch/index.d.cts +6 -6
  52. package/dist/atoms/globalSearch/index.d.ts +6 -6
  53. package/dist/atoms/globalSearch/index.js +1 -1
  54. package/dist/atoms/org/index.cjs +4 -4
  55. package/dist/atoms/org/index.d.cts +27 -25
  56. package/dist/atoms/org/index.d.ts +30 -28
  57. package/dist/atoms/org/index.js +4 -4
  58. package/dist/atoms/search/index.cjs +23 -21
  59. package/dist/atoms/search/index.d.cts +10 -9
  60. package/dist/atoms/search/index.d.ts +13 -12
  61. package/dist/atoms/search/index.js +23 -21
  62. package/dist/atoms/search/types.cjs +1 -1
  63. package/dist/atoms/search/types.d.cts +1 -1
  64. package/dist/atoms/search/types.d.ts +1 -1
  65. package/dist/atoms/search/types.js +1 -1
  66. package/dist/atoms/search/utils.cjs +3 -0
  67. package/dist/atoms/search/utils.d.cts +5 -0
  68. package/dist/atoms/search/utils.d.ts +5 -0
  69. package/dist/atoms/search/utils.js +3 -0
  70. package/dist/{cdnContext-BMjVfBft.cjs → cdnContext-ShKWLgKA.cjs} +2 -2
  71. package/dist/{cdnContext-DgsJ00Tb.js → cdnContext-pfrZ6lfu.js} +2 -2
  72. package/dist/{chat-D1Eat8Ih.cjs → chat-BOuhPeoD.cjs} +11 -11
  73. package/dist/{chat-zA-K4tR_.cjs → chat-BkjIKhc5.cjs} +1 -1
  74. package/dist/{chat-DPJGdUkz.js → chat-C3I3GG1L.js} +10 -10
  75. package/dist/{chat-B4lkFIxz.js → chat-CgLypC3w.js} +1 -1
  76. package/dist/{chatElementDisplayLocation-C1tRM5OD.d.ts → chatElementDisplayLocation-BwiXrkN7.d.ts} +1 -1
  77. package/dist/{chatElementDisplayLocation-9SW40Dd3.d.cts → chatElementDisplayLocation-DWmfNX_u.d.cts} +1 -1
  78. package/dist/chatSearch-B9Rk7Dl3.js +295 -0
  79. package/dist/chatSearch-BqVwk1ya.cjs +418 -0
  80. package/dist/{chatState-BrmBYY8l.js → chatState-CX50Roi9.js} +3 -3
  81. package/dist/{chatState-BisPJd5g.cjs → chatState-xC0pswtB.cjs} +3 -3
  82. package/dist/{commerce-api-DagLj3D_.js → commerce-api-BCSZ4QFV.js} +9 -9
  83. package/dist/{commerce-api-CxDIfeME.cjs → commerce-api-DemPaNpu.cjs} +9 -9
  84. package/dist/{components-g0G58Kat.cjs → components-Cby-Cma3.cjs} +1 -1
  85. package/dist/{components-B1edduHz.js → components-D1mg1-Br.js} +1 -1
  86. package/dist/config/locators/components/chat/index.cjs +1 -1
  87. package/dist/config/locators/components/chat/index.d.cts +1 -1
  88. package/dist/config/locators/components/chat/index.d.ts +1 -1
  89. package/dist/config/locators/components/chat/index.js +1 -1
  90. package/dist/config/locators/components/index.cjs +1 -1
  91. package/dist/config/locators/components/index.d.cts +1 -1
  92. package/dist/config/locators/components/index.d.ts +1 -1
  93. package/dist/config/locators/components/index.js +1 -1
  94. package/dist/config/locators/index.cjs +2 -2
  95. package/dist/config/locators/index.d.cts +2 -2
  96. package/dist/config/locators/index.d.ts +2 -2
  97. package/dist/config/locators/index.js +2 -2
  98. package/dist/contexts/amplitudeContext/index.cjs +13 -12
  99. package/dist/contexts/amplitudeContext/index.d.cts +1 -1
  100. package/dist/contexts/amplitudeContext/index.d.ts +1 -1
  101. package/dist/contexts/amplitudeContext/index.js +13 -12
  102. package/dist/contexts/cdnContext/index.cjs +4 -4
  103. package/dist/contexts/cdnContext/index.js +4 -4
  104. package/dist/contexts/chatContext/index.cjs +37 -35
  105. package/dist/contexts/chatContext/index.d.cts +4 -4
  106. package/dist/contexts/chatContext/index.d.ts +2 -2
  107. package/dist/contexts/chatContext/index.js +33 -31
  108. package/dist/contexts/enviveConfigContext/index.cjs +4 -4
  109. package/dist/contexts/enviveConfigContext/index.d.cts +3 -3
  110. package/dist/contexts/enviveConfigContext/index.d.ts +3 -3
  111. package/dist/contexts/enviveConfigContext/index.js +4 -4
  112. package/dist/contexts/enviveCssContext/index.cjs +15 -14
  113. package/dist/contexts/enviveCssContext/index.js +15 -14
  114. package/dist/contexts/featureFlagContext/index.cjs +5 -5
  115. package/dist/contexts/featureFlagContext/index.d.cts +3 -3
  116. package/dist/contexts/featureFlagContext/index.d.ts +3 -3
  117. package/dist/contexts/featureFlagContext/index.js +5 -5
  118. package/dist/contexts/featureFlagServiceContext/index.cjs +2 -2
  119. package/dist/contexts/featureFlagServiceContext/index.d.cts +4 -4
  120. package/dist/contexts/featureFlagServiceContext/index.d.ts +4 -4
  121. package/dist/contexts/featureFlagServiceContext/index.js +2 -2
  122. package/dist/contexts/graphqlContext/index.cjs +9 -8
  123. package/dist/contexts/graphqlContext/index.d.cts +10 -8
  124. package/dist/contexts/graphqlContext/index.d.ts +13 -11
  125. package/dist/contexts/graphqlContext/index.js +9 -8
  126. package/dist/contexts/localStorageContext/index.cjs +2 -2
  127. package/dist/contexts/localStorageContext/index.js +2 -2
  128. package/dist/contexts/newOrgConfigContext/index.cjs +13 -12
  129. package/dist/contexts/newOrgConfigContext/index.d.cts +12 -27
  130. package/dist/contexts/newOrgConfigContext/index.d.ts +15 -30
  131. package/dist/contexts/newOrgConfigContext/index.js +13 -12
  132. package/dist/contexts/searchContext/index.cjs +17 -16
  133. package/dist/contexts/searchContext/index.d.cts +1 -1
  134. package/dist/contexts/searchContext/index.d.ts +2 -2
  135. package/dist/contexts/searchContext/index.js +17 -16
  136. package/dist/contexts/sessionStorageContext/index.cjs +2 -2
  137. package/dist/contexts/sessionStorageContext/index.js +2 -2
  138. package/dist/contexts/shopifyUrlContext/index.cjs +1 -1
  139. package/dist/contexts/shopifyUrlContext/index.d.cts +3 -3
  140. package/dist/contexts/shopifyUrlContext/index.d.ts +3 -3
  141. package/dist/contexts/shopifyUrlContext/index.js +1 -1
  142. package/dist/contexts/systemSettingsContext/index.cjs +4 -4
  143. package/dist/contexts/systemSettingsContext/index.d.cts +11 -10
  144. package/dist/contexts/systemSettingsContext/index.d.ts +16 -15
  145. package/dist/contexts/systemSettingsContext/index.js +4 -4
  146. package/dist/contexts/types.d.cts +3 -3
  147. package/dist/contexts/types.d.ts +3 -3
  148. package/dist/contexts/userIdentityContext/index.cjs +19 -18
  149. package/dist/contexts/userIdentityContext/index.d.cts +1 -1
  150. package/dist/contexts/userIdentityContext/index.d.ts +1 -1
  151. package/dist/contexts/userIdentityContext/index.js +19 -18
  152. package/dist/{domObserver-B6cRGTny.js → domObserver-B19-69gW.js} +1 -1
  153. package/dist/{domObserver-DQZwhPrc.cjs → domObserver-CwieVNgj.cjs} +1 -1
  154. package/dist/{enviveConfig-BJZ4zTJo.js → enviveConfig-BSfyz_pm.js} +3 -3
  155. package/dist/{enviveConfig-DdBrcGSQ.cjs → enviveConfig-D8vcVPWD.cjs} +3 -3
  156. package/dist/{enviveConfigContext-78orE_uH.cjs → enviveConfigContext-C8cCcdKU.cjs} +3 -3
  157. package/dist/{enviveConfigContext-jBCCWQH9.js → enviveConfigContext-CJqpRSKu.js} +3 -3
  158. package/dist/{featureFlagServiceContext-ChL7DJ53.cjs → featureFlagServiceContext-CUBoBV2i.cjs} +2 -2
  159. package/dist/{featureFlagServiceContext-D1PzHsEs.d.ts → featureFlagServiceContext-Cpw8omUr.d.ts} +2 -2
  160. package/dist/{featureFlagServiceContext-DQwlCTde.d.cts → featureFlagServiceContext-Cvn6fcdB.d.cts} +2 -2
  161. package/dist/{featureFlagServiceContext-DzFfmb1Z.js → featureFlagServiceContext-Dg8okVk1.js} +2 -2
  162. package/dist/{frontendConfig-wg41mBok.d.cts → frontendConfig-DnMZfvcA.d.cts} +3 -3
  163. package/dist/{frontendConfig-DrvrQSm8.d.ts → frontendConfig-Dqxbqo8G.d.ts} +3 -3
  164. package/dist/{globalSearch-Bnjlxtr5.cjs → globalSearch-C94-vEVh.cjs} +1 -1
  165. package/dist/{globalSearch-CRWUqnjq.js → globalSearch-Dlbnfasm.js} +1 -1
  166. package/dist/{graphqlConfig-Bn-HLHsh.cjs → graphqlConfig-B4ddz1vH.cjs} +1 -1
  167. package/dist/{graphqlConfig-DtZm_YaH.js → graphqlConfig-BnjOdeX7.js} +1 -1
  168. package/dist/graphqlContext-6-GcR9zd.d.cts +28 -0
  169. package/dist/{graphqlContext-BJg7B--J.js → graphqlContext-8kw4aLRc.js} +4 -4
  170. package/dist/graphqlContext-EhYZM1v_.d.ts +28 -0
  171. package/dist/{graphqlContext-DI-_VRmb.cjs → graphqlContext-Fwc6Upvh.cjs} +4 -4
  172. package/dist/hooks/AmplitudeOperations/index.cjs +15 -14
  173. package/dist/hooks/AmplitudeOperations/index.d.cts +1 -1
  174. package/dist/hooks/AmplitudeOperations/index.d.ts +1 -1
  175. package/dist/hooks/AmplitudeOperations/index.js +15 -14
  176. package/dist/hooks/AppDetails/index.cjs +13 -12
  177. package/dist/hooks/AppDetails/index.d.cts +9 -8
  178. package/dist/hooks/AppDetails/index.d.ts +12 -11
  179. package/dist/hooks/AppDetails/index.js +13 -12
  180. package/dist/hooks/CdnOperations/index.cjs +4 -4
  181. package/dist/hooks/CdnOperations/index.js +4 -4
  182. package/dist/hooks/ChatToggle/index.cjs +17 -16
  183. package/dist/hooks/ChatToggle/index.d.cts +1 -1
  184. package/dist/hooks/ChatToggle/index.d.ts +1 -1
  185. package/dist/hooks/ChatToggle/index.js +17 -16
  186. package/dist/hooks/ChatToggleAnalytics/index.cjs +17 -16
  187. package/dist/hooks/ChatToggleAnalytics/index.d.cts +1 -1
  188. package/dist/hooks/ChatToggleAnalytics/index.d.ts +1 -1
  189. package/dist/hooks/ChatToggleAnalytics/index.js +17 -16
  190. package/dist/hooks/CustomerSupportHandoff/index.cjs +1 -1
  191. package/dist/hooks/CustomerSupportHandoff/index.js +1 -1
  192. package/dist/hooks/Debounce/index.cjs +1 -1
  193. package/dist/hooks/Debounce/index.js +1 -1
  194. package/dist/hooks/ElementObserver/index.cjs +1 -1
  195. package/dist/hooks/ElementObserver/index.d.cts +1 -1
  196. package/dist/hooks/ElementObserver/index.d.ts +1 -1
  197. package/dist/hooks/ElementObserver/index.js +1 -1
  198. package/dist/hooks/GrabAndScroll/index.d.cts +2 -2
  199. package/dist/hooks/GraphQLConfig/index.cjs +10 -9
  200. package/dist/hooks/GraphQLConfig/index.d.cts +15 -2
  201. package/dist/hooks/GraphQLConfig/index.d.ts +15 -2
  202. package/dist/hooks/GraphQLConfig/index.js +10 -9
  203. package/dist/hooks/IdentifyUser/index.cjs +20 -19
  204. package/dist/hooks/IdentifyUser/index.js +20 -19
  205. package/dist/hooks/ImageResolver/index.cjs +9 -8
  206. package/dist/hooks/ImageResolver/index.js +9 -8
  207. package/dist/hooks/Intersection/index.cjs +1 -1
  208. package/dist/hooks/Intersection/index.js +1 -1
  209. package/dist/hooks/LocalStorageOperations/index.cjs +2 -2
  210. package/dist/hooks/LocalStorageOperations/index.js +2 -2
  211. package/dist/hooks/MessageFilter/index.cjs +7 -6
  212. package/dist/hooks/MessageFilter/index.d.cts +9 -8
  213. package/dist/hooks/MessageFilter/index.d.ts +12 -11
  214. package/dist/hooks/MessageFilter/index.js +7 -6
  215. package/dist/hooks/NewOrgConfig/index.cjs +14 -13
  216. package/dist/hooks/NewOrgConfig/index.d.cts +13 -15
  217. package/dist/hooks/NewOrgConfig/index.d.ts +16 -18
  218. package/dist/hooks/NewOrgConfig/index.js +14 -13
  219. package/dist/hooks/Search/index.cjs +35 -33
  220. package/dist/hooks/Search/index.d.cts +13 -18
  221. package/dist/hooks/Search/index.d.ts +16 -21
  222. package/dist/hooks/Search/index.js +34 -32
  223. package/dist/hooks/SearchOperations/index.cjs +18 -17
  224. package/dist/hooks/SearchOperations/index.d.cts +1 -1
  225. package/dist/hooks/SearchOperations/index.d.ts +2 -2
  226. package/dist/hooks/SearchOperations/index.js +18 -17
  227. package/dist/hooks/SessionStorageOperations/index.cjs +2 -2
  228. package/dist/hooks/SessionStorageOperations/index.js +2 -2
  229. package/dist/hooks/ShopifyUrlOperations/index.cjs +1 -1
  230. package/dist/hooks/ShopifyUrlOperations/index.d.cts +3 -3
  231. package/dist/hooks/ShopifyUrlOperations/index.d.ts +3 -3
  232. package/dist/hooks/ShopifyUrlOperations/index.js +1 -1
  233. package/dist/hooks/SystemSettingsContext/index.cjs +5 -5
  234. package/dist/hooks/SystemSettingsContext/index.d.cts +11 -10
  235. package/dist/hooks/SystemSettingsContext/index.d.ts +14 -13
  236. package/dist/hooks/SystemSettingsContext/index.js +5 -5
  237. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +15 -14
  238. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +2 -2
  239. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +2 -2
  240. package/dist/hooks/TrackComponentVisibleEvent/index.js +15 -14
  241. package/dist/hooks/UpdateAnalyticsProps/index.cjs +14 -13
  242. package/dist/hooks/UpdateAnalyticsProps/index.js +14 -13
  243. package/dist/hooks/utils.cjs +8 -0
  244. package/dist/hooks/utils.d.cts +13 -0
  245. package/dist/hooks/utils.d.ts +13 -0
  246. package/dist/hooks/utils.js +3 -0
  247. package/dist/{index-DuyZQOE1.d.ts → index-BN-3ctk_.d.ts} +2 -2
  248. package/dist/index-BPxqQmpF.d.ts +1 -0
  249. package/dist/{index-fKJB9EFb.d.ts → index-Bl9pjZeG.d.ts} +34 -34
  250. package/dist/{index-DNUKSg6R.d.ts → index-BoYC9XLW.d.ts} +1 -1
  251. package/dist/{index-REhT-Pls.d.cts → index-C12-NmS7.d.cts} +1 -1
  252. package/dist/{index-D8ThXrqI.d.ts → index-C6KdON7d.d.ts} +1 -1
  253. package/dist/index-CK_J3QMY.d.ts +676 -0
  254. package/dist/{index-DO0s5KNA.d.cts → index-CVa3DeXJ.d.cts} +1 -1
  255. package/dist/index-C_MIfxF0.d.cts +676 -0
  256. package/dist/{index-DBqgBV9N.d.ts → index-DOii3C6b.d.ts} +1 -1
  257. package/dist/{index-CyXULMyI.d.cts → index-Dcgz5i3Q.d.cts} +33 -33
  258. package/dist/{index-BS7-_CW4.d.ts → index-Dr_c2DDq.d.ts} +1 -1
  259. package/dist/{index-D9VegTU-.d.ts → index-DsiilEj-.d.ts} +1 -1
  260. package/dist/index-RcVcRKH7.d.cts +1 -0
  261. package/dist/{index-D46Rd0io.d.cts → index-hdbCEjYy.d.cts} +1 -1
  262. package/dist/interceptors/index.cjs +2 -2
  263. package/dist/interceptors/index.d.cts +10 -9
  264. package/dist/interceptors/index.d.ts +13 -12
  265. package/dist/interceptors/index.js +2 -2
  266. package/dist/interceptors/types.cjs +1 -1
  267. package/dist/interceptors/types.d.cts +9 -8
  268. package/dist/interceptors/types.d.ts +12 -11
  269. package/dist/interceptors/types.js +1 -1
  270. package/dist/{localStorageContext-6OrGDFid.js → localStorageContext-Dwgto93_.js} +2 -2
  271. package/dist/{localStorageContext-Bld0OWmG.cjs → localStorageContext-cnMYDllE.cjs} +2 -2
  272. package/dist/{logger-CSL2jqI9.cjs → logger-Cp7J4YJT.cjs} +1 -1
  273. package/dist/{logger-D5MFf3nW.js → logger-oAgZx2-m.js} +1 -1
  274. package/dist/{models-ZpQcRZQK.cjs → models-B1P-dSCW.cjs} +25 -24
  275. package/dist/{models-Dn8Emdzc.js → models-CgvSM2fW.js} +4 -3
  276. package/dist/{newOrgConfigAtom-DkSi45_Q.cjs → newOrgConfigAtom-D6R-7HCk.cjs} +1 -1
  277. package/dist/{newOrgConfigAtom--tewb_G0.js → newOrgConfigAtom-bn1lnljf.js} +1 -1
  278. package/dist/newOrgConfigContext-BKb9qGfc.d.cts +16 -0
  279. package/dist/newOrgConfigContext-BX6cyQRB.cjs +68 -0
  280. package/dist/newOrgConfigContext-D9PpVqyW.d.ts +16 -0
  281. package/dist/newOrgConfigContext-UshqFMAV.js +53 -0
  282. package/dist/{nodeSelector-XsUa5vNH.d.cts → nodeSelector-B3bPtEjX.d.cts} +1 -1
  283. package/dist/{nodeSelector-DybpVr-i.d.ts → nodeSelector-D5gjDWZ3.d.ts} +1 -1
  284. package/dist/{org-ClUxpHPZ.cjs → org-CIhjzxWr.cjs} +1 -1
  285. package/dist/{org-B2uRkPt3.js → org-CeWXnpwF.js} +1 -1
  286. package/dist/{orgAnalyticsConfig-DOceTdNp.js → orgAnalyticsConfig-BC4_sEmn.js} +1 -1
  287. package/dist/{orgAnalyticsConfig-CuWXijsr.cjs → orgAnalyticsConfig-DsGbyFhO.cjs} +1 -1
  288. package/dist/{search-DsQm_pAi.cjs → search-76xcuxjY.cjs} +5 -5
  289. package/dist/{search-Bn4x-3TG.js → search-B6xaOds7.js} +5 -5
  290. package/dist/{search-BIomqYy6.d.ts → search-BLShhjvR.d.ts} +2 -2
  291. package/dist/{search-filter-types-Byd0lEUa.d.cts → search-filter-types-BBIjvwJV.d.cts} +1 -1
  292. package/dist/{search-filter-types-B5xcaEit.d.ts → search-filter-types-BlmWOnlA.d.ts} +1 -1
  293. package/dist/{search-B_Hg-Es2.d.cts → search-y-ioX5Mz.d.cts} +1 -1
  294. package/dist/{searchContext-fQDGSvUF.js → searchContext-5qTU8CbH.js} +7 -7
  295. package/dist/{searchContext-Cn-pCoDy.cjs → searchContext-DmXo2rpU.cjs} +7 -7
  296. package/dist/{searchServiceAdapter-DrjFCiw8.cjs → searchServiceAdapter-DEv1tTn0.cjs} +1 -1
  297. package/dist/{searchServiceAdapter-BSPZOg1r.js → searchServiceAdapter-WyCU55NV.js} +1 -1
  298. package/dist/{sessionStorageContext-CXE7iHtP.cjs → sessionStorageContext-B-UFXyJR.cjs} +2 -2
  299. package/dist/{sessionStorageContext-C5MUl2zf.js → sessionStorageContext-DnuKi3Gk.js} +2 -2
  300. package/dist/{shopifyUrlContext-7ppKx1jJ.cjs → shopifyUrlContext-Lm-Xcut2.cjs} +1 -1
  301. package/dist/{shopifyUrlContext-BSYWsoX9.js → shopifyUrlContext-jLW63VLY.js} +1 -1
  302. package/dist/{spiffyWidgets-DxGuuuCG.d.cts → spiffyWidgets-BuS00VaQ.d.cts} +1 -1
  303. package/dist/{spiffyWidgets-CdxRcXhW.d.ts → spiffyWidgets-GILaqHv6.d.ts} +1 -1
  304. package/dist/{systemSettingsContext-Cjyo2o3N.js → systemSettingsContext--LcXOVJz.js} +2 -2
  305. package/dist/{systemSettingsContext-BdAe_3Ll.cjs → systemSettingsContext-CafaP6Zh.cjs} +2 -2
  306. package/dist/{test-types-ZuRAYwox.d.ts → test-types-EzMFw_U3.d.ts} +1 -1
  307. package/dist/{test-types-DQB1JqOf.d.cts → test-types-ThQiO_cc.d.cts} +1 -1
  308. package/dist/types/index.d.cts +2 -2
  309. package/dist/types/index.d.ts +2 -2
  310. package/dist/{types-YvACLe2e.d.ts → types-6siNDmGv.d.ts} +2 -2
  311. package/dist/{types-BCz-hOvv.d.ts → types-BN2z0HcL.d.ts} +1 -1
  312. package/dist/{types-Eip78dWv.d.cts → types-CKMMb_gX.d.cts} +1 -1
  313. package/dist/{types-DIk0FLwd.js → types-CS0Hrzja.js} +1 -1
  314. package/dist/{types-DNLkuGWZ.cjs → types-CxObxLKs.cjs} +1 -1
  315. package/dist/{types-DzwBmZHy.d.cts → types-D4aa7_7x.d.cts} +1 -1
  316. package/dist/types.d.cts +3 -3
  317. package/dist/types.d.ts +3 -3
  318. package/dist/{unsupportedProductExceptions-Dak4AD-t.cjs → unsupportedProductExceptions-CKiri_vO.cjs} +1 -1
  319. package/dist/{unsupportedProductExceptions--t7AQFou.js → unsupportedProductExceptions-ClxlJ6cU.js} +1 -1
  320. package/dist/{useAmplitudeOperations-Cco_B3A5.cjs → useAmplitudeOperations-aGOqxc4V.cjs} +2 -2
  321. package/dist/{useAmplitudeOperations-C6Osqkso.js → useAmplitudeOperations-wQnkMaDm.js} +2 -2
  322. package/dist/{useAppDetails-CGqtN6sJ.cjs → useAppDetails-9WXEc3mg.cjs} +4 -4
  323. package/dist/{useAppDetails-DwX2Rhed.js → useAppDetails-mNC2PBqH.js} +4 -4
  324. package/dist/{useDebounce-BJqnCBcl.cjs → useDebounce-BaIp-A1W.cjs} +1 -1
  325. package/dist/{useDebounce-Ce31ph7m.js → useDebounce-CxPj9WmE.js} +1 -1
  326. package/dist/useGraphQLConfig-CTsRsKd2.js +63 -0
  327. package/dist/useGraphQLConfig-D7naV2RD.cjs +76 -0
  328. package/dist/{useIntersection-Czeo04jt.js → useIntersection-B4J9UhaG.js} +1 -1
  329. package/dist/{useIntersection-DnZNLcnu.cjs → useIntersection-DKWc5MY6.cjs} +1 -1
  330. package/dist/{useMessageInterceptor-C9p9No1n.cjs → useMessageInterceptor-CstX10ih.cjs} +1 -1
  331. package/dist/{useMessageInterceptor-tntd2rvB.js → useMessageInterceptor-D5oAekXn.js} +1 -1
  332. package/dist/{userIdentityContext-C1HzZFb2.cjs → userIdentityContext-BA6EN-pz.cjs} +6 -6
  333. package/dist/{userIdentityContext-DBXoLrFu.d.cts → userIdentityContext-D2oFVFzo.d.cts} +1 -1
  334. package/dist/{userIdentityContext-CDfosvOO.js → userIdentityContext-FTwTL0WF.js} +5 -5
  335. package/dist/{userIdentityContext-W1OWF3cG.d.ts → userIdentityContext-wYRpgkaJ.d.ts} +1 -1
  336. package/dist/utils-2SWrJ12w.cjs +29 -0
  337. package/dist/utils-ARmpTh1O.js +27 -0
  338. package/dist/utils-B1xLx9S8.d.ts +15 -0
  339. package/dist/utils-B3x_9JTY.d.cts +15 -0
  340. package/dist/utils-BSYichA7.d.cts +22 -0
  341. package/dist/{utils-C7S9YiFp.js → utils-Bcz5kAgP.js} +40 -2
  342. package/dist/{utils-CF13DfA1.js → utils-BgMcvG6l.js} +4 -4
  343. package/dist/{utils-BA5HXmkL.cjs → utils-CMqFfqZx.cjs} +57 -1
  344. package/dist/utils-Cavu4XiM.cjs +33 -0
  345. package/dist/utils-CqBxIpEV.js +23 -0
  346. package/dist/{utils-BTDw2aMx.cjs → utils-D_aOvxMg.cjs} +4 -4
  347. package/dist/utils-FU_r-pTj.d.ts +22 -0
  348. package/package.json +13 -1
  349. package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +6 -13
  350. package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +5 -5
  351. package/src/hooks/NewOrgConfig/useNewOrgConfig.ts +2 -2
  352. package/dist/NewOrgConfig-CRyIfb_l.js +0 -15
  353. package/dist/api-DSFlctlc.cjs +0 -269
  354. package/dist/api-JTNjuOfc.js +0 -190
  355. package/dist/chatSearch-B5jMnCYX.js +0 -315
  356. package/dist/chatSearch-DWMiyWN0.cjs +0 -444
  357. package/dist/index-BCLaqnc2.d.cts +0 -689
  358. package/dist/index-Bs0QtkSu.d.ts +0 -689
  359. package/dist/index-CKeS9dud.d.ts +0 -28
  360. package/dist/index-Cz10TYQA.d.cts +0 -28
  361. package/dist/newOrgConfigContext-B3aeblfE.cjs +0 -68
  362. package/dist/newOrgConfigContext-B5mzHKTG.js +0 -53
  363. package/dist/useGraphQLConfig-ByOZb3oZ.js +0 -63
  364. package/dist/useGraphQLConfig-DItL4BgM.cjs +0 -76
  365. /package/dist/{AmplitudeOperations-CgIVPUlr.cjs → AmplitudeOperations-CNyxbBY6.cjs} +0 -0
  366. /package/dist/{AmplitudeOperations-YpyaR7Mp.js → AmplitudeOperations-Oa2efWtF.js} +0 -0
  367. /package/dist/{atomStore-C2OI76yN.js → atomStore-BS6qtYZF.js} +0 -0
  368. /package/dist/{atomStore-DWmT1six.cjs → atomStore-BjRyLFEx.cjs} +0 -0
  369. /package/dist/{types-DQoXDiso.js → types-DtTnp0o0.js} +0 -0
  370. /package/dist/{types-o3zWarRp.cjs → types-a8gm_IaQ.cjs} +0 -0
  371. /package/dist/{utilityTypes-CWJZb9BZ.js → utilityTypes-DynzxjK3.js} +0 -0
  372. /package/dist/{utilityTypes-YGiMSyV7.cjs → utilityTypes-xb8SjKSV.cjs} +0 -0
  373. /package/dist/{variantInfo-DRFLcGc7.cjs → variantInfo-B7IwRpCg.cjs} +0 -0
  374. /package/dist/{variantInfo-58JLeDJb.js → variantInfo-BtOYUGWa.js} +0 -0
@@ -0,0 +1,239 @@
1
+ const require_chunk = require('./chunk-CUT6urMc.cjs');
2
+ const require_utils = require('./utils-Cavu4XiM.cjs');
3
+ const require_logger = require('./logger-Cp7J4YJT.cjs');
4
+ let __spiffy_ai_commerce_api_client = require("@spiffy-ai/commerce-api-client");
5
+ __spiffy_ai_commerce_api_client = require_chunk.__toESM(__spiffy_ai_commerce_api_client);
6
+
7
+ //#region src/application/models/guards/api/isApiPDPEventAttributes.ts
8
+ const isApiPDPAttributes = (data) => {
9
+ if (data == null || typeof data !== "object") return false;
10
+ if (!("product_id" in data) || typeof data.product_id !== "string") return false;
11
+ if ("parent_product_id" in data && typeof data.parent_product_id !== "string") return false;
12
+ if ("url" in data && data.url != null && typeof data.url !== "string") return false;
13
+ return true;
14
+ };
15
+
16
+ //#endregion
17
+ //#region src/application/models/guards/api/isApiQueryTypedEventAttributes.ts
18
+ const isApiQueryTypedAttributes = (data) => data != null && typeof data === "object" && "query" in data && typeof data.query === "string";
19
+
20
+ //#endregion
21
+ //#region src/application/models/guards/api/isApiResponse.ts
22
+ const isApiResponse = (data) => {
23
+ if (data == null || typeof data !== "object") {
24
+ require_logger.logger_default.logError("isApiResponse: data is null or not an object", void 0, { data });
25
+ return false;
26
+ }
27
+ if (!require_utils.hasPropertyOfType(data, "id", "string")) {
28
+ require_logger.logger_default.logError("isApiResponse: id is not a string", void 0, { data });
29
+ return false;
30
+ }
31
+ if (!require_utils.hasPropertyOfType(data, "category", "string") || !Object.values(__spiffy_ai_commerce_api_client.ResponseCategory).includes(data.category)) {
32
+ require_logger.logger_default.logError("isApiResponse: category is not a string or not a valid response category", void 0, { data });
33
+ return false;
34
+ }
35
+ if (!require_utils.hasPropertyOfType(data, "created_at", "string")) {
36
+ require_logger.logger_default.logError("isApiResponse: created_at is not a string", void 0, { data });
37
+ return false;
38
+ }
39
+ if (!require_utils.hasPropertyOfType(data, "attributes", "object", true)) {
40
+ require_logger.logger_default.logError("isApiResponse: attributes is not an object", void 0, { data });
41
+ return false;
42
+ }
43
+ return true;
44
+ };
45
+
46
+ //#endregion
47
+ //#region src/application/models/guards/api/isApiProductResponseAttributes.ts
48
+ const isApiProductResponseAttributes = (attributes) => {
49
+ if (attributes == null || typeof attributes !== "object") {
50
+ require_logger.logger_default.logError("isApiProductResponseAttributes: attributes is null or not an object", void 0, { attributes });
51
+ return false;
52
+ }
53
+ if (!require_utils.hasPropertyOfType(attributes, "description", "string", true)) {
54
+ require_logger.logger_default.logError("isApiProductResponseAttributes: description is not a string", void 0, { attributes });
55
+ return false;
56
+ }
57
+ if (!require_utils.hasPropertyOfType(attributes, "image_url", "string", true)) {
58
+ require_logger.logger_default.logError("isApiProductResponseAttributes: image_url is not a string", void 0, { attributes });
59
+ return false;
60
+ }
61
+ if (!require_utils.hasPropertyOfType(attributes, "title", "string")) {
62
+ require_logger.logger_default.logError("isApiProductResponseAttributes: title is not a string", void 0, { attributes });
63
+ return false;
64
+ }
65
+ if (!require_utils.hasPropertyOfType(attributes, "url", "string")) {
66
+ require_logger.logger_default.logError("isApiProductResponseAttributes: url is not a string", void 0, { attributes });
67
+ return false;
68
+ }
69
+ if (!require_utils.hasPropertyOfType(attributes, "original_price", "number", true)) {
70
+ require_logger.logger_default.logError("isApiProductResponseAttributes: original_price is not a number", void 0, { attributes });
71
+ return false;
72
+ }
73
+ if (!require_utils.hasPropertyOfType(attributes, "sale_price", "number", true)) {
74
+ require_logger.logger_default.logError("isApiProductResponseAttributes: sale_price is not a number", void 0, { attributes });
75
+ return false;
76
+ }
77
+ if (!require_utils.hasPropertyOfType(attributes, "average_rating", "number", true)) {
78
+ require_logger.logger_default.logError("isApiProductResponseAttributes: average_rating is not a number", void 0, { attributes });
79
+ return false;
80
+ }
81
+ if (!require_utils.hasPropertyOfType(attributes, "number_reviews", "number", true)) {
82
+ require_logger.logger_default.logError("isApiProductResponseAttributes: number_reviews is not a number", void 0, { attributes });
83
+ return false;
84
+ }
85
+ if (!require_utils.hasPropertyOfType(attributes, "metadata", "array", true)) {
86
+ require_logger.logger_default.logError("isApiProductResponseAttributes: metadata is not an array", void 0, { attributes });
87
+ return false;
88
+ }
89
+ return true;
90
+ };
91
+
92
+ //#endregion
93
+ //#region src/application/models/guards/api/isApiReviewRichInformation.ts
94
+ const isApiReviewRichInformation = (richInfo) => {
95
+ if (richInfo == null || typeof richInfo !== "object") return false;
96
+ if ("cons" in richInfo && (!Array.isArray(richInfo.cons) || richInfo.cons.some((con) => typeof con !== "string"))) return false;
97
+ if ("pros" in richInfo && (!Array.isArray(richInfo.pros) || richInfo.pros.some((pro) => typeof pro !== "string"))) return false;
98
+ if ("review_date" in richInfo && typeof richInfo.review_date !== "string") return false;
99
+ if ("reviewer_title" in richInfo && typeof richInfo.reviewer_title !== "string") return false;
100
+ if ("product_familiarity" in richInfo && typeof richInfo.product_familiarity !== "string") return false;
101
+ return true;
102
+ };
103
+
104
+ //#endregion
105
+ //#region src/application/models/guards/api/isApiReviewResponseAttributes.ts
106
+ const isApiReviewResponseAttributes = (obj) => {
107
+ if (obj == null || typeof obj !== "object") return false;
108
+ if ("title" in obj && obj.title != null && typeof obj.title !== "string") return false;
109
+ if ("review" in obj && typeof obj.review !== "string") return false;
110
+ if ("reviewer" in obj && typeof obj.reviewer !== "string") return false;
111
+ if ("stars" in obj && typeof obj.stars !== "number") return false;
112
+ if ("rich_information" in obj && !isApiReviewRichInformation(obj.rich_information)) return false;
113
+ return true;
114
+ };
115
+
116
+ //#endregion
117
+ //#region src/application/models/guards/api/isApiSearchEventAttributes.ts
118
+ const isApiSearchAttributes = (data) => {
119
+ if (data == null || typeof data !== "object") return false;
120
+ if (!("search_term" in data) || typeof data.search_term !== "string") return false;
121
+ if ("selected_filters" in data && !Array.isArray(data.selected_filters)) return false;
122
+ if (!!data.search_term) return true;
123
+ if (!("search_results" in data) || !Array.isArray(data.search_results) || !data.search_results.every((v) => typeof v === "string")) return false;
124
+ return true;
125
+ };
126
+
127
+ //#endregion
128
+ //#region src/application/models/guards/api/isApiSuggestion.ts
129
+ const isSuggestion = (data) => {
130
+ if (data == null || typeof data !== "object") return false;
131
+ if (!("id" in data) || typeof data.id !== "string") return false;
132
+ if (!("category" in data) || typeof data.category !== "string" || !Object.values(__spiffy_ai_commerce_api_client.SuggestionCategory).includes(data.category)) return false;
133
+ if (!("created_at" in data) || typeof data.created_at !== "string") return false;
134
+ if (!("content" in data) || typeof data.content !== "string") return false;
135
+ if ("is_answer" in data && data.is_answer != null && typeof data.is_answer !== "boolean") return false;
136
+ return true;
137
+ };
138
+
139
+ //#endregion
140
+ //#region src/application/models/guards/api/isApiSuggestionClickedEventAttributes.ts
141
+ const isApiSuggestionClickedAttributes = (data) => data != null && typeof data === "object" && "suggestion_id" in data && typeof data.suggestion_id === "string";
142
+
143
+ //#endregion
144
+ //#region src/application/models/guards/api/isApiTextResponseAttributes.ts
145
+ const isApiTextResponseAttributes = (attributes) => typeof attributes === "object" && attributes != null && "content" in attributes && typeof attributes.content === "string";
146
+
147
+ //#endregion
148
+ //#region src/application/models/guards/api/isApiUserEvent.ts
149
+ const isApiUserEvent = (data) => {
150
+ if (data == null || typeof data !== "object") return false;
151
+ if (!("event_id" in data) || typeof data.event_id !== "string") return false;
152
+ if (!("created_at" in data) || typeof data.created_at !== "string") return false;
153
+ if (!("category" in data) || typeof data.category !== "string" || !Object.values(__spiffy_ai_commerce_api_client.UserEventCategory).includes(data.category)) return false;
154
+ return true;
155
+ };
156
+
157
+ //#endregion
158
+ //#region src/application/models/guards/api/isApiProductSearchAttributes.ts
159
+ const isApiProductSearchResponseAttributes = (attributes) => {
160
+ if (attributes == null || typeof attributes !== "object") return false;
161
+ if ("generated_query" in attributes && typeof attributes.generated_query !== "string") return false;
162
+ if ("product_count" in attributes && attributes.product_count != null && typeof attributes.product_count !== "number") return false;
163
+ return true;
164
+ };
165
+
166
+ //#endregion
167
+ Object.defineProperty(exports, 'isApiPDPAttributes', {
168
+ enumerable: true,
169
+ get: function () {
170
+ return isApiPDPAttributes;
171
+ }
172
+ });
173
+ Object.defineProperty(exports, 'isApiProductResponseAttributes', {
174
+ enumerable: true,
175
+ get: function () {
176
+ return isApiProductResponseAttributes;
177
+ }
178
+ });
179
+ Object.defineProperty(exports, 'isApiProductSearchResponseAttributes', {
180
+ enumerable: true,
181
+ get: function () {
182
+ return isApiProductSearchResponseAttributes;
183
+ }
184
+ });
185
+ Object.defineProperty(exports, 'isApiQueryTypedAttributes', {
186
+ enumerable: true,
187
+ get: function () {
188
+ return isApiQueryTypedAttributes;
189
+ }
190
+ });
191
+ Object.defineProperty(exports, 'isApiResponse', {
192
+ enumerable: true,
193
+ get: function () {
194
+ return isApiResponse;
195
+ }
196
+ });
197
+ Object.defineProperty(exports, 'isApiReviewResponseAttributes', {
198
+ enumerable: true,
199
+ get: function () {
200
+ return isApiReviewResponseAttributes;
201
+ }
202
+ });
203
+ Object.defineProperty(exports, 'isApiReviewRichInformation', {
204
+ enumerable: true,
205
+ get: function () {
206
+ return isApiReviewRichInformation;
207
+ }
208
+ });
209
+ Object.defineProperty(exports, 'isApiSearchAttributes', {
210
+ enumerable: true,
211
+ get: function () {
212
+ return isApiSearchAttributes;
213
+ }
214
+ });
215
+ Object.defineProperty(exports, 'isApiSuggestionClickedAttributes', {
216
+ enumerable: true,
217
+ get: function () {
218
+ return isApiSuggestionClickedAttributes;
219
+ }
220
+ });
221
+ Object.defineProperty(exports, 'isApiTextResponseAttributes', {
222
+ enumerable: true,
223
+ get: function () {
224
+ return isApiTextResponseAttributes;
225
+ }
226
+ });
227
+ Object.defineProperty(exports, 'isApiUserEvent', {
228
+ enumerable: true,
229
+ get: function () {
230
+ return isApiUserEvent;
231
+ }
232
+ });
233
+ Object.defineProperty(exports, 'isSuggestion', {
234
+ enumerable: true,
235
+ get: function () {
236
+ return isSuggestion;
237
+ }
238
+ });
239
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLUJjM19qdWxaLmNqcyIsIm5hbWVzIjpbImhhc1Byb3BlcnR5T2ZUeXBlIiwiUmVzcG9uc2VDYXRlZ29yeSIsImhhc1Byb3BlcnR5T2ZUeXBlIiwiU3VnZ2VzdGlvbkNhdGVnb3J5IiwiVXNlckV2ZW50Q2F0ZWdvcnkiXSwic291cmNlcyI6WyIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlQRFBFdmVudEF0dHJpYnV0ZXMudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlRdWVyeVR5cGVkRXZlbnRBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUmVzcG9uc2UudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUmV2aWV3UmVzcG9uc2VBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpU2VhcmNoRXZlbnRBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpU3VnZ2VzdGlvbi50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVN1Z2dlc3Rpb25DbGlja2VkRXZlbnRBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpVGV4dFJlc3BvbnNlQXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVVzZXJFdmVudC50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVByb2R1Y3RTZWFyY2hBdHRyaWJ1dGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBEUEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlQRFBBdHRyaWJ1dGVzID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFBEUEF0dHJpYnV0ZXMgPT4ge1xuICBpZiAoZGF0YSA9PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdwcm9kdWN0X2lkJyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5wcm9kdWN0X2lkICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgncGFyZW50X3Byb2R1Y3RfaWQnIGluIGRhdGEgJiYgdHlwZW9mIGRhdGEucGFyZW50X3Byb2R1Y3RfaWQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCd1cmwnIGluIGRhdGEgJiYgZGF0YS51cmwgIT0gbnVsbCAmJiB0eXBlb2YgZGF0YS51cmwgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgUXVlcnlUeXBlZEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlRdWVyeVR5cGVkQXR0cmlidXRlcyA9IChkYXRhOiB1bmtub3duKTogZGF0YSBpcyBRdWVyeVR5cGVkQXR0cmlidXRlcyA9PlxuICBkYXRhICE9IG51bGwgJiYgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmICdxdWVyeScgaW4gZGF0YSAmJiB0eXBlb2YgZGF0YS5xdWVyeSA9PT0gJ3N0cmluZyc7XG4iLCJpbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBSZXNwb25zZSwgUmVzcG9uc2VDYXRlZ29yeSB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBoYXNQcm9wZXJ0eU9mVHlwZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IGlzQXBpUmVzcG9uc2UgPSAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgUmVzcG9uc2UgPT4ge1xuICBpZiAoZGF0YSA9PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlSZXNwb25zZTogZGF0YSBpcyBudWxsIG9yIG5vdCBhbiBvYmplY3QnLCB1bmRlZmluZWQsIHsgZGF0YSB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGRhdGEsICdpZCcsICdzdHJpbmcnKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlSZXNwb25zZTogaWQgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7IGRhdGEgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICFoYXNQcm9wZXJ0eU9mVHlwZShkYXRhLCAnY2F0ZWdvcnknLCAnc3RyaW5nJykgfHxcbiAgICAhT2JqZWN0LnZhbHVlcyhSZXNwb25zZUNhdGVnb3J5KS5pbmNsdWRlcyhkYXRhLmNhdGVnb3J5IGFzIFJlc3BvbnNlQ2F0ZWdvcnkpXG4gICkge1xuICAgIExvZ2dlci5sb2dFcnJvcihcbiAgICAgICdpc0FwaVJlc3BvbnNlOiBjYXRlZ29yeSBpcyBub3QgYSBzdHJpbmcgb3Igbm90IGEgdmFsaWQgcmVzcG9uc2UgY2F0ZWdvcnknLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgeyBkYXRhIH0sXG4gICAgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGRhdGEsICdjcmVhdGVkX2F0JywgJ3N0cmluZycpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVJlc3BvbnNlOiBjcmVhdGVkX2F0IGlzIG5vdCBhIHN0cmluZycsIHVuZGVmaW5lZCwgeyBkYXRhIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoZGF0YSwgJ2F0dHJpYnV0ZXMnLCAnb2JqZWN0JywgdHJ1ZSkpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUmVzcG9uc2U6IGF0dHJpYnV0ZXMgaXMgbm90IGFuIG9iamVjdCcsIHVuZGVmaW5lZCwgeyBkYXRhIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsImltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IFJlc3BvbnNlUHJvZHVjdEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgaGFzUHJvcGVydHlPZlR5cGUgfSBmcm9tICcuLi91dGlscyc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXMgPSAoXG4gIGF0dHJpYnV0ZXM6IHVua25vd24sXG4pOiBhdHRyaWJ1dGVzIGlzIFJlc3BvbnNlUHJvZHVjdEF0dHJpYnV0ZXMgPT4ge1xuICBpZiAoYXR0cmlidXRlcyA9PSBudWxsIHx8IHR5cGVvZiBhdHRyaWJ1dGVzICE9PSAnb2JqZWN0Jykge1xuICAgIExvZ2dlci5sb2dFcnJvcihcbiAgICAgICdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IGF0dHJpYnV0ZXMgaXMgbnVsbCBvciBub3QgYW4gb2JqZWN0JyxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHtcbiAgICAgICAgYXR0cmlidXRlcyxcbiAgICAgIH0sXG4gICAgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdkZXNjcmlwdGlvbicsICdzdHJpbmcnLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBkZXNjcmlwdGlvbiBpcyBub3QgYSBzdHJpbmcnLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAnaW1hZ2VfdXJsJywgJ3N0cmluZycsIHRydWUpXG4gICkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBpbWFnZV91cmwgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ3RpdGxlJywgJ3N0cmluZycpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IHRpdGxlIGlzIG5vdCBhIHN0cmluZycsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICd1cmwnLCAnc3RyaW5nJykpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogdXJsIGlzIG5vdCBhIHN0cmluZycsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdvcmlnaW5hbF9wcmljZScsICdudW1iZXInLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBvcmlnaW5hbF9wcmljZSBpcyBub3QgYSBudW1iZXInLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAnc2FsZV9wcmljZScsICdudW1iZXInLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBzYWxlX3ByaWNlIGlzIG5vdCBhIG51bWJlcicsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdhdmVyYWdlX3JhdGluZycsICdudW1iZXInLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBhdmVyYWdlX3JhdGluZyBpcyBub3QgYSBudW1iZXInLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAnbnVtYmVyX3Jldmlld3MnLCAnbnVtYmVyJywgdHJ1ZSkpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogbnVtYmVyX3Jldmlld3MgaXMgbm90IGEgbnVtYmVyJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ21ldGFkYXRhJywgJ2FycmF5JywgdHJ1ZSkpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogbWV0YWRhdGEgaXMgbm90IGFuIGFycmF5JywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsImltcG9ydCB7IEFwaVJldmlld1JpY2hJbmZvcm1hdGlvbiB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3Jlc3BvbnNlR2VuZXJpY3MnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlSZXZpZXdSaWNoSW5mb3JtYXRpb24gPSAoXG4gIHJpY2hJbmZvOiB1bmtub3duLFxuKTogcmljaEluZm8gaXMgQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uID0+IHtcbiAgaWYgKHJpY2hJbmZvID09IG51bGwgfHwgdHlwZW9mIHJpY2hJbmZvICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChcbiAgICAnY29ucycgaW4gcmljaEluZm8gJiZcbiAgICAoIUFycmF5LmlzQXJyYXkocmljaEluZm8uY29ucykgfHwgcmljaEluZm8uY29ucy5zb21lKChjb24pID0+IHR5cGVvZiBjb24gIT09ICdzdHJpbmcnKSlcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICdwcm9zJyBpbiByaWNoSW5mbyAmJlxuICAgICghQXJyYXkuaXNBcnJheShyaWNoSW5mby5wcm9zKSB8fCByaWNoSW5mby5wcm9zLnNvbWUoKHBybykgPT4gdHlwZW9mIHBybyAhPT0gJ3N0cmluZycpKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3Jldmlld19kYXRlJyBpbiByaWNoSW5mbyAmJiB0eXBlb2YgcmljaEluZm8ucmV2aWV3X2RhdGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdyZXZpZXdlcl90aXRsZScgaW4gcmljaEluZm8gJiYgdHlwZW9mIHJpY2hJbmZvLnJldmlld2VyX3RpdGxlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgncHJvZHVjdF9mYW1pbGlhcml0eScgaW4gcmljaEluZm8gJiYgdHlwZW9mIHJpY2hJbmZvLnByb2R1Y3RfZmFtaWxpYXJpdHkgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgQXBpUmV2aWV3UmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvcmVzcG9uc2VHZW5lcmljcyc7XG5pbXBvcnQgeyBpc0FwaVJldmlld1JpY2hJbmZvcm1hdGlvbiB9IGZyb20gJy4vaXNBcGlSZXZpZXdSaWNoSW5mb3JtYXRpb24nO1xuXG5leHBvcnQgY29uc3QgaXNBcGlSZXZpZXdSZXNwb25zZUF0dHJpYnV0ZXMgPSAob2JqOiB1bmtub3duKTogb2JqIGlzIEFwaVJldmlld1Jlc3BvbnNlQXR0cmlidXRlcyA9PiB7XG4gIGlmIChvYmogPT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgndGl0bGUnIGluIG9iaiAmJiBvYmoudGl0bGUgIT0gbnVsbCAmJiB0eXBlb2Ygb2JqLnRpdGxlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgncmV2aWV3JyBpbiBvYmogJiYgdHlwZW9mIG9iai5yZXZpZXcgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdyZXZpZXdlcicgaW4gb2JqICYmIHR5cGVvZiBvYmoucmV2aWV3ZXIgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdzdGFycycgaW4gb2JqICYmIHR5cGVvZiBvYmouc3RhcnMgIT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdyaWNoX2luZm9ybWF0aW9uJyBpbiBvYmogJiYgIWlzQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uKG9iai5yaWNoX2luZm9ybWF0aW9uKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsImltcG9ydCB7IFNlYXJjaEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlTZWFyY2hBdHRyaWJ1dGVzID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFNlYXJjaEF0dHJpYnV0ZXMgPT4ge1xuICBpZiAoZGF0YSA9PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdzZWFyY2hfdGVybScgaW4gZGF0YSkgfHwgdHlwZW9mIGRhdGEuc2VhcmNoX3Rlcm0gIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICgnc2VsZWN0ZWRfZmlsdGVycycgaW4gZGF0YSAmJiAhQXJyYXkuaXNBcnJheShkYXRhLnNlbGVjdGVkX2ZpbHRlcnMpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEhZGF0YS5zZWFyY2hfdGVybSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKFxuICAgICEoJ3NlYXJjaF9yZXN1bHRzJyBpbiBkYXRhKSB8fFxuICAgICFBcnJheS5pc0FycmF5KGRhdGEuc2VhcmNoX3Jlc3VsdHMpIHx8XG4gICAgIWRhdGEuc2VhcmNoX3Jlc3VsdHMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSAnc3RyaW5nJylcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHtcbiAgU3VnZ2VzdGlvbiBhcyBDb21tZXJjZVN1Z2dlc3Rpb24sXG4gIFN1Z2dlc3Rpb25DYXRlZ29yeSxcbn0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcblxuZXhwb3J0IGNvbnN0IGlzU3VnZ2VzdGlvbiA9IChkYXRhOiB1bmtub3duKTogZGF0YSBpcyBDb21tZXJjZVN1Z2dlc3Rpb24gPT4ge1xuICBpZiAoZGF0YSA9PSBudWxsIHx8IHR5cGVvZiBkYXRhICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdpZCcgaW4gZGF0YSkgfHwgdHlwZW9mIGRhdGEuaWQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICEoJ2NhdGVnb3J5JyBpbiBkYXRhKSB8fFxuICAgIHR5cGVvZiBkYXRhLmNhdGVnb3J5ICE9PSAnc3RyaW5nJyB8fFxuICAgICFPYmplY3QudmFsdWVzKFN1Z2dlc3Rpb25DYXRlZ29yeSkuaW5jbHVkZXMoZGF0YS5jYXRlZ29yeSBhcyBTdWdnZXN0aW9uQ2F0ZWdvcnkpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdjcmVhdGVkX2F0JyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5jcmVhdGVkX2F0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdjb250ZW50JyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5jb250ZW50ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgnaXNfYW5zd2VyJyBpbiBkYXRhICYmIGRhdGEuaXNfYW5zd2VyICE9IG51bGwgJiYgdHlwZW9mIGRhdGEuaXNfYW5zd2VyICE9PSAnYm9vbGVhbicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJpbXBvcnQgeyBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgPSAoXG4gIGRhdGE6IHVua25vd24sXG4pOiBkYXRhIGlzIFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyA9PlxuICBkYXRhICE9IG51bGwgJiZcbiAgdHlwZW9mIGRhdGEgPT09ICdvYmplY3QnICYmXG4gICdzdWdnZXN0aW9uX2lkJyBpbiBkYXRhICYmXG4gIHR5cGVvZiBkYXRhLnN1Z2dlc3Rpb25faWQgPT09ICdzdHJpbmcnO1xuIiwiaW1wb3J0IHsgQXBpVGV4dFJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3Jlc3BvbnNlR2VuZXJpY3MnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzID0gKFxuICBhdHRyaWJ1dGVzOiB1bmtub3duLFxuKTogYXR0cmlidXRlcyBpcyBBcGlUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzID0+XG4gIHR5cGVvZiBhdHRyaWJ1dGVzID09PSAnb2JqZWN0JyAmJlxuICBhdHRyaWJ1dGVzICE9IG51bGwgJiZcbiAgJ2NvbnRlbnQnIGluIGF0dHJpYnV0ZXMgJiZcbiAgdHlwZW9mIGF0dHJpYnV0ZXMuY29udGVudCA9PT0gJ3N0cmluZyc7XG4iLCJpbXBvcnQgeyBVc2VyRXZlbnQsIFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcblxuZXhwb3J0IGNvbnN0IGlzQXBpVXNlckV2ZW50ID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFVzZXJFdmVudCA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ2V2ZW50X2lkJyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5ldmVudF9pZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoISgnY3JlYXRlZF9hdCcgaW4gZGF0YSkgfHwgdHlwZW9mIGRhdGEuY3JlYXRlZF9hdCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgISgnY2F0ZWdvcnknIGluIGRhdGEpIHx8XG4gICAgdHlwZW9mIGRhdGEuY2F0ZWdvcnkgIT09ICdzdHJpbmcnIHx8XG4gICAgIU9iamVjdC52YWx1ZXMoVXNlckV2ZW50Q2F0ZWdvcnkpLmluY2x1ZGVzKGRhdGEuY2F0ZWdvcnkgYXMgVXNlckV2ZW50Q2F0ZWdvcnkpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsImltcG9ydCB7IFByb2R1Y3RTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlQcm9kdWN0U2VhcmNoUmVzcG9uc2VBdHRyaWJ1dGVzID0gKFxuICBhdHRyaWJ1dGVzOiB1bmtub3duLFxuKTogYXR0cmlidXRlcyBpcyBQcm9kdWN0U2VhcmNoUmVzcG9uc2VBdHRyaWJ1dGVzID0+IHtcbiAgaWYgKGF0dHJpYnV0ZXMgPT0gbnVsbCB8fCB0eXBlb2YgYXR0cmlidXRlcyAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ2dlbmVyYXRlZF9xdWVyeScgaW4gYXR0cmlidXRlcyAmJiB0eXBlb2YgYXR0cmlidXRlcy5nZW5lcmF0ZWRfcXVlcnkgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICdwcm9kdWN0X2NvdW50JyBpbiBhdHRyaWJ1dGVzICYmXG4gICAgYXR0cmlidXRlcy5wcm9kdWN0X2NvdW50ICE9IG51bGwgJiZcbiAgICB0eXBlb2YgYXR0cmlidXRlcy5wcm9kdWN0X2NvdW50ICE9PSAnbnVtYmVyJ1xuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSxNQUFhLHNCQUFzQixTQUF5QztBQUMxRSxLQUFJLFFBQVEsUUFBUSxPQUFPLFNBQVMsU0FDbEMsUUFBTztBQUdULEtBQUksRUFBRSxnQkFBZ0IsU0FBUyxPQUFPLEtBQUssZUFBZSxTQUN4RCxRQUFPO0FBR1QsS0FBSSx1QkFBdUIsUUFBUSxPQUFPLEtBQUssc0JBQXNCLFNBQ25FLFFBQU87QUFHVCxLQUFJLFNBQVMsUUFBUSxLQUFLLE9BQU8sUUFBUSxPQUFPLEtBQUssUUFBUSxTQUMzRCxRQUFPO0FBR1QsUUFBTzs7Ozs7QUNqQlQsTUFBYSw2QkFBNkIsU0FDeEMsUUFBUSxRQUFRLE9BQU8sU0FBUyxZQUFZLFdBQVcsUUFBUSxPQUFPLEtBQUssVUFBVTs7OztBQ0N2RixNQUFhLGlCQUFpQixTQUFvQztBQUNoRSxLQUFJLFFBQVEsUUFBUSxPQUFPLFNBQVMsVUFBVTtBQUM1QyxnQ0FBTyxTQUFTLGdEQUFnRCxRQUFXLEVBQUUsTUFBTSxDQUFDO0FBQ3BGLFNBQU87O0FBR1QsS0FBSSxDQUFDQSxnQ0FBa0IsTUFBTSxNQUFNLFNBQVMsRUFBRTtBQUM1QyxnQ0FBTyxTQUFTLHFDQUFxQyxRQUFXLEVBQUUsTUFBTSxDQUFDO0FBQ3pFLFNBQU87O0FBR1QsS0FDRSxDQUFDQSxnQ0FBa0IsTUFBTSxZQUFZLFNBQVMsSUFDOUMsQ0FBQyxPQUFPLE9BQU9DLGlEQUFpQixDQUFDLFNBQVMsS0FBSyxTQUE2QixFQUM1RTtBQUNBLGdDQUFPLFNBQ0wsNEVBQ0EsUUFDQSxFQUFFLE1B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
@@ -0,0 +1,166 @@
1
+ import { hasPropertyOfType } from "./utils-ARmpTh1O.js";
2
+ import { logger_default } from "./logger-oAgZx2-m.js";
3
+ import { ResponseCategory, SuggestionCategory, UserEventCategory } from "@spiffy-ai/commerce-api-client";
4
+
5
+ //#region src/application/models/guards/api/isApiPDPEventAttributes.ts
6
+ const isApiPDPAttributes = (data) => {
7
+ if (data == null || typeof data !== "object") return false;
8
+ if (!("product_id" in data) || typeof data.product_id !== "string") return false;
9
+ if ("parent_product_id" in data && typeof data.parent_product_id !== "string") return false;
10
+ if ("url" in data && data.url != null && typeof data.url !== "string") return false;
11
+ return true;
12
+ };
13
+
14
+ //#endregion
15
+ //#region src/application/models/guards/api/isApiQueryTypedEventAttributes.ts
16
+ const isApiQueryTypedAttributes = (data) => data != null && typeof data === "object" && "query" in data && typeof data.query === "string";
17
+
18
+ //#endregion
19
+ //#region src/application/models/guards/api/isApiResponse.ts
20
+ const isApiResponse = (data) => {
21
+ if (data == null || typeof data !== "object") {
22
+ logger_default.logError("isApiResponse: data is null or not an object", void 0, { data });
23
+ return false;
24
+ }
25
+ if (!hasPropertyOfType(data, "id", "string")) {
26
+ logger_default.logError("isApiResponse: id is not a string", void 0, { data });
27
+ return false;
28
+ }
29
+ if (!hasPropertyOfType(data, "category", "string") || !Object.values(ResponseCategory).includes(data.category)) {
30
+ logger_default.logError("isApiResponse: category is not a string or not a valid response category", void 0, { data });
31
+ return false;
32
+ }
33
+ if (!hasPropertyOfType(data, "created_at", "string")) {
34
+ logger_default.logError("isApiResponse: created_at is not a string", void 0, { data });
35
+ return false;
36
+ }
37
+ if (!hasPropertyOfType(data, "attributes", "object", true)) {
38
+ logger_default.logError("isApiResponse: attributes is not an object", void 0, { data });
39
+ return false;
40
+ }
41
+ return true;
42
+ };
43
+
44
+ //#endregion
45
+ //#region src/application/models/guards/api/isApiProductResponseAttributes.ts
46
+ const isApiProductResponseAttributes = (attributes) => {
47
+ if (attributes == null || typeof attributes !== "object") {
48
+ logger_default.logError("isApiProductResponseAttributes: attributes is null or not an object", void 0, { attributes });
49
+ return false;
50
+ }
51
+ if (!hasPropertyOfType(attributes, "description", "string", true)) {
52
+ logger_default.logError("isApiProductResponseAttributes: description is not a string", void 0, { attributes });
53
+ return false;
54
+ }
55
+ if (!hasPropertyOfType(attributes, "image_url", "string", true)) {
56
+ logger_default.logError("isApiProductResponseAttributes: image_url is not a string", void 0, { attributes });
57
+ return false;
58
+ }
59
+ if (!hasPropertyOfType(attributes, "title", "string")) {
60
+ logger_default.logError("isApiProductResponseAttributes: title is not a string", void 0, { attributes });
61
+ return false;
62
+ }
63
+ if (!hasPropertyOfType(attributes, "url", "string")) {
64
+ logger_default.logError("isApiProductResponseAttributes: url is not a string", void 0, { attributes });
65
+ return false;
66
+ }
67
+ if (!hasPropertyOfType(attributes, "original_price", "number", true)) {
68
+ logger_default.logError("isApiProductResponseAttributes: original_price is not a number", void 0, { attributes });
69
+ return false;
70
+ }
71
+ if (!hasPropertyOfType(attributes, "sale_price", "number", true)) {
72
+ logger_default.logError("isApiProductResponseAttributes: sale_price is not a number", void 0, { attributes });
73
+ return false;
74
+ }
75
+ if (!hasPropertyOfType(attributes, "average_rating", "number", true)) {
76
+ logger_default.logError("isApiProductResponseAttributes: average_rating is not a number", void 0, { attributes });
77
+ return false;
78
+ }
79
+ if (!hasPropertyOfType(attributes, "number_reviews", "number", true)) {
80
+ logger_default.logError("isApiProductResponseAttributes: number_reviews is not a number", void 0, { attributes });
81
+ return false;
82
+ }
83
+ if (!hasPropertyOfType(attributes, "metadata", "array", true)) {
84
+ logger_default.logError("isApiProductResponseAttributes: metadata is not an array", void 0, { attributes });
85
+ return false;
86
+ }
87
+ return true;
88
+ };
89
+
90
+ //#endregion
91
+ //#region src/application/models/guards/api/isApiReviewRichInformation.ts
92
+ const isApiReviewRichInformation = (richInfo) => {
93
+ if (richInfo == null || typeof richInfo !== "object") return false;
94
+ if ("cons" in richInfo && (!Array.isArray(richInfo.cons) || richInfo.cons.some((con) => typeof con !== "string"))) return false;
95
+ if ("pros" in richInfo && (!Array.isArray(richInfo.pros) || richInfo.pros.some((pro) => typeof pro !== "string"))) return false;
96
+ if ("review_date" in richInfo && typeof richInfo.review_date !== "string") return false;
97
+ if ("reviewer_title" in richInfo && typeof richInfo.reviewer_title !== "string") return false;
98
+ if ("product_familiarity" in richInfo && typeof richInfo.product_familiarity !== "string") return false;
99
+ return true;
100
+ };
101
+
102
+ //#endregion
103
+ //#region src/application/models/guards/api/isApiReviewResponseAttributes.ts
104
+ const isApiReviewResponseAttributes = (obj) => {
105
+ if (obj == null || typeof obj !== "object") return false;
106
+ if ("title" in obj && obj.title != null && typeof obj.title !== "string") return false;
107
+ if ("review" in obj && typeof obj.review !== "string") return false;
108
+ if ("reviewer" in obj && typeof obj.reviewer !== "string") return false;
109
+ if ("stars" in obj && typeof obj.stars !== "number") return false;
110
+ if ("rich_information" in obj && !isApiReviewRichInformation(obj.rich_information)) return false;
111
+ return true;
112
+ };
113
+
114
+ //#endregion
115
+ //#region src/application/models/guards/api/isApiSearchEventAttributes.ts
116
+ const isApiSearchAttributes = (data) => {
117
+ if (data == null || typeof data !== "object") return false;
118
+ if (!("search_term" in data) || typeof data.search_term !== "string") return false;
119
+ if ("selected_filters" in data && !Array.isArray(data.selected_filters)) return false;
120
+ if (!!data.search_term) return true;
121
+ if (!("search_results" in data) || !Array.isArray(data.search_results) || !data.search_results.every((v) => typeof v === "string")) return false;
122
+ return true;
123
+ };
124
+
125
+ //#endregion
126
+ //#region src/application/models/guards/api/isApiSuggestion.ts
127
+ const isSuggestion = (data) => {
128
+ if (data == null || typeof data !== "object") return false;
129
+ if (!("id" in data) || typeof data.id !== "string") return false;
130
+ if (!("category" in data) || typeof data.category !== "string" || !Object.values(SuggestionCategory).includes(data.category)) return false;
131
+ if (!("created_at" in data) || typeof data.created_at !== "string") return false;
132
+ if (!("content" in data) || typeof data.content !== "string") return false;
133
+ if ("is_answer" in data && data.is_answer != null && typeof data.is_answer !== "boolean") return false;
134
+ return true;
135
+ };
136
+
137
+ //#endregion
138
+ //#region src/application/models/guards/api/isApiSuggestionClickedEventAttributes.ts
139
+ const isApiSuggestionClickedAttributes = (data) => data != null && typeof data === "object" && "suggestion_id" in data && typeof data.suggestion_id === "string";
140
+
141
+ //#endregion
142
+ //#region src/application/models/guards/api/isApiTextResponseAttributes.ts
143
+ const isApiTextResponseAttributes = (attributes) => typeof attributes === "object" && attributes != null && "content" in attributes && typeof attributes.content === "string";
144
+
145
+ //#endregion
146
+ //#region src/application/models/guards/api/isApiUserEvent.ts
147
+ const isApiUserEvent = (data) => {
148
+ if (data == null || typeof data !== "object") return false;
149
+ if (!("event_id" in data) || typeof data.event_id !== "string") return false;
150
+ if (!("created_at" in data) || typeof data.created_at !== "string") return false;
151
+ if (!("category" in data) || typeof data.category !== "string" || !Object.values(UserEventCategory).includes(data.category)) return false;
152
+ return true;
153
+ };
154
+
155
+ //#endregion
156
+ //#region src/application/models/guards/api/isApiProductSearchAttributes.ts
157
+ const isApiProductSearchResponseAttributes = (attributes) => {
158
+ if (attributes == null || typeof attributes !== "object") return false;
159
+ if ("generated_query" in attributes && typeof attributes.generated_query !== "string") return false;
160
+ if ("product_count" in attributes && attributes.product_count != null && typeof attributes.product_count !== "number") return false;
161
+ return true;
162
+ };
163
+
164
+ //#endregion
165
+ export { isApiPDPAttributes, isApiProductResponseAttributes, isApiProductSearchResponseAttributes, isApiQueryTypedAttributes, isApiResponse, isApiReviewResponseAttributes, isApiReviewRichInformation, isApiSearchAttributes, isApiSuggestionClickedAttributes, isApiTextResponseAttributes, isApiUserEvent, isSuggestion };
166
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLUQ5Z21HTkFWLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVBEUEV2ZW50QXR0cmlidXRlcy50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVF1ZXJ5VHlwZWRFdmVudEF0dHJpYnV0ZXMudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlSZXNwb25zZS50cyIsIi4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3VhcmRzL2FwaS9pc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXMudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlSZXZpZXdSaWNoSW5mb3JtYXRpb24udHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlSZXZpZXdSZXNwb25zZUF0dHJpYnV0ZXMudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlTZWFyY2hFdmVudEF0dHJpYnV0ZXMudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlTdWdnZXN0aW9uLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpU3VnZ2VzdGlvbkNsaWNrZWRFdmVudEF0dHJpYnV0ZXMudHMiLCIuLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2d1YXJkcy9hcGkvaXNBcGlUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzLnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpVXNlckV2ZW50LnRzIiwiLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvYXBpL2lzQXBpUHJvZHVjdFNlYXJjaEF0dHJpYnV0ZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUERQQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVBEUEF0dHJpYnV0ZXMgPSAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgUERQQXR0cmlidXRlcyA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ3Byb2R1Y3RfaWQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLnByb2R1Y3RfaWQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdwYXJlbnRfcHJvZHVjdF9pZCcgaW4gZGF0YSAmJiB0eXBlb2YgZGF0YS5wYXJlbnRfcHJvZHVjdF9pZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3VybCcgaW4gZGF0YSAmJiBkYXRhLnVybCAhPSBudWxsICYmIHR5cGVvZiBkYXRhLnVybCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJpbXBvcnQgeyBRdWVyeVR5cGVkQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVF1ZXJ5VHlwZWRBdHRyaWJ1dGVzID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzID0+XG4gIGRhdGEgIT0gbnVsbCAmJiB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiYgJ3F1ZXJ5JyBpbiBkYXRhICYmIHR5cGVvZiBkYXRhLnF1ZXJ5ID09PSAnc3RyaW5nJztcbiIsImltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IFJlc3BvbnNlLCBSZXNwb25zZUNhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IGhhc1Byb3BlcnR5T2ZUeXBlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ndWFyZHMvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlSZXNwb25zZSA9IChkYXRhOiB1bmtub3duKTogZGF0YSBpcyBSZXNwb25zZSA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVJlc3BvbnNlOiBkYXRhIGlzIG51bGwgb3Igbm90IGFuIG9iamVjdCcsIHVuZGVmaW5lZCwgeyBkYXRhIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoZGF0YSwgJ2lkJywgJ3N0cmluZycpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVJlc3BvbnNlOiBpZCBpcyBub3QgYSBzdHJpbmcnLCB1bmRlZmluZWQsIHsgZGF0YSB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgIWhhc1Byb3BlcnR5T2ZUeXBlKGRhdGEsICdjYXRlZ29yeScsICdzdHJpbmcnKSB8fFxuICAgICFPYmplY3QudmFsdWVzKFJlc3BvbnNlQ2F0ZWdvcnkpLmluY2x1ZGVzKGRhdGEuY2F0ZWdvcnkgYXMgUmVzcG9uc2VDYXRlZ29yeSlcbiAgKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKFxuICAgICAgJ2lzQXBpUmVzcG9uc2U6IGNhdGVnb3J5IGlzIG5vdCBhIHN0cmluZyBvciBub3QgYSB2YWxpZCByZXNwb25zZSBjYXRlZ29yeScsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB7IGRhdGEgfSxcbiAgICApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoZGF0YSwgJ2NyZWF0ZWRfYXQnLCAnc3RyaW5nJykpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUmVzcG9uc2U6IGNyZWF0ZWRfYXQgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7IGRhdGEgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShkYXRhLCAnYXR0cmlidXRlcycsICdvYmplY3QnLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlSZXNwb25zZTogYXR0cmlidXRlcyBpcyBub3QgYW4gb2JqZWN0JywgdW5kZWZpbmVkLCB7IGRhdGEgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgUmVzcG9uc2VQcm9kdWN0QXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBoYXNQcm9wZXJ0eU9mVHlwZSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGNvbnN0IGlzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlcyA9IChcbiAgYXR0cmlidXRlczogdW5rbm93bixcbik6IGF0dHJpYnV0ZXMgaXMgUmVzcG9uc2VQcm9kdWN0QXR0cmlidXRlcyA9PiB7XG4gIGlmIChhdHRyaWJ1dGVzID09IG51bGwgfHwgdHlwZW9mIGF0dHJpYnV0ZXMgIT09ICdvYmplY3QnKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKFxuICAgICAgJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogYXR0cmlidXRlcyBpcyBudWxsIG9yIG5vdCBhbiBvYmplY3QnLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAge1xuICAgICAgICBhdHRyaWJ1dGVzLFxuICAgICAgfSxcbiAgICApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ2Rlc2NyaXB0aW9uJywgJ3N0cmluZycsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IGRlc2NyaXB0aW9uIGlzIG5vdCBhIHN0cmluZycsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdpbWFnZV91cmwnLCAnc3RyaW5nJywgdHJ1ZSlcbiAgKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IGltYWdlX3VybCBpcyBub3QgYSBzdHJpbmcnLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAndGl0bGUnLCAnc3RyaW5nJykpIHtcbiAgICBMb2dnZXIubG9nRXJyb3IoJ2lzQXBpUHJvZHVjdFJlc3BvbnNlQXR0cmlidXRlczogdGl0bGUgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ3VybCcsICdzdHJpbmcnKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiB1cmwgaXMgbm90IGEgc3RyaW5nJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ29yaWdpbmFsX3ByaWNlJywgJ251bWJlcicsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IG9yaWdpbmFsX3ByaWNlIGlzIG5vdCBhIG51bWJlcicsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdzYWxlX3ByaWNlJywgJ251bWJlcicsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IHNhbGVfcHJpY2UgaXMgbm90IGEgbnVtYmVyJywgdW5kZWZpbmVkLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgIH0pO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghaGFzUHJvcGVydHlPZlR5cGUoYXR0cmlidXRlcywgJ2F2ZXJhZ2VfcmF0aW5nJywgJ251bWJlcicsIHRydWUpKSB7XG4gICAgTG9nZ2VyLmxvZ0Vycm9yKCdpc0FwaVByb2R1Y3RSZXNwb25zZUF0dHJpYnV0ZXM6IGF2ZXJhZ2VfcmF0aW5nIGlzIG5vdCBhIG51bWJlcicsIHVuZGVmaW5lZCwge1xuICAgICAgYXR0cmlidXRlcyxcbiAgICB9KTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoIWhhc1Byb3BlcnR5T2ZUeXBlKGF0dHJpYnV0ZXMsICdudW1iZXJfcmV2aWV3cycsICdudW1iZXInLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBudW1iZXJfcmV2aWV3cyBpcyBub3QgYSBudW1iZXInLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCFoYXNQcm9wZXJ0eU9mVHlwZShhdHRyaWJ1dGVzLCAnbWV0YWRhdGEnLCAnYXJyYXknLCB0cnVlKSkge1xuICAgIExvZ2dlci5sb2dFcnJvcignaXNBcGlQcm9kdWN0UmVzcG9uc2VBdHRyaWJ1dGVzOiBtZXRhZGF0YSBpcyBub3QgYW4gYXJyYXknLCB1bmRlZmluZWQsIHtcbiAgICAgIGF0dHJpYnV0ZXMsXG4gICAgfSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvcmVzcG9uc2VHZW5lcmljcyc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVJldmlld1JpY2hJbmZvcm1hdGlvbiA9IChcbiAgcmljaEluZm86IHVua25vd24sXG4pOiByaWNoSW5mbyBpcyBBcGlSZXZpZXdSaWNoSW5mb3JtYXRpb24gPT4ge1xuICBpZiAocmljaEluZm8gPT0gbnVsbCB8fCB0eXBlb2YgcmljaEluZm8gIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKFxuICAgICdjb25zJyBpbiByaWNoSW5mbyAmJlxuICAgICghQXJyYXkuaXNBcnJheShyaWNoSW5mby5jb25zKSB8fCByaWNoSW5mby5jb25zLnNvbWUoKGNvbikgPT4gdHlwZW9mIGNvbiAhPT0gJ3N0cmluZycpKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgJ3Byb3MnIGluIHJpY2hJbmZvICYmXG4gICAgKCFBcnJheS5pc0FycmF5KHJpY2hJbmZvLnByb3MpIHx8IHJpY2hJbmZvLnByb3Muc29tZSgocHJvKSA9PiB0eXBlb2YgcHJvICE9PSAnc3RyaW5nJykpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgncmV2aWV3X2RhdGUnIGluIHJpY2hJbmZvICYmIHR5cGVvZiByaWNoSW5mby5yZXZpZXdfZGF0ZSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3Jldmlld2VyX3RpdGxlJyBpbiByaWNoSW5mbyAmJiB0eXBlb2YgcmljaEluZm8ucmV2aWV3ZXJfdGl0bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdwcm9kdWN0X2ZhbWlsaWFyaXR5JyBpbiByaWNoSW5mbyAmJiB0eXBlb2YgcmljaEluZm8ucHJvZHVjdF9mYW1pbGlhcml0eSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJpbXBvcnQgeyBBcGlSZXZpZXdSZXNwb25zZUF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9yZXNwb25zZUdlbmVyaWNzJztcbmltcG9ydCB7IGlzQXBpUmV2aWV3UmljaEluZm9ybWF0aW9uIH0gZnJvbSAnLi9pc0FwaVJldmlld1JpY2hJbmZvcm1hdGlvbic7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVJldmlld1Jlc3BvbnNlQXR0cmlidXRlcyA9IChvYmo6IHVua25vd24pOiBvYmogaXMgQXBpUmV2aWV3UmVzcG9uc2VBdHRyaWJ1dGVzID0+IHtcbiAgaWYgKG9iaiA9PSBudWxsIHx8IHR5cGVvZiBvYmogIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCd0aXRsZScgaW4gb2JqICYmIG9iai50aXRsZSAhPSBudWxsICYmIHR5cGVvZiBvYmoudGl0bGUgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdyZXZpZXcnIGluIG9iaiAmJiB0eXBlb2Ygb2JqLnJldmlldyAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3Jldmlld2VyJyBpbiBvYmogJiYgdHlwZW9mIG9iai5yZXZpZXdlciAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3N0YXJzJyBpbiBvYmogJiYgdHlwZW9mIG9iai5zdGFycyAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoJ3JpY2hfaW5mb3JtYXRpb24nIGluIG9iaiAmJiAhaXNBcGlSZXZpZXdSaWNoSW5mb3JtYXRpb24ob2JqLnJpY2hfaW5mb3JtYXRpb24pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgU2VhcmNoQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVNlYXJjaEF0dHJpYnV0ZXMgPSAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgU2VhcmNoQXR0cmlidXRlcyA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ3NlYXJjaF90ZXJtJyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5zZWFyY2hfdGVybSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKCdzZWxlY3RlZF9maWx0ZXJzJyBpbiBkYXRhICYmICFBcnJheS5pc0FycmF5KGRhdGEuc2VsZWN0ZWRfZmlsdGVycykpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoISFkYXRhLnNlYXJjaF90ZXJtKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoXG4gICAgISgnc2VhcmNoX3Jlc3VsdHMnIGluIGRhdGEpIHx8XG4gICAgIUFycmF5LmlzQXJyYXkoZGF0YS5zZWFyY2hfcmVzdWx0cykgfHxcbiAgICAhZGF0YS5zZWFyY2hfcmVzdWx0cy5ldmVyeSgodikgPT4gdHlwZW9mIHYgPT09ICdzdHJpbmcnKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn07XG4iLCJpbXBvcnQge1xuICBTdWdnZXN0aW9uIGFzIENvbW1lcmNlU3VnZ2VzdGlvbixcbiAgU3VnZ2VzdGlvbkNhdGVnb3J5LFxufSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNTdWdnZXN0aW9uID0gKGRhdGE6IHVua25vd24pOiBkYXRhIGlzIENvbW1lcmNlU3VnZ2VzdGlvbiA9PiB7XG4gIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgIT09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ2lkJyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5pZCAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgISgnY2F0ZWdvcnknIGluIGRhdGEpIHx8XG4gICAgdHlwZW9mIGRhdGEuY2F0ZWdvcnkgIT09ICdzdHJpbmcnIHx8XG4gICAgIU9iamVjdC52YWx1ZXMoU3VnZ2VzdGlvbkNhdGVnb3J5KS5pbmNsdWRlcyhkYXRhLmNhdGVnb3J5IGFzIFN1Z2dlc3Rpb25DYXRlZ29yeSlcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ2NyZWF0ZWRfYXQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLmNyZWF0ZWRfYXQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCEoJ2NvbnRlbnQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLmNvbnRlbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKCdpc19hbnN3ZXInIGluIGRhdGEgJiYgZGF0YS5pc19hbnN3ZXIgIT0gbnVsbCAmJiB0eXBlb2YgZGF0YS5pc19hbnN3ZXIgIT09ICdib29sZWFuJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiIsImltcG9ydCB7IFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyA9IChcbiAgZGF0YTogdW5rbm93bixcbik6IGRhdGEgaXMgU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzID0+XG4gIGRhdGEgIT0gbnVsbCAmJlxuICB0eXBlb2YgZGF0YSA9PT0gJ29iamVjdCcgJiZcbiAgJ3N1Z2dlc3Rpb25faWQnIGluIGRhdGEgJiZcbiAgdHlwZW9mIGRhdGEuc3VnZ2VzdGlvbl9pZCA9PT0gJ3N0cmluZyc7XG4iLCJpbXBvcnQgeyBBcGlUZXh0UmVzcG9uc2VBdHRyaWJ1dGVzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvcmVzcG9uc2VHZW5lcmljcyc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVRleHRSZXNwb25zZUF0dHJpYnV0ZXMgPSAoXG4gIGF0dHJpYnV0ZXM6IHVua25vd24sXG4pOiBhdHRyaWJ1dGVzIGlzIEFwaVRleHRSZXNwb25zZUF0dHJpYnV0ZXMgPT5cbiAgdHlwZW9mIGF0dHJpYnV0ZXMgPT09ICdvYmplY3QnICYmXG4gIGF0dHJpYnV0ZXMgIT0gbnVsbCAmJlxuICAnY29udGVudCcgaW4gYXR0cmlidXRlcyAmJlxuICB0eXBlb2YgYXR0cmlidXRlcy5jb250ZW50ID09PSAnc3RyaW5nJztcbiIsImltcG9ydCB7IFVzZXJFdmVudCwgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuXG5leHBvcnQgY29uc3QgaXNBcGlVc2VyRXZlbnQgPSAoZGF0YTogdW5rbm93bik6IGRhdGEgaXMgVXNlckV2ZW50ID0+IHtcbiAgaWYgKGRhdGEgPT0gbnVsbCB8fCB0eXBlb2YgZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoISgnZXZlbnRfaWQnIGluIGRhdGEpIHx8IHR5cGVvZiBkYXRhLmV2ZW50X2lkICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICghKCdjcmVhdGVkX2F0JyBpbiBkYXRhKSB8fCB0eXBlb2YgZGF0YS5jcmVhdGVkX2F0ICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChcbiAgICAhKCdjYXRlZ29yeScgaW4gZGF0YSkgfHxcbiAgICB0eXBlb2YgZGF0YS5jYXRlZ29yeSAhPT0gJ3N0cmluZycgfHxcbiAgICAhT2JqZWN0LnZhbHVlcyhVc2VyRXZlbnRDYXRlZ29yeSkuaW5jbHVkZXMoZGF0YS5jYXRlZ29yeSBhcyBVc2VyRXZlbnRDYXRlZ29yeSlcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuIiwiaW1wb3J0IHsgUHJvZHVjdFNlYXJjaFJlc3BvbnNlQXR0cmlidXRlcyB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5cbmV4cG9ydCBjb25zdCBpc0FwaVByb2R1Y3RTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXMgPSAoXG4gIGF0dHJpYnV0ZXM6IHVua25vd24sXG4pOiBhdHRyaWJ1dGVzIGlzIFByb2R1Y3RTZWFyY2hSZXNwb25zZUF0dHJpYnV0ZXMgPT4ge1xuICBpZiAoYXR0cmlidXRlcyA9PSBudWxsIHx8IHR5cGVvZiBhdHRyaWJ1dGVzICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmICgnZ2VuZXJhdGVkX3F1ZXJ5JyBpbiBhdHRyaWJ1dGVzICYmIHR5cGVvZiBhdHRyaWJ1dGVzLmdlbmVyYXRlZF9xdWVyeSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgJ3Byb2R1Y3RfY291bnQnIGluIGF0dHJpYnV0ZXMgJiZcbiAgICBhdHRyaWJ1dGVzLnByb2R1Y3RfY291bnQgIT0gbnVsbCAmJlxuICAgIHR5cGVvZiBhdHRyaWJ1dGVzLnByb2R1Y3RfY291bnQgIT09ICdudW1iZXInXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSxNQUFhLHNCQUFzQixTQUF5QztBQUMxRSxLQUFJLFFBQVEsUUFBUSxPQUFPLFNBQVMsU0FDbEMsUUFBTztBQUdULEtBQUksRUFBRSxnQkFBZ0IsU0FBUyxPQUFPLEtBQUssZUFBZSxTQUN4RCxRQUFPO0FBR1QsS0FBSSx1QkFBdUIsUUFBUSxPQUFPLEtBQUssc0JBQXNCLFNBQ25FLFFBQU87QUFHVCxLQUFJLFNBQVMsUUFBUSxLQUFLLE9BQU8sUUFBUSxPQUFPLEtBQUssUUFBUSxTQUMzRCxRQUFPO0FBR1QsUUFBTzs7Ozs7QUNqQlQsTUFBYSw2QkFBNkIsU0FDeEMsUUFBUSxRQUFRLE9BQU8sU0FBUyxZQUFZLFdBQVcsUUFBUSxPQUFPLEtBQUssVUFBVTs7OztBQ0N2RixNQUFhLGlCQUFpQixTQUFvQztBQUNoRSxLQUFJLFFBQVEsUUFBUSxPQUFPLFNBQVMsVUFBVTtBQUM1QyxpQkFBTyxTQUFTLGdEQUFnRCxRQUFXLEVBQUUsTUFBTSxDQUFDO0FBQ3BGLFNBQU87O0FBR1QsS0FBSSxDQUFDLGtCQUFrQixNQUFNLE1BQU0sU0FBUyxFQUFFO0FBQzVDLGlCQUFPLFNBQVMscUNBQXFDLFFBQVcsRUFBRSxNQUFNLENBQUM7QUFDekUsU0FBTzs7QUFHVCxLQUNFLENBQUMsa0JBQWtCLE1BQU0sWUFBWSxTQUFTLElBQzlDLENBQUMsT0FBTyxPQUFPLGlCQUFpQixDQUFDLFNBQVMsS0FBSyxTQUE2QixFQUM1RTtBQUNBLGlCQUFPLFNBQ0wsNEVBQ0EsUUFDQSxFQUFFLE1BQU0sQ0FDVDtBQUNELFNBQU87O0FBR1QsS0FBSSxDQUFDLGtCQUFrQixNQUFNLGNBQWMsU0FBUyxFQUFFO0FBQ3BELGlCQUFPLFNBQVMsNkNBQTZDLFFBQVcsRUFBRSxNQUFNLENBQUM7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
@@ -1,11 +1,11 @@
1
- import { OrgShortName } from "./models-Dn8Emdzc.js";
1
+ import { OrgShortName } from "./models-CgvSM2fW.js";
2
2
  import { FeatureGates } from "./featureGates-Blx10fwB.js";
3
- import { contextSourceAtom, enviveConfigAtom } from "./enviveConfig-BJZ4zTJo.js";
4
- import { sessionStorageUtil } from "./atomStore-DnPEioF4.js";
3
+ import { contextSourceAtom, enviveConfigAtom } from "./enviveConfig-BSfyz_pm.js";
4
+ import { sessionStorageUtil } from "./atomStore-BuopbV9k.js";
5
5
  import { ContextSourceEnum, SupportedEventProductCategory } from "@spiffy-ai/commerce-api-client";
6
+ import { v4 } from "uuid";
6
7
  import { atom } from "jotai";
7
8
  import { atomWithStorage } from "jotai/utils";
8
- import { v4 } from "uuid";
9
9
 
10
10
  //#region src/atoms/app/variant.ts
11
11
  const internalStorageUrlResolverAtom = atomWithStorage("spiffy-url-resolver", void 0, sessionStorageUtil, { getOnInit: true });
@@ -129,4 +129,4 @@ const chatIdAtom = atomWithStorage("v1-spiffy-chat-session-id", v4(), void 0, {
129
129
 
130
130
  //#endregion
131
131
  export { appSourceAtom, chatIdAtom, hasParsedVariantInfoAtom, supportedEventAtom, userIdAtom, userIdentityAtom, variantInfoAtom };
132
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLURfdXBZZXFGLmpzIiwibmFtZXMiOlsidXVpZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hdG9tcy9hcHAvdmFyaWFudC50cyIsIi4uL3NyYy9hdG9tcy9hcHAvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXRvbVdpdGhTdG9yYWdlIH0gZnJvbSBcImpvdGFpL3V0aWxzXCI7XG5pbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQge1xuICBTdXBwb3J0ZWRFdmVudFByb2R1Y3RDYXRlZ29yeSxcbiAgU3VwcG9ydGVkRXZlbnRSZXNwb25zZSxcbiAgUGFnZVZpc2l0Q2F0ZWdvcnksXG59IGZyb20gXCJAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnRcIjtcbmltcG9ydCB7XG4gIFBhZ2VWaXNpdFZhcmlhbnRJbmZvLFxuICBQRFBWYXJpYW50SW5mbyxcbiAgUExQVmFyaWFudEluZm8sXG4gIFZhcmlhbnRJbmZvLFxuICBGZWF0dXJlR2F0ZXMsXG4gIE9yZ1Nob3J0TmFtZSxcbn0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7IHNlc3Npb25TdG9yYWdlVXRpbCB9IGZyb20gXCJzcmMvYXRvbXMvYXRvbVN0b3JlL2F0b21TdG9yZVwiO1xuaW1wb3J0IHsgZW52aXZlQ29uZmlnQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1cHBvcnRlZEV2ZW50XG4gIGV4dGVuZHMgUGljazxcbiAgICBTdXBwb3J0ZWRFdmVudFJlc3BvbnNlLFxuICAgIFwic3VwcG9ydGVkXCIgfCBcInJlYWR5XCIgfCBcImNhdGVnb3J5XCIgfCBcImNvbGxlY3Rpb25zXCIgfCBcInRvcF9jYXRlZ29yeVwiXG4gID4ge1xuICBudW1iZXJPZlJldmlld3M6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgbWVyY2hhbnRfdGFncz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgUERQQXR0cmlidXRlcyB7XG4gIHByb2R1Y3RfaWQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQTFBBdHRyaWJ1dGVzIHtcbiAgYXR0cmlidXRlcz86IHtcbiAgICBpZD86IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcmxSZXNvbHZpbmdQRFBDb25maWcge1xuICBwZHBfYXR0cmlidXRlczogUERQQXR0cmlidXRlcztcbiAgbnVtYmVyX29mX3Jldmlld3M/OiBudW1iZXI7XG4gIGNvbGxlY3Rpb25zPzogc3RyaW5nW107XG4gIG1lcmNoYW50X3RhZ3M/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcmxSZXNvbHZpbmdQTFBDb25maWcge1xuICBwbHBfYXR0cmlidXRlczogUExQQXR0cmlidXRlcztcbiAgdG9wX2NhdGVnb3J5Pzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVXJsUmVzb2x2aW5nR2VuZXJpY0NvbmZpZyB7XG4gIGRldGFpbHM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2VWYXJpYW50Q2hlY2tDb25maWcgPSB7XG4gIGNoZWNrX3R5cGU6IHN0cmluZztcbiAgZmVhdHVyZV9nYXRlPzogc3RyaW5nO1xuICBleHRyYWN0b3I/OiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIG1hcD86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcbiAgcHJvZHVjdF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gIHByb2R1Y3RfaWRzPzogc3RyaW5nW107XG4gIHBscF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gIHBscF9pZHM/OiBzdHJpbmdbXTtcbiAgY29sbGVjdGlvbnM/OiBzdHJpbmdbXTtcbiAgcXVlcnlfcGFyYW0/OiBzdHJpbmc7XG4gIGNhdGVnb3J5Pzogc3RyaW5nO1xuICB0b3BfY2F0ZWdvcnk/OiBzdHJpbmdbXTtcbiAgcmV2aWV3X21pbmltdW0/OiBudW1iZXI7XG4gIG1lcmNoYW50X3RhZ3M/OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEJhY2tlbmRXaWRnZXRNb3VudGluZ0NvbmZpZyA9IHtcbiAgbW91bnRpbmdfY29uZmlnX2lkOiBzdHJpbmc7XG4gIHdpZGdldF9jb25maWdfaWQ/OiBzdHJpbmc7XG4gIG1vdW50aW5nX3BvaW50X3dpZGdldHM/OiBBcnJheTx7XG4gICAgY2hlY2tzOiBQYWdlVmFyaWFudENoZWNrQ29uZmlnW107XG4gICAgd2lkZ2V0X2NvbmZpZ19pZDogc3RyaW5nO1xuICB9Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEJhY2tlbmRQYWdlVmFyaWFudENvbmZpZyA9IHtcbiAgdmFyaWFudF9pZDogc3RyaW5nO1xuICB2YXJpYW50X3R5cGU6IHN0cmluZztcbiAgdmFyaWFudF9jaGVja3M6IFBhZ2VWYXJpYW50Q2hlY2tDb25maWdbXTtcbiAgd2lkZ2V0X21vdW50aW5nOiBCYWNrZW5kV2lkZ2V0TW91bnRpbmdDb25maWdbXTtcbiAgcGxwX2lkX2V4dHJhY3Rvcj86IHN0cmluZztcbiAgcHJvZHVjdF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gIHBhcmVudF9wcm9kdWN0X2lkX2V4dHJhY3Rvcj86IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXJsUmVzb2x2ZXJSZXNwb25zZSB7XG4gIHZhcmlhbnRfdHlwZTogc3RyaW5nO1xuICBzcGVjaWZpY19kZXRhaWxzOlxuICAgIHwgVXJsUmVzb2x2aW5nUERQQ29uZmlnXG4gICAgfCBVcmxSZXNvbHZpbmdQTFBDb25maWdcbiAgICB8IFVybFJlc29sdmluZ0dlbmVyaWNDb25maWc7XG4gIHJlYWR5OiBib29sZWFuO1xuICB1c2VyX2V2ZW50Pzoge1xuICAgIGV2ZW50X2lkPzogc3RyaW5nO1xuICAgIGF0dHJpYnV0ZXM/OiBQRFBBdHRyaWJ1dGVzIHwgUExQQXR0cmlidXRlcztcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBjcmVhdGVkX2F0Pzogc3RyaW5nO1xuICB9O1xuICBwYWdlX3ZhcmlhbnQ/OiBCYWNrZW5kUGFnZVZhcmlhbnRDb25maWc7XG59XG5cbi8vIFVzZSBhIG1hcCBmb3IgcGVyLVVSTCBjYWNoZVxuZXhwb3J0IHR5cGUgVXJsUmVzb2x2ZXJDYWNoZSA9IFJlY29yZDxzdHJpbmcsIFVybFJlc29sdmVyUmVzcG9uc2UgfCB1bmRlZmluZWQ+O1xuXG5jb25zdCBpbnRlcm5hbFN0b3JhZ2VVcmxSZXNvbHZlckF0b20gPSBhdG9tV2l0aFN0b3JhZ2U8c3RyaW5nIHwgdW5kZWZpbmVkPihcbiAgXCJzcGlmZnktdXJsLXJlc29sdmVyXCIsXG4gIHVuZGVmaW5lZCxcbiAgc2Vzc2lvblN0b3JhZ2VVdGlsLFxuICB7XG4gICAgZ2V0T25Jbml0OiB0cnVlLFxuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgdXJsUmVzb2x2ZXJBdG9tID0gYXRvbShcbiAgKGdldCk6IFVybFJlc29sdmVyQ2FjaGUgPT4ge1xuICAgIGNvbnN0IG1heWJlVXJsUmVzb2x2ZXIgPSBnZXQoaW50ZXJuYWxTdG9yYWdlVXJsUmVzb2x2ZXJBdG9tKTtcbiAgICBpZiAobWF5YmVVcmxSZXNvbHZlciA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIHJldHVybiBKU09OLnBhcnNlKG1heWJlVXJsUmVzb2x2ZXIpO1xuICB9LFxuICAoXG4gICAgZ2V0LFxuICAgIHNldCxcbiAgICB2YWx1ZTogeyB1cmw6IHN0cmluZzsgcmVzcG9uc2U6IFVybFJlc29sdmVyUmVzcG9uc2UgfCB1bmRlZmluZWQgfVxuICApID0+IHtcbiAgICAvLyBHZXQgY3VycmVudCBjYWNoZSBmcm9tIHN0b3JhZ2VcbiAgICBjb25zdCBjdXJyZW50Q2FjaGUgPSBnZXQodXJsUmVzb2x2ZXJBdG9tKTtcbiAgICBjb25zdCBuZXdDYWNoZSA9IHsgLi4uY3VycmVudENhY2hlLCBbdmFsdWUudXJsXTogdmFsdWUucmVzcG9uc2UgfTtcblxuICAgIHNldChpbnRlcm5hbFN0b3JhZ2VVcmxSZXNvbHZlckF0b20sIEpTT04uc3RyaW5naWZ5KG5ld0NhY2hlKSk7XG4gIH1cbik7XG5cbmNvbnN0IGludGVybmFsU3RvcmFnZVN1cHBvcnRlZEV2ZW50QXRvbSA9IGF0b21XaXRoU3RvcmFnZTxzdHJpbmcgfCB1bmRlZmluZWQ+KFxuICBcInNwaWZmeS1zdXBwb3J0ZWQtZXZlbnRcIixcbiAgdW5kZWZpbmVkLFxuICBzZXNzaW9uU3RvcmFnZVV0aWwsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH1cbik7XG5jb25zdCBpbnRlcm5hbFN1cHBvcnRlZEV2ZW50QXRvbSA9IGF0b208U3VwcG9ydGVkRXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmNvbnN0IGZlYXR1cmVGbGFnU2VydmljZUF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgY29uZmlnID0gZ2V0KGVudml2ZUNvbmZpZ0F0b20pO1xuICBjb25zdCBmZWF0dXJlT3ZlcnJpZGVzID0gY29uZmlnPy5mZWF0dXJlT3ZlcnJpZGVzO1xuICByZXR1cm4ge1xuICAgIGlzRmVhdHVyZUdhdGVFbmFibGVkOiAoZ2F0ZTogc3RyaW5nKSA9PiBmZWF0dXJlT3ZlcnJpZGVzPy5bZ2F0ZV0gfHwgZmFsc2UsXG4gIH07XG59KTtcblxuZXhwb3J0IGNvbnN0IHN1cHBvcnRlZEV2ZW50QXRvbSA9IGF0b20oXG4gIChnZXQpOiBTdXBwb3J0ZWRFdmVudCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgbWF5YmVTdXBwb3J0ZWRFdmVudCA9IGdldChpbnRlcm5hbFN0b3JhZ2VTdXBwb3J0ZWRFdmVudEF0b20pO1xuICAgIGlmIChtYXliZVN1cHBvcnRlZEV2ZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gVE9ETyB0aGlzIGlzIGFuIHVudmFsaWRhdGVkIHBhcnNlLiBJdCBtYXkgYmUgYmV0dGVyIHRvIGltcGxlbWVudCBhIGN1c3RvbSBzdG9yYWdlIHV0aWxcbiAgICAvLyBhbmQgcGVyZm9ybSB0aGUgb2JqZWN0IHZhbGlkYXRpb24gb24gXCJnZXRcIiB0aGVyZS5cbiAgICByZXR1cm4gSlNPTi5wYXJzZShtYXliZVN1cHBvcnRlZEV2ZW50KTtcbiAgfSxcbiAgKGdldCwgc2V0LCB2YWx1ZTogU3VwcG9ydGVkRXZlbnQgfCB1bmRlZmluZWQpID0+IHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgc2V0KGludGVybmFsU3RvcmFnZVN1cHBvcnRlZEV2ZW50QXRvbSwgdW5kZWZpbmVkKTtcbiAgICAgIHNldChpbnRlcm5hbFN1cHBvcnRlZEV2ZW50QXRvbSwgdW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmZWF0dXJlRmxhZ1NlcnZpY2UgPSBnZXQoZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSk7XG4gICAgY29uc3QgbWF5YmVTdXBwb3J0ZWRFdmVudCA9IGdldChpbnRlcm5hbFN1cHBvcnRlZEV2ZW50QXRvbSk7XG4gICAgY29uc3QgdmFyaWFudENhdGVnb3J5ID0gbWF5YmVTdXBwb3J0ZWRFdmVudD8uY2F0ZWdvcnk7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0KGVudml2ZUNvbmZpZ0F0b20pO1xuICAgIGNvbnN0IG9yZ1Nob3J0TmFtZSA9IGNvbmZpZz8ub3JnU2hvcnROYW1lO1xuXG4gICAgLy8gVE9ETzogY2xlYW4gdXAgdGhpcyBsb2dpYyAmIHRoZSBmZWF0dXJlIGdhdGUgd2hlbiB3ZSd2ZSBmdWxseSByb2xsZWQgb3V0XG4gICAgaWYgKFxuICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlICYmXG4gICAgICAhZmVhdHVyZUZsYWdTZXJ2aWNlLmlzRmVhdHVyZUdhdGVFbmFibGVkKFxuICAgICAgICBGZWF0dXJlR2F0ZXMuSXNOb25TaGFwZXdlYXJFbmFibGVkXG4gICAgICApICYmXG4gICAgICB2YXJpYW50Q2F0ZWdvcnkgJiZcbiAgICAgIHZhcmlhbnRDYXRlZ29yeSAhPT0gU3VwcG9ydGVkRXZlbnRQcm9kdWN0Q2F0ZWdvcnkuU2hhcGV3ZWFyICYmXG4gICAgICAob3JnU2hvcnROYW1lID09PSBPcmdTaG9ydE5hbWUuU3BhbnggfHxcbiAgICAgICAgb3JnU2hvcnROYW1lID09PSBPcmdTaG9ydE5hbWUuU3BhbnhTdGFnaW5nKVxuICAgICkge1xuICAgICAgY29uc3QgbW9kaWZpZWRTdXBwb3J0ZWRFdmVudCA9IHtcbiAgICAgICAgc3VwcG9ydGVkOiBmYWxzZSxcbiAgICAgICAgcmVhZHk6IHZhbHVlLnJlYWR5LFxuICAgICAgICBjYXRlZ29yeTogdmFsdWUuY2F0ZWdvcnksXG4gICAgICAgIG51bWJlck9mUmV2aWV3czogdmFsdWUubnVtYmVyT2ZSZXZpZXdzLFxuICAgICAgICBjb2xsZWN0aW9uczogdmFsdWUuY29sbGVjdGlvbnMsXG4gICAgICAgIHRvcF9jYXRlZ29yeTogdmFsdWUudG9wX2NhdGVnb3J5LFxuICAgICAgICBtZXJjaGFudF90YWdzOiB2YWx1ZS5tZXJjaGFudF90YWdzLFxuICAgICAgfTtcbiAgICAgIHNldChpbnRlcm5hbFN1cHBvcnRlZEV2ZW50QXRvbSwgbW9kaWZpZWRTdXBwb3J0ZWRFdmVudCk7XG4gICAgICBzZXQoXG4gICAgICAgIGludGVybmFsU3RvcmFnZVN1cHBvcnRlZEV2ZW50QXRvbSxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkobW9kaWZpZWRTdXBwb3J0ZWRFdmVudClcbiAgICAgICk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXQoaW50ZXJuYWxTdXBwb3J0ZWRFdmVudEF0b20sIHZhbHVlKTtcbiAgICBzZXQoaW50ZXJuYWxTdG9yYWdlU3VwcG9ydGVkRXZlbnRBdG9tLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICB9XG4pO1xuXG5jb25zdCBpbnRlcm5hbFZhcmlhbnRJZEF0b20gPSBhdG9tPHN0cmluZz4oKTtcbmNvbnN0IGludGVybmFsUHJvZHVjdElkQXRvbSA9IGF0b208c3RyaW5nPigpO1xuY29uc3QgaW50ZXJuYWxQYXJlbnRQcm9kdWN0SWRBdG9tID0gYXRvbTxzdHJpbmc+KCk7XG5jb25zdCBpbnRlcm5hbFByb2R1Y3RVcmxBdG9tID0gYXRvbTxzdHJpbmc+KCk7XG5jb25zdCBpbnRlcm5hbFBscElkQXRvbSA9IGF0b208c3RyaW5nPigpO1xuY29uc3QgaW50ZXJuYWxVcmxBdG9tID0gYXRvbTxzdHJpbmc+KCk7XG5jb25zdCBpbnRlcm5hbFBhZ2VWaXNpdENhdGVnb3J5QXRvbSA9IGF0b208UGFnZVZpc2l0Q2F0ZWdvcnk+KCk7XG5jb25zdCBpbnRlcm5hbFZhcmlhbnRBdG9tID0gYXRvbTxcInBkcFwiIHwgXCJwbHBcIiB8IFwic2VhcmNoXCIgfCBcInBhZ2VfdmlzaXRcIj4oXG4gIFwicGRwXCJcbik7XG5cbmV4cG9ydCBjb25zdCB2YXJpYW50SWRBdG9tID0gYXRvbSgoZ2V0KSA9PiBnZXQoaW50ZXJuYWxWYXJpYW50SWRBdG9tKSk7XG5leHBvcnQgY29uc3QgcHJvZHVjdElkQXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsUHJvZHVjdElkQXRvbSkpO1xuZXhwb3J0IGNvbnN0IHBhcmVudFByb2R1Y3RJZEF0b20gPSBhdG9tKChnZXQpID0+XG4gIGdldChpbnRlcm5hbFBhcmVudFByb2R1Y3RJZEF0b20pXG4pO1xuZXhwb3J0IGNvbnN0IHByb2R1Y3RVcmxBdG9tID0gYXRvbSgoZ2V0KSA9PiBnZXQoaW50ZXJuYWxQcm9kdWN0VXJsQXRvbSkpO1xuZXhwb3J0IGNvbnN0IHBscElkQXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsUGxwSWRBdG9tKSk7XG5leHBvcnQgY29uc3QgdXJsQXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsVXJsQXRvbSkpO1xuZXhwb3J0IGNvbnN0IHBhZ2VWaXNpdENhdGVnb3J5QXRvbSA9IGF0b20oKGdldCkgPT5cbiAgZ2V0KGludGVybmFsUGFnZVZpc2l0Q2F0ZWdvcnlBdG9tKVxuKTtcbmV4cG9ydCBjb25zdCB2YXJpYW50QXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsVmFyaWFudEF0b20pKTtcbmV4cG9ydCBjb25zdCBoYXNQYXJzZWRWYXJpYW50SW5mb0F0b20gPSBhdG9tKGZhbHNlKTtcblxuZXhwb3J0IGNvbnN0IHZhcmlhbnRJbmZvQXRvbSA9IGF0b20oXG4gIChnZXQpOiBWYXJpYW50SW5mbyA9PiB7XG4gICAgY29uc3QgdmFyaWFudCA9IGdldCh2YXJpYW50QXRvbSk7XG4gICAgaWYgKHZhcmlhbnQgPT09IFwicGRwXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhcmlhbnRJZDogZ2V0KHZhcmlhbnRJZEF0b20pLFxuICAgICAgICB2YXJpYW50LFxuICAgICAgICBwcm9kdWN0SWQ6IGdldChwcm9kdWN0SWRBdG9tKSxcbiAgICAgICAgcGFyZW50UHJvZHVjdElkOiBnZXQocGFyZW50UHJvZHVjdElkQXRvbSksXG4gICAgICAgIHVybDogZ2V0KHVybEF0b20pLFxuICAgICAgfSBhcyBQRFBWYXJpYW50SW5mbztcbiAgICB9XG4gICAgaWYgKHZhcmlhbnQgPT09IFwicGxwXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhcmlhbnRJZDogZ2V0KHZhcmlhbnRJZEF0b20pLFxuICAgICAgICB2YXJpYW50LFxuICAgICAgICBwbHBJZDogZ2V0KHBscElkQXRvbSksXG4gICAgICAgIHVybDogZ2V0KHVybEF0b20pLFxuICAgICAgfSBhcyBQTFBWYXJpYW50SW5mbztcbiAgICB9XG4gICAgaWYgKHZhcmlhbnQgPT09IFwicGFnZV92aXNpdFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YXJpYW50SWQ6IGdldCh2YXJpYW50SWRBdG9tKSxcbiAgICAgICAgdmFyaWFudCxcbiAgICAgICAgdXJsOiBnZXQodXJsQXRvbSksXG4gICAgICAgIHBhZ2VWaXNpdENhdGVnb3J5OiBnZXQocGFnZVZpc2l0Q2F0ZWdvcnlBdG9tKSxcbiAgICAgIH0gYXMgUGFnZVZpc2l0VmFyaWFudEluZm87XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdmFyaWFudEluZm8gZGV0YWlsc1wiKTtcbiAgfSxcbiAgKF8sIHNldCwgbmV3VmFyaWFudDogVmFyaWFudEluZm8pID0+IHtcbiAgICBzZXQoaW50ZXJuYWxWYXJpYW50QXRvbSwgbmV3VmFyaWFudC52YXJpYW50KTtcbiAgICBzZXQoaW50ZXJuYWxWYXJpYW50SWRBdG9tLCBuZXdWYXJpYW50LnZhcmlhbnRJZCk7XG4gICAgaWYgKG5ld1ZhcmlhbnQudmFyaWFudCA9PT0gXCJwZHBcIikge1xuICAgICAgc2V0KGludGVybmFsUHJvZHVjdElkQXRvbSwgbmV3VmFyaWFudC5wcm9kdWN0SWQpO1xuICAgICAgc2V0KGludGVybmFsUGFyZW50UHJvZHVjdElkQXRvbSwgbmV3VmFyaWFudC5wYXJlbnRQcm9kdWN0SWQpO1xuICAgICAgc2V0KGludGVybmFsVXJsQXRvbSwgbmV3VmFyaWFudC51cmwpO1xuICAgIH1cbiAgICBpZiAobmV3VmFyaWFudC52YXJpYW50ID09PSBcInBscFwiKSB7XG4gICAgICBzZXQoaW50ZXJuYWxQbHBJZEF0b20sIG5ld1ZhcmlhbnQucGxwSWQpO1xuICAgICAgc2V0KGludGVybmFsVXJsQXRvbSwgbmV3VmFyaWFudC51cmwpO1xuICAgIH1cbiAgICBpZiAobmV3VmFyaWFudC52YXJpYW50ID09PSBcInBhZ2VfdmlzaXRcIikge1xuICAgICAgc2V0KGludGVybmFsVXJsQXRvbSwgbmV3VmFyaWFudC51cmwpO1xuICAgICAgc2V0KGludGVybmFsUGFnZVZpc2l0Q2F0ZWdvcnlBdG9tLCBuZXdWYXJpYW50LnBhZ2VWaXNpdENhdGVnb3J5KTtcbiAgICB9XG4gIH1cbik7XG4iLCJpbXBvcnQge1xuICBDb250ZXh0RW52RW51bSxcbiAgQ29udGV4dFNvdXJjZUVudW0sXG59IGZyb20gXCJAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnRcIjtcbmltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IGF0b21XaXRoU3RvcmFnZSB9IGZyb20gXCJqb3RhaS91dGlsc1wiO1xuaW1wb3J0IHsgVmFyaWFudEluZm8gfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVsc1wiO1xuaW1wb3J0IHsgVXNlcklkZW50aXR5Q29udGV4dFR5cGUgfSBmcm9tIFwic3JjL2NvbnRleHRzL3VzZXJJZGVudGl0eUNvbnRleHQvdXNlcklkZW50aXR5Q29udGV4dFwiO1xuaW1wb3J0IHsgdmFyaWFudEluZm9BdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hcHAvdmFyaWFudFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gXCJ1dWlkXCI7XG5pbXBvcnQgeyBjb250ZXh0U291cmNlQXRvbSB9IGZyb20gXCIuLi9lbnZpdmUvZW52aXZlQ29uZmlnXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwRGV0YWlscyB7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIG9yZ1Nob3J0TmFtZTogc3RyaW5nO1xuICBjaGF0SWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIHNvdXJjZTogQ29udGV4dFNvdXJjZUVudW07XG4gIGVudjogQ29udGV4dEVudkVudW07XG4gIHZhcmlhbnRJbmZvOiBWYXJpYW50SW5mbztcbn1cblxuZXhwb3J0IHsgdmFyaWFudEluZm9BdG9tIH0gZnJvbSBcIi4vdmFyaWFudFwiO1xuXG5jb25zdCBpbnRlcm5hbFVzZXJJZEF0b20gPSBhdG9tPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IGNvbnN0IHVzZXJJZEF0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiB7XG4gICAgY29uc3QgbWF5YmVVc2VySWQgPSBnZXQoaW50ZXJuYWxVc2VySWRBdG9tKTtcblxuICAgIGlmIChtYXliZVVzZXJJZCkge1xuICAgICAgcmV0dXJuIG1heWJlVXNlcklkO1xuICAgIH1cblxuICAgIHJldHVybiBnZXQodXNlcklkZW50aXR5QXRvbSk/LmdldFVzZXJJZE9yRGVmYXVsdCgpID8/IFwiXCI7XG4gIH0sXG4gIChfLCBzZXQsIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcbiAgICBzZXQoaW50ZXJuYWxVc2VySWRBdG9tLCB2YWx1ZSk7XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCB1c2VySWRlbnRpdHlBdG9tID0gYXRvbTxVc2VySWRlbnRpdHlDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4oXG4gIHVuZGVmaW5lZFxuKTtcblxuZXhwb3J0IGNvbnN0IGFwcFNvdXJjZUF0b20gPSBhdG9tPENvbnRleHRTb3VyY2VFbnVtPihcbiAgKGdldCk6IENvbnRleHRTb3VyY2VFbnVtID0+IGdldChjb250ZXh0U291cmNlQXRvbSkgPz8gQ29udGV4dFNvdXJjZUVudW0uQXBwXG4pO1xuZXhwb3J0IGNvbnN0IGNoYXRJZEF0b20gPSBhdG9tV2l0aFN0b3JhZ2U8c3RyaW5nPihcbiAgXCJ2MS1zcGlmZnktY2hhdC1zZXNzaW9uLWlkXCIsXG4gIHV1aWQoKSxcbiAgdW5kZWZpbmVkLFxuICB7XG4gICAgZ2V0T25Jbml0OiB0cnVlLFxuICB9XG4pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBK0dBLE1BQU0saUNBQWlDLGdCQUNyQyx1QkFDQSxRQUNBLG9CQUNBLEVBQ0UsV0FBVyxNQUNaLENBQ0Y7QUFFRCxNQUFhLGtCQUFrQixNQUM1QixRQUEwQjtDQUN6QixNQUFNLG1CQUFtQixJQUFJLCtCQUErQjtBQUM1RCxLQUFJLG9CQUFvQixLQUN0QixRQUFPLEVBQUU7QUFFWCxRQUFPLEtBQUssTUFBTSxpQkFBaUI7SUFHbkMsS0FDQSxLQUNBLFVBQ0c7Q0FHSCxNQUFNLFdBQVc7RUFBRSxHQURFLElBQUksZ0JBQWdCO0dBQ0osTUFBTSxNQUFNLE1BQU07RUFBVTtBQUVqRSxLQUFJLGdDQUFnQyxLQUFLLFVBQVUsU0FBUyxDQUFDO0VBRWhFO0FBRUQsTUFBTSxvQ0FBb0MsZ0JBQ3hDLDBCQUNBLFFBQ0Esb0JBQ0EsRUFDRSxXQUFXLE1BQ1osQ0FDRjtBQUNELE1BQU0sNkJBQTZCLEtBQWlDLE9BQVU7QUFFOUUsTUFBTSx5QkFBeUIsTUFBTSxR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
132
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLUNvUTFuQy1qLmpzIiwibmFtZXMiOlsidXVpZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9hdG9tcy9hcHAvdmFyaWFudC50cyIsIi4uL3NyYy9hdG9tcy9hcHAvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXRvbVdpdGhTdG9yYWdlIH0gZnJvbSBcImpvdGFpL3V0aWxzXCI7XG5pbXBvcnQgeyBhdG9tIH0gZnJvbSBcImpvdGFpXCI7XG5pbXBvcnQge1xuICBTdXBwb3J0ZWRFdmVudFByb2R1Y3RDYXRlZ29yeSxcbiAgU3VwcG9ydGVkRXZlbnRSZXNwb25zZSxcbiAgUGFnZVZpc2l0Q2F0ZWdvcnksXG59IGZyb20gXCJAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnRcIjtcbmltcG9ydCB7XG4gIFBhZ2VWaXNpdFZhcmlhbnRJbmZvLFxuICBQRFBWYXJpYW50SW5mbyxcbiAgUExQVmFyaWFudEluZm8sXG4gIFZhcmlhbnRJbmZvLFxuICBGZWF0dXJlR2F0ZXMsXG4gIE9yZ1Nob3J0TmFtZSxcbn0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7IHNlc3Npb25TdG9yYWdlVXRpbCB9IGZyb20gXCJzcmMvYXRvbXMvYXRvbVN0b3JlL2F0b21TdG9yZVwiO1xuaW1wb3J0IHsgZW52aXZlQ29uZmlnQXRvbSB9IGZyb20gXCJzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZ1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN1cHBvcnRlZEV2ZW50XG4gIGV4dGVuZHMgUGljazxcbiAgICBTdXBwb3J0ZWRFdmVudFJlc3BvbnNlLFxuICAgIFwic3VwcG9ydGVkXCIgfCBcInJlYWR5XCIgfCBcImNhdGVnb3J5XCIgfCBcImNvbGxlY3Rpb25zXCIgfCBcInRvcF9jYXRlZ29yeVwiXG4gID4ge1xuICBudW1iZXJPZlJldmlld3M6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgbWVyY2hhbnRfdGFncz86IHN0cmluZ1tdO1xufVxuXG5pbnRlcmZhY2UgUERQQXR0cmlidXRlcyB7XG4gIHByb2R1Y3RfaWQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBQTFBBdHRyaWJ1dGVzIHtcbiAgYXR0cmlidXRlcz86IHtcbiAgICBpZD86IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcmxSZXNvbHZpbmdQRFBDb25maWcge1xuICBwZHBfYXR0cmlidXRlczogUERQQXR0cmlidXRlcztcbiAgbnVtYmVyX29mX3Jldmlld3M/OiBudW1iZXI7XG4gIGNvbGxlY3Rpb25zPzogc3RyaW5nW107XG4gIG1lcmNoYW50X3RhZ3M/OiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcmxSZXNvbHZpbmdQTFBDb25maWcge1xuICBwbHBfYXR0cmlidXRlczogUExQQXR0cmlidXRlcztcbiAgdG9wX2NhdGVnb3J5Pzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgVXJsUmVzb2x2aW5nR2VuZXJpY0NvbmZpZyB7XG4gIGRldGFpbHM/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2VWYXJpYW50Q2hlY2tDb25maWcgPSB7XG4gIGNoZWNrX3R5cGU6IHN0cmluZztcbiAgZmVhdHVyZV9nYXRlPzogc3RyaW5nO1xuICBleHRyYWN0b3I/OiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIG1hcD86IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPjtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgfTtcbiAgcHJvZHVjdF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gIHByb2R1Y3RfaWRzPzogc3RyaW5nW107XG4gIHBscF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gIHBscF9pZHM/OiBzdHJpbmdbXTtcbiAgY29sbGVjdGlvbnM/OiBzdHJpbmdbXTtcbiAgcXVlcnlfcGFyYW0/OiBzdHJpbmc7XG4gIGNhdGVnb3J5Pzogc3RyaW5nO1xuICB0b3BfY2F0ZWdvcnk/OiBzdHJpbmdbXTtcbiAgcmV2aWV3X21pbmltdW0/OiBudW1iZXI7XG4gIG1lcmNoYW50X3RhZ3M/OiBzdHJpbmdbXTtcbn07XG5cbmV4cG9ydCB0eXBlIEJhY2tlbmRXaWRnZXRNb3VudGluZ0NvbmZpZyA9IHtcbiAgbW91bnRpbmdfY29uZmlnX2lkOiBzdHJpbmc7XG4gIHdpZGdldF9jb25maWdfaWQ/OiBzdHJpbmc7XG4gIG1vdW50aW5nX3BvaW50X3dpZGdldHM/OiBBcnJheTx7XG4gICAgY2hlY2tzOiBQYWdlVmFyaWFudENoZWNrQ29uZmlnW107XG4gICAgd2lkZ2V0X2NvbmZpZ19pZDogc3RyaW5nO1xuICB9Pjtcbn07XG5cbmV4cG9ydCB0eXBlIEJhY2tlbmRQYWdlVmFyaWFudENvbmZpZyA9IHtcbiAgdmFyaWFudF9pZDogc3RyaW5nO1xuICB2YXJpYW50X3R5cGU6IHN0cmluZztcbiAgdmFyaWFudF9jaGVja3M6IFBhZ2VWYXJpYW50Q2hlY2tDb25maWdbXTtcbiAgd2lkZ2V0X21vdW50aW5nOiBCYWNrZW5kV2lkZ2V0TW91bnRpbmdDb25maWdbXTtcbiAgcGxwX2lkX2V4dHJhY3Rvcj86IHN0cmluZztcbiAgcHJvZHVjdF9pZF9leHRyYWN0b3I/OiBzdHJpbmc7XG4gIHBhcmVudF9wcm9kdWN0X2lkX2V4dHJhY3Rvcj86IHN0cmluZztcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXJsUmVzb2x2ZXJSZXNwb25zZSB7XG4gIHZhcmlhbnRfdHlwZTogc3RyaW5nO1xuICBzcGVjaWZpY19kZXRhaWxzOlxuICAgIHwgVXJsUmVzb2x2aW5nUERQQ29uZmlnXG4gICAgfCBVcmxSZXNvbHZpbmdQTFBDb25maWdcbiAgICB8IFVybFJlc29sdmluZ0dlbmVyaWNDb25maWc7XG4gIHJlYWR5OiBib29sZWFuO1xuICB1c2VyX2V2ZW50Pzoge1xuICAgIGV2ZW50X2lkPzogc3RyaW5nO1xuICAgIGF0dHJpYnV0ZXM/OiBQRFBBdHRyaWJ1dGVzIHwgUExQQXR0cmlidXRlcztcbiAgICBjYXRlZ29yeT86IHN0cmluZztcbiAgICBjcmVhdGVkX2F0Pzogc3RyaW5nO1xuICB9O1xuICBwYWdlX3ZhcmlhbnQ/OiBCYWNrZW5kUGFnZVZhcmlhbnRDb25maWc7XG59XG5cbi8vIFVzZSBhIG1hcCBmb3IgcGVyLVVSTCBjYWNoZVxuZXhwb3J0IHR5cGUgVXJsUmVzb2x2ZXJDYWNoZSA9IFJlY29yZDxzdHJpbmcsIFVybFJlc29sdmVyUmVzcG9uc2UgfCB1bmRlZmluZWQ+O1xuXG5jb25zdCBpbnRlcm5hbFN0b3JhZ2VVcmxSZXNvbHZlckF0b20gPSBhdG9tV2l0aFN0b3JhZ2U8c3RyaW5nIHwgdW5kZWZpbmVkPihcbiAgXCJzcGlmZnktdXJsLXJlc29sdmVyXCIsXG4gIHVuZGVmaW5lZCxcbiAgc2Vzc2lvblN0b3JhZ2VVdGlsLFxuICB7XG4gICAgZ2V0T25Jbml0OiB0cnVlLFxuICB9XG4pO1xuXG5leHBvcnQgY29uc3QgdXJsUmVzb2x2ZXJBdG9tID0gYXRvbShcbiAgKGdldCk6IFVybFJlc29sdmVyQ2FjaGUgPT4ge1xuICAgIGNvbnN0IG1heWJlVXJsUmVzb2x2ZXIgPSBnZXQoaW50ZXJuYWxTdG9yYWdlVXJsUmVzb2x2ZXJBdG9tKTtcbiAgICBpZiAobWF5YmVVcmxSZXNvbHZlciA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIHJldHVybiBKU09OLnBhcnNlKG1heWJlVXJsUmVzb2x2ZXIpO1xuICB9LFxuICAoXG4gICAgZ2V0LFxuICAgIHNldCxcbiAgICB2YWx1ZTogeyB1cmw6IHN0cmluZzsgcmVzcG9uc2U6IFVybFJlc29sdmVyUmVzcG9uc2UgfCB1bmRlZmluZWQgfVxuICApID0+IHtcbiAgICAvLyBHZXQgY3VycmVudCBjYWNoZSBmcm9tIHN0b3JhZ2VcbiAgICBjb25zdCBjdXJyZW50Q2FjaGUgPSBnZXQodXJsUmVzb2x2ZXJBdG9tKTtcbiAgICBjb25zdCBuZXdDYWNoZSA9IHsgLi4uY3VycmVudENhY2hlLCBbdmFsdWUudXJsXTogdmFsdWUucmVzcG9uc2UgfTtcblxuICAgIHNldChpbnRlcm5hbFN0b3JhZ2VVcmxSZXNvbHZlckF0b20sIEpTT04uc3RyaW5naWZ5KG5ld0NhY2hlKSk7XG4gIH1cbik7XG5cbmNvbnN0IGludGVybmFsU3RvcmFnZVN1cHBvcnRlZEV2ZW50QXRvbSA9IGF0b21XaXRoU3RvcmFnZTxzdHJpbmcgfCB1bmRlZmluZWQ+KFxuICBcInNwaWZmeS1zdXBwb3J0ZWQtZXZlbnRcIixcbiAgdW5kZWZpbmVkLFxuICBzZXNzaW9uU3RvcmFnZVV0aWwsXG4gIHtcbiAgICBnZXRPbkluaXQ6IHRydWUsXG4gIH1cbik7XG5jb25zdCBpbnRlcm5hbFN1cHBvcnRlZEV2ZW50QXRvbSA9IGF0b208U3VwcG9ydGVkRXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmNvbnN0IGZlYXR1cmVGbGFnU2VydmljZUF0b20gPSBhdG9tKChnZXQpID0+IHtcbiAgY29uc3QgY29uZmlnID0gZ2V0KGVudml2ZUNvbmZpZ0F0b20pO1xuICBjb25zdCBmZWF0dXJlT3ZlcnJpZGVzID0gY29uZmlnPy5mZWF0dXJlT3ZlcnJpZGVzO1xuICByZXR1cm4ge1xuICAgIGlzRmVhdHVyZUdhdGVFbmFibGVkOiAoZ2F0ZTogc3RyaW5nKSA9PiBmZWF0dXJlT3ZlcnJpZGVzPy5bZ2F0ZV0gfHwgZmFsc2UsXG4gIH07XG59KTtcblxuZXhwb3J0IGNvbnN0IHN1cHBvcnRlZEV2ZW50QXRvbSA9IGF0b20oXG4gIChnZXQpOiBTdXBwb3J0ZWRFdmVudCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgbWF5YmVTdXBwb3J0ZWRFdmVudCA9IGdldChpbnRlcm5hbFN0b3JhZ2VTdXBwb3J0ZWRFdmVudEF0b20pO1xuICAgIGlmIChtYXliZVN1cHBvcnRlZEV2ZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gVE9ETyB0aGlzIGlzIGFuIHVudmFsaWRhdGVkIHBhcnNlLiBJdCBtYXkgYmUgYmV0dGVyIHRvIGltcGxlbWVudCBhIGN1c3RvbSBzdG9yYWdlIHV0aWxcbiAgICAvLyBhbmQgcGVyZm9ybSB0aGUgb2JqZWN0IHZhbGlkYXRpb24gb24gXCJnZXRcIiB0aGVyZS5cbiAgICByZXR1cm4gSlNPTi5wYXJzZShtYXliZVN1cHBvcnRlZEV2ZW50KTtcbiAgfSxcbiAgKGdldCwgc2V0LCB2YWx1ZTogU3VwcG9ydGVkRXZlbnQgfCB1bmRlZmluZWQpID0+IHtcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgc2V0KGludGVybmFsU3RvcmFnZVN1cHBvcnRlZEV2ZW50QXRvbSwgdW5kZWZpbmVkKTtcbiAgICAgIHNldChpbnRlcm5hbFN1cHBvcnRlZEV2ZW50QXRvbSwgdW5kZWZpbmVkKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBmZWF0dXJlRmxhZ1NlcnZpY2UgPSBnZXQoZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSk7XG4gICAgY29uc3QgbWF5YmVTdXBwb3J0ZWRFdmVudCA9IGdldChpbnRlcm5hbFN1cHBvcnRlZEV2ZW50QXRvbSk7XG4gICAgY29uc3QgdmFyaWFudENhdGVnb3J5ID0gbWF5YmVTdXBwb3J0ZWRFdmVudD8uY2F0ZWdvcnk7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0KGVudml2ZUNvbmZpZ0F0b20pO1xuICAgIGNvbnN0IG9yZ1Nob3J0TmFtZSA9IGNvbmZpZz8ub3JnU2hvcnROYW1lO1xuXG4gICAgLy8gVE9ETzogY2xlYW4gdXAgdGhpcyBsb2dpYyAmIHRoZSBmZWF0dXJlIGdhdGUgd2hlbiB3ZSd2ZSBmdWxseSByb2xsZWQgb3V0XG4gICAgaWYgKFxuICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlICYmXG4gICAgICAhZmVhdHVyZUZsYWdTZXJ2aWNlLmlzRmVhdHVyZUdhdGVFbmFibGVkKFxuICAgICAgICBGZWF0dXJlR2F0ZXMuSXNOb25TaGFwZXdlYXJFbmFibGVkXG4gICAgICApICYmXG4gICAgICB2YXJpYW50Q2F0ZWdvcnkgJiZcbiAgICAgIHZhcmlhbnRDYXRlZ29yeSAhPT0gU3VwcG9ydGVkRXZlbnRQcm9kdWN0Q2F0ZWdvcnkuU2hhcGV3ZWFyICYmXG4gICAgICAob3JnU2hvcnROYW1lID09PSBPcmdTaG9ydE5hbWUuU3BhbnggfHxcbiAgICAgICAgb3JnU2hvcnROYW1lID09PSBPcmdTaG9ydE5hbWUuU3BhbnhTdGFnaW5nKVxuICAgICkge1xuICAgICAgY29uc3QgbW9kaWZpZWRTdXBwb3J0ZWRFdmVudCA9IHtcbiAgICAgICAgc3VwcG9ydGVkOiBmYWxzZSxcbiAgICAgICAgcmVhZHk6IHZhbHVlLnJlYWR5LFxuICAgICAgICBjYXRlZ29yeTogdmFsdWUuY2F0ZWdvcnksXG4gICAgICAgIG51bWJlck9mUmV2aWV3czogdmFsdWUubnVtYmVyT2ZSZXZpZXdzLFxuICAgICAgICBjb2xsZWN0aW9uczogdmFsdWUuY29sbGVjdGlvbnMsXG4gICAgICAgIHRvcF9jYXRlZ29yeTogdmFsdWUudG9wX2NhdGVnb3J5LFxuICAgICAgICBtZXJjaGFudF90YWdzOiB2YWx1ZS5tZXJjaGFudF90YWdzLFxuICAgICAgfTtcbiAgICAgIHNldChpbnRlcm5hbFN1cHBvcnRlZEV2ZW50QXRvbSwgbW9kaWZpZWRTdXBwb3J0ZWRFdmVudCk7XG4gICAgICBzZXQoXG4gICAgICAgIGludGVybmFsU3RvcmFnZVN1cHBvcnRlZEV2ZW50QXRvbSxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkobW9kaWZpZWRTdXBwb3J0ZWRFdmVudClcbiAgICAgICk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXQoaW50ZXJuYWxTdXBwb3J0ZWRFdmVudEF0b20sIHZhbHVlKTtcbiAgICBzZXQoaW50ZXJuYWxTdG9yYWdlU3VwcG9ydGVkRXZlbnRBdG9tLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xuICB9XG4pO1xuXG5jb25zdCBpbnRlcm5hbFZhcmlhbnRJZEF0b20gPSBhdG9tPHN0cmluZz4oKTtcbmNvbnN0IGludGVybmFsUHJvZHVjdElkQXRvbSA9IGF0b208c3RyaW5nPigpO1xuY29uc3QgaW50ZXJuYWxQYXJlbnRQcm9kdWN0SWRBdG9tID0gYXRvbTxzdHJpbmc+KCk7XG5jb25zdCBpbnRlcm5hbFByb2R1Y3RVcmxBdG9tID0gYXRvbTxzdHJpbmc+KCk7XG5jb25zdCBpbnRlcm5hbFBscElkQXRvbSA9IGF0b208c3RyaW5nPigpO1xuY29uc3QgaW50ZXJuYWxVcmxBdG9tID0gYXRvbTxzdHJpbmc+KCk7XG5jb25zdCBpbnRlcm5hbFBhZ2VWaXNpdENhdGVnb3J5QXRvbSA9IGF0b208UGFnZVZpc2l0Q2F0ZWdvcnk+KCk7XG5jb25zdCBpbnRlcm5hbFZhcmlhbnRBdG9tID0gYXRvbTxcInBkcFwiIHwgXCJwbHBcIiB8IFwic2VhcmNoXCIgfCBcInBhZ2VfdmlzaXRcIj4oXG4gIFwicGRwXCJcbik7XG5cbmV4cG9ydCBjb25zdCB2YXJpYW50SWRBdG9tID0gYXRvbSgoZ2V0KSA9PiBnZXQoaW50ZXJuYWxWYXJpYW50SWRBdG9tKSk7XG5leHBvcnQgY29uc3QgcHJvZHVjdElkQXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsUHJvZHVjdElkQXRvbSkpO1xuZXhwb3J0IGNvbnN0IHBhcmVudFByb2R1Y3RJZEF0b20gPSBhdG9tKChnZXQpID0+XG4gIGdldChpbnRlcm5hbFBhcmVudFByb2R1Y3RJZEF0b20pXG4pO1xuZXhwb3J0IGNvbnN0IHByb2R1Y3RVcmxBdG9tID0gYXRvbSgoZ2V0KSA9PiBnZXQoaW50ZXJuYWxQcm9kdWN0VXJsQXRvbSkpO1xuZXhwb3J0IGNvbnN0IHBscElkQXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsUGxwSWRBdG9tKSk7XG5leHBvcnQgY29uc3QgdXJsQXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsVXJsQXRvbSkpO1xuZXhwb3J0IGNvbnN0IHBhZ2VWaXNpdENhdGVnb3J5QXRvbSA9IGF0b20oKGdldCkgPT5cbiAgZ2V0KGludGVybmFsUGFnZVZpc2l0Q2F0ZWdvcnlBdG9tKVxuKTtcbmV4cG9ydCBjb25zdCB2YXJpYW50QXRvbSA9IGF0b20oKGdldCkgPT4gZ2V0KGludGVybmFsVmFyaWFudEF0b20pKTtcbmV4cG9ydCBjb25zdCBoYXNQYXJzZWRWYXJpYW50SW5mb0F0b20gPSBhdG9tKGZhbHNlKTtcblxuZXhwb3J0IGNvbnN0IHZhcmlhbnRJbmZvQXRvbSA9IGF0b20oXG4gIChnZXQpOiBWYXJpYW50SW5mbyA9PiB7XG4gICAgY29uc3QgdmFyaWFudCA9IGdldCh2YXJpYW50QXRvbSk7XG4gICAgaWYgKHZhcmlhbnQgPT09IFwicGRwXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhcmlhbnRJZDogZ2V0KHZhcmlhbnRJZEF0b20pLFxuICAgICAgICB2YXJpYW50LFxuICAgICAgICBwcm9kdWN0SWQ6IGdldChwcm9kdWN0SWRBdG9tKSxcbiAgICAgICAgcGFyZW50UHJvZHVjdElkOiBnZXQocGFyZW50UHJvZHVjdElkQXRvbSksXG4gICAgICAgIHVybDogZ2V0KHVybEF0b20pLFxuICAgICAgfSBhcyBQRFBWYXJpYW50SW5mbztcbiAgICB9XG4gICAgaWYgKHZhcmlhbnQgPT09IFwicGxwXCIpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhcmlhbnRJZDogZ2V0KHZhcmlhbnRJZEF0b20pLFxuICAgICAgICB2YXJpYW50LFxuICAgICAgICBwbHBJZDogZ2V0KHBscElkQXRvbSksXG4gICAgICAgIHVybDogZ2V0KHVybEF0b20pLFxuICAgICAgfSBhcyBQTFBWYXJpYW50SW5mbztcbiAgICB9XG4gICAgaWYgKHZhcmlhbnQgPT09IFwicGFnZV92aXNpdFwiKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB2YXJpYW50SWQ6IGdldCh2YXJpYW50SWRBdG9tKSxcbiAgICAgICAgdmFyaWFudCxcbiAgICAgICAgdXJsOiBnZXQodXJsQXRvbSksXG4gICAgICAgIHBhZ2VWaXNpdENhdGVnb3J5OiBnZXQocGFnZVZpc2l0Q2F0ZWdvcnlBdG9tKSxcbiAgICAgIH0gYXMgUGFnZVZpc2l0VmFyaWFudEluZm87XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWQgdmFyaWFudEluZm8gZGV0YWlsc1wiKTtcbiAgfSxcbiAgKF8sIHNldCwgbmV3VmFyaWFudDogVmFyaWFudEluZm8pID0+IHtcbiAgICBzZXQoaW50ZXJuYWxWYXJpYW50QXRvbSwgbmV3VmFyaWFudC52YXJpYW50KTtcbiAgICBzZXQoaW50ZXJuYWxWYXJpYW50SWRBdG9tLCBuZXdWYXJpYW50LnZhcmlhbnRJZCk7XG4gICAgaWYgKG5ld1ZhcmlhbnQudmFyaWFudCA9PT0gXCJwZHBcIikge1xuICAgICAgc2V0KGludGVybmFsUHJvZHVjdElkQXRvbSwgbmV3VmFyaWFudC5wcm9kdWN0SWQpO1xuICAgICAgc2V0KGludGVybmFsUGFyZW50UHJvZHVjdElkQXRvbSwgbmV3VmFyaWFudC5wYXJlbnRQcm9kdWN0SWQpO1xuICAgICAgc2V0KGludGVybmFsVXJsQXRvbSwgbmV3VmFyaWFudC51cmwpO1xuICAgIH1cbiAgICBpZiAobmV3VmFyaWFudC52YXJpYW50ID09PSBcInBscFwiKSB7XG4gICAgICBzZXQoaW50ZXJuYWxQbHBJZEF0b20sIG5ld1ZhcmlhbnQucGxwSWQpO1xuICAgICAgc2V0KGludGVybmFsVXJsQXRvbSwgbmV3VmFyaWFudC51cmwpO1xuICAgIH1cbiAgICBpZiAobmV3VmFyaWFudC52YXJpYW50ID09PSBcInBhZ2VfdmlzaXRcIikge1xuICAgICAgc2V0KGludGVybmFsVXJsQXRvbSwgbmV3VmFyaWFudC51cmwpO1xuICAgICAgc2V0KGludGVybmFsUGFnZVZpc2l0Q2F0ZWdvcnlBdG9tLCBuZXdWYXJpYW50LnBhZ2VWaXNpdENhdGVnb3J5KTtcbiAgICB9XG4gIH1cbik7XG4iLCJpbXBvcnQge1xuICBDb250ZXh0RW52RW51bSxcbiAgQ29udGV4dFNvdXJjZUVudW0sXG59IGZyb20gXCJAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnRcIjtcbmltcG9ydCB7IGF0b20gfSBmcm9tIFwiam90YWlcIjtcbmltcG9ydCB7IGF0b21XaXRoU3RvcmFnZSB9IGZyb20gXCJqb3RhaS91dGlsc1wiO1xuaW1wb3J0IHsgVmFyaWFudEluZm8gfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL21vZGVsc1wiO1xuaW1wb3J0IHsgVXNlcklkZW50aXR5Q29udGV4dFR5cGUgfSBmcm9tIFwic3JjL2NvbnRleHRzL3VzZXJJZGVudGl0eUNvbnRleHQvdXNlcklkZW50aXR5Q29udGV4dFwiO1xuaW1wb3J0IHsgdmFyaWFudEluZm9BdG9tIH0gZnJvbSBcInNyYy9hdG9tcy9hcHAvdmFyaWFudFwiO1xuaW1wb3J0IHsgdjQgYXMgdXVpZCB9IGZyb20gXCJ1dWlkXCI7XG5pbXBvcnQgeyBjb250ZXh0U291cmNlQXRvbSB9IGZyb20gXCIuLi9lbnZpdmUvZW52aXZlQ29uZmlnXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwRGV0YWlscyB7XG4gIG9yZ0lkOiBzdHJpbmc7XG4gIG9yZ1Nob3J0TmFtZTogc3RyaW5nO1xuICBjaGF0SWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIHNvdXJjZTogQ29udGV4dFNvdXJjZUVudW07XG4gIGVudjogQ29udGV4dEVudkVudW07XG4gIHZhcmlhbnRJbmZvOiBWYXJpYW50SW5mbztcbn1cblxuZXhwb3J0IHsgdmFyaWFudEluZm9BdG9tIH0gZnJvbSBcIi4vdmFyaWFudFwiO1xuXG5jb25zdCBpbnRlcm5hbFVzZXJJZEF0b20gPSBhdG9tPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuZXhwb3J0IGNvbnN0IHVzZXJJZEF0b20gPSBhdG9tKFxuICAoZ2V0KSA9PiB7XG4gICAgY29uc3QgbWF5YmVVc2VySWQgPSBnZXQoaW50ZXJuYWxVc2VySWRBdG9tKTtcblxuICAgIGlmIChtYXliZVVzZXJJZCkge1xuICAgICAgcmV0dXJuIG1heWJlVXNlcklkO1xuICAgIH1cblxuICAgIHJldHVybiBnZXQodXNlcklkZW50aXR5QXRvbSk/LmdldFVzZXJJZE9yRGVmYXVsdCgpID8/IFwiXCI7XG4gIH0sXG4gIChfLCBzZXQsIHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpID0+IHtcbiAgICBzZXQoaW50ZXJuYWxVc2VySWRBdG9tLCB2YWx1ZSk7XG4gIH1cbik7XG5cbmV4cG9ydCBjb25zdCB1c2VySWRlbnRpdHlBdG9tID0gYXRvbTxVc2VySWRlbnRpdHlDb250ZXh0VHlwZSB8IHVuZGVmaW5lZD4oXG4gIHVuZGVmaW5lZFxuKTtcblxuZXhwb3J0IGNvbnN0IGFwcFNvdXJjZUF0b20gPSBhdG9tPENvbnRleHRTb3VyY2VFbnVtPihcbiAgKGdldCk6IENvbnRleHRTb3VyY2VFbnVtID0+IGdldChjb250ZXh0U291cmNlQXRvbSkgPz8gQ29udGV4dFNvdXJjZUVudW0uQXBwXG4pO1xuZXhwb3J0IGNvbnN0IGNoYXRJZEF0b20gPSBhdG9tV2l0aFN0b3JhZ2U8c3RyaW5nPihcbiAgXCJ2MS1zcGlmZnktY2hhdC1zZXNzaW9uLWlkXCIsXG4gIHV1aWQoKSxcbiAgdW5kZWZpbmVkLFxuICB7XG4gICAgZ2V0T25Jbml0OiB0cnVlLFxuICB9XG4pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBK0dBLE1BQU0saUNBQWlDLGdCQUNyQyx1QkFDQSxRQUNBLG9CQUNBLEVBQ0UsV0FBVyxNQUNaLENBQ0Y7QUFFRCxNQUFhLGtCQUFrQixNQUM1QixRQUEwQjtDQUN6QixNQUFNLG1CQUFtQixJQUFJLCtCQUErQjtBQUM1RCxLQUFJLG9CQUFvQixLQUN0QixRQUFPLEVBQUU7QUFFWCxRQUFPLEtBQUssTUFBTSxpQkFBaUI7SUFHbkMsS0FDQSxLQUNBLFVBQ0c7Q0FHSCxNQUFNLFdBQVc7RUFBRSxHQURFLElBQUksZ0JBQWdCO0dBQ0osTUFBTSxNQUFNLE1BQU07RUFBVTtBQUVqRSxLQUFJLGdDQUFnQyxLQUFLLFVBQVUsU0FBUyxDQUFDO0VBRWhFO0FBRUQsTUFBTSxvQ0FBb0MsZ0JBQ3hDLDBCQUNBLFFBQ0Esb0JBQ0EsRUFDRSxXQUFXLE1BQ1osQ0FDRjtBQUNELE1BQU0sNkJBQTZCLEtBQWlDLE9BQVU7QUFFOUUsTUFBTSx5QkFBeUIsTUFBTSxR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