{"version":3,"file":"head-menu.mjs","sources":["../../../components/menu/head-menu.tsx"],"sourcesContent":["import {\n  defineComponent,\n  computed,\n  provide,\n  ref,\n  reactive,\n  watch,\n  onMounted,\n  onBeforeUnmount,\n  onUpdated,\n  watchEffect,\n  toRefs,\n  h,\n  VNode,\n  Component,\n  getCurrentInstance,\n  nextTick,\n  cloneVNode,\n} from 'vue';\nimport { EllipsisIcon } from 'tdesign-icons-vue-next';\nimport { isArray, isFunction } from 'lodash-es';\n\nimport log from '@tdesign/common-js/log/log';\nimport props from './head-menu-props';\nimport { MenuValue } from './type';\nimport { TdMenuInterface, TdOpenType } from './types';\nimport { Tabs, TabPanel } from '../tabs';\nimport Submenu from './submenu';\nimport PopupOverflowContent from './components/popup-overflow-content';\nimport { VMenu } from './utils';\n\nimport { useVModel, usePrefixClass, useDefaultValue, useResizeObserver } from '@tdesign/shared-hooks';\n\n// 用于\"更多\"Submenu 的特殊 value，不会与任何实际菜单项冲突\nconst MORE_SUBMENU_VALUE = '__t_head_menu_more__';\n\nexport default defineComponent({\n  name: 'THeadMenu',\n  props,\n  setup(props, ctx) {\n    const classPrefix = usePrefixClass();\n    const { proxy } = getCurrentInstance();\n    watchEffect(() => {\n      if (ctx.slots.options) {\n        log.warnOnce('TMenu', '`options` slot is going to be deprecated, please use `operations` for slot instead.');\n      }\n    });\n    const { value, modelValue, expanded } = toRefs(props);\n    const [activeValue, setActiveValue] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n    const [expandValues, setExpanded] = useDefaultValue(expanded, props.defaultExpanded, props.onExpand, 'expanded');\n    const activeValues = ref([]);\n    const theme = computed(() => props.theme);\n    const menuClass = computed(() => [\n      `${classPrefix.value}-menu`,\n      `${classPrefix.value}-head-menu`,\n      `${classPrefix.value}-menu--${props.theme}`,\n    ]);\n    const mode = ref(props.expandType);\n    const submenu = reactive([]);\n    const vMenu = new VMenu({ isMutex: true, expandValues: expandValues.value });\n\n    provide<TdMenuInterface>('TdMenu', {\n      mode,\n      theme,\n      vMenu,\n      isHead: true,\n      expandValues,\n      activeValue,\n      activeValues,\n      select: (value: MenuValue) => {\n        setActiveValue(value);\n      },\n      open: (value: MenuValue, type: TdOpenType) => {\n        const expanded = [...expandValues.value];\n        const index = expanded.indexOf(value);\n\n        if (mode.value === 'popup') {\n          if (type === 'add') {\n            if (index === -1) {\n              // 可能初始expanded里包含了该value\n              expanded.push(value);\n            }\n          } else if (type === 'remove') {\n            expanded.splice(index, 1);\n          }\n        } else if (mode.value === 'normal' && value !== undefined) {\n          expanded.splice(0, 1);\n          if (index === -1) {\n            expanded.push(value);\n          }\n        }\n        setExpanded(expanded);\n      },\n    });\n\n    // methods\n    const handleTabChange = (value: MenuValue) => {\n      setActiveValue(value);\n      handleClickSubMenuItem(value);\n    };\n\n    const handleSubmenuExpand = (value: MenuValue) => {\n      const ans = vMenu.getChild(value);\n      submenu.length = 0;\n      submenu.push(...ans);\n    };\n\n    // watch\n    watch(expandValues, (value) => {\n      if (mode.value === 'normal') {\n        handleSubmenuExpand(value[0]);\n      }\n    });\n    let cachedFlatItemValues: MenuValue[] = [];\n\n    const updateActiveValues = (value: MenuValue) => {\n      const pureVals = vMenu.select(value).filter((v) => v !== MORE_SUBMENU_VALUE);\n      activeValues.value = pureVals;\n      syncMoreActiveState();\n    };\n\n    const syncMoreActiveState = () => {\n      const vals = activeValues.value.filter((v) => v !== MORE_SUBMENU_VALUE);\n      const isFolded = foldStartIndex.value >= 0;\n\n      let needActive = false;\n      if (isFolded && vals.length > 0 && cachedFlatItemValues.length > 0) {\n        const foldedTopValues = new Set(cachedFlatItemValues.slice(foldStartIndex.value));\n\n        const topLevelAncestor = vals.find((v) => v != null);\n        needActive = topLevelAncestor != null && foldedTopValues.has(topLevelAncestor);\n      }\n\n      if (needActive) {\n        activeValues.value = [...vals, MORE_SUBMENU_VALUE];\n      } else {\n        activeValues.value = vals;\n      }\n    };\n\n    watch(activeValue, updateActiveValues);\n    watch(\n      () => props.expandType,\n      (value) => {\n        mode.value = value;\n      },\n    );\n\n    onMounted(() => {\n      activeValues.value = vMenu.select(activeValue.value);\n      if (expandValues.value?.length > 0) {\n        handleSubmenuExpand(expandValues.value[0]); // 顶部导航只能同时展开一个子菜单\n      }\n    });\n\n    const handleClickSubMenuItem = (value: MenuValue) => {\n      const activeMenuItem = submenu.find((v) => v.value === value);\n      activeMenuItem.onClick?.({ value });\n      const { to, href, replace } = activeMenuItem;\n      if (href) {\n        window.location.href = activeMenuItem.href;\n      }\n      // @ts-ignore: TODO\n      const router = activeMenuItem.router || proxy.$router;\n      if (to && router) {\n        replace ? router.replace(to) : router.push(to);\n      }\n    };\n    // setup返回的render函数中无法访问methods属性中的类容，移动此方法到setup中\n    const renderNormalSubmenu = () => {\n      if (submenu.length === 0) return null;\n      return (\n        <ul class={[`${classPrefix.value}-head-menu__submenu`, `${classPrefix.value}-submenu`]}>\n          {\n            <Tabs value={activeValue.value} onChange={handleTabChange}>\n              {submenu.map((item) => (\n                <TabPanel value={item.value} label={item.vnode()[0]?.children} />\n              ))}\n            </Tabs>\n          }\n        </ul>\n      );\n    };\n\n    const menuRef = ref<HTMLUListElement>();\n    const innerRef = ref<HTMLDivElement>();\n    const logoRef = ref<HTMLDivElement>();\n    const operationRef = ref<HTMLDivElement>();\n\n    // 记录从第几个 DOM 子元素开始折叠（-1 表示不折叠）\n    const foldStartIndex = ref(-1);\n    // 缓存每个菜单项的完整宽度（包含 margin），即使被 display:none 也能使用缓存值\n    const cachedItemWidths: number[] = [];\n\n    /**\n     * 获取 menuRef 下所有菜单项 DOM 元素（<li> 级别）, 兼容通过封装组件实现的子菜单\n     */\n    const getMenuItemElements = (): HTMLElement[] => {\n      if (!menuRef.value) return [];\n      const moreClass = `${classPrefix.value}-head-menu__submenu--more`;\n      const menuItemClass = `${classPrefix.value}-menu__item`;\n      const submenuClass = `${classPrefix.value}-submenu`;\n\n      const result: HTMLElement[] = [];\n\n      const collectItems = (parent: HTMLElement, depth: number) => {\n        // 限制递归深度，避免无限递归\n        if (depth > 3) return;\n        Array.from(parent.children).forEach((el) => {\n          if (!(el instanceof HTMLElement)) return;\n          // 跳过\"更多\"按钮\n          if (el.classList.contains(moreClass)) return;\n          // 如果是菜单项或子菜单，收集它\n          if (el.classList.contains(menuItemClass) || el.classList.contains(submenuClass)) {\n            result.push(el);\n          } else {\n            // 否则认为是封装容器，继续向下查找\n            collectItems(el, depth + 1);\n          }\n        });\n      };\n\n      collectItems(menuRef.value, 0);\n      return result;\n    };\n\n    /**\n     * 获取\"更多\"按钮的实际 DOM 宽度（而非硬编码）\n     */\n    const getMoreButtonWidth = (): number => {\n      if (!menuRef.value) return 0;\n      const moreEl = menuRef.value.querySelector(`.${classPrefix.value}-head-menu__submenu--more`) as HTMLElement;\n      if (!moreEl) return 0;\n      // 如果\"更多\"按钮被隐藏，临时显示来测量\n      const wasHidden = moreEl.style.display === 'none';\n      if (wasHidden) {\n        moreEl.style.visibility = 'hidden';\n        moreEl.style.display = '';\n      }\n      const style = window.getComputedStyle(moreEl);\n      const rect = moreEl.getBoundingClientRect();\n      const w = rect.width + Number.parseFloat(style.marginLeft) + Number.parseFloat(style.marginRight);\n      if (wasHidden) {\n        moreEl.style.display = 'none';\n        moreEl.style.visibility = '';\n      }\n      return w;\n    };\n\n    const getElementWidth = (el: HTMLElement): number => {\n      const style = window.getComputedStyle(el);\n      const rect = el.getBoundingClientRect();\n      return rect.width + Number.parseFloat(style.marginLeft) + Number.parseFloat(style.marginRight);\n    };\n\n    const getWrapperElements = (): HTMLElement[] => {\n      if (!menuRef.value) return [];\n      const moreClass = `${classPrefix.value}-head-menu__submenu--more`;\n      const menuItemClass = `${classPrefix.value}-menu__item`;\n      const submenuClass = `${classPrefix.value}-submenu`;\n      const wrappers: HTMLElement[] = [];\n\n      Array.from(menuRef.value.children).forEach((el) => {\n        if (!(el instanceof HTMLElement)) return;\n        if (el.classList.contains(moreClass)) return;\n        if (el.classList.contains(menuItemClass) || el.classList.contains(submenuClass)) return;\n        // 既不是菜单项也不是\"更多\"按钮，就是封装容器\n        wrappers.push(el);\n      });\n      return wrappers;\n    };\n\n    const handleResize = () => {\n      if (props.expandType !== 'popup') return;\n      if (!menuRef.value) return;\n\n      // 先处理封装容器：临时设 display:contents 使其不产生盒子\n      const wrappers = getWrapperElements();\n      const savedWrapperDisplays: string[] = [];\n      wrappers.forEach((el) => {\n        savedWrapperDisplays.push(el.style.display);\n        el.style.display = 'contents';\n      });\n\n      const itemNodes = getMenuItemElements();\n      if (itemNodes.length === 0) {\n        wrappers.forEach((el, i) => {\n          el.style.display = savedWrapperDisplays[i];\n        });\n        foldStartIndex.value = -1;\n        applyFoldState();\n        return;\n      }\n\n      // 恢复所有项可见，测量真实自然宽度\n      const moreEl = menuRef.value.querySelector(`.${classPrefix.value}-head-menu__submenu--more`) as HTMLElement;\n      if (moreEl) moreEl.style.display = 'none';\n\n      const savedFlexShrinks: string[] = [];\n      const savedDisplays: string[] = [];\n      itemNodes.forEach((el) => {\n        savedDisplays.push(el.style.display);\n        el.style.display = '';\n        savedFlexShrinks.push(el.style.flexShrink);\n        el.style.flexShrink = '0';\n      });\n\n      cachedItemWidths.length = 0;\n      itemNodes.forEach((el) => {\n        cachedItemWidths.push(getElementWidth(el));\n      });\n\n      // 恢复测量前的状态\n      itemNodes.forEach((el, index) => {\n        el.style.flexShrink = savedFlexShrinks[index];\n        el.style.display = savedDisplays[index];\n      });\n      if (moreEl) moreEl.style.display = savedDisplays.length > 0 ? '' : 'none';\n\n      // 恢复封装容器\n      wrappers.forEach((el) => {\n        el.style.display = 'contents';\n      });\n\n      // 计算截断点\n      const menuWidth = calcMenuWidth();\n      const totalItemsWidth = cachedItemWidths.reduce((sum, w) => sum + w, 0);\n\n      let newFoldIndex = -1;\n\n      if (totalItemsWidth > menuWidth) {\n        const subMoreWidth = getMoreButtonWidth();\n        let currentWidth = 0;\n        for (let i = 0; i < itemNodes.length; i++) {\n          if (currentWidth + cachedItemWidths[i] + subMoreWidth > menuWidth) {\n            newFoldIndex = i;\n            break;\n          }\n          currentWidth += cachedItemWidths[i];\n        }\n        if (newFoldIndex === -1 && currentWidth + subMoreWidth > menuWidth) {\n          newFoldIndex = itemNodes.length - 1;\n        }\n      }\n\n      foldStartIndex.value = newFoldIndex;\n      applyFoldState();\n    };\n\n    const applyFoldState = () => {\n      if (!menuRef.value) return;\n\n      // 确保封装容器始终 display:contents\n      const wrappers = getWrapperElements();\n      wrappers.forEach((el) => {\n        el.style.display = 'contents';\n      });\n\n      const itemNodes = getMenuItemElements();\n      const moreEl = menuRef.value.querySelector(`.${classPrefix.value}-head-menu__submenu--more`) as HTMLElement;\n      const isFolded = foldStartIndex.value >= 0;\n\n      itemNodes.forEach((el, index) => {\n        el.style.display = isFolded && index >= foldStartIndex.value ? 'none' : '';\n      });\n\n      if (moreEl) {\n        moreEl.style.display = isFolded ? '' : 'none';\n      }\n\n      // 折叠状态变化后，更新\"更多\"按钮的高亮状态\n      syncMoreActiveState();\n    };\n\n    // 使用 ResizeObserver 监听容器尺寸变化（安全，不会因 DOM 样式修改而循环触发）\n    useResizeObserver(innerRef, handleResize);\n\n    // 监听 logo 内部图片的加载\n    watch(logoRef, (el) => {\n      if (el) {\n        const imgs = el.querySelectorAll('img');\n        imgs.forEach((img) => {\n          if (!img.complete) {\n            img.onload = () => handleResize();\n          }\n        });\n      }\n    });\n\n    const getComputedCss = (el: Element, cssProperty: keyof CSSStyleDeclaration) =>\n      getComputedStyle(el)[cssProperty] ?? '';\n\n    const getComputedCssValue = (el: Element, cssProperty: keyof CSSStyleDeclaration) =>\n      Number.parseInt(String(getComputedCss(el, cssProperty)), 10);\n\n    const calcMenuWidth = () => {\n      if (!innerRef.value || !menuRef.value) return 0;\n      const menuPaddingLeft = getComputedCssValue(menuRef.value, 'paddingLeft');\n      const menuPaddingRight = getComputedCssValue(menuRef.value, 'paddingRight');\n      const menuMarginLeft = getComputedCssValue(menuRef.value, 'marginLeft');\n      const menuMarginRight = getComputedCssValue(menuRef.value, 'marginRight');\n      let totalWidth = innerRef.value.clientWidth;\n      if (logoRef.value) {\n        const logoMarginLeft = getComputedCssValue(logoRef.value, 'marginLeft');\n        const logoMarginRight = getComputedCssValue(logoRef.value, 'marginRight');\n        totalWidth = totalWidth - logoRef.value.offsetWidth - logoMarginLeft - logoMarginRight;\n      }\n\n      if (operationRef.value) {\n        const operationMarginLeft = getComputedCssValue(operationRef.value, 'marginLeft');\n        const operationMarginRight = getComputedCssValue(operationRef.value, 'marginRight');\n        totalWidth = totalWidth - operationRef.value.offsetWidth - operationMarginLeft - operationMarginRight;\n      }\n\n      return totalWidth - menuPaddingLeft - menuPaddingRight - menuMarginLeft - menuMarginRight;\n    };\n\n    /**\n     * 通过递归扁平化 slot VNode 树来获取所有叶子菜单项节点\n     */\n    const flattenSlotNodes = (nodes: VNode[]): VNode[] => {\n      const result: VNode[] = [];\n      for (const node of nodes) {\n        // Fragment 节点：Vue 将 template 中多个根节点包装为 Fragment\n        if (node.type === Symbol.for('v-fgm') || node.type === Symbol.for('')) {\n          if (isArray(node.children)) {\n            result.push(...flattenSlotNodes(node.children as VNode[]));\n          }\n        } else if ((node.type as Component)?.name === 'TSubmenu' || (node.type as Component)?.name === 'TMenuItem') {\n          result.push(node);\n        } else if (isArray(node.children)) {\n          result.push(...flattenSlotNodes(node.children as VNode[]));\n        } else if (isFunction((node.children as any)?.default)) {\n          result.push(...flattenSlotNodes((node.children as any).default()));\n        } else {\n          result.push(node);\n        }\n      }\n      return result;\n    };\n\n    const initVMenu = (slots: VNode[], parentValue?: string) => {\n      slots.forEach((node) => {\n        const nodeValue = node.props?.value;\n        if ((node.type as Component)?.name === 'TSubmenu' || (node.type as Component)?.name === 'TMenuItem') {\n          vMenu.add({ value: nodeValue, parent: parentValue, vnode: (node.children as any).default, ...node.props });\n        }\n        if (isFunction((node.children as any)?.default)) {\n          initVMenu((node.children as any).default(), nodeValue);\n          return;\n        }\n        if (isArray(node.children)) {\n          initVMenu(node.children as VNode[], nodeValue);\n        }\n      });\n    };\n\n    let pendingResizeRAF: number | null = null;\n    let prevSlotKey = '';\n\n    onUpdated(() => {\n      applyFoldState();\n    });\n\n    const scheduleResize = () => {\n      if (pendingResizeRAF != null) return;\n      pendingResizeRAF = requestAnimationFrame(() => {\n        pendingResizeRAF = null;\n        handleResize();\n      });\n    };\n\n    onMounted(() => {\n      nextTick(() => handleResize());\n    });\n\n    onBeforeUnmount(() => {\n      if (pendingResizeRAF != null) {\n        cancelAnimationFrame(pendingResizeRAF);\n        pendingResizeRAF = null;\n      }\n    });\n\n    return () => {\n      const logo = props.logo?.(h) || ctx.slots.logo?.();\n      const operations = props.operations?.(h) || ctx.slots.operations?.() || ctx.slots.options?.();\n      const originalContent = ctx.slots.default?.() || ctx.slots.content?.() || [];\n\n      // 扁平化 slot VNode，获取所有菜单项（解决封装组件场景）\n      const flatItems = flattenSlotNodes(originalContent);\n\n      // 判断是否需要折叠（只看 DOM 层面的折叠索引）\n      const isFolded = foldStartIndex.value >= 0;\n\n      // 判断是否可以在 VNode 层面按索引截取\n      // 如果 flatItems 中都是实际的 TMenuItem/TSubmenu VNode，可以直接 slice\n      // 如果是封装组件（如 MenuContent），flatItems.length 可能小于 foldStartIndex，\n      // 此时需要渲染完整内容并在 DOM 层面隐藏前 N 项\n      const canSliceVNodes = isFolded && foldStartIndex.value < flatItems.length;\n\n      // 内容始终完整渲染（通过 DOM display:none 控制可见性），\n      // 保证 DOM 子元素数量稳定，handleResize 的索引对应关系始终正确\n      const content = originalContent;\n\n      const slotKey = flatItems.map((n) => n.props?.value).join(',');\n      if (slotKey !== prevSlotKey) {\n        prevSlotKey = slotKey;\n        cachedFlatItemValues = flatItems.map((n) => n.props?.value);\n        vMenu.data.children = [];\n        vMenu.cache.clear();\n        initVMenu(flatItems);\n        scheduleResize();\n      }\n\n      // 构建\"更多\"弹窗的 slot 内容\n      const buildPopupSlot = () => {\n        if (!isFolded) return [];\n        if (canSliceVNodes) {\n          // 直接菜单项场景：按索引截取并克隆\n          return flatItems.slice(foldStartIndex.value).map((vnode) => cloneVNode(vnode));\n        }\n        // 封装组件场景：渲染完整内容的克隆，通过 PopupOverflowContent 在 DOM 层面隐藏前 N 项\n        return (\n          <PopupOverflowContent foldIndex={foldStartIndex.value}>\n            {originalContent.map((vnode) => cloneVNode(vnode))}\n          </PopupOverflowContent>\n        );\n      };\n\n      return (\n        <div class={menuClass.value}>\n          <div class={`${classPrefix.value}-head-menu__inner`} ref={innerRef}>\n            {logo && (\n              <div class={`${classPrefix.value}-menu__logo`} ref={logoRef}>\n                {logo}\n              </div>\n            )}\n            <ul class={`${classPrefix.value}-menu`} ref={menuRef}>\n              {content}\n              {props.expandType === 'popup' && (\n                <Submenu\n                  class={`${classPrefix.value}-head-menu__submenu--more`}\n                  value={MORE_SUBMENU_VALUE}\n                  expandType=\"popup\"\n                  title={() => <EllipsisIcon />}\n                  style={{ display: isFolded ? '' : 'none' }}\n                  v-slots={{\n                    default: buildPopupSlot,\n                  }}\n                />\n              )}\n            </ul>\n            {operations && (\n              <div class={`${classPrefix.value}-menu__operations`} ref={operationRef}>\n                {operations}\n              </div>\n            )}\n          </div>\n          {mode.value === 'normal' && renderNormalSubmenu()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","MORE_SUBMENU_VALUE","defineComponent","name","props","setup","ctx","classPrefix","usePrefixClass","_getCurrentInstance","getCurrentInstance","proxy","watchEffect","slots","options","log","warnOnce","_toRefs","toRefs","value","modelValue","expanded","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","activeValue","setActiveValue","_useDefaultValue","useDefaultValue","defaultExpanded","onExpand","_useDefaultValue2","expandValues","setExpanded","activeValues","ref","theme","computed","menuClass","concat","mode","expandType","submenu","reactive","vMenu","VMenu","isMutex","provide","isHead","select","open","type","_toConsumableArray","index","indexOf","push","splice","handleTabChange","handleClickSubMenuItem","handleSubmenuExpand","ans","getChild","length","apply","watch","cachedFlatItemValues","updateActiveValues","pureVals","filter","v","syncMoreActiveState","vals","isFolded","foldStartIndex","needActive","foldedTopValues","Set","slice","topLevelAncestor","find","has","onMounted","_expandValues$value","_activeMenuItem$onCli","activeMenuItem","onClick","to","href","replace","window","location","router","$router","renderNormalSubmenu","_slot","_createVNode","map","item","_item$vnode$","TabPanel","vnode","children","_default","menuRef","innerRef","logoRef","operationRef","cachedItemWidths","getMenuItemElements","moreClass","menuItemClass","submenuClass","result","collectItems","parent","depth","Array","from","forEach","el","HTMLElement","classList","contains","getMoreButtonWidth","moreEl","querySelector","wasHidden","style","display","visibility","getComputedStyle","rect","getBoundingClientRect","w","width","Number","parseFloat","marginLeft","marginRight","getElementWidth","getWrapperElements","wrappers","handleResize","savedWrapperDisplays","itemNodes","i","applyFoldState","savedFlexShrinks","savedDisplays","flexShrink","menuWidth","calcMenuWidth","totalItemsWidth","reduce","sum","newFoldIndex","subMoreWidth","currentWidth","useResizeObserver","imgs","querySelectorAll","img","complete","onload","getComputedCss","cssProperty","_getComputedStyle$css","getComputedCssValue","parseInt","String","menuPaddingLeft","menuPaddingRight","menuMarginLeft","menuMarginRight","totalWidth","clientWidth","logoMarginLeft","logoMarginRight","offsetWidth","operationMarginLeft","operationMarginRight","flattenSlotNodes","nodes","_iterator","_createForOfIteratorHelper","_step","n","done","_node$type","_node$type2","_node$children","node","Symbol","isArray","isFunction","err","e","f","initVMenu","parentValue","_node$props","_node$type3","_node$type4","_node$children2","nodeValue","add","_objectSpread","pendingResizeRAF","prevSlotKey","onUpdated","scheduleResize","requestAnimationFrame","nextTick","onBeforeUnmount","cancelAnimationFrame","_props2$logo","_ctx$slots$logo","_ctx$slots","_props2$operations","_ctx$slots$operations","_ctx$slots2","_ctx$slots$options","_ctx$slots3","_ctx$slots$default","_ctx$slots4","_ctx$slots$content","_ctx$slots5","logo","h","operations","originalContent","content","flatItems","canSliceVNodes","slotKey","_n$props","join","_n$props2","data","cache","clear","buildPopupSlot","_slot2","cloneVNode","PopupOverflowContent","Submenu","title","EllipsisIcon"],"mappings":"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"}