@envive-ai/react-hooks 0.1.6 → 0.1.8

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 (686) hide show
  1. package/dist/NewOrgConfig-BU6uJT74.js +15 -0
  2. package/dist/NewOrgConfig-DmidHiyj.cjs +20 -0
  3. package/dist/SystemSettingsContext-BbobkM82.cjs +20 -0
  4. package/dist/SystemSettingsContext-gtrccL_q.js +13 -0
  5. package/dist/TrackComponentVisibleEvent-CqjMiZCS.cjs +59 -0
  6. package/dist/TrackComponentVisibleEvent-D9kpqKM4.js +52 -0
  7. package/dist/amplitudeContext-B73xamNe.d.cts +52 -0
  8. package/dist/amplitudeContext-BhhYPJSL.d.ts +52 -0
  9. package/dist/amplitudeContext-Dr1jHI13.cjs +309 -0
  10. package/dist/amplitudeContext-YRS1QOO3.js +287 -0
  11. package/dist/api-DYjHj_hR.cjs +239 -0
  12. package/dist/api-d5uWvb3-.js +166 -0
  13. package/dist/{app-CjsQ2_n-.js → app-B9r0MF9n.js} +7 -7
  14. package/dist/{app-CnKRZ9RW.cjs → app-Bgr-mAvr.cjs} +10 -10
  15. package/dist/application/models/graphql/index.cjs +2 -1
  16. package/dist/application/models/graphql/index.d.ts +1 -1
  17. package/dist/application/models/graphql/index.js +2 -1
  18. package/dist/application/models/guards/api/index.cjs +3 -1
  19. package/dist/application/models/guards/api/index.d.ts +2 -2
  20. package/dist/application/models/guards/api/index.js +3 -1
  21. package/dist/application/models/guards/utils.cjs +3 -0
  22. package/dist/application/models/guards/utils.d.cts +2 -0
  23. package/dist/application/models/guards/utils.d.ts +2 -0
  24. package/dist/application/models/guards/utils.js +3 -0
  25. package/dist/application/models/index.cjs +13 -10
  26. package/dist/application/models/index.d.cts +9 -4
  27. package/dist/application/models/index.d.ts +12 -7
  28. package/dist/application/models/index.js +11 -7
  29. package/dist/application/models/utilityTypes/index.cjs +1 -1
  30. package/dist/application/models/utilityTypes/index.d.ts +1 -1
  31. package/dist/application/models/utilityTypes/index.js +1 -1
  32. package/dist/application/models/variantInfo/index.cjs +1 -1
  33. package/dist/application/models/variantInfo/index.d.cts +1 -1
  34. package/dist/application/models/variantInfo/index.d.ts +1 -1
  35. package/dist/application/models/variantInfo/index.js +1 -1
  36. package/dist/application/utils/index.cjs +47 -40
  37. package/dist/application/utils/index.d.cts +13 -8
  38. package/dist/application/utils/index.d.ts +15 -10
  39. package/dist/application/utils/index.js +20 -13
  40. package/dist/{atomStore-D8pjE1vL.js → atomStore-BuopbV9k.js} +1 -1
  41. package/dist/{atomStore-B4jIaDPd.cjs → atomStore-CZKe3itM.cjs} +1 -1
  42. package/dist/atoms/app/index.cjs +14 -9
  43. package/dist/atoms/app/index.d.cts +16 -11
  44. package/dist/atoms/app/index.d.ts +19 -14
  45. package/dist/atoms/app/index.js +14 -9
  46. package/dist/atoms/atomStore/index.cjs +2 -2
  47. package/dist/atoms/atomStore/index.d.cts +1 -1
  48. package/dist/atoms/atomStore/index.js +2 -2
  49. package/dist/atoms/chat/index.cjs +35 -28
  50. package/dist/atoms/chat/index.d.cts +36 -31
  51. package/dist/atoms/chat/index.d.ts +39 -34
  52. package/dist/atoms/chat/index.js +21 -14
  53. package/dist/atoms/globalSearch/index.cjs +1 -1
  54. package/dist/atoms/globalSearch/index.d.cts +5 -5
  55. package/dist/atoms/globalSearch/index.d.ts +6 -6
  56. package/dist/atoms/globalSearch/index.js +1 -1
  57. package/dist/atoms/org/index.cjs +6 -14
  58. package/dist/atoms/org/index.d.cts +28 -32
  59. package/dist/atoms/org/index.d.ts +31 -35
  60. package/dist/atoms/org/index.js +5 -11
  61. package/dist/atoms/search/index.cjs +46 -34
  62. package/dist/atoms/search/index.d.cts +10 -4
  63. package/dist/atoms/search/index.d.ts +13 -7
  64. package/dist/atoms/search/index.js +28 -16
  65. package/dist/atoms/search/types.cjs +5 -0
  66. package/dist/atoms/search/types.d.cts +2 -0
  67. package/dist/atoms/search/types.d.ts +2 -0
  68. package/dist/atoms/search/types.js +3 -0
  69. package/dist/atoms/search/utils.cjs +3 -0
  70. package/dist/atoms/search/utils.d.cts +5 -0
  71. package/dist/atoms/search/utils.d.ts +5 -0
  72. package/dist/atoms/search/utils.js +3 -0
  73. package/dist/cdnContext-CVgXkdV2.cjs +53 -0
  74. package/dist/cdnContext-DdE6VPIF.js +38 -0
  75. package/dist/chat-BNDYKsqF.js +258 -0
  76. package/dist/{chat-BubCW1as.cjs → chat-BkjIKhc5.cjs} +1 -1
  77. package/dist/chat-Br5FhtRs.cjs +394 -0
  78. package/dist/{chat-CV6MXeID.js → chat-CgLypC3w.js} +1 -1
  79. package/dist/chatElementDisplayLocation-BwiXrkN7.d.ts +25 -0
  80. package/dist/chatElementDisplayLocation-DWmfNX_u.d.cts +25 -0
  81. package/dist/chatSearch-BiF2__V0.js +295 -0
  82. package/dist/chatSearch-BrzfJOto.cjs +418 -0
  83. package/dist/chatState-BDsqKE-B.cjs +120 -0
  84. package/dist/chatState-ie771Hwy.js +34 -0
  85. package/dist/commerce-api-Dz1jxPOJ.js +311 -0
  86. package/dist/commerce-api-KoiUki51.cjs +318 -0
  87. package/dist/{components-Cw9WjA6g.cjs → components-Cby-Cma3.cjs} +1 -1
  88. package/dist/{components-B4T3Uzth.js → components-D1mg1-Br.js} +1 -1
  89. package/dist/config/locators/components/chat/index.cjs +1 -1
  90. package/dist/config/locators/components/chat/index.d.cts +1 -1
  91. package/dist/config/locators/components/chat/index.d.ts +1 -1
  92. package/dist/config/locators/components/chat/index.js +1 -1
  93. package/dist/config/locators/components/chat/variants/index.d.cts +1 -1
  94. package/dist/config/locators/components/chat/variants/index.d.ts +1 -1
  95. package/dist/config/locators/components/index.cjs +1 -1
  96. package/dist/config/locators/components/index.d.cts +1 -1
  97. package/dist/config/locators/components/index.d.ts +1 -1
  98. package/dist/config/locators/components/index.js +1 -1
  99. package/dist/config/locators/components/search/index.d.cts +1 -1
  100. package/dist/config/locators/index.cjs +42 -22
  101. package/dist/config/locators/index.d.cts +2 -2
  102. package/dist/config/locators/index.d.ts +3 -3
  103. package/dist/config/locators/index.js +25 -5
  104. package/dist/contexts/amplitudeContext/index.cjs +22 -0
  105. package/dist/contexts/amplitudeContext/index.d.cts +2 -0
  106. package/dist/contexts/amplitudeContext/index.d.ts +2 -0
  107. package/dist/contexts/amplitudeContext/index.js +20 -0
  108. package/dist/contexts/cdnContext/index.cjs +7 -0
  109. package/dist/contexts/cdnContext/index.d.cts +15 -0
  110. package/dist/contexts/cdnContext/index.d.ts +15 -0
  111. package/dist/contexts/cdnContext/index.js +6 -0
  112. package/dist/contexts/chatContext/index.cjs +331 -0
  113. package/dist/contexts/chatContext/index.d.cts +15 -0
  114. package/dist/contexts/chatContext/index.d.ts +15 -0
  115. package/dist/contexts/chatContext/index.js +324 -0
  116. package/dist/contexts/enviveConfigContext/index.cjs +7 -0
  117. package/dist/contexts/enviveConfigContext/index.d.cts +30 -0
  118. package/dist/contexts/enviveConfigContext/index.d.ts +30 -0
  119. package/dist/contexts/enviveConfigContext/index.js +6 -0
  120. package/dist/contexts/enviveCssContext/index.cjs +66 -0
  121. package/dist/contexts/enviveCssContext/index.d.cts +10 -0
  122. package/dist/contexts/enviveCssContext/index.d.ts +10 -0
  123. package/dist/contexts/enviveCssContext/index.js +63 -0
  124. package/dist/contexts/featureFlagContext/index.cjs +107 -0
  125. package/dist/contexts/featureFlagContext/index.d.cts +20 -0
  126. package/dist/contexts/featureFlagContext/index.d.ts +20 -0
  127. package/dist/contexts/featureFlagContext/index.js +103 -0
  128. package/dist/contexts/featureFlagServiceContext/index.cjs +6 -0
  129. package/dist/contexts/featureFlagServiceContext/index.d.cts +5 -0
  130. package/dist/contexts/featureFlagServiceContext/index.d.ts +5 -0
  131. package/dist/contexts/featureFlagServiceContext/index.js +5 -0
  132. package/dist/contexts/graphqlContext/index.cjs +16 -0
  133. package/dist/contexts/graphqlContext/index.d.cts +13 -0
  134. package/dist/contexts/graphqlContext/index.d.ts +13 -0
  135. package/dist/contexts/graphqlContext/index.js +15 -0
  136. package/dist/contexts/localStorageContext/index.cjs +6 -0
  137. package/dist/contexts/localStorageContext/index.d.cts +30 -0
  138. package/dist/contexts/localStorageContext/index.d.ts +30 -0
  139. package/dist/contexts/localStorageContext/index.js +4 -0
  140. package/dist/contexts/newOrgConfigContext/index.cjs +20 -0
  141. package/dist/contexts/newOrgConfigContext/index.d.cts +31 -0
  142. package/dist/contexts/newOrgConfigContext/index.d.ts +31 -0
  143. package/dist/contexts/newOrgConfigContext/index.js +19 -0
  144. package/dist/contexts/searchContext/index.cjs +24 -0
  145. package/dist/contexts/searchContext/index.d.cts +16 -0
  146. package/dist/contexts/searchContext/index.d.ts +16 -0
  147. package/dist/contexts/searchContext/index.js +23 -0
  148. package/dist/contexts/sessionStorageContext/index.cjs +5 -0
  149. package/dist/contexts/sessionStorageContext/index.d.cts +15 -0
  150. package/dist/contexts/sessionStorageContext/index.d.ts +15 -0
  151. package/dist/contexts/sessionStorageContext/index.js +4 -0
  152. package/dist/contexts/shopifyUrlContext/index.cjs +5 -0
  153. package/dist/contexts/shopifyUrlContext/index.d.cts +20 -0
  154. package/dist/contexts/shopifyUrlContext/index.d.ts +20 -0
  155. package/dist/contexts/shopifyUrlContext/index.js +4 -0
  156. package/dist/contexts/systemSettingsContext/index.cjs +8 -0
  157. package/dist/contexts/systemSettingsContext/index.d.cts +37 -0
  158. package/dist/contexts/systemSettingsContext/index.d.ts +37 -0
  159. package/dist/contexts/systemSettingsContext/index.js +6 -0
  160. package/dist/contexts/types.cjs +7 -0
  161. package/dist/contexts/types.d.cts +4 -0
  162. package/dist/contexts/types.d.ts +4 -0
  163. package/dist/contexts/types.js +3 -0
  164. package/dist/contexts/userIdentityContext/index.cjs +27 -0
  165. package/dist/contexts/userIdentityContext/index.d.cts +2 -0
  166. package/dist/contexts/userIdentityContext/index.d.ts +2 -0
  167. package/dist/contexts/userIdentityContext/index.js +26 -0
  168. package/dist/domObserver-B19-69gW.js +285 -0
  169. package/dist/domObserver-CwieVNgj.cjs +304 -0
  170. package/dist/enviveConfig-BQB14yuH.js +62 -0
  171. package/dist/enviveConfig-DAA9sozZ.cjs +130 -0
  172. package/dist/enviveConfigContext-BCpBKqsz.js +45 -0
  173. package/dist/enviveConfigContext-Btg5JUMG.cjs +60 -0
  174. package/dist/events/index.cjs +1 -1
  175. package/dist/events/index.d.ts +1 -1
  176. package/dist/events/index.js +1 -1
  177. package/dist/{events-BrLpaNxh.js → events-BHJJjPDN.js} +1 -1
  178. package/dist/{events-DwT6cEwI.cjs → events-B_fJZf9E.cjs} +1 -1
  179. package/dist/featureFlagServiceContext-Bcx5yh4S.cjs +56 -0
  180. package/dist/featureFlagServiceContext-Cpw8omUr.d.ts +23 -0
  181. package/dist/featureFlagServiceContext-Cvn6fcdB.d.cts +23 -0
  182. package/dist/featureFlagServiceContext-_tXX5iro.js +42 -0
  183. package/dist/featureGates-2Zea2D2S.js +27 -0
  184. package/dist/featureGates-BY2Zy7x_.cjs +33 -0
  185. package/dist/frontendConfig-DnMZfvcA.d.cts +857 -0
  186. package/dist/frontendConfig-Dqxbqo8G.d.ts +857 -0
  187. package/dist/{globalSearch-BFvEg53C.cjs → globalSearch-C94-vEVh.cjs} +1 -1
  188. package/dist/{globalSearch-B6THR7Jx.js → globalSearch-Dlbnfasm.js} +1 -1
  189. package/dist/graphql-DRLWdYEk.js +36 -0
  190. package/dist/graphql-xPDT7ZkK.cjs +53 -0
  191. package/dist/graphqlConfig-B4ddz1vH.cjs +39 -0
  192. package/dist/graphqlConfig-BnjOdeX7.js +14 -0
  193. package/dist/graphqlContext-B-9g2vOb.js +96 -0
  194. package/dist/graphqlContext-B7PEKDJs.cjs +111 -0
  195. package/dist/hooks/AmplitudeOperations/index.cjs +22 -0
  196. package/dist/hooks/AmplitudeOperations/index.d.cts +12 -0
  197. package/dist/hooks/AmplitudeOperations/index.d.ts +12 -0
  198. package/dist/hooks/AmplitudeOperations/index.js +22 -0
  199. package/dist/hooks/AppDetails/index.cjs +19 -0
  200. package/dist/hooks/AppDetails/index.d.cts +27 -0
  201. package/dist/hooks/AppDetails/index.d.ts +27 -0
  202. package/dist/hooks/AppDetails/index.js +19 -0
  203. package/dist/hooks/BlockBackButton/index.cjs +29 -0
  204. package/dist/hooks/BlockBackButton/index.d.cts +5 -0
  205. package/dist/hooks/BlockBackButton/index.d.ts +5 -0
  206. package/dist/hooks/BlockBackButton/index.js +27 -0
  207. package/dist/hooks/CdnOperations/index.cjs +24 -0
  208. package/dist/hooks/CdnOperations/index.d.cts +7 -0
  209. package/dist/hooks/CdnOperations/index.d.ts +7 -0
  210. package/dist/hooks/CdnOperations/index.js +22 -0
  211. package/dist/hooks/ChatToggle/index.cjs +64 -0
  212. package/dist/hooks/ChatToggle/index.d.cts +12 -0
  213. package/dist/hooks/ChatToggle/index.d.ts +12 -0
  214. package/dist/hooks/ChatToggle/index.js +62 -0
  215. package/dist/hooks/ChatToggleAnalytics/index.cjs +38 -0
  216. package/dist/hooks/ChatToggleAnalytics/index.d.cts +9 -0
  217. package/dist/hooks/ChatToggleAnalytics/index.d.ts +9 -0
  218. package/dist/hooks/ChatToggleAnalytics/index.js +36 -0
  219. package/dist/hooks/CustomerSupportHandoff/index.cjs +36 -0
  220. package/dist/hooks/CustomerSupportHandoff/index.d.cts +16 -0
  221. package/dist/hooks/CustomerSupportHandoff/index.d.ts +16 -0
  222. package/dist/hooks/CustomerSupportHandoff/index.js +34 -0
  223. package/dist/hooks/Debounce/index.cjs +3 -0
  224. package/dist/hooks/Debounce/index.d.cts +5 -0
  225. package/dist/hooks/Debounce/index.d.ts +5 -0
  226. package/dist/hooks/Debounce/index.js +3 -0
  227. package/dist/hooks/ElementObserver/index.cjs +179 -0
  228. package/dist/hooks/ElementObserver/index.d.cts +29 -0
  229. package/dist/hooks/ElementObserver/index.d.ts +29 -0
  230. package/dist/hooks/ElementObserver/index.js +177 -0
  231. package/dist/hooks/GrabAndScroll/index.cjs +99 -0
  232. package/dist/hooks/GrabAndScroll/index.d.cts +14 -0
  233. package/dist/hooks/GrabAndScroll/index.d.ts +14 -0
  234. package/dist/hooks/GrabAndScroll/index.js +97 -0
  235. package/dist/hooks/GraphQLConfig/index.cjs +17 -0
  236. package/dist/hooks/GraphQLConfig/index.d.cts +15 -0
  237. package/dist/hooks/GraphQLConfig/index.d.ts +15 -0
  238. package/dist/hooks/GraphQLConfig/index.js +16 -0
  239. package/dist/hooks/IdentifyUser/index.cjs +60 -0
  240. package/dist/hooks/IdentifyUser/index.d.cts +10 -0
  241. package/dist/hooks/IdentifyUser/index.d.ts +10 -0
  242. package/dist/hooks/IdentifyUser/index.js +58 -0
  243. package/dist/hooks/ImageResolver/index.cjs +55 -0
  244. package/dist/hooks/ImageResolver/index.d.cts +7 -0
  245. package/dist/hooks/ImageResolver/index.d.ts +7 -0
  246. package/dist/hooks/ImageResolver/index.js +53 -0
  247. package/dist/hooks/Intersection/index.cjs +3 -0
  248. package/dist/hooks/Intersection/index.d.cts +7 -0
  249. package/dist/hooks/Intersection/index.d.ts +7 -0
  250. package/dist/hooks/Intersection/index.js +3 -0
  251. package/dist/hooks/IsSmallScreen/index.cjs +22 -0
  252. package/dist/hooks/IsSmallScreen/index.d.cts +5 -0
  253. package/dist/hooks/IsSmallScreen/index.d.ts +5 -0
  254. package/dist/hooks/IsSmallScreen/index.js +20 -0
  255. package/dist/hooks/LocalStorageOperations/index.cjs +79 -0
  256. package/dist/hooks/LocalStorageOperations/index.d.cts +17 -0
  257. package/dist/hooks/LocalStorageOperations/index.d.ts +17 -0
  258. package/dist/hooks/LocalStorageOperations/index.js +74 -0
  259. package/dist/hooks/MessageFilter/index.cjs +54 -0
  260. package/dist/hooks/MessageFilter/index.d.cts +30 -0
  261. package/dist/hooks/MessageFilter/index.d.ts +30 -0
  262. package/dist/hooks/MessageFilter/index.js +54 -0
  263. package/dist/hooks/MessageScrollObserver/index.cjs +36 -0
  264. package/dist/hooks/MessageScrollObserver/index.d.cts +5 -0
  265. package/dist/hooks/MessageScrollObserver/index.d.ts +5 -0
  266. package/dist/hooks/MessageScrollObserver/index.js +34 -0
  267. package/dist/hooks/NewOrgConfig/index.cjs +20 -0
  268. package/dist/hooks/NewOrgConfig/index.d.cts +23 -0
  269. package/dist/hooks/NewOrgConfig/index.d.ts +23 -0
  270. package/dist/hooks/NewOrgConfig/index.js +20 -0
  271. package/dist/hooks/Search/index.cjs +326 -0
  272. package/dist/hooks/Search/index.d.cts +61 -0
  273. package/dist/hooks/Search/index.d.ts +61 -0
  274. package/dist/hooks/Search/index.js +323 -0
  275. package/dist/hooks/SearchOperations/index.cjs +102 -0
  276. package/dist/hooks/SearchOperations/index.d.cts +22 -0
  277. package/dist/hooks/SearchOperations/index.d.ts +22 -0
  278. package/dist/hooks/SearchOperations/index.js +99 -0
  279. package/dist/hooks/SessionStorageOperations/index.cjs +30 -0
  280. package/dist/hooks/SessionStorageOperations/index.d.cts +8 -0
  281. package/dist/hooks/SessionStorageOperations/index.d.ts +8 -0
  282. package/dist/hooks/SessionStorageOperations/index.js +28 -0
  283. package/dist/hooks/ShopifyUrlOperations/index.cjs +53 -0
  284. package/dist/hooks/ShopifyUrlOperations/index.d.cts +23 -0
  285. package/dist/hooks/ShopifyUrlOperations/index.d.ts +23 -0
  286. package/dist/hooks/ShopifyUrlOperations/index.js +49 -0
  287. package/dist/hooks/SnapCalculator/index.cjs +29 -0
  288. package/dist/hooks/SnapCalculator/index.d.cts +12 -0
  289. package/dist/hooks/SnapCalculator/index.d.ts +12 -0
  290. package/dist/hooks/SnapCalculator/index.js +27 -0
  291. package/dist/hooks/SystemSettingsContext/index.cjs +7 -0
  292. package/dist/hooks/SystemSettingsContext/index.d.cts +23 -0
  293. package/dist/hooks/SystemSettingsContext/index.d.ts +23 -0
  294. package/dist/hooks/SystemSettingsContext/index.js +7 -0
  295. package/dist/hooks/TrackComponentVisibleEvent/index.cjs +22 -0
  296. package/dist/hooks/TrackComponentVisibleEvent/index.d.cts +18 -0
  297. package/dist/hooks/TrackComponentVisibleEvent/index.d.ts +18 -0
  298. package/dist/hooks/TrackComponentVisibleEvent/index.js +22 -0
  299. package/dist/hooks/UpdateAnalyticsProps/index.cjs +62 -0
  300. package/dist/hooks/UpdateAnalyticsProps/index.d.cts +9 -0
  301. package/dist/hooks/UpdateAnalyticsProps/index.d.ts +9 -0
  302. package/dist/hooks/UpdateAnalyticsProps/index.js +59 -0
  303. package/dist/hooks/utils.cjs +8 -0
  304. package/dist/hooks/utils.d.cts +13 -0
  305. package/dist/hooks/utils.d.ts +13 -0
  306. package/dist/hooks/utils.js +3 -0
  307. package/dist/index-B9HUPS_i.d.cts +186 -0
  308. package/dist/{index-CcIG01PJ.d.ts → index-BN-3ctk_.d.ts} +2 -2
  309. package/dist/index-BNiYL8h0.d.cts +28 -0
  310. package/dist/{index-BDPWBU3h.d.cts → index-BW6pHibZ.d.cts} +1 -1
  311. package/dist/index-BirtCYN3.d.ts +186 -0
  312. package/dist/index-Bmub8e38.d.cts +1 -1
  313. package/dist/{index-Cqg6ltII.d.ts → index-BoYC9XLW.d.ts} +1 -1
  314. package/dist/index-C9zXP5bg.d.ts +28 -0
  315. package/dist/index-CESxqFso.d.cts +1 -1
  316. package/dist/index-CK_J3QMY.d.ts +676 -0
  317. package/dist/index-C_MIfxF0.d.cts +676 -0
  318. package/dist/index-CiWEYzXl.d.cts +1 -1
  319. package/dist/{index-C6KdON7d.d.ts → index-Da0UzyI9.d.ts} +1 -1
  320. package/dist/{index-ylUiJvnr.d.ts → index-Dr_c2DDq.d.ts} +1 -1
  321. package/dist/{index-PGF8BvxQ.d.ts → index-DsiilEj-.d.ts} +1 -1
  322. package/dist/{index-Byb45OPg.d.cts → index-MOOZ2oxZ.d.cts} +1 -1
  323. package/dist/{index-DOii3C6b.d.ts → index-ghzD_356.d.ts} +1 -1
  324. package/dist/{index-B0NW9KTj.d.cts → index-hdbCEjYy.d.cts} +1 -1
  325. package/dist/interceptors/index.cjs +2 -1
  326. package/dist/interceptors/index.d.cts +10 -10
  327. package/dist/interceptors/index.d.ts +13 -13
  328. package/dist/interceptors/index.js +2 -1
  329. package/dist/interceptors/types.cjs +1 -0
  330. package/dist/interceptors/types.d.cts +13 -0
  331. package/dist/interceptors/types.d.ts +13 -0
  332. package/dist/interceptors/types.js +3 -0
  333. package/dist/localStorageContext-DiTziaPa.js +95 -0
  334. package/dist/localStorageContext-S38L0OSP.cjs +115 -0
  335. package/dist/logger-CkhQayOW.js +20 -0
  336. package/dist/logger-DQ0WfCcD.cjs +26 -0
  337. package/dist/{models-BkXg5eIP.cjs → models-C48U9q70.js} +220 -458
  338. package/dist/models-Ctn-pmug.cjs +1537 -0
  339. package/dist/newOrgConfigAtom-D6R-7HCk.cjs +15 -0
  340. package/dist/newOrgConfigAtom-bn1lnljf.js +8 -0
  341. package/dist/newOrgConfigContext-D3WoaBVU.cjs +68 -0
  342. package/dist/newOrgConfigContext-rWOYz0E8.js +53 -0
  343. package/dist/{nodeSelector-Dm4S-10n.d.cts → nodeSelector-B3bPtEjX.d.cts} +1 -1
  344. package/dist/{nodeSelector-BxrS2S_k.d.ts → nodeSelector-D5gjDWZ3.d.ts} +1 -1
  345. package/dist/org-CIhjzxWr.cjs +43 -0
  346. package/dist/org-CeWXnpwF.js +12 -0
  347. package/dist/{orgAnalyticsConfig-ClrFy2qH.js → orgAnalyticsConfig-BC4_sEmn.js} +1 -1
  348. package/dist/{orgAnalyticsConfig-BJ2A1RZ-.cjs → orgAnalyticsConfig-DsGbyFhO.cjs} +1 -1
  349. package/dist/search--NZPZkK3.cjs +205 -0
  350. package/dist/search-BLShhjvR.d.ts +20 -0
  351. package/dist/search-CxZl7iQF.js +126 -0
  352. package/dist/{search-filter-types-fZf91Pdw.d.ts → search-filter-types-DPgeG8FS.d.ts} +1 -1
  353. package/dist/{search-filter-types-DosbseF3.d.cts → search-filter-types-_mprCnBi.d.cts} +1 -1
  354. package/dist/search-y-ioX5Mz.d.cts +20 -0
  355. package/dist/searchContext-C4Glr8Nv.cjs +145 -0
  356. package/dist/searchContext-VnjhV7Lk.js +129 -0
  357. package/dist/searchServiceAdapter-DEv1tTn0.cjs +34 -0
  358. package/dist/searchServiceAdapter-WyCU55NV.js +16 -0
  359. package/dist/sessionStorageContext-BJ05_j7l.cjs +66 -0
  360. package/dist/sessionStorageContext-Dp_bhXQP.js +52 -0
  361. package/dist/shopifyUrlContext-CGqpJl1o.js +61 -0
  362. package/dist/shopifyUrlContext-Cob4L7Dt.cjs +75 -0
  363. package/dist/spiffyWidgets-BuS00VaQ.d.cts +20 -0
  364. package/dist/spiffyWidgets-GILaqHv6.d.ts +20 -0
  365. package/dist/systemSettingsContext-BDKWrrco.cjs +60 -0
  366. package/dist/systemSettingsContext-Dqng3YSZ.js +39 -0
  367. package/dist/{test-types-C9b_OdfO.d.ts → test-types-EzMFw_U3.d.ts} +1 -1
  368. package/dist/{test-types-CgVJtwUr.d.cts → test-types-ThQiO_cc.d.cts} +1 -1
  369. package/dist/types/index.cjs +33 -5
  370. package/dist/types/index.d.cts +2 -2
  371. package/dist/types/index.d.ts +2 -2
  372. package/dist/types/index.js +30 -3
  373. package/dist/types-BUeRbZUk.d.cts +10 -0
  374. package/dist/types-BwNrLPSZ.cjs +106 -0
  375. package/dist/types-CMuTSKrW.d.ts +10 -0
  376. package/dist/types-CS0Hrzja.js +30 -0
  377. package/dist/types-CxObxLKs.cjs +48 -0
  378. package/dist/types-D3uOF0Oy.js +76 -0
  379. package/dist/types-fsXBIQwO.d.ts +51 -0
  380. package/dist/types-zuWLkBJ3.d.cts +51 -0
  381. package/dist/types.d.cts +15 -0
  382. package/dist/types.d.ts +15 -0
  383. package/dist/unsupportedProductExceptions-CKiri_vO.cjs +32 -0
  384. package/dist/unsupportedProductExceptions-ClxlJ6cU.js +20 -0
  385. package/dist/urlsParser-D1nsJgQG.cjs +78 -0
  386. package/dist/urlsParser-DzEetiey.js +42 -0
  387. package/dist/useAmplitudeOperations-BSsyvkQ2.cjs +41 -0
  388. package/dist/useAmplitudeOperations-BottjwT9.js +34 -0
  389. package/dist/useAppDetails-BpiBxS_5.cjs +38 -0
  390. package/dist/useAppDetails-DDNIsM46.js +30 -0
  391. package/dist/useDebounce-BaIp-A1W.cjs +26 -0
  392. package/dist/useDebounce-CxPj9WmE.js +19 -0
  393. package/dist/useGraphQLConfig-DZ0ZannB.js +63 -0
  394. package/dist/useGraphQLConfig-Dw8dDh3T.cjs +76 -0
  395. package/dist/useIntersection-B4J9UhaG.js +21 -0
  396. package/dist/useIntersection-DKWc5MY6.cjs +28 -0
  397. package/dist/{useMessageInterceptor-B87e3yu3.cjs → useMessageInterceptor-CstX10ih.cjs} +3 -3
  398. package/dist/{useMessageInterceptor-Bb7YRaWk.js → useMessageInterceptor-D5oAekXn.js} +2 -2
  399. package/dist/userIdentityContext-D2oFVFzo.d.cts +20 -0
  400. package/dist/userIdentityContext-DPFkCSCu.cjs +125 -0
  401. package/dist/userIdentityContext-Z65zM-Ae.js +109 -0
  402. package/dist/userIdentityContext-wYRpgkaJ.d.ts +20 -0
  403. package/dist/utilityTypes-DynzxjK3.js +1 -0
  404. package/dist/utilityTypes-xb8SjKSV.cjs +0 -0
  405. package/dist/utils-2SWrJ12w.cjs +29 -0
  406. package/dist/utils-B1xLx9S8.d.ts +15 -0
  407. package/dist/utils-B3x_9JTY.d.cts +15 -0
  408. package/dist/utils-BZtSmwgh.d.cts +22 -0
  409. package/dist/utils-Bcz5kAgP.js +92 -0
  410. package/dist/utils-CEKzBcN2.js +27 -0
  411. package/dist/utils-CMqFfqZx.cjs +130 -0
  412. package/dist/utils-CVovRwlw.js +606 -0
  413. package/dist/utils-CqBxIpEV.js +23 -0
  414. package/dist/utils-CsMbZmRw.cjs +33 -0
  415. package/dist/utils-DzPSXtmD.cjs +715 -0
  416. package/dist/utils-bxOCg2i9.d.ts +22 -0
  417. package/dist/variantInfo-B7IwRpCg.cjs +0 -0
  418. package/dist/variantInfo-BtOYUGWa.js +1 -0
  419. package/package.json +191 -7
  420. package/src/application/models/index.ts +0 -1
  421. package/src/application/utils/analyticsUtils.ts +1 -1
  422. package/src/atoms/amplitude/amplitudeTrackEventAtom.ts +1 -1
  423. package/src/atoms/app/index.ts +1 -1
  424. package/src/atoms/chat/chatState.ts +1 -1
  425. package/src/atoms/chat/replies.ts +1 -1
  426. package/src/atoms/org/graphqlConfig.ts +1 -39
  427. package/src/atoms/org/index.ts +0 -1
  428. package/src/atoms/org/newOrgConfigAtom.ts +2 -6
  429. package/src/contexts/{amplitudeContext.tsx → amplitudeContext/amplitudeContext.tsx} +1 -2
  430. package/src/contexts/amplitudeContext/index.ts +1 -0
  431. package/src/contexts/{cdnContext.tsx → cdnContext/cdnContext.tsx} +1 -1
  432. package/src/contexts/cdnContext/index.ts +1 -0
  433. package/src/contexts/{chatContext.tsx → chatContext/chatContext.tsx} +3 -3
  434. package/src/contexts/chatContext/index.ts +1 -0
  435. package/src/contexts/{enviveConfigContext.tsx → enviveConfigContext/enviveConfigContext.tsx} +1 -1
  436. package/src/contexts/enviveConfigContext/index.ts +1 -0
  437. package/src/contexts/{enviveCssContext.tsx → enviveCssContext/enviveCssContext.tsx} +1 -1
  438. package/src/contexts/enviveCssContext/index.ts +1 -0
  439. package/src/contexts/{featureFlagContext.tsx → featureFlagContext/featureFlagContext.tsx} +1 -1
  440. package/src/contexts/featureFlagContext/index.ts +1 -0
  441. package/src/contexts/featureFlagServiceContext/index.ts +1 -0
  442. package/src/contexts/graphqlContext/index.ts +1 -0
  443. package/src/contexts/localStorageContext/index.ts +1 -0
  444. package/src/contexts/{localStorageContext.tsx → localStorageContext/localStorageContext.tsx} +2 -2
  445. package/src/contexts/newOrgConfigContext/index.ts +1 -0
  446. package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +70 -0
  447. package/src/contexts/searchContext/index.ts +1 -0
  448. package/src/contexts/{searchContext.tsx → searchContext/searchContext.tsx} +5 -5
  449. package/src/contexts/sessionStorageContext/index.ts +1 -0
  450. package/src/contexts/{sessionStorageContext.tsx → sessionStorageContext/sessionStorageContext.tsx} +1 -1
  451. package/src/contexts/shopifyUrlContext/index.ts +1 -0
  452. package/src/contexts/systemSettingsContext/index.ts +1 -0
  453. package/src/contexts/userIdentityContext/index.ts +1 -0
  454. package/src/events/registerAnalyticsListeners.ts +2 -2
  455. package/src/favicon.ico +0 -0
  456. package/src/hooks/AmplitudeOperations/index.ts +1 -0
  457. package/src/hooks/{useAmplitudeOperations.ts → AmplitudeOperations/useAmplitudeOperations.ts} +1 -1
  458. package/src/hooks/AppDetails/index.ts +1 -0
  459. package/src/hooks/{useAppDetails.ts → AppDetails/useAppDetails.ts} +1 -3
  460. package/src/hooks/BlockBackButton/index.ts +1 -0
  461. package/src/hooks/CdnOperations/index.ts +1 -0
  462. package/src/hooks/{useCdnOperations.ts → CdnOperations/useCdnOperations.ts} +1 -1
  463. package/src/hooks/ChatToggle/index.ts +1 -0
  464. package/src/hooks/{useChatToggle.ts → ChatToggle/useChatToggle.ts} +1 -1
  465. package/src/hooks/ChatToggleAnalytics/index.ts +1 -0
  466. package/src/hooks/{useChatToggleAnalytics.ts → ChatToggleAnalytics/useChatToggleAnalytics.ts} +1 -1
  467. package/src/hooks/CustomerSupportHandoff/index.ts +1 -0
  468. package/src/hooks/Debounce/index.ts +1 -0
  469. package/src/hooks/ElementObserver/index.ts +1 -0
  470. package/src/hooks/GrabAndScroll/index.ts +1 -0
  471. package/src/hooks/GraphQLConfig/index.ts +1 -0
  472. package/src/hooks/{useGraphQLConfig.ts → GraphQLConfig/useGraphQLConfig.ts} +1 -1
  473. package/src/hooks/IdentifyUser/index.ts +1 -0
  474. package/src/hooks/{useIdentifyUser.ts → IdentifyUser/useIdentifyUser.ts} +1 -1
  475. package/src/hooks/ImageResolver/index.ts +1 -0
  476. package/src/hooks/Intersection/index.ts +1 -0
  477. package/src/hooks/IsSmallScreen/index.ts +1 -0
  478. package/src/hooks/LocalStorageOperations/index.ts +1 -0
  479. package/src/hooks/{useLocalStorageOperations.ts → LocalStorageOperations/useLocalStorageOperations.ts} +2 -2
  480. package/src/hooks/MessageFilter/index.ts +1 -0
  481. package/src/hooks/MessageScrollObserver/index.ts +1 -0
  482. package/src/hooks/NewOrgConfig/index.ts +1 -0
  483. package/src/hooks/{useNewOrgConfig.ts → NewOrgConfig/useNewOrgConfig.ts} +1 -1
  484. package/src/hooks/Search/index.ts +1 -0
  485. package/src/hooks/{useSearch.tsx → Search/useSearch.tsx} +5 -4
  486. package/src/hooks/SearchOperations/index.ts +1 -0
  487. package/src/hooks/SessionStorageOperations/index.ts +1 -0
  488. package/src/hooks/{useSessionStorageOperations.ts → SessionStorageOperations/useSessionStorageOperations.ts} +1 -1
  489. package/src/hooks/ShopifyUrlOperations/index.ts +1 -0
  490. package/src/hooks/{useShopifyUrlOperations.ts → ShopifyUrlOperations/useShopifyUrlOperations.ts} +1 -1
  491. package/src/hooks/SnapCalculator/index.ts +1 -0
  492. package/src/hooks/SystemSettingsContext/index.ts +1 -0
  493. package/src/hooks/SystemSettingsContext/useSystemSettingsContext.ts +14 -0
  494. package/src/hooks/TrackComponentVisibleEvent/index.ts +1 -0
  495. package/src/hooks/{useTrackComponentVisibleEvent.ts → TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts} +2 -2
  496. package/src/hooks/UpdateAnalyticsProps/index.ts +1 -0
  497. package/src/hooks/{useUpdateAnalyticsProps.ts → UpdateAnalyticsProps/useUpdateAnalyticsProps.ts} +1 -1
  498. package/dist/amplitudeContext-CHzas7Cf.d.cts +0 -52
  499. package/dist/amplitudeContext-D-7fmVh1.cjs +0 -356
  500. package/dist/amplitudeContext-hY3caPC6.js +0 -322
  501. package/dist/amplitudeContext-tJ4y-SzX.d.ts +0 -52
  502. package/dist/api-DjeZXxl_.js +0 -207
  503. package/dist/api-_JaUnIUj.cjs +0 -292
  504. package/dist/bandolier-DYEz4-8C.js +0 -1229
  505. package/dist/bandolier-o_-xrbOV.cjs +0 -1229
  506. package/dist/carpe-CsG5jCcl.cjs +0 -607
  507. package/dist/carpe-DONk00bZ.js +0 -605
  508. package/dist/cdnUtils-32v8bDX9.cjs +0 -16
  509. package/dist/cdnUtils-E4tLBt2g.js +0 -11
  510. package/dist/chat-CO7cRkaq.cjs +0 -506
  511. package/dist/chat-hcRc4RRd.js +0 -285
  512. package/dist/contexts/index.cjs +0 -57
  513. package/dist/contexts/index.d.cts +0 -10
  514. package/dist/contexts/index.d.ts +0 -10
  515. package/dist/contexts/index.js +0 -23
  516. package/dist/contexts-B4ihTBsV.cjs +0 -2980
  517. package/dist/contexts-DGlr7M1o.js +0 -2596
  518. package/dist/coterie-CKB93qfz.cjs +0 -239
  519. package/dist/coterie-DHcj2fRE.js +0 -239
  520. package/dist/custservice-types-Dy0kc9TW.cjs +0 -35
  521. package/dist/custservice-types-mnIunabv.js +0 -23
  522. package/dist/default-BnB4p0Se.cjs +0 -234
  523. package/dist/default-D6f5Dyt7.js +0 -199
  524. package/dist/default-ZKkE5zT4.cjs +0 -4
  525. package/dist/default-legGZJwI.js +0 -4
  526. package/dist/divIds-2dJlU3z8.cjs +0 -117
  527. package/dist/divIds-BUrN2vY-.js +0 -21
  528. package/dist/dreamlandBaby-BiRYYFav.js +0 -346
  529. package/dist/dreamlandBaby-zuvmfzfD.cjs +0 -346
  530. package/dist/embedded-BJLWIriJ.js +0 -23
  531. package/dist/embedded-Dl79TJLC.cjs +0 -131
  532. package/dist/entrypoints-Bs3pn6EV.js +0 -7
  533. package/dist/entrypoints-Dqi5pzWH.cjs +0 -19
  534. package/dist/enviveConfig-BccuzS2a.cjs +0 -240
  535. package/dist/enviveConfig-CzhTz8Aa.js +0 -152
  536. package/dist/fiveCbd-DwTTwC2j.cjs +0 -613
  537. package/dist/fiveCbd-Dz2NouOF.js +0 -613
  538. package/dist/forLoveAndLemons-DqSdyD6S.js +0 -665
  539. package/dist/forLoveAndLemons-Ud6mPrV3.cjs +0 -667
  540. package/dist/graphql-BNW60InJ.cjs +0 -128
  541. package/dist/graphql-CjB8wHzm.js +0 -74
  542. package/dist/graphqlConfig-CYt6tWII.js +0 -30
  543. package/dist/graphqlConfig-DicykC-o.cjs +0 -61
  544. package/dist/greenpan-B_EbPkSP.js +0 -397
  545. package/dist/greenpan-kPE4fJgd.cjs +0 -397
  546. package/dist/grooveLife-Ckuir319.js +0 -342
  547. package/dist/grooveLife-DKSEQp1F.cjs +0 -342
  548. package/dist/homegrownCannabis-BVPa2pqe.js +0 -410
  549. package/dist/homegrownCannabis-BwIAkxuA.cjs +0 -410
  550. package/dist/hooks/index.cjs +0 -63
  551. package/dist/hooks/index.d.cts +0 -314
  552. package/dist/hooks/index.d.ts +0 -314
  553. package/dist/hooks/index.js +0 -23
  554. package/dist/index-BMPtlgac.d.ts +0 -191
  555. package/dist/index-C7pGDl1A.d.ts +0 -1609
  556. package/dist/index-C9lgsCWp.d.cts +0 -203
  557. package/dist/index-Cc-wBCn6.d.ts +0 -203
  558. package/dist/index-DTu2X-YS.d.cts +0 -1609
  559. package/dist/index-OEifcBsm.d.cts +0 -191
  560. package/dist/jackArcher-B39OEIj6.cjs +0 -727
  561. package/dist/jackArcher-BwkWGybC.js +0 -727
  562. package/dist/jordanCraig-CxRH_jLi.js +0 -1786
  563. package/dist/jordanCraig-RwmWw-jM.cjs +0 -1786
  564. package/dist/kindredBravely-D78VwL20.cjs +0 -490
  565. package/dist/kindredBravely-DQDpAzdl.js +0 -490
  566. package/dist/kutFromTheKloth-TcXQkIti.js +0 -369
  567. package/dist/kutFromTheKloth-dXRrNti0.cjs +0 -369
  568. package/dist/larryAndSerges-Bh5XEXsZ.js +0 -262
  569. package/dist/larryAndSerges-COdBzOzu.cjs +0 -262
  570. package/dist/leapsAndRebounds-BbXnqkl5.cjs +0 -360
  571. package/dist/leapsAndRebounds-mjCaH1k-.js +0 -360
  572. package/dist/longevityrx-DdV3v26F.cjs +0 -320
  573. package/dist/longevityrx-DfPDfvAt.js +0 -320
  574. package/dist/lookOptic-DgXFGBPP.cjs +0 -282
  575. package/dist/lookOptic-FgVW1afF.js +0 -282
  576. package/dist/mantraBrand-C5gVm3rk.cjs +0 -750
  577. package/dist/mantraBrand-uV8HCDR8.js +0 -750
  578. package/dist/medterra-BtDpr1Hw.cjs +0 -583
  579. package/dist/medterra-DgzE7-mj.js +0 -583
  580. package/dist/modells-CJjsxOIR.js +0 -484
  581. package/dist/modells-Ck5KbRFj.cjs +0 -484
  582. package/dist/models-UZ6HszfZ.js +0 -1281
  583. package/dist/org-C2RrBVQR.cjs +0 -81
  584. package/dist/org-xMytX--e.js +0 -38
  585. package/dist/pressedFloral-Bteoboms.js +0 -661
  586. package/dist/pressedFloral-CexgV-xy.cjs +0 -661
  587. package/dist/search-BMOAmrmY.js +0 -459
  588. package/dist/search-Df0Ifneg.cjs +0 -672
  589. package/dist/skinPerfection-BGzq9lq-.cjs +0 -334
  590. package/dist/skinPerfection-BlvcEcUE.js +0 -334
  591. package/dist/snapSupplements-CbbGzAgO.cjs +0 -285
  592. package/dist/snapSupplements-kcsPAOm9.js +0 -285
  593. package/dist/socialProofClasses-Db8gzsfi.cjs +0 -40
  594. package/dist/socialProofClasses-kwDvwLOZ.js +0 -10
  595. package/dist/spanx-B4WFA_rI.js +0 -661
  596. package/dist/spanx-BWoE4F8b.cjs +0 -663
  597. package/dist/spanxStaging-BOrOjhXn.js +0 -845
  598. package/dist/spanxStaging-BfdfIug4.cjs +0 -848
  599. package/dist/suggestionBarV2-types-IMMOmCir.js +0 -10
  600. package/dist/suggestionBarV2-types-nnGNgFvR.cjs +0 -16
  601. package/dist/supergoop-22dd5_BS.js +0 -323
  602. package/dist/supergoop-B-a4cku2.cjs +0 -323
  603. package/dist/types--pr1GQQx.js +0 -154
  604. package/dist/types-BVSyY3Hk.cjs +0 -196
  605. package/dist/uniqueVintage-CJXiNNe7.js +0 -1211
  606. package/dist/uniqueVintage-D0jzJWlo.cjs +0 -1213
  607. package/dist/userIdentityContext-BPqvVIg0.d.cts +0 -20
  608. package/dist/userIdentityContext-wbCRmlzp.d.ts +0 -20
  609. package/dist/utils-C9ZSCx12.js +0 -888
  610. package/dist/utils-D5HO61hG.cjs +0 -1016
  611. package/dist/venaCbd-Bhhu_qUf.cjs +0 -365
  612. package/dist/venaCbd-CanovPS_.js +0 -365
  613. package/dist/westonJonBoucher-BC0x1ktI.cjs +0 -422
  614. package/dist/westonJonBoucher-BUu1_wP1.js +0 -422
  615. package/dist/wineEnthusiast-BlCryfil.cjs +0 -940
  616. package/dist/wineEnthusiast-Ck1x5iJq.js +0 -940
  617. package/dist/wolfMattress-D9Mjq-HP.js +0 -372
  618. package/dist/wolfMattress-JssghhC-.cjs +0 -372
  619. package/dist/wolfTactical-C6exYhL7.cjs +0 -349
  620. package/dist/wolfTactical-CnV3KQdI.js +0 -349
  621. package/src/application/models/supportedOrgs.ts +0 -161
  622. package/src/atoms/org/orgPageConfig.ts +0 -42
  623. package/src/contexts/index.ts +0 -16
  624. package/src/contexts/newOrgConfigContext.tsx +0 -104
  625. package/src/contexts/orgConfigContext.tsx +0 -106
  626. package/src/hooks/index.ts +0 -27
  627. package/src/hooks/useSystemSettingsContext.ts +0 -12
  628. package/src/merchants/bandolier/bandolier.ts +0 -1371
  629. package/src/merchants/carpe/carpe.ts +0 -653
  630. package/src/merchants/coterie/coterie.ts +0 -277
  631. package/src/merchants/default.ts +0 -196
  632. package/src/merchants/dreamlandBaby/dreamlandBaby.ts +0 -381
  633. package/src/merchants/fiveCbd/fiveCbd.ts +0 -691
  634. package/src/merchants/forLoveAndLemons/forLoveAndLemons.ts +0 -751
  635. package/src/merchants/greenpan/greenpan.ts +0 -434
  636. package/src/merchants/grooveLife/grooveLife.ts +0 -392
  637. package/src/merchants/homegrownCannabis/homegrownCannabis.ts +0 -474
  638. package/src/merchants/init-merchant.sh +0 -53
  639. package/src/merchants/jackArcher/jackArcher.ts +0 -989
  640. package/src/merchants/jordanCraig/jordanCraig.ts +0 -1927
  641. package/src/merchants/kindredBravely/kindredBravely.ts +0 -538
  642. package/src/merchants/kutFromTheKloth/kutFromTheKloth.ts +0 -421
  643. package/src/merchants/larryAndSerges/larryAndSerges.ts +0 -318
  644. package/src/merchants/leapsAndRebounds/leapsAndRebounds.ts +0 -424
  645. package/src/merchants/longevityrx/longevityrx.ts +0 -374
  646. package/src/merchants/lookOptic/lookOptic.ts +0 -323
  647. package/src/merchants/mantraBrand/mantraBrand.ts +0 -844
  648. package/src/merchants/medterra/medterra.ts +0 -673
  649. package/src/merchants/modells/modells.ts +0 -543
  650. package/src/merchants/pressedFloral/pressedFloral.ts +0 -728
  651. package/src/merchants/skinPerfection/skinPerfection.ts +0 -385
  652. package/src/merchants/snapSupplements/snapSupplements.ts +0 -328
  653. package/src/merchants/spanx/spanx.ts +0 -810
  654. package/src/merchants/spanx/spanxStaging.ts +0 -936
  655. package/src/merchants/supergoop/supergoop.ts +0 -375
  656. package/src/merchants/uniqueVintage/uniqueVintage.ts +0 -1314
  657. package/src/merchants/venaCbd/venaCbd.ts +0 -407
  658. package/src/merchants/westonJonBoucher/westonJonBoucher.ts +0 -473
  659. package/src/merchants/wineEnthusiast/wineEnthusiast.ts +0 -990
  660. package/src/merchants/wolfMattress/wolfMattress.ts +0 -411
  661. package/src/merchants/wolfTactical/wolfTactical.ts +0 -383
  662. /package/dist/{atomStore-KSoFS3Jj.cjs → AmplitudeOperations-CNyxbBY6.cjs} +0 -0
  663. /package/dist/{atomStore-CZnUUsrr.js → AmplitudeOperations-Oa2efWtF.js} +0 -0
  664. /package/dist/{locators-fBXS_pxP.js → atomStore-BS6qtYZF.js} +0 -0
  665. /package/dist/{locators-0YYZu9n4.cjs → atomStore-BjRyLFEx.cjs} +0 -0
  666. /package/dist/{utilityTypes-8sETsYPk.js → types-DtTnp0o0.js} +0 -0
  667. /package/dist/{utilityTypes-COShxVir.cjs → types-a8gm_IaQ.cjs} +0 -0
  668. /package/dist/{variantInfo-orXoPBCU.cjs → types.cjs} +0 -0
  669. /package/dist/{variantInfo-DbVxA1yE.js → types.js} +0 -0
  670. /package/src/contexts/{featureFlagServiceContext.tsx → featureFlagServiceContext/featureFlagServiceContext.tsx} +0 -0
  671. /package/src/contexts/{graphqlContext.tsx → graphqlContext/graphqlContext.tsx} +0 -0
  672. /package/src/contexts/{shopifyUrlContext.tsx → shopifyUrlContext/shopifyUrlContext.tsx} +0 -0
  673. /package/src/contexts/{systemSettingsContext.tsx → systemSettingsContext/systemSettingsContext.tsx} +0 -0
  674. /package/src/contexts/{userIdentityContext.tsx → userIdentityContext/userIdentityContext.tsx} +0 -0
  675. /package/src/hooks/{useBlockBackButton.ts → BlockBackButton/useBlockBackButton.ts} +0 -0
  676. /package/src/hooks/{useCustomerSupportHandoff.ts → CustomerSupportHandoff/useCustomerSupportHandoff.ts} +0 -0
  677. /package/src/hooks/{useDebounce.ts → Debounce/useDebounce.ts} +0 -0
  678. /package/src/hooks/{useElementObserver.ts → ElementObserver/useElementObserver.ts} +0 -0
  679. /package/src/hooks/{useGrabAndScroll.ts → GrabAndScroll/useGrabAndScroll.ts} +0 -0
  680. /package/src/hooks/{useImageResolver.ts → ImageResolver/useImageResolver.ts} +0 -0
  681. /package/src/hooks/{useIntersection.ts → Intersection/useIntersection.ts} +0 -0
  682. /package/src/hooks/{useIsSmallScreen.ts → IsSmallScreen/useIsSmallScreen.ts} +0 -0
  683. /package/src/hooks/{useMessageFilter.ts → MessageFilter/useMessageFilter.ts} +0 -0
  684. /package/src/hooks/{useMessageScrollObserver.ts → MessageScrollObserver/useMessageScrollObserver.ts} +0 -0
  685. /package/src/hooks/{useSearchOperations.ts → SearchOperations/useSearchOperations.ts} +0 -0
  686. /package/src/hooks/{useSnapCalculator.ts → SnapCalculator/useSnapCalculator.ts} +0 -0
@@ -1,845 +0,0 @@
1
- import { ChatElementDisplayLocation, DOMInsertionType, FeatureGates, GridInsertionType } from "./models-UZ6HszfZ.js";
2
- import { CategoryExtractorType, ColorNames, OrgShortName, PageVariantTestType, WidgetType, colorVar } from "./types--pr1GQQx.js";
3
- import "./graphql-CjB8wHzm.js";
4
- import "./api-DjeZXxl_.js";
5
- import "./utilityTypes-8sETsYPk.js";
6
- import "./variantInfo-DbVxA1yE.js";
7
- import "./enviveConfig-CzhTz8Aa.js";
8
- import "./atomStore-D8pjE1vL.js";
9
- import { ChatState } from "./custservice-types-mnIunabv.js";
10
- import { SuggestionBarLocationForMetrics } from "./suggestionBarV2-types-IMMOmCir.js";
11
- import "./chat-CV6MXeID.js";
12
- import "./components-B4T3Uzth.js";
13
- import { BOTTOM_SUGGESTION_BAR_PDP_TESTID, TOP_SUGGESTION_BAR_PDP_TESTID } from "./embedded-BJLWIriJ.js";
14
- import "./locators-fBXS_pxP.js";
15
- import { getCdnAssetURL } from "./cdnUtils-E4tLBt2g.js";
16
- import { CustomerServiceIntegrationMode, CustomerServiceType, defaultOrgUIConfig } from "./default-D6f5Dyt7.js";
17
- import { BOTTOM_PLP_IMAGE_BANNER_ID, BOTTOM_REVIEWS_BAR_ID, CHAT_PREVIEW_CONTAINER_ID, TOP_PLP_IMAGE_BANNER_ID, TOP_SUGGESTION_BAR_PDP_ID } from "./divIds-BUrN2vY-.js";
18
- import { BOTTOM_IMAGE_BANNER_PLP_TESTID, TOP_IMAGE_BANNER_PLP_TESTID } from "./entrypoints-Bs3pn6EV.js";
19
- import { PageVisitCategory, SupportedEventProductCategory } from "@spiffy-ai/commerce-api-client";
20
- import { GrClose } from "react-icons/gr";
21
-
22
- //#region src/config/locators/components/chat/preview.ts
23
- const CHAT_PREVIEW_PLP_TESTID = "spiffy-chat-preview-plp";
24
- const CHAT_PREVIEW_PDP_TESTID = "spiffy-chat-preview-pdp";
25
-
26
- //#endregion
27
- //#region src/merchants/spanx/spanxStaging.ts
28
- const spanxPageConfig = () => ({
29
- pageVariants: [
30
- {
31
- variantId: "shapewearPLPWithImageBanner",
32
- variantType: "plp",
33
- plpIdExtractor: "shopify-collection-id",
34
- variantTests: [
35
- { testType: PageVariantTestType.ShopifyPLP },
36
- {
37
- testType: PageVariantTestType.CatalogCategory,
38
- category: SupportedEventProductCategory.Shapewear
39
- },
40
- {
41
- testType: PageVariantTestType.FeatureGate,
42
- featureGate: FeatureGates.IsImageBannerEnabled
43
- }
44
- ],
45
- widgetMounting: [
46
- {
47
- mountingConfigId: "chatPreviewPLP",
48
- widgetConfigId: "shapewearChatPreviewPLP"
49
- },
50
- {
51
- mountingConfigId: "topImageBannerPLP",
52
- widgetConfigId: "ImageBannerShapewearPLP"
53
- },
54
- {
55
- mountingConfigId: "bottomImageBannerPLP",
56
- widgetConfigId: "ImageBannerShapewearPLP"
57
- }
58
- ]
59
- },
60
- {
61
- variantId: "plp",
62
- variantType: "plp",
63
- plpIdExtractor: "shopify-collection-id",
64
- variantTests: [{ testType: PageVariantTestType.ShopifyPLP }, {
65
- testType: PageVariantTestType.CatalogCategory,
66
- category: SupportedEventProductCategory.Shapewear
67
- }],
68
- widgetMounting: [{
69
- mountingConfigId: "chatPreviewPLP",
70
- widgetConfigId: "shapewearChatPreviewPLP"
71
- }, {
72
- mountingConfigId: "bottomImageBannerPLP",
73
- widgetConfigId: "ImageBannerShapewearPLP"
74
- }]
75
- },
76
- {
77
- variantId: "nonShapewearPLPWithImageBanner",
78
- variantType: "plp",
79
- plpIdExtractor: "shopify-collection-id",
80
- variantTests: [
81
- { testType: PageVariantTestType.ShopifyPLP },
82
- {
83
- testType: PageVariantTestType.CatalogCategory,
84
- category: SupportedEventProductCategory.NonShapewear
85
- },
86
- {
87
- testType: PageVariantTestType.FeatureGate,
88
- featureGate: FeatureGates.IsNonShapewearEnabled
89
- },
90
- {
91
- testType: PageVariantTestType.FeatureGate,
92
- featureGate: FeatureGates.IsImageBannerEnabled
93
- }
94
- ],
95
- widgetMounting: [
96
- {
97
- mountingConfigId: "chatPreviewPLP",
98
- widgetConfigId: "nonShapewearChatPreviewPLP"
99
- },
100
- {
101
- mountingConfigId: "topImageBannerPLP",
102
- widgetConfigId: "ImageBannerNonShapewearPLP"
103
- },
104
- {
105
- mountingConfigId: "bottomImageBannerPLP",
106
- widgetConfigId: "ImageBannerNonShapewearPLP"
107
- }
108
- ]
109
- },
110
- {
111
- variantId: "nonShapewearPLP",
112
- variantType: "plp",
113
- plpIdExtractor: "shopify-collection-id",
114
- variantTests: [
115
- { testType: PageVariantTestType.ShopifyPLP },
116
- {
117
- testType: PageVariantTestType.CatalogCategory,
118
- category: SupportedEventProductCategory.NonShapewear
119
- },
120
- {
121
- testType: PageVariantTestType.FeatureGate,
122
- featureGate: FeatureGates.IsNonShapewearEnabled
123
- }
124
- ],
125
- widgetMounting: [{
126
- mountingConfigId: "chatPreviewPLP",
127
- widgetConfigId: "nonShapewearChatPreviewPLP"
128
- }, {
129
- mountingConfigId: "bottomImageBannerPLP",
130
- widgetConfigId: "ImageBannerNonShapewearPLP"
131
- }]
132
- },
133
- {
134
- variantId: "pdp",
135
- variantType: "pdp",
136
- variantTests: [{ testType: PageVariantTestType.ShopifyPDP }, {
137
- testType: PageVariantTestType.CatalogCategory,
138
- category: SupportedEventProductCategory.Shapewear
139
- }],
140
- productIdExtractor: "shopify-product-variant-id",
141
- widgetMounting: [
142
- {
143
- mountingConfigId: "chatPreviewPDP",
144
- widgetConfigId: "shapewearChatPreviewPDP"
145
- },
146
- {
147
- mountingConfigId: "topSuggestionBarPDP",
148
- widgetConfigId: "topSuggestionBarPDP"
149
- },
150
- {
151
- mountingConfigId: "bottomSuggestionBarPDP",
152
- widgetConfigId: "bottomSuggestionBarPDP"
153
- }
154
- ]
155
- },
156
- {
157
- variantId: "nonShapewearPDP",
158
- variantType: "pdp",
159
- variantTests: [
160
- { testType: PageVariantTestType.ShopifyPDP },
161
- {
162
- testType: PageVariantTestType.CatalogCategory,
163
- category: SupportedEventProductCategory.NonShapewear
164
- },
165
- {
166
- testType: PageVariantTestType.FeatureGate,
167
- featureGate: FeatureGates.IsNonShapewearEnabled
168
- }
169
- ],
170
- productIdExtractor: "shopify-product-variant-id",
171
- widgetMounting: [
172
- {
173
- mountingConfigId: "chatPreviewPDP",
174
- widgetConfigId: "chatPreviewPDP"
175
- },
176
- {
177
- mountingConfigId: "topSuggestionBarPDP",
178
- widgetConfigId: "topSuggestionBarPDP"
179
- },
180
- {
181
- mountingConfigId: "bottomSuggestionBarPDP",
182
- widgetConfigId: "bottomSuggestionBarPDP"
183
- }
184
- ]
185
- },
186
- {
187
- variantId: "supportPages",
188
- variantType: "page_visit",
189
- variantTests: [{
190
- testType: PageVariantTestType.PageCategory,
191
- extractor: {
192
- type: CategoryExtractorType.VisitCategoryMap,
193
- map: { [PageVisitCategory.Help]: [
194
- "/pages/help",
195
- "/apps/returns",
196
- "/pages/return-policy-instructions"
197
- ] }
198
- }
199
- }],
200
- widgetMounting: []
201
- }
202
- ],
203
- widgetConfigs: {
204
- ImageBannerShapewearPLP: {
205
- widgetConfigId: "ImageBannerShapewearPLP",
206
- type: WidgetType.ImageBanner,
207
- imageSrc: "plp_quiz_banner_image.png",
208
- title: "Need help? We're here.",
209
- subtitle: "Chat with Spanx AI Assistant",
210
- assistantMessage: "Can you help me choose the right shapewear?"
211
- },
212
- ImageBannerNonShapewearPLP: {
213
- widgetConfigId: "ImageBannerNonShapewearPLP",
214
- type: WidgetType.ImageBanner,
215
- imageSrc: "default_banner_image.webp",
216
- title: "Need help? We're here.",
217
- subtitle: "Chat with Spanx AI Assistant",
218
- assistantMessage: "Give me product recommendations"
219
- },
220
- nonShapewearChatPreviewPLP: {
221
- widgetConfigId: "nonShapewearChatPreviewPLP",
222
- variant: "outlined",
223
- type: WidgetType.ChatPreview,
224
- socialProofConfig: {
225
- logoName: "spanx-logo.svg",
226
- customerQuery: "asked which styles are the most comfortable for everyday wear...",
227
- headerTitle: "Assistant",
228
- suggestionButtonStrings: [
229
- "Which styles do reviewers suggest?",
230
- "Which styles have the most reviews?",
231
- "Which styles are best for my body shape?",
232
- "Which styles are most popular?",
233
- "How does Spanx source its products?"
234
- ],
235
- staticPLPImageNames: [
236
- "default_plp_embedded_1.webp",
237
- "default_plp_embedded_2.webp",
238
- "default_plp_embedded_3.webp",
239
- "default_plp_embedded_4.webp"
240
- ],
241
- suggestionButtonVariantDefault: "outlined",
242
- suggestionButtonVariantAccent: "outlined",
243
- staticPLPImagesLayout: "horizontal"
244
- }
245
- },
246
- shapewearChatPreviewPLP: {
247
- widgetConfigId: "shapewearChatPreviewPLP",
248
- variant: "outlined",
249
- type: WidgetType.ChatPreview,
250
- socialProofConfig: {
251
- logoName: "spanx-logo.svg",
252
- customerQuery: "are looking for shapewear for tummy control...",
253
- headerTitle: "Assistant",
254
- suggestionButtonStrings: [
255
- "What do reviewers think?",
256
- "Best shapewear for dresses",
257
- "Styles with the strongest compression",
258
- "Comfortable for all-day wear",
259
- "Shapewear that won't show through clothes"
260
- ],
261
- staticPLPImageNames: [
262
- "shapewear_plp_embedded_1.png",
263
- "shapewear_plp_embedded_2.png",
264
- "shapewear_plp_embedded_3.png",
265
- "shapewear_plp_embedded_4.png"
266
- ],
267
- suggestionButtonVariantDefault: "outlined",
268
- suggestionButtonVariantAccent: "outlined",
269
- staticPLPImagesLayout: "horizontal"
270
- }
271
- },
272
- shapewearChatPreviewPDP: {
273
- widgetConfigId: "shapewearChatPreviewPDP",
274
- variant: "outlined",
275
- type: WidgetType.ChatPreview,
276
- socialProofConfig: {
277
- logoName: "spanx-logo.svg",
278
- customerQuery: "asked if it shows under clothes...",
279
- headerTitle: "Assistant",
280
- suggestionButtonStrings: [
281
- "What do reviewers think?",
282
- "Is it easy to wash?",
283
- "Is it good for curvy figures?",
284
- "What did reviewers like the best?",
285
- "Is it comfortable?",
286
- "What size should I choose?",
287
- "Is it good for all body shapes?"
288
- ],
289
- suggestionButtonVariantDefault: "outlined",
290
- suggestionButtonVariantAccent: "outlined"
291
- }
292
- },
293
- chatPreviewPDP: {
294
- widgetConfigId: "chatPreviewPDP",
295
- variant: "outlined",
296
- type: WidgetType.ChatPreview,
297
- socialProofConfig: {
298
- logoName: "spanx-logo.svg",
299
- customerQuery: "asked if it's comfortable...",
300
- headerTitle: "Assistant",
301
- suggestionButtonStrings: [
302
- "What do reviewers think?",
303
- "Is it easy to wash?",
304
- "Is it good for curvy figures?",
305
- "What did reviewers like the best?",
306
- "Is it comfortable?",
307
- "What size should I choose?",
308
- "Is it good for all body shapes?"
309
- ],
310
- suggestionButtonVariantDefault: "outlined",
311
- suggestionButtonVariantAccent: "outlined"
312
- }
313
- },
314
- topSuggestionBarPDP: {
315
- widgetConfigId: "topSuggestionBarPDP",
316
- contentId: "spiffy-top-suggestion-bar-contents",
317
- type: WidgetType.SuggestionBarV2,
318
- metricDisplayLocation: ChatElementDisplayLocation.TOP_REVIEWS_SNIPPET,
319
- location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_TOP,
320
- variant: "outlined",
321
- hoverVariant: "secondaryDark",
322
- buttonTexts: { default: [
323
- "Summarize the reviews",
324
- "Do reviewers find these effective?",
325
- "Do these boost reviewers' confidence?",
326
- "What do reviews say about comfort?",
327
- "Do reviewers like these for under a dress?"
328
- ] },
329
- boldFirstButton: true,
330
- twoRowsOnMobile: false,
331
- animationSpeed: "none",
332
- buttonBorderRadius: "md"
333
- },
334
- bottomSuggestionBarPDP: {
335
- widgetConfigId: "bottomSuggestionBarPDP",
336
- metricDisplayLocation: ChatElementDisplayLocation.BOTTOM_REVIEWS_SNIPPET,
337
- contentId: "spiffy-bottom-suggestion-bar-contents",
338
- type: WidgetType.SuggestionBarV2,
339
- location: SuggestionBarLocationForMetrics.SUGGESTION_BAR_BOTTOM,
340
- variant: "outlinedLight",
341
- hoverVariant: "secondaryDark",
342
- buttonTexts: { default: [
343
- "Summarize the reviews",
344
- "Do reviewers find these effective?",
345
- "Do these boost reviewers' confidence?",
346
- "What do reviews say about comfort?",
347
- "Do reviewers like these for under a dress?"
348
- ] },
349
- boldFirstButton: true,
350
- twoRowsOnMobile: false,
351
- animationSpeed: "none",
352
- buttonBorderRadius: "md"
353
- }
354
- },
355
- mountingConfigs: {
356
- topImageBannerPLP: {
357
- mountingConfigId: "topImageBannerPLP",
358
- containerId: TOP_PLP_IMAGE_BANNER_ID,
359
- testId: TOP_IMAGE_BANNER_PLP_TESTID,
360
- insertionPoint: {
361
- selector: "nav[aria-label=\"breadcrumb\"]",
362
- insertionType: DOMInsertionType.ADJACENT_AFTER_END
363
- },
364
- style: { marginTop: "30px" }
365
- },
366
- bottomImageBannerPLP: {
367
- mountingConfigId: "bottomImageBannerPLP",
368
- containerId: BOTTOM_PLP_IMAGE_BANNER_ID,
369
- testId: BOTTOM_IMAGE_BANNER_PLP_TESTID,
370
- insertionPoint: {
371
- selector: "main > section.order-last",
372
- insertionType: DOMInsertionType.ADJACENT_AFTER_BEGIN
373
- },
374
- style: { marginBottom: "30px" }
375
- },
376
- chatPreviewPLP: {
377
- mountingConfigId: "chatPreviewPLP",
378
- containerId: CHAT_PREVIEW_CONTAINER_ID,
379
- testId: CHAT_PREVIEW_PLP_TESTID,
380
- gridInsertionType: GridInsertionType.ROW_2,
381
- insertionPoint: {
382
- selector: ".grid .grid-flow-row-dense",
383
- insertionType: DOMInsertionType.ADJACENT_AFTER_END
384
- },
385
- style: { marginInline: "8px" }
386
- },
387
- chatPreviewPDP: {
388
- mountingConfigId: "chatPreviewPDP",
389
- containerId: CHAT_PREVIEW_CONTAINER_ID,
390
- testId: CHAT_PREVIEW_PDP_TESTID,
391
- insertionPoint: {
392
- selector: ".content-start .divide-y",
393
- insertionType: DOMInsertionType.BEFORE
394
- },
395
- className: "grid"
396
- },
397
- topSuggestionBarPDP: {
398
- mountingConfigId: "topSuggestionBarPDP",
399
- containerId: TOP_SUGGESTION_BAR_PDP_ID,
400
- testId: TOP_SUGGESTION_BAR_PDP_TESTID,
401
- insertionPoint: {
402
- selector: "main section div.grid.gap-2.bg-white",
403
- insertionType: DOMInsertionType.BEFORE
404
- },
405
- className: "grid",
406
- style: { marginTop: "20px" }
407
- },
408
- bottomSuggestionBarPDP: {
409
- mountingConfigId: "bottomSuggestionBarPDP",
410
- containerId: BOTTOM_REVIEWS_BAR_ID,
411
- testId: BOTTOM_SUGGESTION_BAR_PDP_TESTID,
412
- insertionPoint: {
413
- selector: "#reviews > div.w-full.gap-8",
414
- insertionType: DOMInsertionType.APPEND_CHILD
415
- },
416
- style: {
417
- maxWidth: "92vw",
418
- marginInline: "auto",
419
- marginTop: "15px",
420
- marginBottom: "-25px"
421
- }
422
- }
423
- }
424
- });
425
- const spanxColors = {
426
- [ColorNames.TextPrimary]: "#02081C",
427
- [ColorNames.TextSecondary]: "#4F586F",
428
- [ColorNames.TextAccent]: "#5F0F23",
429
- [ColorNames.TextLink]: "#001846",
430
- [ColorNames.TextLight]: "#FFFFFF",
431
- [ColorNames.BackgroundPrimary]: "#02081C",
432
- [ColorNames.BackgroundSecondary]: "#FFFFFF",
433
- [ColorNames.BackgroundSecondaryDark]: "#F4F4F6",
434
- [ColorNames.BackgroundTertiary]: "#4F586F",
435
- [ColorNames.BackgroundDark]: "#02081C",
436
- [ColorNames.BackgroundLight]: "#FFFFFF",
437
- [ColorNames.BackgroundSaturated]: "#FFF1DF",
438
- [ColorNames.BorderLight]: "#CDCFD6",
439
- [ColorNames.BorderMedium]: "#B3B7C1",
440
- [ColorNames.BorderDark]: "#687083",
441
- [ColorNames.BorderOutline]: "#E6E7EA",
442
- [ColorNames.AccentPrimary]: "#FF002B",
443
- [ColorNames.AccentSecondary]: "#02081C"
444
- };
445
- const spanxOrgUIConfig = () => {
446
- const defaultSpanxOrgConfig = defaultOrgUIConfig(OrgShortName.SpanxStaging);
447
- return {
448
- ...defaultSpanxOrgConfig,
449
- partialViewConfig: {
450
- maxHeight: 89,
451
- borderRadius: "0px"
452
- },
453
- chatMessageConfig: {
454
- ...defaultSpanxOrgConfig.chatMessageConfig,
455
- assistantChatTitle: "Spanx AI Assistant",
456
- variant: "premium",
457
- productLink: {
458
- ...defaultSpanxOrgConfig.chatMessageConfig.productLink,
459
- iconVariant: "backgroundPrimary"
460
- }
461
- },
462
- floatingEntrypointConfig: {
463
- ...defaultSpanxOrgConfig.floatingEntrypointConfig,
464
- showOption: "always",
465
- position: "bottom-right"
466
- },
467
- welcomeSectionConfig: {
468
- ...defaultSpanxOrgConfig.welcomeSectionConfig,
469
- variant: "outlined",
470
- colorVariant: "accent",
471
- title: "Welcome to SPANX!",
472
- iconName: "sparkles",
473
- subtitle: "Ask our AI anything to get instant help with everything from product specifics and details, shipping, returns, and more. Need more help? Please click the SPANX Support button above."
474
- },
475
- chatPreviewConfig: {
476
- ...defaultSpanxOrgConfig.chatPreviewConfig,
477
- topMargin: 0,
478
- largeProductComparison: true,
479
- iconFillColor: colorVar(ColorNames.TextPrimary),
480
- buttonTextSecondaryColor: colorVar(ColorNames.TextPrimary),
481
- buttonTextHoverColor: colorVar(ColorNames.TextPrimary),
482
- buttonBackgroundColor: colorVar(ColorNames.BackgroundDark),
483
- buttonBackgroundHoverColor: colorVar(ColorNames.AccentPrimary),
484
- headerConfig: {
485
- ...defaultSpanxOrgConfig.chatPreviewConfig.headerConfig,
486
- imageSrc: getCdnAssetURL("spanx-logo.svg", OrgShortName.SpanxStaging),
487
- imageHeight: 16,
488
- title: "AI Assistant",
489
- sparklesColor: colorVar(ColorNames.AccentPrimary),
490
- iconWidth: "16px",
491
- iconHeight: "16px"
492
- },
493
- footerConfig: {
494
- ...defaultSpanxOrgConfig.chatPreviewConfig.footerConfig,
495
- hasFade: false,
496
- suggestionButtonVariant: "light",
497
- replyButtonIcon: "thinMagnifyingGlass",
498
- replyInputHasShadow: false,
499
- replyInputHasBorder: true,
500
- backgroundColor: colorVar(ColorNames.BackgroundSecondaryDark)
501
- },
502
- copies: {
503
- pdp: [
504
- "what reviewers think about the comfort?",
505
- "what body areas this targets?",
506
- "if this will show through clothes?"
507
- ],
508
- plp: [
509
- "something to wear under a strapless dress to a wedding?",
510
- "the best shapewear for tummy control?",
511
- "the right shapewear with a pencil skirt for work?"
512
- ]
513
- },
514
- staticSuggestionCopies: {
515
- pdp: [
516
- "Is it easy to wash?",
517
- "Is it good for curvy figures?",
518
- "What did reviewers like the best?",
519
- "Is it comfortable?",
520
- "What size should I choose?",
521
- "Is it good for all body shapes?"
522
- ],
523
- plp: [
524
- "Which styles have the most reviews?",
525
- "Which styles are best for my body shape?",
526
- "Which styles are most popular?",
527
- "How does Spanx source its products?"
528
- ]
529
- },
530
- staticPLPImages: [
531
- "default_plp_embedded_1.webp",
532
- "default_plp_embedded_2.webp",
533
- "default_plp_embedded_3.webp",
534
- "default_plp_embedded_4.webp"
535
- ]
536
- },
537
- customerServiceIntegration: {
538
- ...defaultSpanxOrgConfig.customerServiceIntegration,
539
- integrationMode: CustomerServiceIntegrationMode.full,
540
- provider: CustomerServiceType.kustomer,
541
- welcomeTitle: "Chat with a Spanx Stylist",
542
- showNameInput: true,
543
- showWelcomeOnForm: true,
544
- showAISuggestionsWithinBusinessHours: false,
545
- chatEnabledDuringBusinessHours: true,
546
- waitingMessagePosition: "BEFORE_MESSAGES",
547
- formAiName: "Spanx AI Assistant...",
548
- legalMessage: "This session will be transcribed for quality purposes. Please see our terms of use within the US <a href=\"https://spanx.com/pages/interactive-services-consent-and-disclaimers\" target=\"_blank\">here</a> and CA <a href=\"https://spanx.ca/pages/interactive-services-consent-and-disclaimers\" target=\"_blank\">here</a>",
549
- welcomeDescription: "Our stylists look forward to assisting you Mon- Fri between 9:30AM to 7:30PM ET, and Sat-Sun 9:30AM to 6:00PM ET!",
550
- getCustomWaitingMessage: (name) => `Hold tight${name ? ` ${name}` : ""}, your stylist is almost here`,
551
- withinBusinessHoursMessage: "👋 Hi there! We're here to help with any questions or support you need—whether you're tracking an order, finding the perfect product, or anything in between. To keep things quick, some responses might come from AI, but if you'd rather chat with a real person, just let us know—we've got you! <br /><br />Click “send a message” below to get started 💬",
552
- withinBusinessHoursWaitingMessage: "A Spanx Stylist will be with you within 5 minutes. Thanks for your patience.<br /><br />In the meantime, can you give us a little information about yourself?",
553
- withinBusinessHoursFormMessage: "👋 Hi there! We're here to help with any questions or support you need—whether you're tracking an order, finding the perfect product, or anything in between. To keep things quick, some responses might come from AI, but if you'd rather chat with a real person, just let us know—we've got you! <br /><br />Fill out your information and click “send a message” below to get started 💬",
554
- outsideBusinessHoursMessage: "👋 Hi, we’re sorry but this is outside of our service hours.<br /><br />You can leave a message and a stylist will get back to your within 24 hours. If you need an answer right away, ask your Spanx AI shopping assistant for help.",
555
- outsideBusinessHoursFormMessage: "👋 Hi, we’re sorry but this is outside of our service hours.<br /><br />You can leave a message and a stylist will get back to your within 24 hours. If you need an answer right away, ask your Spanx AI shopping assistant for help.",
556
- outsideBusinessHoursWaitingMessage: "⚡⚡ You're all set! A stylist will get back to you within 24 hours with an answer to your question. In the meantime, feel free to use our SPANX AI Shopping Assistant.",
557
- suggestedAIQuestions: [
558
- "How can I return or exchange my order?",
559
- "Where is my order?",
560
- "My item is damaged what can I do?",
561
- "Where can I find my order number?"
562
- ],
563
- businessHoursStartUTC: "9:30AM",
564
- businessHoursEndUTC: "7:30PM",
565
- businessHoursTimezone: "-05:00",
566
- withinBusinessHoursInitialState: ChatState.INITIAL,
567
- outsideBusinessHoursInitialState: ChatState.INITIAL,
568
- withinBusinessHoursButtontext: "Send a message",
569
- outsideBusinessHoursButtontext: "Leave a message"
570
- },
571
- productReviewConfig: {
572
- ...defaultSpanxOrgConfig.productReviewConfig,
573
- styleVariant: "bordered",
574
- colorVariant: "neutral"
575
- },
576
- pageCardConfig: {
577
- ...defaultSpanxOrgConfig.pageCardConfig,
578
- variant: "outlined",
579
- hoverVariant: "shadow",
580
- iconVariant: "primary"
581
- },
582
- productCardConfig: {
583
- ...defaultSpanxOrgConfig.productCardConfig,
584
- variant: "transparentBordered"
585
- },
586
- chatHeader: {
587
- ...defaultSpanxOrgConfig.chatHeader,
588
- imageSrc: getCdnAssetURL("spanx-logo.svg", OrgShortName.SpanxStaging),
589
- collapsedColor: colorVar(ColorNames.BackgroundSecondaryDark),
590
- expandedColor: colorVar(ColorNames.BackgroundLight),
591
- chevronColor: colorVar(ColorNames.BackgroundDark),
592
- borderBottom: `1px solid ${colorVar(ColorNames.BorderLight)}`,
593
- closeIcon: GrClose,
594
- customerSupportSwitchConfig: {
595
- ...defaultSpanxOrgConfig.chatHeader.customerSupportSwitchConfig,
596
- variant: "detached",
597
- supportTitle: "Support",
598
- spiffyTitle: "AI Assistant",
599
- spiffyTitleHasLogo: true,
600
- borderColor: colorVar(ColorNames.TextPrimary),
601
- selectedTextColor: colorVar(ColorNames.TextLight),
602
- backgroundColor: colorVar(ColorNames.TextPrimary),
603
- selectedBackgroundColor: colorVar(ColorNames.TextPrimary),
604
- unselectedBackgroundColor: colorVar(ColorNames.BackgroundSecondaryDark),
605
- unselectedTextColor: colorVar(ColorNames.TextPrimary)
606
- }
607
- },
608
- floatingChatConfig: {
609
- ...defaultSpanxOrgConfig.floatingChatConfig,
610
- neverShowSingleProductCards: false,
611
- termsAndConditionsConfig: {
612
- copy: "This session will be transcribed for quality purposes. Please see our terms of use for",
613
- link: "https://spanx.com/pages/terms-of-use",
614
- linkText: "SPANX.com here."
615
- },
616
- replyInputConfig: {
617
- size: "lg",
618
- sendIcon: "arrowUp"
619
- },
620
- suggestionButtonConfig: {
621
- variant: "outlined",
622
- hoverVariant: "dark",
623
- answerVariant: "outlined"
624
- }
625
- },
626
- conversationalSearch: {
627
- enabled: true,
628
- suggestions: [
629
- "Shapewear that won’t show through clothes",
630
- "Styles with the strongest compression",
631
- "Comfortable styles for all day wear",
632
- "Best shapewear for tummy control"
633
- ],
634
- entrypointBtnColor: "linear-gradient(to right, #004EA2, #6941C6)",
635
- entrypointBtnTextColor: "#004EA2",
636
- entrypointBtnBorderColor: "#004EA2",
637
- entrypointContainer: "id|shopify-section-header",
638
- productGridContainer: "id|MainContentWrapper",
639
- entrypointTrigger: "id|search-input",
640
- generalSearchBtn: "query|button.header-search__button",
641
- pageContent: "id|MainContent",
642
- searchContent: "id|search-content",
643
- sortingFont: "ivypresto-headline, serif",
644
- optionsFont: "Inter"
645
- },
646
- merchantVariantSettings: { dynamicVariants: {
647
- enabled: true,
648
- refreshInterval: 500
649
- } },
650
- merchantOverrideCss: `
651
- .spiffy-product-review-card-container {
652
- background: var(--spiffy-colors-background-light) !important;
653
- }
654
- .spiffy-star-rating-container {
655
- background: var(--spiffy-colors-background-secondary-dark) !important;
656
- }
657
- .spiffy-star-rating-star {
658
- fill: var(--spiffy-colors-text-primary) !important;
659
- }
660
- .spiffy-product-review-header-reviewer {
661
- color: var(--spiffy-colors-text-primary) !important;
662
- }
663
- .spiffy-mini-verified-buyer-icon {
664
- fill: var(--spiffy-colors-text-primary) !important;
665
- }
666
-
667
- #spiffy-product-review-card-read-more-container {
668
- text-transform: uppercase;
669
- font-weight: 600;
670
- }
671
-
672
- #spiffy-ai-chat-preview-contents h1, h2, h3, h4, h5, h6 {
673
- --chakra-fonts-heading: 'inter', 'Poppins', sans-serif;
674
- }
675
-
676
- #spiffy-chat-preview-user-query-button {
677
- margin-top: 8px;
678
- }
679
- #spiffy-ai-floating-button {
680
- z-index: 2147483001 !important;
681
- }
682
-
683
- /* SuggestionBarV2 CSS */
684
- #spiffy-top-suggestion-bar-contents button{
685
- border-radius: 24px !important;
686
- }
687
-
688
- #spiffy-top-suggestion-bar-contents button span{
689
- font-size: 14px !important;
690
- font-weight: 500;
691
- }
692
-
693
- #spiffy-top-suggestion-bar-contents button svg{
694
- width: 14px;
695
- height: 14px;
696
- }
697
-
698
- #spiffy-bottom-suggestion-bar-contents button {
699
- border-color: var(--spiffy-colors-border-outline) !important;
700
- }
701
-
702
- #spiffy-bottom-suggestion-bar-contents button:hover {
703
- background-color: var(--spiffy-colors-border-light) !important;
704
- border-color:var(--spiffy-colors-border-light) !important;
705
- }
706
-
707
- #spiffy-bottom-suggestion-bar-contents button span{
708
- font-size: 14px !important;
709
- font-weight: 500;
710
- }
711
-
712
- #spiffy-bottom-suggestion-bar-contents button svg{
713
- width: 14px;
714
- height: 14px;
715
- }
716
-
717
- .spiffy-chat-header-container {
718
- padding-block: 8px;
719
- border-bottom: 1px solid ${colorVar(ColorNames.BorderLight)};
720
- background-color: white;
721
- }
722
-
723
- .spiffy-chat-header-close-button {
724
- background-color: var(--spiffy-colors-text-light);
725
- color: var(--spiffy-colors-background-primary);
726
- }
727
-
728
- .spiffy-suggestion-bar-button {
729
- border: 1px solid ${colorVar(ColorNames.BorderOutline)};
730
- border-radius: 24px;
731
- }
732
-
733
- .spiffy-suggestion-button-answer-class {
734
- border: 1px solid ${colorVar(ColorNames.TextPrimary)} !important;
735
- }
736
-
737
- .spiffy-suggestion-button-answer-class:hover {
738
- background-color: ${colorVar(ColorNames.BackgroundSecondaryDark)} !important;
739
- border-color: ${colorVar(ColorNames.BackgroundSecondaryDark)} !important;
740
- color: ${colorVar(ColorNames.TextLink)} !important;
741
- }
742
-
743
- .spiffy-suggestion-button-question-class {
744
- border: 1px solid ${colorVar(ColorNames.BorderLight)} !important;
745
- border-radius: 4px;
746
- }
747
-
748
- .spiffy-suggestion-button-question-class:hover {
749
- border-color: ${colorVar(ColorNames.BackgroundSecondaryDark)} !important;
750
- background-color: ${colorVar(ColorNames.BackgroundSecondaryDark)} !important;
751
- color: ${colorVar(ColorNames.TextPrimary)} !important;
752
- fill: ${colorVar(ColorNames.TextPrimary)} !important;
753
- stroke: ${colorVar(ColorNames.TextPrimary)} !important;
754
- }
755
-
756
- .spiffy-suggestion-button-text-class {
757
- font-size: 13px;
758
- }
759
-
760
- .spiffy-social-proof-content-image {
761
- border-radius: 0px;
762
- box-shadow: none;
763
- }
764
-
765
- .spiffy-user-query-button {
766
- font-size: 12px;
767
- }
768
-
769
- .spiffy-image-banner-subtitle {
770
- text-transform: uppercase;
771
- }
772
- .spiffy-customer-service-legal-message a {
773
- text-decoration-line: underline;
774
- }
775
- .spiffy-customer-service-legal-message a:hover {
776
- color: var(--spiffy-colors-text-link);
777
- }
778
- .spiffy-tag-pill-text {
779
- color: var(--spiffy-colors-text-light);
780
- }
781
- .spiffy-product-card-title {
782
- font-family: var(--chakra-fonts-heading);
783
- color: var(--spiffy-colors-text-primary);
784
- }
785
- .spiffy-product-card-text-color {
786
- color: var(--spiffy-colors-text-secondary);
787
- }
788
- .spiffy-product-card-rating-star-color {
789
- fill: var(--spiffy-colors-text-primary);
790
- }
791
- .spiffy-switch-to-agent-button-unselected-text-color {
792
- color: var(--spiffy-colors-text-primary);
793
- }
794
- .spiffy-switch-to-agent-button-selected-text-color {
795
- color: var(--spiffy-colors-text-light);
796
- }
797
- .spiffy-switch-to-agent-button-selected-background-color {
798
- background-color: var(--spiffy-colors-text-primary);
799
- }
800
- .spiffy-switch-to-agent-button-unselected-background-color {
801
- background-color: var(--spiffy-colors-background-secondary-dark);
802
- }
803
- .spiffy-switch-to-agent-button-border-color {
804
- border-color: var(--spiffy-colors-text-primary);
805
- }
806
- .spiffy-switch-to-agent-button-background-color {
807
- background-color: var(--spiffy-colors-text-primary);
808
- }
809
- .spiffy-switch-to-agent-button-hover-background-color:hover {
810
- background-color: var(--spiffy-colors-text-primary);
811
- }
812
- .spiffy-switch-to-agent-button-hover-text-color:hover {
813
- color: var(--spiffy-colors-text-light);
814
- }
815
- .spiffy-switch-to-agent-button-selected-fill-color {
816
- fill: var(--spiffy-colors-text-light);
817
- }
818
- .spiffy-switch-to-agent-button-unselected-fill-color {
819
- fill: var(--spiffy-colors-text-primary);
820
- }
821
- .spiffy-chat-preview-footer-background-color {
822
- background-color: var(--spiffy-colors-background-secondary-dark);
823
- }
824
- .spiffy-message-content-container {
825
- font-size: 15px !important;
826
- font-weight: 300 !important;
827
- line-height: 160%;
828
- }
829
- `
830
- };
831
- };
832
- const spanxOrgInfo = {
833
- shortName: "spanx-staging",
834
- name: "SPANX",
835
- domain: "01jxznkpym6bz8d72xmaps77w3-c47748467f607d4067fe.myshopify.dev",
836
- defaultProductId: "39773580984531",
837
- alwaysEnabledMerchants: true,
838
- orgUIConfig: spanxOrgUIConfig,
839
- orgColors: () => spanxColors,
840
- orgPageConfig: spanxPageConfig
841
- };
842
-
843
- //#endregion
844
- export { spanxOrgInfo };
845
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BhbnhTdGFnaW5nLUJPck9qaFhuLmpzIiwibmFtZXMiOlsic3BhbnhDb2xvcnM6IENvbG9yTWFwcGluZyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb25maWcvbG9jYXRvcnMvY29tcG9uZW50cy9jaGF0L3ByZXZpZXcudHMiLCIuLi9zcmMvbWVyY2hhbnRzL3NwYW54L3NwYW54U3RhZ2luZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgU1VHR0VTVElPTl9CVVRUT05fVEVTVElEID0gJ3NwaWZmeS1zdWdnZXN0aW9uLWJ1dHRvbic7XG5leHBvcnQgY29uc3QgQ0hBVF9QUkVWSUVXX0ZPT1RFUl9URVNUSUQgPSAnc3BpZmZ5LWNoYXQtcHJldmlldy1mb290ZXInO1xuZXhwb3J0IGNvbnN0IENIQVRfUFJFVklFV19URVNUSUQgPSAnc3BpZmZ5LWNoYXQtcHJldmlldyc7XG5leHBvcnQgY29uc3QgQ0hBVF9QUkVWSUVXX1NIQURPV19ET01fVEVTVElEID0gJ2NoYXQtcHJldmlldy1zaGFkb3ctZG9tLWNvbnRhaW5lcic7XG5leHBvcnQgY29uc3QgQ0hBVF9QUkVWSUVXX0JPRFlfVEVTVElEID0gJ3NwaWZmeS1jaGF0LXByZXZpZXctYm9keSc7XG5leHBvcnQgY29uc3QgQ0hBVF9QUkVWSUVXX0hFQURJTkdfVEVTVElEID0gJ3NwaWZmeS1jaGF0LXByZXZpZXctaGVhZGluZyc7XG5leHBvcnQgY29uc3QgQ0hBVF9QUkVWSUVXX0xPQURJTkdfVEVTVElEID0gJ3NwaWZmeS1jaGF0LXByZXZpZXctbG9hZGluZyc7XG5leHBvcnQgY29uc3QgQ0hBVF9QUkVWSUVXX1VTRVJfUVVFUllfQlVUVE9OX1RFU1RJRCA9ICdzcGlmZnktY2hhdC1wcmV2aWV3LXVzZXItcXVlcnktYnV0dG9uJztcbmV4cG9ydCBjb25zdCBDSEFUX1BSRVZJRVdfSEVBREVSX1RFU1RJRCA9ICdzcGlmZnktY2hhdC1wcmV2aWV3LWhlYWRlcic7XG5cbi8vIHVzZWQgaW4gc3BhbnggY29uZmlnXG5leHBvcnQgY29uc3QgQ0hBVF9QUkVWSUVXX1BMUF9URVNUSUQgPSAnc3BpZmZ5LWNoYXQtcHJldmlldy1wbHAnO1xuZXhwb3J0IGNvbnN0IENIQVRfUFJFVklFV19QRFBfVEVTVElEID0gJ3NwaWZmeS1jaGF0LXByZXZpZXctcGRwJztcbiIsImltcG9ydCB7XG4gIFBhZ2VWaXNpdENhdGVnb3J5LFxuICBTdXBwb3J0ZWRFdmVudFByb2R1Y3RDYXRlZ29yeSxcbn0gZnJvbSBcIkBzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudFwiO1xuaW1wb3J0IHtcbiAgQk9UVE9NX1NVR0dFU1RJT05fQkFSX1BEUF9URVNUSUQsXG4gIFRPUF9TVUdHRVNUSU9OX0JBUl9QRFBfVEVTVElELFxufSBmcm9tIFwic3JjL2NvbmZpZy9sb2NhdG9yc1wiO1xuaW1wb3J0IHtcbiAgQk9UVE9NX0lNQUdFX0JBTk5FUl9QTFBfVEVTVElELFxuICBUT1BfSU1BR0VfQkFOTkVSX1BMUF9URVNUSUQsXG59IGZyb20gXCJzcmMvY29uZmlnL2xvY2F0b3JzL2NvbXBvbmVudHMvY2hhdC9lbnRyeXBvaW50c1wiO1xuaW1wb3J0IHtcbiAgQ0hBVF9QUkVWSUVXX1BEUF9URVNUSUQsXG4gIENIQVRfUFJFVklFV19QTFBfVEVTVElELFxufSBmcm9tIFwic3JjL2NvbmZpZy9sb2NhdG9ycy9jb21wb25lbnRzL2NoYXQvcHJldmlld1wiO1xuaW1wb3J0IHsgR3JDbG9zZSB9IGZyb20gXCJyZWFjdC1pY29ucy9nclwiO1xuaW1wb3J0IHsgT3JnU2hvcnROYW1lLCBCYXNpY09yZ0luZm9UeXBlIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHNcIjtcbmltcG9ydCB7IENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uIH0gZnJvbSBcInNyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb25cIjtcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gXCJzcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlc1wiO1xuaW1wb3J0IHsgZ2V0Q2RuQXNzZXRVUkwgfSBmcm9tIFwic3JjL2FwcGxpY2F0aW9uL3V0aWxzL2NkblV0aWxzXCI7XG5pbXBvcnQge1xuICBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGUsXG4gIEN1c3RvbWVyU2VydmljZVR5cGUsXG59IGZyb20gXCJzcmMvdHlwZXMvY3VzdG9tZXJTZXJ2aWNlXCI7XG5pbXBvcnQgeyBHcmlkSW5zZXJ0aW9uVHlwZSB9IGZyb20gXCJzcmMvbWVyY2hhbnRzL2dyaWRJbnNlcnRpb25cIjtcbmltcG9ydCB7IERPTUluc2VydGlvblR5cGUgfSBmcm9tIFwic3JjL21lcmNoYW50cy9kb21JbnNlcnRpb25cIjtcbmltcG9ydCB7XG4gIEJPVFRPTV9QTFBfSU1BR0VfQkFOTkVSX0lELFxuICBCT1RUT01fUkVWSUVXU19CQVJfSUQsXG4gIENIQVRfUFJFVklFV19DT05UQUlORVJfSUQsXG4gIFRPUF9QTFBfSU1BR0VfQkFOTkVSX0lELFxuICBUT1BfU1VHR0VTVElPTl9CQVJfUERQX0lELFxufSBmcm9tIFwic3JjL2NvbmZpZy9kaXZJZHNcIjtcbmltcG9ydCB7IGRlZmF1bHRPcmdVSUNvbmZpZyB9IGZyb20gXCJzcmMvbWVyY2hhbnRzL2RlZmF1bHRcIjtcbmltcG9ydCB7IFN1Z2dlc3Rpb25CYXJMb2NhdGlvbkZvck1ldHJpY3MgfSBmcm9tIFwic3JjL3R5cGVzL3N1Z2dlc3Rpb25CYXJWMi10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2F0ZWdvcnlFeHRyYWN0b3JUeXBlLFxuICBDaGF0UHJldmlld1dpZGdldENvbmZpZyxcbiAgQ29sb3JNYXBwaW5nLFxuICBDb2xvck5hbWVzLFxuICBjb2xvclZhcixcbiAgSW1hZ2VCYW5uZXJXaWRnZXRDb25maWcsXG4gIE9yZ1BhZ2VDb25maWcsXG4gIE9yZ1VJQ29uZmlnLFxuICBQYWdlVmFyaWFudFRlc3RUeXBlLFxuICBTdWdnZXN0aW9uQmFyV2lkZ2V0VjJDb25maWcsXG4gIFdpZGdldFR5cGUsXG59IGZyb20gXCJzcmMvY29udGV4dHMvdHlwZXNcIjtcbmltcG9ydCB7IENoYXRTdGF0ZSB9IGZyb20gXCJzcmMvdHlwZXMvY3VzdHNlcnZpY2UtdHlwZXNcIjtcblxuY29uc3Qgc3BhbnhQYWdlQ29uZmlnID0gKCk6IE9yZ1BhZ2VDb25maWcgPT4gKHtcbiAgcGFnZVZhcmlhbnRzOiBbXG4gICAge1xuICAgICAgdmFyaWFudElkOiBcInNoYXBld2VhclBMUFdpdGhJbWFnZUJhbm5lclwiLFxuICAgICAgdmFyaWFudFR5cGU6IFwicGxwXCIsXG4gICAgICBwbHBJZEV4dHJhY3RvcjogXCJzaG9waWZ5LWNvbGxlY3Rpb24taWRcIixcbiAgICAgIHZhcmlhbnRUZXN0czogW1xuICAgICAgICB7XG4gICAgICAgICAgdGVzdFR5cGU6IFBhZ2VWYXJpYW50VGVzdFR5cGUuU2hvcGlmeVBMUCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLkNhdGFsb2dDYXRlZ29yeSxcbiAgICAgICAgICBjYXRlZ29yeTogU3VwcG9ydGVkRXZlbnRQcm9kdWN0Q2F0ZWdvcnkuU2hhcGV3ZWFyLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGVzdFR5cGU6IFBhZ2VWYXJpYW50VGVzdFR5cGUuRmVhdHVyZUdhdGUsXG4gICAgICAgICAgZmVhdHVyZUdhdGU6IEZlYXR1cmVHYXRlcy5Jc0ltYWdlQmFubmVyRW5hYmxlZCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB3aWRnZXRNb3VudGluZzogW1xuICAgICAgICB7XG4gICAgICAgICAgbW91bnRpbmdDb25maWdJZDogXCJjaGF0UHJldmlld1BMUFwiLFxuICAgICAgICAgIHdpZGdldENvbmZpZ0lkOiBcInNoYXBld2VhckNoYXRQcmV2aWV3UExQXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtb3VudGluZ0NvbmZpZ0lkOiBcInRvcEltYWdlQmFubmVyUExQXCIsXG4gICAgICAgICAgd2lkZ2V0Q29uZmlnSWQ6IFwiSW1hZ2VCYW5uZXJTaGFwZXdlYXJQTFBcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1vdW50aW5nQ29uZmlnSWQ6IFwiYm90dG9tSW1hZ2VCYW5uZXJQTFBcIixcbiAgICAgICAgICB3aWRnZXRDb25maWdJZDogXCJJbWFnZUJhbm5lclNoYXBld2VhclBMUFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhcmlhbnRJZDogXCJwbHBcIixcbiAgICAgIHZhcmlhbnRUeXBlOiBcInBscFwiLFxuICAgICAgcGxwSWRFeHRyYWN0b3I6IFwic2hvcGlmeS1jb2xsZWN0aW9uLWlkXCIsXG4gICAgICB2YXJpYW50VGVzdHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLlNob3BpZnlQTFAsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5DYXRhbG9nQ2F0ZWdvcnksXG4gICAgICAgICAgY2F0ZWdvcnk6IFN1cHBvcnRlZEV2ZW50UHJvZHVjdENhdGVnb3J5LlNoYXBld2VhcixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB3aWRnZXRNb3VudGluZzogW1xuICAgICAgICB7XG4gICAgICAgICAgbW91bnRpbmdDb25maWdJZDogXCJjaGF0UHJldmlld1BMUFwiLFxuICAgICAgICAgIHdpZGdldENvbmZpZ0lkOiBcInNoYXBld2VhckNoYXRQcmV2aWV3UExQXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtb3VudGluZ0NvbmZpZ0lkOiBcImJvdHRvbUltYWdlQmFubmVyUExQXCIsXG4gICAgICAgICAgd2lkZ2V0Q29uZmlnSWQ6IFwiSW1hZ2VCYW5uZXJTaGFwZXdlYXJQTFBcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICB2YXJpYW50SWQ6IFwibm9uU2hhcGV3ZWFyUExQV2l0aEltYWdlQmFubmVyXCIsXG4gICAgICB2YXJpYW50VHlwZTogXCJwbHBcIixcbiAgICAgIHBscElkRXh0cmFjdG9yOiBcInNob3BpZnktY29sbGVjdGlvbi1pZFwiLFxuICAgICAgdmFyaWFudFRlc3RzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5TaG9waWZ5UExQLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGVzdFR5cGU6IFBhZ2VWYXJpYW50VGVzdFR5cGUuQ2F0YWxvZ0NhdGVnb3J5LFxuICAgICAgICAgIGNhdGVnb3J5OiBTdXBwb3J0ZWRFdmVudFByb2R1Y3RDYXRlZ29yeS5Ob25TaGFwZXdlYXIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5GZWF0dXJlR2F0ZSxcbiAgICAgICAgICBmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzLklzTm9uU2hhcGV3ZWFyRW5hYmxlZCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLkZlYXR1cmVHYXRlLFxuICAgICAgICAgIGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXMuSXNJbWFnZUJhbm5lckVuYWJsZWQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgd2lkZ2V0TW91bnRpbmc6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vdW50aW5nQ29uZmlnSWQ6IFwiY2hhdFByZXZpZXdQTFBcIixcbiAgICAgICAgICB3aWRnZXRDb25maWdJZDogXCJub25TaGFwZXdlYXJDaGF0UHJldmlld1BMUFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbW91bnRpbmdDb25maWdJZDogXCJ0b3BJbWFnZUJhbm5lclBMUFwiLFxuICAgICAgICAgIHdpZGdldENvbmZpZ0lkOiBcIkltYWdlQmFubmVyTm9uU2hhcGV3ZWFyUExQXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtb3VudGluZ0NvbmZpZ0lkOiBcImJvdHRvbUltYWdlQmFubmVyUExQXCIsXG4gICAgICAgICAgd2lkZ2V0Q29uZmlnSWQ6IFwiSW1hZ2VCYW5uZXJOb25TaGFwZXdlYXJQTFBcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICB2YXJpYW50SWQ6IFwibm9uU2hhcGV3ZWFyUExQXCIsXG4gICAgICB2YXJpYW50VHlwZTogXCJwbHBcIixcbiAgICAgIHBscElkRXh0cmFjdG9yOiBcInNob3BpZnktY29sbGVjdGlvbi1pZFwiLFxuICAgICAgdmFyaWFudFRlc3RzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5TaG9waWZ5UExQLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGVzdFR5cGU6IFBhZ2VWYXJpYW50VGVzdFR5cGUuQ2F0YWxvZ0NhdGVnb3J5LFxuICAgICAgICAgIGNhdGVnb3J5OiBTdXBwb3J0ZWRFdmVudFByb2R1Y3RDYXRlZ29yeS5Ob25TaGFwZXdlYXIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5GZWF0dXJlR2F0ZSxcbiAgICAgICAgICBmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzLklzTm9uU2hhcGV3ZWFyRW5hYmxlZCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICB3aWRnZXRNb3VudGluZzogW1xuICAgICAgICB7XG4gICAgICAgICAgbW91bnRpbmdDb25maWdJZDogXCJjaGF0UHJldmlld1BMUFwiLFxuICAgICAgICAgIHdpZGdldENvbmZpZ0lkOiBcIm5vblNoYXBld2VhckNoYXRQcmV2aWV3UExQXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBtb3VudGluZ0NvbmZpZ0lkOiBcImJvdHRvbUltYWdlQmFubmVyUExQXCIsXG4gICAgICAgICAgd2lkZ2V0Q29uZmlnSWQ6IFwiSW1hZ2VCYW5uZXJOb25TaGFwZXdlYXJQTFBcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICB2YXJpYW50SWQ6IFwicGRwXCIsXG4gICAgICB2YXJpYW50VHlwZTogXCJwZHBcIixcbiAgICAgIHZhcmlhbnRUZXN0czogW1xuICAgICAgICB7XG4gICAgICAgICAgdGVzdFR5cGU6IFBhZ2VWYXJpYW50VGVzdFR5cGUuU2hvcGlmeVBEUCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLkNhdGFsb2dDYXRlZ29yeSxcbiAgICAgICAgICBjYXRlZ29yeTogU3VwcG9ydGVkRXZlbnRQcm9kdWN0Q2F0ZWdvcnkuU2hhcGV3ZWFyLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHByb2R1Y3RJZEV4dHJhY3RvcjogXCJzaG9waWZ5LXByb2R1Y3QtdmFyaWFudC1pZFwiLFxuICAgICAgd2lkZ2V0TW91bnRpbmc6IFtcbiAgICAgICAge1xuICAgICAgICAgIG1vdW50aW5nQ29uZmlnSWQ6IFwiY2hhdFByZXZpZXdQRFBcIixcbiAgICAgICAgICB3aWRnZXRDb25maWdJZDogXCJzaGFwZXdlYXJDaGF0UHJldmlld1BEUFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbW91bnRpbmdDb25maWdJZDogXCJ0b3BTdWdnZXN0aW9uQmFyUERQXCIsXG4gICAgICAgICAgd2lkZ2V0Q29uZmlnSWQ6IFwidG9wU3VnZ2VzdGlvbkJhclBEUFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbW91bnRpbmdDb25maWdJZDogXCJib3R0b21TdWdnZXN0aW9uQmFyUERQXCIsXG4gICAgICAgICAgd2lkZ2V0Q29uZmlnSWQ6IFwiYm90dG9tU3VnZ2VzdGlvbkJhclBEUFwiLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHZhcmlhbnRJZDogXCJub25TaGFwZXdlYXJQRFBcIixcbiAgICAgIHZhcmlhbnRUeXBlOiBcInBkcFwiLFxuICAgICAgdmFyaWFudFRlc3RzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5TaG9waWZ5UERQLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGVzdFR5cGU6IFBhZ2VWYXJpYW50VGVzdFR5cGUuQ2F0YWxvZ0NhdGVnb3J5LFxuICAgICAgICAgIGNhdGVnb3J5OiBTdXBwb3J0ZWRFdmVudFByb2R1Y3RDYXRlZ29yeS5Ob25TaGFwZXdlYXIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5GZWF0dXJlR2F0ZSxcbiAgICAgICAgICBmZWF0dXJlR2F0ZTogRmVhdHVyZUdhdGVzLklzTm9uU2hhcGV3ZWFyRW5hYmxlZCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBwcm9kdWN0SWRFeHRyYWN0b3I6IFwic2hvcGlmeS1wcm9kdWN0LXZhcmlhbnQtaWRcIixcbiAgICAgIHdpZGdldE1vdW50aW5nOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBtb3VudGluZ0NvbmZpZ0lkOiBcImNoYXRQcmV2aWV3UERQXCIsXG4gICAgICAgICAgd2lkZ2V0Q29uZmlnSWQ6IFwiY2hhdFByZXZpZXdQRFBcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1vdW50aW5nQ29uZmlnSWQ6IFwidG9wU3VnZ2VzdGlvbkJhclBEUFwiLFxuICAgICAgICAgIHdpZGdldENvbmZpZ0lkOiBcInRvcFN1Z2dlc3Rpb25CYXJQRFBcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1vdW50aW5nQ29uZmlnSWQ6IFwiYm90dG9tU3VnZ2VzdGlvbkJhclBEUFwiLFxuICAgICAgICAgIHdpZGdldENvbmZpZ0lkOiBcImJvdHRvbVN1Z2dlc3Rpb25CYXJQRFBcIixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSxcbiAgICB7XG4gICAgICB2YXJpYW50SWQ6IFwic3VwcG9ydFBhZ2VzXCIsXG4gICAgICB2YXJpYW50VHlwZTogXCJwYWdlX3Zpc2l0XCIsXG4gICAgICB2YXJpYW50VGVzdHM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHRlc3RUeXBlOiBQYWdlVmFyaWFudFRlc3RUeXBlLlBhZ2VDYXRlZ29yeSxcbiAgICAgICAgICBleHRyYWN0b3I6IHtcbiAgICAgICAgICAgIHR5cGU6IENhdGVnb3J5RXh0cmFjdG9yVHlwZS5WaXNpdENhdGVnb3J5TWFwLFxuICAgICAgICAgICAgbWFwOiB7XG4gICAgICAgICAgICAgIFtQYWdlVmlzaXRDYXRlZ29yeS5IZWxwXTogW1xuICAgICAgICAgICAgICAgIFwiL3BhZ2VzL2hlbHBcIixcbiAgICAgICAgICAgICAgICBcIi9hcHBzL3JldHVybnNcIixcbiAgICAgICAgICAgICAgICBcIi9wYWdlcy9yZXR1cm4tcG9saWN5LWluc3RydWN0aW9uc1wiLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIC8vIHN1cHBvcnQgcGFnZXMgb25seSByZW5kZXIgdGhlIGZsb2F0aW5nIGJ1dHRvbiB3aGljaCBpcyBjdXJyZW50bHkgcmVuZGVyZWQgYnkgRmxvYXRpbmdDaGF0XG4gICAgICB3aWRnZXRNb3VudGluZzogW10sXG4gICAgfSxcbiAgXSxcbiAgd2lkZ2V0Q29uZmlnczoge1xuICAgIEltYWdlQmFubmVyU2hhcGV3ZWFyUExQOiB7XG4gICAgICB3aWRnZXRDb25maWdJZDogXCJJbWFnZUJhbm5lclNoYXBld2VhclBMUFwiLFxuICAgICAgdHlwZTogV2lkZ2V0VHlwZS5JbWFnZUJhbm5lcixcbiAgICAgIGltYWdlU3JjOiBcInBscF9xdWl6X2Jhbm5lcl9pbWFnZS5wbmdcIixcbiAgICAgIHRpdGxlOiBcIk5lZWQgaGVscD8gV2UncmUgaGVyZS5cIixcbiAgICAgIHN1YnRpdGxlOiBcIkNoYXQgd2l0aCBTcGFueCBBSSBBc3Npc3RhbnRcIixcbiAgICAgIGFzc2lzdGFudE1lc3NhZ2U6IFwiQ2FuIHlvdSBoZWxwIG1lIGNob29zZSB0aGUgcmlnaHQgc2hhcGV3ZWFyP1wiLFxuICAgIH0gc2F0aXNmaWVzIEltYWdlQmFubmVyV2lkZ2V0Q29uZmlnLFxuICAgIEltYWdlQmFubmVyTm9uU2hhcGV3ZWFyUExQOiB7XG4gICAgICB3aWRnZXRDb25maWdJZDogXCJJbWFnZUJhbm5lck5vblNoYXBld2VhclBMUFwiLFxuICAgICAgdHlwZTogV2lkZ2V0VHlwZS5JbWFnZUJhbm5lcixcbiAgICAgIGltYWdlU3JjOiBcImRlZmF1bHRfYmFubmVyX2ltYWdlLndlYnBcIixcbiAgICAgIHRpdGxlOiBcIk5lZWQgaGVscD8gV2UncmUgaGVyZS5cIixcbiAgICAgIHN1YnRpdGxlOiBcIkNoYXQgd2l0aCBTcGFueCBBSSBBc3Npc3RhbnRcIixcbiAgICAgIGFzc2lzdGFudE1lc3NhZ2U6IFwiR2l2ZSBtZSBwcm9kdWN0IHJlY29tbWVuZGF0aW9uc1wiLFxuICAgIH0gc2F0aXNmaWVzIEltYWdlQmFubmVyV2lkZ2V0Q29uZmlnLFxuICAgIG5vblNoYXBld2VhckNoYXRQcmV2aWV3UExQOiB7XG4gICAgICB3aWRnZXRDb25maWdJZDogXCJub25TaGFwZXdlYXJDaGF0UHJldmlld1BMUFwiLFxuICAgICAgdmFyaWFudDogXCJvdXRsaW5lZFwiLFxuICAgICAgdHlwZTogV2lkZ2V0VHlwZS5DaGF0UHJldmlldyxcbiAgICAgIHNvY2lhbFByb29mQ29uZmlnOiB7XG4gICAgICAgIGxvZ29OYW1lOiBcInNwYW54LWxvZ28uc3ZnXCIsXG4gICAgICAgIGN1c3RvbWVyUXVlcnk6XG4gICAgICAgICAgXCJhc2tlZCB3aGljaCBzdHlsZXMgYXJlIHRoZSBtb3N0IGNvbWZvcnRhYmxlIGZvciBldmVyeWRheSB3ZWFyLi4uXCIsXG4gICAgICAgIGhlYWRlclRpdGxlOiBcIkFzc2lzdGFudFwiLFxuICAgICAgICBzdWdnZXN0aW9uQnV0dG9uU3RyaW5nczogW1xuICAgICAgICAgIFwiV2hpY2ggc3R5bGVzIGRvIHJldmlld2VycyBzdWdnZXN0P1wiLFxuICAgICAgICAgIFwiV2hpY2ggc3R5bGVzIGhhdmUgdGhlIG1vc3QgcmV2aWV3cz9cIixcbiAgICAgICAgICBcIldoaWNoIHN0eWxlcyBhcmUgYmVzdCBmb3IgbXkgYm9keSBzaGFwZT9cIixcbiAgICAgICAgICBcIldoaWNoIHN0eWxlcyBhcmUgbW9zdCBwb3B1bGFyP1wiLFxuICAgICAgICAgIFwiSG93IGRvZXMgU3Bhbnggc291cmNlIGl0cyBwcm9kdWN0cz9cIixcbiAgICAgICAgXSxcbiAgICAgICAgc3RhdGljUExQSW1hZ2VOYW1lczogW1xuICAgICAgICAgIFwiZGVmYXVsdF9wbHBfZW1iZWRkZWRfMS53ZWJwXCIsXG4gICAgICAgICAgXCJkZWZhdWx0X3BscF9lbWJlZGRlZF8yLndlYnBcIixcbiAgICAgICAgICBcImRlZmF1bHRfcGxwX2VtYmVkZGVkXzMud2VicFwiLFxuICAgICAgICAgIFwiZGVmYXVsdF9wbHBfZW1iZWRkZWRfNC53ZWJwXCIsXG4gICAgICAgIF0sXG4gICAgICAgIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50RGVmYXVsdDogXCJvdXRsaW5lZFwiLFxuICAgICAgICBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudEFjY2VudDogXCJvdXRsaW5lZFwiLFxuICAgICAgICBzdGF0aWNQTFBJbWFnZXNMYXlvdXQ6IFwiaG9yaXpvbnRhbFwiLFxuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBDaGF0UHJldmlld1dpZGdldENvbmZpZyxcbiAgICBzaGFwZXdlYXJDaGF0UHJldmlld1BMUDoge1xuICAgICAgd2lkZ2V0Q29uZmlnSWQ6IFwic2hhcGV3ZWFyQ2hhdFByZXZpZXdQTFBcIixcbiAgICAgIHZhcmlhbnQ6IFwib3V0bGluZWRcIixcbiAgICAgIHR5cGU6IFdpZGdldFR5cGUuQ2hhdFByZXZpZXcsXG4gICAgICBzb2NpYWxQcm9vZkNvbmZpZzoge1xuICAgICAgICBsb2dvTmFtZTogXCJzcGFueC1sb2dvLnN2Z1wiLFxuICAgICAgICBjdXN0b21lclF1ZXJ5OiBcImFyZSBsb29raW5nIGZvciBzaGFwZXdlYXIgZm9yIHR1bW15IGNvbnRyb2wuLi5cIixcbiAgICAgICAgaGVhZGVyVGl0bGU6IFwiQXNzaXN0YW50XCIsXG4gICAgICAgIHN1Z2dlc3Rpb25CdXR0b25TdHJpbmdzOiBbXG4gICAgICAgICAgXCJXaGF0IGRvIHJldmlld2VycyB0aGluaz9cIixcbiAgICAgICAgICBcIkJlc3Qgc2hhcGV3ZWFyIGZvciBkcmVzc2VzXCIsXG4gICAgICAgICAgXCJTdHlsZXMgd2l0aCB0aGUgc3Ryb25nZXN0IGNvbXByZXNzaW9uXCIsXG4gICAgICAgICAgXCJDb21mb3J0YWJsZSBmb3IgYWxsLWRheSB3ZWFyXCIsXG4gICAgICAgICAgXCJTaGFwZXdlYXIgdGhhdCB3b24ndCBzaG93IHRocm91Z2ggY2xvdGhlc1wiLFxuICAgICAgICBdLFxuICAgICAgICBzdGF0aWNQTFBJbWFnZU5hbWVzOiBbXG4gICAgICAgICAgXCJzaGFwZXdlYXJfcGxwX2VtYmVkZGVkXzEucG5nXCIsXG4gICAgICAgICAgXCJzaGFwZXdlYXJfcGxwX2VtYmVkZGVkXzIucG5nXCIsXG4gICAgICAgICAgXCJzaGFwZXdlYXJfcGxwX2VtYmVkZGVkXzMucG5nXCIsXG4gICAgICAgICAgXCJzaGFwZXdlYXJfcGxwX2VtYmVkZGVkXzQucG5nXCIsXG4gICAgICAgIF0sXG4gICAgICAgIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50RGVmYXVsdDogXCJvdXRsaW5lZFwiLFxuICAgICAgICBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudEFjY2VudDogXCJvdXRsaW5lZFwiLFxuICAgICAgICBzdGF0aWNQTFBJbWFnZXNMYXlvdXQ6IFwiaG9yaXpvbnRhbFwiLFxuICAgICAgfSxcbiAgICB9IHNhdGlzZmllcyBDaGF0UHJldmlld1dpZGdldENvbmZpZyxcbiAgICBzaGFwZXdlYXJDaGF0UHJldmlld1BEUDoge1xuICAgICAgd2lkZ2V0Q29uZmlnSWQ6IFwic2hhcGV3ZWFyQ2hhdFByZXZpZXdQRFBcIixcbiAgICAgIHZhcmlhbnQ6IFwib3V0bGluZWRcIixcbiAgICAgIHR5cGU6IFdpZGdldFR5cGUuQ2hhdFByZXZpZXcsXG4gICAgICBzb2NpYWxQcm9vZkNvbmZpZzoge1xuICAgICAgICBsb2dvTmFtZTogXCJzcGFueC1sb2dvLnN2Z1wiLFxuICAgICAgICBjdXN0b21lclF1ZXJ5OiBcImFza2VkIGlmIGl0IHNob3dzIHVuZGVyIGNsb3RoZXMuLi5cIixcbiAgICAgICAgaGVhZGVyVGl0bGU6IFwiQXNzaXN0YW50XCIsXG4gICAgICAgIHN1Z2dlc3Rpb25CdXR0b25TdHJpbmdzOiBbXG4gICAgICAgICAgXCJXaGF0IGRvIHJldmlld2VycyB0aGluaz9cIixcbiAgICAgICAgICBcIklzIGl0IGVhc3kgdG8gd2FzaD9cIixcbiAgICAgICAgICBcIklzIGl0IGdvb2QgZm9yIGN1cnZ5IGZpZ3VyZXM/XCIsXG4gICAgICAgICAgXCJXaGF0IGRpZCByZXZpZXdlcnMgbGlrZSB0aGUgYmVzdD9cIixcbiAgICAgICAgICBcIklzIGl0IGNvbWZvcnRhYmxlP1wiLFxuICAgICAgICAgIFwiV2hhdCBzaXplIHNob3VsZCBJIGNob29zZT9cIixcbiAgICAgICAgICBcIklzIGl0IGdvb2QgZm9yIGFsbCBib2R5IHNoYXBlcz9cIixcbiAgICAgICAgXSxcbiAgICAgICAgc3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnREZWZhdWx0OiBcIm91dGxpbmVkXCIsXG4gICAgICAgIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50QWNjZW50OiBcIm91dGxpbmVkXCIsXG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIENoYXRQcmV2aWV3V2lkZ2V0Q29uZmlnLFxuICAgIGNoYXRQcmV2aWV3UERQOiB7XG4gICAgICB3aWRnZXRDb25maWdJZDogXCJjaGF0UHJldmlld1BEUFwiLFxuICAgICAgdmFyaWFudDogXCJvdXRsaW5lZFwiLFxuICAgICAgdHlwZTogV2lkZ2V0VHlwZS5DaGF0UHJldmlldyxcbiAgICAgIHNvY2lhbFByb29mQ29uZmlnOiB7XG4gICAgICAgIGxvZ29OYW1lOiBcInNwYW54LWxvZ28uc3ZnXCIsXG4gICAgICAgIGN1c3RvbWVyUXVlcnk6IFwiYXNrZWQgaWYgaXQncyBjb21mb3J0YWJsZS4uLlwiLFxuICAgICAgICBoZWFkZXJUaXRsZTogXCJBc3Npc3RhbnRcIixcbiAgICAgICAgc3VnZ2VzdGlvbkJ1dHRvblN0cmluZ3M6IFtcbiAgICAgICAgICBcIldoYXQgZG8gcmV2aWV3ZXJzIHRoaW5rP1wiLFxuICAgICAgICAgIFwiSXMgaXQgZWFzeSB0byB3YXNoP1wiLFxuICAgICAgICAgIFwiSXMgaXQgZ29vZCBmb3IgY3VydnkgZmlndXJlcz9cIixcbiAgICAgICAgICBcIldoYXQgZGlkIHJldmlld2VycyBsaWtlIHRoZSBiZXN0P1wiLFxuICAgICAgICAgIFwiSXMgaXQgY29tZm9ydGFibGU/XCIsXG4gICAgICAgICAgXCJXaGF0IHNpemUgc2hvdWxkIEkgY2hvb3NlP1wiLFxuICAgICAgICAgIFwiSXMgaXQgZ29vZCBmb3IgYWxsIGJvZHkgc2hhcGVzP1wiLFxuICAgICAgICBdLFxuICAgICAgICBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudERlZmF1bHQ6IFwib3V0bGluZWRcIixcbiAgICAgICAgc3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnRBY2NlbnQ6IFwib3V0bGluZWRcIixcbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgQ2hhdFByZXZpZXdXaWRnZXRDb25maWcsXG4gICAgdG9wU3VnZ2VzdGlvbkJhclBEUDoge1xuICAgICAgd2lkZ2V0Q29uZmlnSWQ6IFwidG9wU3VnZ2VzdGlvbkJhclBEUFwiLFxuICAgICAgY29udGVudElkOiBcInNwaWZmeS10b3Atc3VnZ2VzdGlvbi1iYXItY29udGVudHNcIixcbiAgICAgIHR5cGU6IFdpZGdldFR5cGUuU3VnZ2VzdGlvbkJhclYyLFxuICAgICAgbWV0cmljRGlzcGxheUxvY2F0aW9uOiBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvbi5UT1BfUkVWSUVXU19TTklQUEVULFxuICAgICAgbG9jYXRpb246IFN1Z2dlc3Rpb25CYXJMb2NhdGlvbkZvck1ldHJpY3MuU1VHR0VTVElPTl9CQVJfVE9QLFxuICAgICAgdmFyaWFudDogXCJvdXRsaW5lZFwiLFxuICAgICAgaG92ZXJWYXJpYW50OiBcInNlY29uZGFyeURhcmtcIixcbiAgICAgIGJ1dHRvblRleHRzOiB7XG4gICAgICAgIGRlZmF1bHQ6IFtcbiAgICAgICAgICBcIlN1bW1hcml6ZSB0aGUgcmV2aWV3c1wiLFxuICAgICAgICAgIFwiRG8gcmV2aWV3ZXJzIGZpbmQgdGhlc2UgZWZmZWN0aXZlP1wiLFxuICAgICAgICAgIFwiRG8gdGhlc2UgYm9vc3QgcmV2aWV3ZXJzJyBjb25maWRlbmNlP1wiLFxuICAgICAgICAgIFwiV2hhdCBkbyByZXZpZXdzIHNheSBhYm91dCBjb21mb3J0P1wiLFxuICAgICAgICAgIFwiRG8gcmV2aWV3ZXJzIGxpa2UgdGhlc2UgZm9yIHVuZGVyIGEgZHJlc3M/XCIsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgYm9sZEZpcnN0QnV0dG9uOiB0cnVlLFxuICAgICAgdHdvUm93c09uTW9iaWxlOiBmYWxzZSxcbiAgICAgIGFuaW1hdGlvblNwZWVkOiBcIm5vbmVcIixcbiAgICAgIGJ1dHRvbkJvcmRlclJhZGl1czogXCJtZFwiLFxuICAgIH0gc2F0aXNmaWVzIFN1Z2dlc3Rpb25CYXJXaWRnZXRWMkNvbmZpZyxcbiAgICBib3R0b21TdWdnZXN0aW9uQmFyUERQOiB7XG4gICAgICB3aWRnZXRDb25maWdJZDogXCJib3R0b21TdWdnZXN0aW9uQmFyUERQXCIsXG4gICAgICBtZXRyaWNEaXNwbGF5TG9jYXRpb246IENoYXRFbGVtZW50RGlzcGxheUxvY2F0aW9uLkJPVFRPTV9SRVZJRVdTX1NOSVBQRVQsXG5cbiAgICAgIGNvbnRlbnRJZDogXCJzcGlmZnktYm90dG9tLXN1Z2dlc3Rpb24tYmFyLWNvbnRlbnRzXCIsXG4gICAgICB0eXBlOiBXaWRnZXRUeXBlLlN1Z2dlc3Rpb25CYXJWMixcbiAgICAgIGxvY2F0aW9uOiBTdWdnZXN0aW9uQmFyTG9jYXRpb25Gb3JNZXRyaWNzLlNVR0dFU1RJT05fQkFSX0JPVFRPTSxcbiAgICAgIHZhcmlhbnQ6IFwib3V0bGluZWRMaWdodFwiLFxuICAgICAgaG92ZXJWYXJpYW50OiBcInNlY29uZGFyeURhcmtcIixcbiAgICAgIGJ1dHRvblRleHRzOiB7XG4gICAgICAgIGRlZmF1bHQ6IFtcbiAgICAgICAgICBcIlN1bW1hcml6ZSB0aGUgcmV2aWV3c1wiLFxuICAgICAgICAgIFwiRG8gcmV2aWV3ZXJzIGZpbmQgdGhlc2UgZWZmZWN0aXZlP1wiLFxuICAgICAgICAgIFwiRG8gdGhlc2UgYm9vc3QgcmV2aWV3ZXJzJyBjb25maWRlbmNlP1wiLFxuICAgICAgICAgIFwiV2hhdCBkbyByZXZpZXdzIHNheSBhYm91dCBjb21mb3J0P1wiLFxuICAgICAgICAgIFwiRG8gcmV2aWV3ZXJzIGxpa2UgdGhlc2UgZm9yIHVuZGVyIGEgZHJlc3M/XCIsXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgICAgYm9sZEZpcnN0QnV0dG9uOiB0cnVlLFxuICAgICAgdHdvUm93c09uTW9iaWxlOiBmYWxzZSxcbiAgICAgIGFuaW1hdGlvblNwZWVkOiBcIm5vbmVcIixcbiAgICAgIGJ1dHRvbkJvcmRlclJhZGl1czogXCJtZFwiLFxuICAgIH0gc2F0aXNmaWVzIFN1Z2dlc3Rpb25CYXJXaWRnZXRWMkNvbmZpZyxcbiAgfSxcbiAgbW91bnRpbmdDb25maWdzOiB7XG4gICAgdG9wSW1hZ2VCYW5uZXJQTFA6IHtcbiAgICAgIG1vdW50aW5nQ29uZmlnSWQ6IFwidG9wSW1hZ2VCYW5uZXJQTFBcIixcbiAgICAgIGNvbnRhaW5lcklkOiBUT1BfUExQX0lNQUdFX0JBTk5FUl9JRCxcbiAgICAgIHRlc3RJZDogVE9QX0lNQUdFX0JBTk5FUl9QTFBfVEVTVElELFxuICAgICAgaW5zZXJ0aW9uUG9pbnQ6IHtcbiAgICAgICAgc2VsZWN0b3I6ICduYXZbYXJpYS1sYWJlbD1cImJyZWFkY3J1bWJcIl0nLFxuICAgICAgICBpbnNlcnRpb25UeXBlOiBET01JbnNlcnRpb25UeXBlLkFESkFDRU5UX0FGVEVSX0VORCxcbiAgICAgIH0sXG4gICAgICBzdHlsZToge1xuICAgICAgICBtYXJnaW5Ub3A6IFwiMzBweFwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGJvdHRvbUltYWdlQmFubmVyUExQOiB7XG4gICAgICBtb3VudGluZ0NvbmZpZ0lkOiBcImJvdHRvbUltYWdlQmFubmVyUExQXCIsXG4gICAgICBjb250YWluZXJJZDogQk9UVE9NX1BMUF9JTUFHRV9CQU5ORVJfSUQsXG4gICAgICB0ZXN0SWQ6IEJPVFRPTV9JTUFHRV9CQU5ORVJfUExQX1RFU1RJRCxcbiAgICAgIGluc2VydGlvblBvaW50OiB7XG4gICAgICAgIHNlbGVjdG9yOiBcIm1haW4gPiBzZWN0aW9uLm9yZGVyLWxhc3RcIixcbiAgICAgICAgaW5zZXJ0aW9uVHlwZTogRE9NSW5zZXJ0aW9uVHlwZS5BREpBQ0VOVF9BRlRFUl9CRUdJTixcbiAgICAgIH0sXG4gICAgICBzdHlsZToge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMzBweFwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGNoYXRQcmV2aWV3UExQOiB7XG4gICAgICBtb3VudGluZ0NvbmZpZ0lkOiBcImNoYXRQcmV2aWV3UExQXCIsXG4gICAgICBjb250YWluZXJJZDogQ0hBVF9QUkVWSUVXX0NPTlRBSU5FUl9JRCxcbiAgICAgIHRlc3RJZDogQ0hBVF9QUkVWSUVXX1BMUF9URVNUSUQsXG4gICAgICBncmlkSW5zZXJ0aW9uVHlwZTogR3JpZEluc2VydGlvblR5cGUuUk9XXzIsXG4gICAgICBpbnNlcnRpb25Qb2ludDoge1xuICAgICAgICBzZWxlY3RvcjogXCIuZ3JpZCAuZ3JpZC1mbG93LXJvdy1kZW5zZVwiLFxuICAgICAgICBpbnNlcnRpb25UeXBlOiBET01JbnNlcnRpb25UeXBlLkFESkFDRU5UX0FGVEVSX0VORCxcbiAgICAgIH0sXG4gICAgICBzdHlsZToge1xuICAgICAgICBtYXJnaW5JbmxpbmU6IFwiOHB4XCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY2hhdFByZXZpZXdQRFA6IHtcbiAgICAgIG1vdW50aW5nQ29uZmlnSWQ6IFwiY2hhdFByZXZpZXdQRFBcIixcbiAgICAgIGNvbnRhaW5lcklkOiBDSEFUX1BSRVZJRVdfQ09OVEFJTkVSX0lELFxuICAgICAgdGVzdElkOiBDSEFUX1BSRVZJRVdfUERQX1RFU1RJRCxcbiAgICAgIGluc2VydGlvblBvaW50OiB7XG4gICAgICAgIHNlbGVjdG9yOiBcIi5jb250ZW50LXN0YXJ0IC5kaXZpZGUteVwiLFxuICAgICAgICBpbnNlcnRpb25UeXBlOiBET01JbnNlcnRpb25UeXBlLkJFRk9SRSxcbiAgICAgIH0sXG4gICAgICBjbGFzc05hbWU6IFwiZ3JpZFwiLFxuICAgIH0sXG4gICAgdG9wU3VnZ2VzdGlvbkJhclBEUDoge1xuICAgICAgbW91bnRpbmdDb25maWdJZDogXCJ0b3BTdWdnZXN0aW9uQmFyUERQXCIsXG4gICAgICBjb250YWluZXJJZDogVE9QX1NVR0dFU1RJT05fQkFSX1BEUF9JRCxcbiAgICAgIHRlc3RJZDogVE9QX1NVR0dFU1RJT05fQkFSX1BEUF9URVNUSUQsXG4gICAgICBpbnNlcnRpb25Qb2ludDoge1xuICAgICAgICBzZWxlY3RvcjogXCJtYWluIHNlY3Rpb24gZGl2LmdyaWQuZ2FwLTIuYmctd2hpdGVcIixcbiAgICAgICAgaW5zZXJ0aW9uVHlwZTogRE9NSW5zZXJ0aW9uVHlwZS5CRUZPUkUsXG4gICAgICB9LFxuICAgICAgY2xhc3NOYW1lOiBcImdyaWRcIixcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIG1hcmdpblRvcDogXCIyMHB4XCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgYm90dG9tU3VnZ2VzdGlvbkJhclBEUDoge1xuICAgICAgbW91bnRpbmdDb25maWdJZDogXCJib3R0b21TdWdnZXN0aW9uQmFyUERQXCIsXG4gICAgICBjb250YWluZXJJZDogQk9UVE9NX1JFVklFV1NfQkFSX0lELFxuICAgICAgdGVzdElkOiBCT1RUT01fU1VHR0VTVElPTl9CQVJfUERQX1RFU1RJRCxcbiAgICAgIGluc2VydGlvblBvaW50OiB7XG4gICAgICAgIHNlbGVjdG9yOiBcIiNyZXZpZXdzID4gZGl2LnctZnVsbC5nYXAtOFwiLFxuICAgICAgICBpbnNlcnRpb25UeXBlOiBET01JbnNlcnRpb25UeXBlLkFQUEVORF9DSElMRCxcbiAgICAgIH0sXG4gICAgICBzdHlsZToge1xuICAgICAgICBtYXhXaWR0aDogXCI5MnZ3XCIsXG4gICAgICAgIG1hcmdpbklubGluZTogXCJhdXRvXCIsXG4gICAgICAgIG1hcmdpblRvcDogXCIxNXB4XCIsXG4gICAgICAgIG1hcmdpbkJvdHRvbTogXCItMjVweFwiLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxufSk7XG5cbmNvbnN0IHNwYW54Q29sb3JzOiBDb2xvck1hcHBpbmcgPSB7XG4gIFtDb2xvck5hbWVzLlRleHRQcmltYXJ5XTogXCIjMDIwODFDXCIsXG4gIFtDb2xvck5hbWVzLlRleHRTZWNvbmRhcnldOiBcIiM0RjU4NkZcIixcbiAgW0NvbG9yTmFtZXMuVGV4dEFjY2VudF06IFwiIzVGMEYyM1wiLFxuICBbQ29sb3JOYW1lcy5UZXh0TGlua106IFwiIzAwMTg0NlwiLFxuICBbQ29sb3JOYW1lcy5UZXh0TGlnaHRdOiBcIiNGRkZGRkZcIixcbiAgW0NvbG9yTmFtZXMuQmFja2dyb3VuZFByaW1hcnldOiBcIiMwMjA4MUNcIixcbiAgW0NvbG9yTmFtZXMuQmFja2dyb3VuZFNlY29uZGFyeV06IFwiI0ZGRkZGRlwiLFxuICBbQ29sb3JOYW1lcy5CYWNrZ3JvdW5kU2Vjb25kYXJ5RGFya106IFwiI0Y0RjRGNlwiLFxuICBbQ29sb3JOYW1lcy5CYWNrZ3JvdW5kVGVydGlhcnldOiBcIiM0RjU4NkZcIixcbiAgW0NvbG9yTmFtZXMuQmFja2dyb3VuZERhcmtdOiBcIiMwMjA4MUNcIixcbiAgW0NvbG9yTmFtZXMuQmFja2dyb3VuZExpZ2h0XTogXCIjRkZGRkZGXCIsXG4gIFtDb2xvck5hbWVzLkJhY2tncm91bmRTYXR1cmF0ZWRdOiBcIiNGRkYxREZcIixcbiAgW0NvbG9yTmFtZXMuQm9yZGVyTGlnaHRdOiBcIiNDRENGRDZcIixcbiAgW0NvbG9yTmFtZXMuQm9yZGVyTWVkaXVtXTogXCIjQjNCN0MxXCIsXG4gIFtDb2xvck5hbWVzLkJvcmRlckRhcmtdOiBcIiM2ODcwODNcIixcbiAgW0NvbG9yTmFtZXMuQm9yZGVyT3V0bGluZV06IFwiI0U2RTdFQVwiLFxuICBbQ29sb3JOYW1lcy5BY2NlbnRQcmltYXJ5XTogXCIjRkYwMDJCXCIsXG4gIFtDb2xvck5hbWVzLkFjY2VudFNlY29uZGFyeV06IFwiIzAyMDgxQ1wiLFxufTtcblxuY29uc3Qgc3BhbnhPcmdVSUNvbmZpZyA9ICgpOiBPcmdVSUNvbmZpZyA9PiB7XG4gIGNvbnN0IGRlZmF1bHRTcGFueE9yZ0NvbmZpZyA9IGRlZmF1bHRPcmdVSUNvbmZpZyhPcmdTaG9ydE5hbWUuU3BhbnhTdGFnaW5nKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5kZWZhdWx0U3BhbnhPcmdDb25maWcsXG4gICAgcGFydGlhbFZpZXdDb25maWc6IHtcbiAgICAgIG1heEhlaWdodDogODksXG4gICAgICBib3JkZXJSYWRpdXM6IFwiMHB4XCIsXG4gICAgfSxcbiAgICBjaGF0TWVzc2FnZUNvbmZpZzoge1xuICAgICAgLi4uZGVmYXVsdFNwYW54T3JnQ29uZmlnLmNoYXRNZXNzYWdlQ29uZmlnISxcbiAgICAgIGFzc2lzdGFudENoYXRUaXRsZTogXCJTcGFueCBBSSBBc3Npc3RhbnRcIixcbiAgICAgIHZhcmlhbnQ6IFwicHJlbWl1bVwiLFxuICAgICAgcHJvZHVjdExpbms6IHtcbiAgICAgICAgLi4uZGVmYXVsdFNwYW54T3JnQ29uZmlnLmNoYXRNZXNzYWdlQ29uZmlnLnByb2R1Y3RMaW5rLFxuICAgICAgICBpY29uVmFyaWFudDogXCJiYWNrZ3JvdW5kUHJpbWFyeVwiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGZsb2F0aW5nRW50cnlwb2ludENvbmZpZzoge1xuICAgICAgLi4uZGVmYXVsdFNwYW54T3JnQ29uZmlnLmZsb2F0aW5nRW50cnlwb2ludENvbmZpZyEsXG4gICAgICBzaG93T3B0aW9uOiBcImFsd2F5c1wiLFxuICAgICAgcG9zaXRpb246IFwiYm90dG9tLXJpZ2h0XCIsXG4gICAgfSxcbiAgICB3ZWxjb21lU2VjdGlvbkNvbmZpZzoge1xuICAgICAgLi4uZGVmYXVsdFNwYW54T3JnQ29uZmlnLndlbGNvbWVTZWN0aW9uQ29uZmlnISxcbiAgICAgIHZhcmlhbnQ6IFwib3V0bGluZWRcIixcbiAgICAgIGNvbG9yVmFyaWFudDogXCJhY2NlbnRcIixcbiAgICAgIHRpdGxlOiBcIldlbGNvbWUgdG8gU1BBTlghXCIsXG4gICAgICBpY29uTmFtZTogXCJzcGFya2xlc1wiLFxuICAgICAgc3VidGl0bGU6XG4gICAgICAgIFwiQXNrIG91ciBBSSBhbnl0aGluZyB0byBnZXQgaW5zdGFudCBoZWxwIHdpdGggZXZlcnl0aGluZyBmcm9tIHByb2R1Y3Qgc3BlY2lmaWNzIGFuZCBkZXRhaWxzLCBzaGlwcGluZywgcmV0dXJucywgYW5kIG1vcmUuIE5lZWQgbW9yZSBoZWxwPyBQbGVhc2UgY2xpY2sgdGhlIFNQQU5YIFN1cHBvcnQgYnV0dG9uIGFib3ZlLlwiLFxuICAgIH0sXG4gICAgY2hhdFByZXZpZXdDb25maWc6IHtcbiAgICAgIC4uLmRlZmF1bHRTcGFueE9yZ0NvbmZpZy5jaGF0UHJldmlld0NvbmZpZyEsXG4gICAgICB0b3BNYXJnaW46IDAsXG4gICAgICBsYXJnZVByb2R1Y3RDb21wYXJpc29uOiB0cnVlLFxuICAgICAgaWNvbkZpbGxDb2xvcjogY29sb3JWYXIoQ29sb3JOYW1lcy5UZXh0UHJpbWFyeSksXG4gICAgICBidXR0b25UZXh0U2Vjb25kYXJ5Q29sb3I6IGNvbG9yVmFyKENvbG9yTmFtZXMuVGV4dFByaW1hcnkpLFxuICAgICAgYnV0dG9uVGV4dEhvdmVyQ29sb3I6IGNvbG9yVmFyKENvbG9yTmFtZXMuVGV4dFByaW1hcnkpLFxuICAgICAgYnV0dG9uQmFja2dyb3VuZENvbG9yOiBjb2xvclZhcihDb2xvck5hbWVzLkJhY2tncm91bmREYXJrKSxcbiAgICAgIGJ1dHRvbkJhY2tncm91bmRIb3ZlckNvbG9yOiBjb2xvclZhcihDb2xvck5hbWVzLkFjY2VudFByaW1hcnkpLFxuICAgICAgaGVhZGVyQ29uZmlnOiB7XG4gICAgICAgIC4uLmRlZmF1bHRTcGFueE9yZ0NvbmZpZy5jaGF0UHJldmlld0NvbmZpZyEuaGVhZGVyQ29uZmlnISxcbiAgICAgICAgaW1hZ2VTcmM6IGdldENkbkFzc2V0VVJMKFwic3BhbngtbG9nby5zdmdcIiwgT3JnU2hvcnROYW1lLlNwYW54U3RhZ2luZyksXG4gICAgICAgIGltYWdlSGVpZ2h0OiAxNixcbiAgICAgICAgdGl0bGU6IFwiQUkgQXNzaXN0YW50XCIsXG4gICAgICAgIHNwYXJrbGVzQ29sb3I6IGNvbG9yVmFyKENvbG9yTmFtZXMuQWNjZW50UHJpbWFyeSksXG4gICAgICAgIGljb25XaWR0aDogXCIxNnB4XCIsXG4gICAgICAgIGljb25IZWlnaHQ6IFwiMTZweFwiLFxuICAgICAgfSxcbiAgICAgIGZvb3RlckNvbmZpZzoge1xuICAgICAgICAuLi5kZWZhdWx0U3BhbnhPcmdDb25maWcuY2hhdFByZXZpZXdDb25maWchLmZvb3RlckNvbmZpZyEsXG4gICAgICAgIGhhc0ZhZGU6IGZhbHNlLFxuICAgICAgICBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudDogXCJsaWdodFwiLFxuICAgICAgICByZXBseUJ1dHRvbkljb246IFwidGhpbk1hZ25pZnlpbmdHbGFzc1wiLFxuICAgICAgICByZXBseUlucHV0SGFzU2hhZG93OiBmYWxzZSxcbiAgICAgICAgcmVwbHlJbnB1dEhhc0JvcmRlcjogdHJ1ZSxcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBjb2xvclZhcihDb2xvck5hbWVzLkJhY2tncm91bmRTZWNvbmRhcnlEYXJrKSxcbiAgICAgIH0sXG4gICAgICBjb3BpZXM6IHtcbiAgICAgICAgcGRwOiBbXG4gICAgICAgICAgXCJ3aGF0IHJldmlld2VycyB0aGluayBhYm91dCB0aGUgY29tZm9ydD9cIixcbiAgICAgICAgICBcIndoYXQgYm9keSBhcmVhcyB0aGlzIHRhcmdldHM/XCIsXG4gICAgICAgICAgXCJpZiB0aGlzIHdpbGwgc2hvdyB0aHJvdWdoIGNsb3RoZXM/XCIsXG4gICAgICAgIF0sXG4gICAgICAgIHBscDogW1xuICAgICAgICAgIFwic29tZXRoaW5nIHRvIHdlYXIgdW5kZXIgYSBzdHJhcGxlc3MgZHJlc3MgdG8gYSB3ZWRkaW5nP1wiLFxuICAgICAgICAgIFwidGhlIGJlc3Qgc2hhcGV3ZWFyIGZvciB0dW1teSBjb250cm9sP1wiLFxuICAgICAgICAgIFwidGhlIHJpZ2h0IHNoYXBld2VhciB3aXRoIGEgcGVuY2lsIHNraXJ0IGZvciB3b3JrP1wiLFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICAgIHN0YXRpY1N1Z2dlc3Rpb25Db3BpZXM6IHtcbiAgICAgICAgcGRwOiBbXG4gICAgICAgICAgXCJJcyBpdCBlYXN5IHRvIHdhc2g/XCIsXG4gICAgICAgICAgXCJJcyBpdCBnb29kIGZvciBjdXJ2eSBmaWd1cmVzP1wiLFxuICAgICAgICAgIFwiV2hhdCBkaWQgcmV2aWV3ZXJzIGxpa2UgdGhlIGJlc3Q/XCIsXG4gICAgICAgICAgXCJJcyBpdCBjb21mb3J0YWJsZT9cIixcbiAgICAgICAgICBcIldoYXQgc2l6ZSBzaG91bGQgSSBjaG9vc2U/XCIsXG4gICAgICAgICAgXCJJcyBpdCBnb29kIGZvciBhbGwgYm9keSBzaGFwZXM/XCIsXG4gICAgICAgIF0sXG4gICAgICAgIHBscDogW1xuICAgICAgICAgIFwiV2hpY2ggc3R5bGVzIGhhdmUgdGhlIG1vc3QgcmV2aWV3cz9cIixcbiAgICAgICAgICBcIldoaWNoIHN0eWxlcyBhcmUgYmVzdCBmb3IgbXkgYm9keSBzaGFwZT9cIixcbiAgICAgICAgICBcIldoaWNoIHN0eWxlcyBhcmUgbW9zdCBwb3B1bGFyP1wiLFxuICAgICAgICAgIFwiSG93IGRvZXMgU3Bhbnggc291cmNlIGl0cyBwcm9kdWN0cz9cIixcbiAgICAgICAgXSxcbiAgICAgIH0sXG4gICAgICBzdGF0aWNQTFBJbWFnZXM6IFtcbiAgICAgICAgXCJkZWZhdWx0X3BscF9lbWJlZGRlZF8xLndlYnBcIixcbiAgICAgICAgXCJkZWZhdWx0X3BscF9lbWJlZGRlZF8yLndlYnBcIixcbiAgICAgICAgXCJkZWZhdWx0X3BscF9lbWJlZGRlZF8zLndlYnBcIixcbiAgICAgICAgXCJkZWZhdWx0X3BscF9lbWJlZGRlZF80LndlYnBcIixcbiAgICAgIF0sXG4gICAgfSxcbiAgICBjdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbjoge1xuICAgICAgLi4uZGVmYXVsdFNwYW54T3JnQ29uZmlnLmN1c3RvbWVyU2VydmljZUludGVncmF0aW9uLFxuICAgICAgaW50ZWdyYXRpb25Nb2RlOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGUuZnVsbCxcbiAgICAgIHByb3ZpZGVyOiBDdXN0b21lclNlcnZpY2VUeXBlLmt1c3RvbWVyLFxuICAgICAgd2VsY29tZVRpdGxlOiBcIkNoYXQgd2l0aCBhIFNwYW54IFN0eWxpc3RcIixcbiAgICAgIHNob3dOYW1lSW5wdXQ6IHRydWUsXG4gICAgICBzaG93V2VsY29tZU9uRm9ybTogdHJ1ZSxcbiAgICAgIHNob3dBSVN1Z2dlc3Rpb25zV2l0aGluQnVzaW5lc3NIb3VyczogZmFsc2UsXG4gICAgICBjaGF0RW5hYmxlZER1cmluZ0J1c2luZXNzSG91cnM6IHRydWUsXG4gICAgICB3YWl0aW5nTWVzc2FnZVBvc2l0aW9uOiBcIkJFRk9SRV9NRVNTQUdFU1wiLFxuICAgICAgZm9ybUFpTmFtZTogXCJTcGFueCBBSSBBc3Npc3RhbnQuLi5cIixcbiAgICAgIGxlZ2FsTWVzc2FnZTpcbiAgICAgICAgJ1RoaXMgc2Vzc2lvbiB3aWxsIGJlIHRyYW5zY3JpYmVkIGZvciBxdWFsaXR5IHB1cnBvc2VzLiBQbGVhc2Ugc2VlIG91ciB0ZXJtcyBvZiB1c2Ugd2l0aGluIHRoZSBVUyA8YSBocmVmPVwiaHR0cHM6Ly9zcGFueC5jb20vcGFnZXMvaW50ZXJhY3RpdmUtc2VydmljZXMtY29uc2VudC1hbmQtZGlzY2xhaW1lcnNcIiB0YXJnZXQ9XCJfYmxhbmtcIj5oZXJlPC9hPiBhbmQgQ0EgPGEgaHJlZj1cImh0dHBzOi8vc3BhbnguY2EvcGFnZXMvaW50ZXJhY3RpdmUtc2VydmljZXMtY29uc2VudC1hbmQtZGlzY2xhaW1lcnNcIiB0YXJnZXQ9XCJfYmxhbmtcIj5oZXJlPC9hPicsXG4gICAgICB3ZWxjb21lRGVzY3JpcHRpb246XG4gICAgICAgIFwiT3VyIHN0eWxpc3RzIGxvb2sgZm9yd2FyZCB0byBhc3Npc3RpbmcgeW91IE1vbi0gRnJpIGJldHdlZW4gOTozMEFNIHRvIDc6MzBQTSBFVCwgYW5kIFNhdC1TdW4gOTozMEFNIHRvIDY6MDBQTSBFVCFcIixcbiAgICAgIGdldEN1c3RvbVdhaXRpbmdNZXNzYWdlOiAobmFtZT86IHN0cmluZykgPT5cbiAgICAgICAgYEhvbGQgdGlnaHQke25hbWUgPyBgICR7bmFtZX1gIDogXCJcIn0sIHlvdXIgc3R5bGlzdCBpcyBhbG1vc3QgaGVyZWAsXG4gICAgICB3aXRoaW5CdXNpbmVzc0hvdXJzTWVzc2FnZTpcbiAgICAgICAgXCLwn5GLIEhpIHRoZXJlISBXZSdyZSBoZXJlIHRvIGhlbHAgd2l0aCBhbnkgcXVlc3Rpb25zIG9yIHN1cHBvcnQgeW91IG5lZWTigJR3aGV0aGVyIHlvdSdyZSB0cmFja2luZyBhbiBvcmRlciwgZmluZGluZyB0aGUgcGVyZmVjdCBwcm9kdWN0LCBvciBhbnl0aGluZyBpbiBiZXR3ZWVuLiBUbyBrZWVwIHRoaW5ncyBxdWljaywgc29tZSByZXNwb25zZXMgbWlnaHQgY29tZSBmcm9tIEFJLCBidXQgaWYgeW91J2QgcmF0aGVyIGNoYXQgd2l0aCBhIHJlYWwgcGVyc29uLCBqdXN0IGxldCB1cyBrbm934oCUd2UndmUgZ290IHlvdSEgPGJyIC8+PGJyIC8+Q2xpY2sg4oCcc2VuZCBhIG1lc3NhZ2XigJ0gYmVsb3cgdG8gZ2V0IHN0YXJ0ZWQg8J+SrFwiLFxuICAgICAgd2l0aGluQnVzaW5lc3NIb3Vyc1dhaXRpbmdNZXNzYWdlOlxuICAgICAgICBcIkEgU3BhbnggU3R5bGlzdCB3aWxsIGJlIHdpdGggeW91IHdpdGhpbiA1IG1pbnV0ZXMuIFRoYW5rcyBmb3IgeW91ciBwYXRpZW5jZS48YnIgLz48YnIgLz5JbiB0aGUgbWVhbnRpbWUsIGNhbiB5b3UgZ2l2ZSB1cyBhIGxpdHRsZSBpbmZvcm1hdGlvbiBhYm91dCB5b3Vyc2VsZj9cIixcbiAgICAgIHdpdGhpbkJ1c2luZXNzSG91cnNGb3JtTWVzc2FnZTpcbiAgICAgICAgXCLwn5GLIEhpIHRoZXJlISBXZSdyZSBoZXJlIHRvIGhlbHAgd2l0aCBhbnkgcXVlc3Rpb25zIG9yIHN1cHBvcnQgeW91IG5lZWTigJR3aGV0aGVyIHlvdSdyZSB0cmFja2luZyBhbiBvcmRlciwgZmluZGluZyB0aGUgcGVyZmVjdCBwcm9kdWN0LCBvciBhbnl0aGluZyBpbiBiZXR3ZWVuLiBUbyBrZWVwIHRoaW5ncyBxdWljaywgc29tZSByZXNwb25zZXMgbWlnaHQgY29tZSBmcm9tIEFJLCBidXQgaWYgeW91J2QgcmF0aGVyIGNoYXQgd2l0aCBhIHJlYWwgcGVyc29uLCBqdXN0IGxldCB1cyBrbm934oCUd2UndmUgZ290IHlvdSEgPGJyIC8+PGJyIC8+RmlsbCBvdXQgeW91ciBpbmZvcm1hdGlvbiBhbmQgY2xpY2sg4oCcc2VuZCBhIG1lc3NhZ2XigJ0gYmVsb3cgdG8gZ2V0IHN0YXJ0ZWQg8J+SrFwiLFxuICAgICAgb3V0c2lkZUJ1c2luZXNzSG91cnNNZXNzYWdlOlxuICAgICAgICBcIvCfkYsgSGksIHdl4oCZcmUgc29ycnkgYnV0IHRoaXMgaXMgb3V0c2lkZSBvZiBvdXIgc2VydmljZSBob3Vycy48YnIgLz48YnIgLz5Zb3UgY2FuIGxlYXZlIGEgbWVzc2FnZSBhbmQgYSBzdHlsaXN0IHdpbGwgZ2V0IGJhY2sgdG8geW91ciB3aXRoaW4gMjQgaG91cnMuIElmIHlvdSBuZWVkIGFuIGFuc3dlciByaWdodCBhd2F5LCBhc2sgeW91ciBTcGFueCBBSSBzaG9wcGluZyBhc3Npc3RhbnQgZm9yIGhlbHAuXCIsXG4gICAgICBvdXRzaWRlQnVzaW5lc3NIb3Vyc0Zvcm1NZXNzYWdlOlxuICAgICAgICBcIvCfkYsgSGksIHdl4oCZcmUgc29ycnkgYnV0IHRoaXMgaXMgb3V0c2lkZSBvZiBvdXIgc2VydmljZSBob3Vycy48YnIgLz48YnIgLz5Zb3UgY2FuIGxlYXZlIGEgbWVzc2FnZSBhbmQgYSBzdHlsaXN0IHdpbGwgZ2V0IGJhY2sgdG8geW91ciB3aXRoaW4gMjQgaG91cnMuIElmIHlvdSBuZWVkIGFuIGFuc3dlciByaWdodCBhd2F5LCBhc2sgeW91ciBTcGFueCBBSSBzaG9wcGluZyBhc3Npc3RhbnQgZm9yIGhlbHAuXCIsXG4gICAgICBvdXRzaWRlQnVzaW5lc3NIb3Vyc1dhaXRpbmdNZXNzYWdlOlxuICAgICAgICBcIuKaoeKaoSBZb3UncmUgYWxsIHNldCEgQSBzdHlsaXN0IHdpbGwgZ2V0IGJhY2sgdG8geW91IHdpdGhpbiAyNCBob3VycyB3aXRoIGFuIGFuc3dlciB0byB5b3VyIHF1ZXN0aW9uLiBJbiB0aGUgbWVhbnRpbWUsIGZlZWwgZnJlZSB0byB1c2Ugb3VyIFNQQU5YIEFJIFNob3BwaW5nIEFzc2lzdGFudC5cIixcbiAgICAgIHN1Z2dlc3RlZEFJUXVlc3Rpb25zOiBbXG4gICAgICAgIFwiSG93IGNhbiBJIHJldHVybiBvciBleGNoYW5nZSBteSBvcmRlcj9cIixcbiAgICAgICAgXCJXaGVyZSBpcyBteSBvcmRlcj9cIixcbiAgICAgICAgXCJNeSBpdGVtIGlzIGRhbWFnZWQgd2hhdCBjYW4gSSBkbz9cIixcbiAgICAgICAgXCJXaGVyZSBjYW4gSSBmaW5kIG15IG9yZGVyIG51bWJlcj9cIixcbiAgICAgIF0sXG4gICAgICBidXNpbmVzc0hvdXJzU3RhcnRVVEM6IFwiOTozMEFNXCIsXG4gICAgICBidXNpbmVzc0hvdXJzRW5kVVRDOiBcIjc6MzBQTVwiLFxuICAgICAgYnVzaW5lc3NIb3Vyc1RpbWV6b25lOiBcIi0wNTowMFwiLCAvLyBFVFxuICAgICAgd2l0aGluQnVzaW5lc3NIb3Vyc0luaXRpYWxTdGF0ZTogQ2hhdFN0YXRlLklOSVRJQUwsXG4gICAgICBvdXRzaWRlQnVzaW5lc3NIb3Vyc0luaXRpYWxTdGF0ZTogQ2hhdFN0YXRlLklOSVRJQUwsXG4gICAgICB3aXRoaW5CdXNpbmVzc0hvdXJzQnV0dG9udGV4dDogXCJTZW5kIGEgbWVzc2FnZVwiLFxuICAgICAgb3V0c2lkZUJ1c2luZXNzSG91cnNCdXR0b250ZXh0OiBcIkxlYXZlIGEgbWVzc2FnZVwiLFxuICAgIH0sXG4gICAgcHJvZHVjdFJldmlld0NvbmZpZzoge1xuICAgICAgLi4uZGVmYXVsdFNwYW54T3JnQ29uZmlnLnByb2R1Y3RSZXZpZXdDb25maWchLFxuICAgICAgc3R5bGVWYXJpYW50OiBcImJvcmRlcmVkXCIsXG4gICAgICBjb2xvclZhcmlhbnQ6IFwibmV1dHJhbFwiLFxuICAgIH0sXG4gICAgcGFnZUNhcmRDb25maWc6IHtcbiAgICAgIC4uLmRlZmF1bHRTcGFueE9yZ0NvbmZpZy5wYWdlQ2FyZENvbmZpZyEsXG4gICAgICB2YXJpYW50OiBcIm91dGxpbmVkXCIsXG4gICAgICBob3ZlclZhcmlhbnQ6IFwic2hhZG93XCIsXG4gICAgICBpY29uVmFyaWFudDogXCJwcmltYXJ5XCIsXG4gICAgfSxcbiAgICBwcm9kdWN0Q2FyZENvbmZpZzoge1xuICAgICAgLi4uZGVmYXVsdFNwYW54T3JnQ29uZmlnLnByb2R1Y3RDYXJkQ29uZmlnISxcbiAgICAgIHZhcmlhbnQ6IFwidHJhbnNwYXJlbnRCb3JkZXJlZFwiLFxuICAgIH0sXG4gICAgY2hhdEhlYWRlcjoge1xuICAgICAgLi4uZGVmYXVsdFNwYW54T3JnQ29uZmlnLmNoYXRIZWFkZXIsXG4gICAgICBpbWFnZVNyYzogZ2V0Q2RuQXNzZXRVUkwoXCJzcGFueC1sb2dvLnN2Z1wiLCBPcmdTaG9ydE5hbWUuU3BhbnhTdGFnaW5nKSxcbiAgICAgIGNvbGxhcHNlZENvbG9yOiBjb2xvclZhcihDb2xvck5hbWVzLkJhY2tncm91bmRTZWNvbmRhcnlEYXJrKSxcbiAgICAgIGV4cGFuZGVkQ29sb3I6IGNvbG9yVmFyKENvbG9yTmFtZXMuQmFja2dyb3VuZExpZ2h0KSxcbiAgICAgIGNoZXZyb25Db2xvcjogY29sb3JWYXIoQ29sb3JOYW1lcy5CYWNrZ3JvdW5kRGFyayksXG4gICAgICBib3JkZXJCb3R0b206IGAxcHggc29saWQgJHtjb2xvclZhcihDb2xvck5hbWVzLkJvcmRlckxpZ2h0KX1gLFxuICAgICAgY2xvc2VJY29uOiBHckNsb3NlLFxuICAgICAgY3VzdG9tZXJTdXBwb3J0U3dpdGNoQ29uZmlnOiB7XG4gICAgICAgIC4uLmRlZmF1bHRTcGFueE9yZ0NvbmZpZy5jaGF0SGVhZGVyLmN1c3RvbWVyU3VwcG9ydFN3aXRjaENvbmZpZyEsXG4gICAgICAgIHZhcmlhbnQ6IFwiZGV0YWNoZWRcIixcbiAgICAgICAgc3VwcG9ydFRpdGxlOiBcIlN1cHBvcnRcIixcbiAgICAgICAgc3BpZmZ5VGl0bGU6IFwiQUkgQXNzaXN0YW50XCIsXG4gICAgICAgIHNwaWZmeVRpdGxlSGFzTG9nbzogdHJ1ZSxcbiAgICAgICAgYm9yZGVyQ29sb3I6IGNvbG9yVmFyKENvbG9yTmFtZXMuVGV4dFByaW1hcnkpLFxuICAgICAgICBzZWxlY3RlZFRleHRDb2xvcjogY29sb3JWYXIoQ29sb3JOYW1lcy5UZXh0TGlnaHQpLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yVmFyKENvbG9yTmFtZXMuVGV4dFByaW1hcnkpLFxuICAgICAgICBzZWxlY3RlZEJhY2tncm91bmRDb2xvcjogY29sb3JWYXIoQ29sb3JOYW1lcy5UZXh0UHJpbWFyeSksXG4gICAgICAgIHVuc2VsZWN0ZWRCYWNrZ3JvdW5kQ29sb3I6IGNvbG9yVmFyKENvbG9yTmFtZXMuQmFja2dyb3VuZFNlY29uZGFyeURhcmspLFxuICAgICAgICB1bnNlbGVjdGVkVGV4dENvbG9yOiBjb2xvclZhcihDb2xvck5hbWVzLlRleHRQcmltYXJ5KSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBmbG9hdGluZ0NoYXRDb25maWc6IHtcbiAgICAgIC4uLmRlZmF1bHRTcGFueE9yZ0NvbmZpZy5mbG9hdGluZ0NoYXRDb25maWcsXG4gICAgICBuZXZlclNob3dTaW5nbGVQcm9kdWN0Q2FyZHM6IGZhbHNlLFxuICAgICAgdGVybXNBbmRDb25kaXRpb25zQ29uZmlnOiB7XG4gICAgICAgIGNvcHk6IFwiVGhpcyBzZXNzaW9uIHdpbGwgYmUgdHJhbnNjcmliZWQgZm9yIHF1YWxpdHkgcHVycG9zZXMuIFBsZWFzZSBzZWUgb3VyIHRlcm1zIG9mIHVzZSBmb3JcIixcbiAgICAgICAgbGluazogXCJodHRwczovL3NwYW54LmNvbS9wYWdlcy90ZXJtcy1vZi11c2VcIixcbiAgICAgICAgbGlua1RleHQ6IFwiU1BBTlguY29tIGhlcmUuXCIsXG4gICAgICB9LFxuICAgICAgcmVwbHlJbnB1dENvbmZpZzoge1xuICAgICAgICBzaXplOiBcImxnXCIsXG4gICAgICAgIHNlbmRJY29uOiBcImFycm93VXBcIixcbiAgICAgIH0sXG5cbiAgICAgIHN1Z2dlc3Rpb25CdXR0b25Db25maWc6IHtcbiAgICAgICAgdmFyaWFudDogXCJvdXRsaW5lZFwiLFxuICAgICAgICBob3ZlclZhcmlhbnQ6IFwiZGFya1wiLFxuICAgICAgICBhbnN3ZXJWYXJpYW50OiBcIm91dGxpbmVkXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgY29udmVyc2F0aW9uYWxTZWFyY2g6IHtcbiAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICBzdWdnZXN0aW9uczogW1xuICAgICAgICBcIlNoYXBld2VhciB0aGF0IHdvbuKAmXQgc2hvdyB0aHJvdWdoIGNsb3RoZXNcIixcbiAgICAgICAgXCJTdHlsZXMgd2l0aCB0aGUgc3Ryb25nZXN0IGNvbXByZXNzaW9uXCIsXG4gICAgICAgIFwiQ29tZm9ydGFibGUgc3R5bGVzIGZvciBhbGwgZGF5IHdlYXJcIixcbiAgICAgICAgXCJCZXN0IHNoYXBld2VhciBmb3IgdHVtbXkgY29udHJvbFwiLFxuICAgICAgXSxcbiAgICAgIGVudHJ5cG9pbnRCdG5Db2xvcjogXCJsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICMwMDRFQTIsICM2OTQxQzYpXCIsXG4gICAgICBlbnRyeXBvaW50QnRuVGV4dENvbG9yOiBcIiMwMDRFQTJcIixcbiAgICAgIGVudHJ5cG9pbnRCdG5Cb3JkZXJDb2xvcjogXCIjMDA0RUEyXCIsXG4gICAgICAvLyBUT0RPOiBNaWdyYXRlIGl0IHRvIHRoZSBuZXcgbW91bnQgcG9pbnQgc3RydWN0dXJlLlxuICAgICAgZW50cnlwb2ludENvbnRhaW5lcjogXCJpZHxzaG9waWZ5LXNlY3Rpb24taGVhZGVyXCIsXG4gICAgICBwcm9kdWN0R3JpZENvbnRhaW5lcjogXCJpZHxNYWluQ29udGVudFdyYXBwZXJcIixcbiAgICAgIGVudHJ5cG9pbnRUcmlnZ2VyOiBcImlkfHNlYXJjaC1pbnB1dFwiLFxuICAgICAgZ2VuZXJhbFNlYXJjaEJ0bjogXCJxdWVyeXxidXR0b24uaGVhZGVyLXNlYXJjaF9fYnV0dG9uXCIsXG4gICAgICBwYWdlQ29udGVudDogXCJpZHxNYWluQ29udGVudFwiLFxuICAgICAgc2VhcmNoQ29udGVudDogXCJpZHxzZWFyY2gtY29udGVudFwiLFxuICAgICAgc29ydGluZ0ZvbnQ6IFwiaXZ5cHJlc3RvLWhlYWRsaW5lLCBzZXJpZlwiLFxuICAgICAgb3B0aW9uc0ZvbnQ6IFwiSW50ZXJcIixcbiAgICB9LFxuXG4gICAgbWVyY2hhbnRWYXJpYW50U2V0dGluZ3M6IHtcbiAgICAgIGR5bmFtaWNWYXJpYW50czoge1xuICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICByZWZyZXNoSW50ZXJ2YWw6IDUwMCxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBtZXJjaGFudE92ZXJyaWRlQ3NzOiBgXG4gICAgICAuc3BpZmZ5LXByb2R1Y3QtcmV2aWV3LWNhcmQtY29udGFpbmVyIHtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tc3BpZmZ5LWNvbG9ycy1iYWNrZ3JvdW5kLWxpZ2h0KSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLnNwaWZmeS1zdGFyLXJhdGluZy1jb250YWluZXIge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zcGlmZnktY29sb3JzLWJhY2tncm91bmQtc2Vjb25kYXJ5LWRhcmspICFpbXBvcnRhbnQ7XG4gICAgICB9XG4gICAgICAuc3BpZmZ5LXN0YXItcmF0aW5nLXN0YXIge1xuICAgICAgICBmaWxsOiB2YXIoLS1zcGlmZnktY29sb3JzLXRleHQtcHJpbWFyeSkgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIC5zcGlmZnktcHJvZHVjdC1yZXZpZXctaGVhZGVyLXJldmlld2VyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXNwaWZmeS1jb2xvcnMtdGV4dC1wcmltYXJ5KSAhaW1wb3J0YW50O1xuICAgICAgfVxuICAgICAgLnNwaWZmeS1taW5pLXZlcmlmaWVkLWJ1eWVyLWljb24ge1xuICAgICAgICBmaWxsOiB2YXIoLS1zcGlmZnktY29sb3JzLXRleHQtcHJpbWFyeSkgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgI3NwaWZmeS1wcm9kdWN0LXJldmlldy1jYXJkLXJlYWQtbW9yZS1jb250YWluZXIge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgfVxuXG4gICAgICAjc3BpZmZ5LWFpLWNoYXQtcHJldmlldy1jb250ZW50cyBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2IHtcbiAgICAgICAgLS1jaGFrcmEtZm9udHMtaGVhZGluZzogJ2ludGVyJywgJ1BvcHBpbnMnLCBzYW5zLXNlcmlmO1xuICAgICAgfVxuXG4gICAgICAjc3BpZmZ5LWNoYXQtcHJldmlldy11c2VyLXF1ZXJ5LWJ1dHRvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICAgIH1cbiAgICAgICNzcGlmZnktYWktZmxvYXRpbmctYnV0dG9uIHtcbiAgICAgICAgei1pbmRleDogMjE0NzQ4MzAwMSAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAvKiBTdWdnZXN0aW9uQmFyVjIgQ1NTICovXG4gICAgICAjc3BpZmZ5LXRvcC1zdWdnZXN0aW9uLWJhci1jb250ZW50cyBidXR0b257XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHggIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgI3NwaWZmeS10b3Atc3VnZ2VzdGlvbi1iYXItY29udGVudHMgYnV0dG9uIHNwYW57XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xuICAgICAgICBmb250LXdlaWdodDogNTAwO1xuICAgICAgfVxuXG4gICAgICAjc3BpZmZ5LXRvcC1zdWdnZXN0aW9uLWJhci1jb250ZW50cyBidXR0b24gc3Zne1xuICAgICAgICB3aWR0aDogMTRweDtcbiAgICAgICAgaGVpZ2h0OiAxNHB4O1xuICAgICAgfVxuXG4gICAgICAjc3BpZmZ5LWJvdHRvbS1zdWdnZXN0aW9uLWJhci1jb250ZW50cyBidXR0b24ge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXNwaWZmeS1jb2xvcnMtYm9yZGVyLW91dGxpbmUpICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgICNzcGlmZnktYm90dG9tLXN1Z2dlc3Rpb24tYmFyLWNvbnRlbnRzIGJ1dHRvbjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNwaWZmeS1jb2xvcnMtYm9yZGVyLWxpZ2h0KSAhaW1wb3J0YW50O1xuICAgICAgICBib3JkZXItY29sb3I6dmFyKC0tc3BpZmZ5LWNvbG9ycy1ib3JkZXItbGlnaHQpICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgICNzcGlmZnktYm90dG9tLXN1Z2dlc3Rpb24tYmFyLWNvbnRlbnRzIGJ1dHRvbiBzcGFue1xuICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICAgIH1cblxuICAgICAgI3NwaWZmeS1ib3R0b20tc3VnZ2VzdGlvbi1iYXItY29udGVudHMgYnV0dG9uIHN2Z3tcbiAgICAgICAgd2lkdGg6IDE0cHg7XG4gICAgICAgIGhlaWdodDogMTRweDtcbiAgICAgIH1cblxuICAgICAgLnNwaWZmeS1jaGF0LWhlYWRlci1jb250YWluZXIge1xuICAgICAgICBwYWRkaW5nLWJsb2NrOiA4cHg7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAke2NvbG9yVmFyKENvbG9yTmFtZXMuQm9yZGVyTGlnaHQpfTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICB9XG5cbiAgICAgIC5zcGlmZnktY2hhdC1oZWFkZXItY2xvc2UtYnV0dG9uIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3BpZmZ5LWNvbG9ycy10ZXh0LWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLXNwaWZmeS1jb2xvcnMtYmFja2dyb3VuZC1wcmltYXJ5KTtcbiAgICAgIH1cblxuICAgICAgLnNwaWZmeS1zdWdnZXN0aW9uLWJhci1idXR0b24ge1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAke2NvbG9yVmFyKENvbG9yTmFtZXMuQm9yZGVyT3V0bGluZSl9O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAyNHB4O1xuICAgICAgfVxuXG4gICAgICAuc3BpZmZ5LXN1Z2dlc3Rpb24tYnV0dG9uLWFuc3dlci1jbGFzcyB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICR7Y29sb3JWYXIoQ29sb3JOYW1lcy5UZXh0UHJpbWFyeSl9ICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5zcGlmZnktc3VnZ2VzdGlvbi1idXR0b24tYW5zd2VyLWNsYXNzOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvclZhcihcbiAgICAgICAgICBDb2xvck5hbWVzLkJhY2tncm91bmRTZWNvbmRhcnlEYXJrXG4gICAgICAgICl9ICFpbXBvcnRhbnQ7XG4gICAgICAgIGJvcmRlci1jb2xvcjogJHtjb2xvclZhcihcbiAgICAgICAgICBDb2xvck5hbWVzLkJhY2tncm91bmRTZWNvbmRhcnlEYXJrXG4gICAgICAgICl9ICFpbXBvcnRhbnQ7XG4gICAgICAgIGNvbG9yOiAke2NvbG9yVmFyKENvbG9yTmFtZXMuVGV4dExpbmspfSAhaW1wb3J0YW50O1xuICAgICAgfVxuXG4gICAgICAuc3BpZmZ5LXN1Z2dlc3Rpb24tYnV0dG9uLXF1ZXN0aW9uLWNsYXNzIHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJHtjb2xvclZhcihDb2xvck5hbWVzLkJvcmRlckxpZ2h0KX0gIWltcG9ydGFudDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgICAgfVxuXG4gICAgICAuc3BpZmZ5LXN1Z2dlc3Rpb24tYnV0dG9uLXF1ZXN0aW9uLWNsYXNzOmhvdmVyIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAke2NvbG9yVmFyKFxuICAgICAgICAgIENvbG9yTmFtZXMuQmFja2dyb3VuZFNlY29uZGFyeURhcmtcbiAgICAgICAgKX0gIWltcG9ydGFudDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtjb2xvclZhcihcbiAgICAgICAgICBDb2xvck5hbWVzLkJhY2tncm91bmRTZWNvbmRhcnlEYXJrXG4gICAgICAgICl9ICFpbXBvcnRhbnQ7XG4gICAgICAgIGNvbG9yOiAke2NvbG9yVmFyKENvbG9yTmFtZXMuVGV4dFByaW1hcnkpfSAhaW1wb3J0YW50O1xuICAgICAgICBmaWxsOiAke2NvbG9yVmFyKENvbG9yTmFtZXMuVGV4dFByaW1hcnkpfSAhaW1wb3J0YW50O1xuICAgICAgICBzdHJva2U6ICR7Y29sb3JWYXIoQ29sb3JOYW1lcy5UZXh0UHJpbWFyeSl9ICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5zcGlmZnktc3VnZ2VzdGlvbi1idXR0b24tdGV4dC1jbGFzcyB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICAgIH1cblxuICAgICAgLnNwaWZmeS1zb2NpYWwtcHJvb2YtY29udGVudC1pbWFnZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLnNwaWZmeS11c2VyLXF1ZXJ5LWJ1dHRvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICAgIH1cblxuICAgICAgLnNwaWZmeS1pbWFnZS1iYW5uZXItc3VidGl0bGUge1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgfVxuICAgICAgLnNwaWZmeS1jdXN0b21lci1zZXJ2aWNlLWxlZ2FsLW1lc3NhZ2UgYSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbi1saW5lOiB1bmRlcmxpbmU7XG4gICAgICB9XG4gICAgICAuc3BpZmZ5LWN1c3RvbWVyLXNlcnZpY2UtbGVnYWwtbWVzc2FnZSBhOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXNwaWZmeS1jb2xvcnMtdGV4dC1saW5rKTtcbiAgICAgIH1cbiAgICAgIC5zcGlmZnktdGFnLXBpbGwtdGV4dCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zcGlmZnktY29sb3JzLXRleHQtbGlnaHQpO1xuICAgICAgfVxuICAgICAgLnNwaWZmeS1wcm9kdWN0LWNhcmQtdGl0bGUge1xuICAgICAgICBmb250LWZhbWlseTogdmFyKC0tY2hha3JhLWZvbnRzLWhlYWRpbmcpO1xuICAgICAgICBjb2xvcjogdmFyKC0tc3BpZmZ5LWNvbG9ycy10ZXh0LXByaW1hcnkpO1xuICAgICAgfVxuICAgICAgLnNwaWZmeS1wcm9kdWN0LWNhcmQtdGV4dC1jb2xvciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zcGlmZnktY29sb3JzLXRleHQtc2Vjb25kYXJ5KTtcbiAgICAgIH1cbiAgICAgIC5zcGlmZnktcHJvZHVjdC1jYXJkLXJhdGluZy1zdGFyLWNvbG9yIHtcbiAgICAgICAgZmlsbDogdmFyKC0tc3BpZmZ5LWNvbG9ycy10ZXh0LXByaW1hcnkpO1xuICAgICAgfVxuICAgICAgLnNwaWZmeS1zd2l0Y2gtdG8tYWdlbnQtYnV0dG9uLXVuc2VsZWN0ZWQtdGV4dC1jb2xvciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1zcGlmZnktY29sb3JzLXRleHQtcHJpbWFyeSk7XG4gICAgICB9IFxuICAgICAgLnNwaWZmeS1zd2l0Y2gtdG8tYWdlbnQtYnV0dG9uLXNlbGVjdGVkLXRleHQtY29sb3Ige1xuICAgICAgICBjb2xvcjogdmFyKC0tc3BpZmZ5LWNvbG9ycy10ZXh0LWxpZ2h0KTtcbiAgICAgIH1cbiAgICAgIC5zcGlmZnktc3dpdGNoLXRvLWFnZW50LWJ1dHRvbi1zZWxlY3RlZC1iYWNrZ3JvdW5kLWNvbG9yIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc3BpZmZ5LWNvbG9ycy10ZXh0LXByaW1hcnkpO1xuICAgICAgfVxuICAgICAgLnNwaWZmeS1zd2l0Y2gtdG8tYWdlbnQtYnV0dG9uLXVuc2VsZWN0ZWQtYmFja2dyb3VuZC1jb2xvciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNwaWZmeS1jb2xvcnMtYmFja2dyb3VuZC1zZWNvbmRhcnktZGFyayk7XG4gICAgICB9XG4gICAgICAuc3BpZmZ5LXN3aXRjaC10by1hZ2VudC1idXR0b24tYm9yZGVyLWNvbG9yIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1zcGlmZnktY29sb3JzLXRleHQtcHJpbWFyeSk7XG4gICAgICB9IFxuICAgICAgLnNwaWZmeS1zd2l0Y2gtdG8tYWdlbnQtYnV0dG9uLWJhY2tncm91bmQtY29sb3Ige1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zcGlmZnktY29sb3JzLXRleHQtcHJpbWFyeSk7XG4gICAgICB9XG4gICAgICAuc3BpZmZ5LXN3aXRjaC10by1hZ2VudC1idXR0b24taG92ZXItYmFja2dyb3VuZC1jb2xvcjpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNwaWZmeS1jb2xvcnMtdGV4dC1wcmltYXJ5KTtcbiAgICAgIH1cbiAgICAgIC5zcGlmZnktc3dpdGNoLXRvLWFnZW50LWJ1dHRvbi1ob3Zlci10ZXh0LWNvbG9yOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IHZhcigtLXNwaWZmeS1jb2xvcnMtdGV4dC1saWdodCk7XG4gICAgICB9XG4gICAgICAuc3BpZmZ5LXN3aXRjaC10by1hZ2VudC1idXR0b24tc2VsZWN0ZWQtZmlsbC1jb2xvciB7XG4gICAgICAgIGZpbGw6IHZhcigtLXNwaWZmeS1jb2xvcnMtdGV4dC1saWdodCk7XG4gICAgICB9XG4gICAgICAuc3BpZmZ5LXN3aXRjaC10by1hZ2VudC1idXR0b24tdW5zZWxlY3RlZC1maWxsLWNvbG9yIHtcbiAgICAgICAgZmlsbDogdmFyKC0tc3BpZmZ5LWNvbG9ycy10ZXh0LXByaW1hcnkpO1xuICAgICAgfVxuICAgICAgLnNwaWZmeS1jaGF0LXByZXZpZXctZm9vdGVyLWJhY2tncm91bmQtY29sb3Ige1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zcGlmZnktY29sb3JzLWJhY2tncm91bmQtc2Vjb25kYXJ5LWRhcmspO1xuICAgICAgfVxuICAgICAgLnNwaWZmeS1tZXNzYWdlLWNvbnRlbnQtY29udGFpbmVyIHtcbiAgICAgICAgZm9udC1zaXplOiAxNXB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiAzMDAgIWltcG9ydGFudDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDE2MCU7XG4gICAgICB9XG4gICAgYCxcbiAgfTtcbn07XG5cbmNvbnN0IHNwYW54T3JnSW5mbyA9IHtcbiAgc2hvcnROYW1lOiBcInNwYW54LXN0YWdpbmdcIixcbiAgbmFtZTogXCJTUEFOWFwiLFxuICBkb21haW46IFwiMDFqeHpua3B5bTZiejhkNzJ4bWFwczc3dzMtYzQ3NzQ4NDY3ZjYwN2Q0MDY3ZmUubXlzaG9waWZ5LmRldlwiLFxuICBkZWZhdWx0UHJvZHVjdElkOiBcIjM5NzczNTgwOTg0NTMxXCIsXG4gIGFsd2F5c0VuYWJsZWRNZXJjaGFudHM6IHRydWUsXG4gIG9yZ1VJQ29uZmlnOiBzcGFueE9yZ1VJQ29uZmlnLFxuICBvcmdDb2xvcnM6ICgpID0+IHNwYW54Q29sb3JzLFxuICBvcmdQYWdlQ29uZmlnOiBzcGFueFBhZ2VDb25maWcsXG59IHNhdGlzZmllcyBCYXNpY09yZ0luZm9UeXBlO1xuXG5leHBvcnQgeyBzcGFueE9yZ0luZm8gfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVdBLE1BQWEsMEJBQTBCO0FBQ3ZDLE1BQWEsMEJBQTBCOzs7O0FDdUN2QyxNQUFNLHlCQUF3QztDQUM1QyxjQUFjO0VBQ1o7R0FDRSxXQUFXO0dBQ1gsYUFBYTtHQUNiLGdCQUFnQjtHQUNoQixjQUFjO0lBQ1osRUFDRSxVQUFVLG9CQUFvQixZQUMvQjtJQUNEO0tBQ0UsVUFBVSxvQkFBb0I7S0FDOUIsVUFBVSw4QkFBOEI7S0FDekM7SUFDRDtLQUNFLFVBQVUsb0JBQW9CO0tBQzlCLGFBQWEsYUFBYTtLQUMzQjtJQUNGO0dBQ0QsZ0JBQWdCO0lBQ2Q7S0FDRSxrQkFBa0I7S0FDbEIsZ0JBQWdCO0tBQ2pCO0lBQ0Q7S0FDRSxrQkFBa0I7S0FDbEIsZ0JBQWdCO0tBQ2pCO0lBQ0Q7S0FDRSxrQkFBa0I7S0FDbEIsZ0JBQWdCO0tBQ2pCO0lBQ0Y7R0FDRjtFQUNEO0dBQ0UsV0FBVztHQUNYLGFBQWE7R0FDYixnQkFBZ0I7R0FDaEIsY0FBYyxDQUNaLEVBQ0Us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