{"version":3,"file":"dx-react-core.umd.cjs","sources":["../src/plugin-based/contexts.ts","../src/plugin-based/plugin-indexer.tsx","../src/plugin-based/constants.ts","../src/utils/with-props-from-context.tsx","../src/plugin-based/plugin.tsx","../src/plugin-based/template-placeholder.tsx","../src/plugin-based/plugin-host.tsx","../src/plugin-based/helpers.ts","../src/plugin-based/action.tsx","../src/plugin-based/getter.tsx","../src/plugin-based/template.tsx","../src/plugin-based/template-connector.tsx","../src/draggable/touch-strategy.ts","../src/draggable/gesture-cover.ts","../src/draggable/selection-utils.ts","../src/draggable/mouse-strategy.ts","../src/draggable/shared-events.ts","../src/ref-holder.tsx","../src/draggable.tsx","../src/drag-drop/context.ts","../src/drag-drop/provider.tsx","../src/drag-drop/source.tsx","../src/drag-drop/target.tsx","../src/sizer.tsx","../src/utils/connect-props.tsx","../src/utils/state-helper.ts","../src/utils/with-components.tsx","../src/utils/ref-type.ts"],"sourcesContent":["import * as React from 'react';\nimport { PluginHost, PluginPositionFn } from '@devexpress/dx-core';\n\n/** @internal */\nexport interface TemplateHostInterface {\n  params(...args): any;\n  templates(...args): any;\n}\n\n/** @internal */\nexport const PluginHostContext = React.createContext<PluginHost | null>(null);\n/** @internal */\nexport const PositionContext = React.createContext<PluginPositionFn>(() => []);\n/** @internal */\nexport const TemplateHostContext = React.createContext<TemplateHostInterface | null>(null);\n","import * as React from 'react';\nimport { PluginPositionFn } from '@devexpress/dx-core';\nimport { PositionContext } from './contexts';\n\ntype MemoizedPluginPositionFn =\n  (index: number, positionContext: PluginPositionFn) => PluginPositionFn;\n\ntype PluginIndexerProps = {\n  children: React.ReactNode;\n};\n\n/** @internal */\nexport class PluginIndexer extends React.PureComponent<PluginIndexerProps> {\n  indexes: { [index: number]: PluginPositionFn } = {};\n  memoize: MemoizedPluginPositionFn = (index, positionContext) => {\n    if (this.indexes[index]) return this.indexes[index];\n\n    const fn: PluginPositionFn = () => {\n      const calculatedPosition = positionContext();\n      return [...calculatedPosition, index];\n    };\n    this.indexes[index] = fn;\n\n    return fn;\n  }\n  render() {\n    const { children } = this.props;\n    return (\n      <PositionContext.Consumer>\n        {positionContext => (\n          React.Children.map(children, (child: any, index: number) => {\n            if (!child || !child.type) return child;\n            const childPosition = this.memoize(index, positionContext);\n\n            return (\n              <PositionContext.Provider key={String(index)} value={childPosition}>\n                {child}\n              </PositionContext.Provider>\n            );\n          })\n        )}\n      </PositionContext.Consumer>\n    );\n  }\n}\n","/** @internal */\nexport const PLUGIN_HOST_CONTEXT = 'dxcore_pluginHost_context';\n/** @internal */\nexport const POSITION_CONTEXT = 'dxcore_position_context';\n/** @internal */\nexport const TEMPLATE_HOST_CONTEXT = 'dxcore_templateHost_context';\n\n/** @internal */\nexport const RERENDER_TEMPLATE_EVENT = Symbol('rerenderTemplate');\n/** @internal */\nexport const RERENDER_TEMPLATE_SCOPE_EVENT = Symbol('rerenderTemplateScope');\n/** @internal */\nexport const UPDATE_CONNECTION_EVENT = Symbol('updateConnection');\n","import * as React from 'react';\nimport { PluginHostContext, PositionContext } from '../plugin-based/contexts';\nimport { PLUGIN_HOST_CONTEXT, POSITION_CONTEXT } from '../plugin-based/constants';\n\n/** @internal */\nexport const withContext = (Context, name) => Component => props => (\n  <Context.Consumer>\n    {context => (\n      <Component {...props} {...{ [name]: context }} />\n    )}\n  </Context.Consumer>\n);\n\n/** @internal */\nexport const withHostAndPosition = Component => withContext(\n  PluginHostContext,\n  PLUGIN_HOST_CONTEXT,\n)(withContext(PositionContext, POSITION_CONTEXT)(Component));\n","import * as React from 'react';\nimport { InnerPlugin, IDependency } from '@devexpress/dx-core';\nimport { PluginIndexer } from './plugin-indexer';\nimport { PLUGIN_HOST_CONTEXT, POSITION_CONTEXT } from './constants';\nimport { withHostAndPosition } from '../utils/with-props-from-context';\nimport { PluginContextProps } from './plugin-context-prop-types';\n\nexport interface PluginProps {\n  /** React elements that expose the plugin's state and actions and render the plugin's UI. */\n  children: React.ReactNode;\n  name?: string;\n  dependencies?: IDependency[];\n}\n\n/** @internal */\nexport class PluginBase extends React.PureComponent<PluginProps & PluginContextProps> {\n  plugin!: InnerPlugin;\n\n  componentDidMount() {\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost, [POSITION_CONTEXT]: position } = this.props;\n    const { name, dependencies } = this.props;\n    this.plugin = {\n      position,\n      name,\n      dependencies,\n      container: true,\n    };\n    pluginHost.registerPlugin(this.plugin);\n    pluginHost.ensureDependencies();\n  }\n\n  componentDidUpdate() {\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n    pluginHost.ensureDependencies();\n  }\n\n  componentWillUnmount() {\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n    pluginHost.unregisterPlugin(this.plugin);\n  }\n\n  render() {\n    const { children } = this.props;\n    return (\n      <PluginIndexer>\n        {children}\n      </PluginIndexer>\n    );\n  }\n}\n\nexport const Plugin: React.ComponentType<PluginProps> = withHostAndPosition(PluginBase);\n","import * as React from 'react';\nimport { shallowEqual } from '@devexpress/dx-core';\nimport {\n  PLUGIN_HOST_CONTEXT, RERENDER_TEMPLATE_EVENT,\n  TEMPLATE_HOST_CONTEXT, RERENDER_TEMPLATE_SCOPE_EVENT,\n} from './constants';\nimport { withContext } from '../utils/with-props-from-context';\nimport { PluginHostContext, TemplateHostContext, TemplateHostInterface } from './contexts';\nimport { PluginContextProps } from './plugin-context-prop-types';\nimport { TemplateBase } from './template';\n\nexport interface TemplatePlaceholderProps {\n  /** The name of a template to be rendered. */\n  name?: string;\n  /** An object passed to the related template. */\n  params?: object;\n  children?: (content) => any;\n}\ninterface TemplateHostContextProps {\n  [TEMPLATE_HOST_CONTEXT: string]: TemplateHostInterface;\n}\n\ntype Props = TemplatePlaceholderProps & PluginContextProps & TemplateHostContextProps;\n\nconst getRenderingData = (props: Props): { params?: object, templates: TemplateBase[] } => {\n  const { name, params } = props;\n  if (name) {\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = props;\n    return {\n      params,\n      templates: pluginHost.collect(`${name}Template`)\n        .filter(template => template.predicate(params))\n        .reverse(),\n    };\n  }\n  const { [TEMPLATE_HOST_CONTEXT]: templateHost } = props;\n  return {\n    params: params || templateHost.params(),\n    templates: templateHost.templates(),\n  };\n};\n\nclass TemplatePlaceholderBase extends React.Component<Props> {\n  subscription = {\n    [RERENDER_TEMPLATE_EVENT]: (id: number) => {\n      if (this.template && this.template.id === id) {\n        this.forceUpdate();\n      }\n    },\n    [RERENDER_TEMPLATE_SCOPE_EVENT]: (name: string) => {\n      const { name: propsName } = this.props;\n      if (propsName === name) {\n        this.forceUpdate();\n      }\n    },\n  };\n  template: TemplateBase | null = null;\n  params?: object = {};\n\n  componentDidMount() {\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n    pluginHost.registerSubscription(this.subscription);\n  }\n\n  shouldComponentUpdate(nextProps: Props) {\n    const { params, templates } = getRenderingData(nextProps);\n    const [template] = templates;\n    const { children } = this.props;\n\n    return children !== nextProps.children\n      || templates.length !== getRenderingData(this.props).templates.length\n      || this.template !== template\n      || !shallowEqual(this.params, params);\n  }\n\n  componentWillUnmount() {\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n    pluginHost.unregisterSubscription(this.subscription);\n  }\n\n  render() {\n    const { params, templates } = getRenderingData(this.props);\n\n    this.params = params;\n    [this.template] = templates;\n    const restTemplates = templates.slice(1);\n\n    let content: ((...args) => any) | null = null;\n    if (this.template) {\n      const { children: templateContent } = this.template;\n\n      content = templateContent() || null;\n      if (content && typeof content === 'function') {\n        content = content(params);\n      }\n    }\n\n    const { children: templatePlaceholder } = this.props;\n    return (\n      <TemplateHostContext.Provider\n        value={{\n          templates: () => restTemplates,\n          params: () => this.params,\n        }}\n      >\n        {templatePlaceholder ? templatePlaceholder(content) : content}\n      </TemplateHostContext.Provider>\n    );\n  }\n}\n\n/** A React component to which a related Template is rendered. */\nexport const TemplatePlaceholder: React.ComponentType<TemplatePlaceholderProps> = withContext(\n  PluginHostContext, PLUGIN_HOST_CONTEXT,\n)(\n  withContext(TemplateHostContext, TEMPLATE_HOST_CONTEXT)(TemplatePlaceholderBase),\n);\n\nexport const PlaceholderWithRef: React.ComponentType<TemplatePlaceholderProps & {\n  forwardedRef?: any;\n}> = ({ params, forwardedRef }) => (\n  <TemplatePlaceholder\n    params={{\n      ...params,\n      forwardedRef,\n    }}\n  />\n);\n","import * as React from 'react';\nimport { PluginHost as PluginHostCore } from '@devexpress/dx-core';\nimport { PluginIndexer } from './plugin-indexer';\nimport { TemplatePlaceholder } from './template-placeholder';\nimport { PluginHostContext } from './contexts';\n\nexport interface PluginHostProps {\n  /** Plugin React elements. */\n  children: React.ReactNode;\n}\n\n/** @internal */\nclass PluginHostBase extends React.PureComponent<PluginHostProps> {\n  host: PluginHostCore;\n\n  constructor(props: PluginHostProps) {\n    super(props);\n\n    this.host = new PluginHostCore();\n  }\n\n  render() {\n    const { children } = this.props;\n\n    return (\n      <PluginHostContext.Provider value={this.host}>\n        <PluginIndexer>\n          {children}\n        </PluginIndexer>\n        <TemplatePlaceholder name=\"root\" />\n      </PluginHostContext.Provider>\n    );\n  }\n}\n\nexport const PluginHost: React.ComponentType<PluginHostProps> = PluginHostBase;\n","import { shallowEqual } from '@devexpress/dx-core';\n\n/** @internal */\nexport const getAvailableGetters = (\n  pluginHost,\n  getGetterValue = getterName => pluginHost.get(`${getterName}Getter`),\n) => {\n  const trackedDependencies = {};\n\n  let getters;\n  if (typeof Proxy !== 'undefined') {\n    getters = new Proxy({}, {\n      get(target, prop) {\n        if (typeof prop !== 'string') return undefined;\n        const result = getGetterValue(prop);\n        trackedDependencies[prop] = result;\n        return result;\n      },\n      getOwnPropertyDescriptor(target, prop) {\n        return {\n          configurable: true,\n          enumerable: true,\n          value: this.get!(target as any, prop, undefined),\n        };\n      },\n      ownKeys() {\n        return pluginHost.knownKeys('Getter');\n      },\n    });\n  } else {\n    getters = pluginHost.knownKeys('Getter')\n      .reduce((acc, getterName) => {\n        Object.defineProperty(acc, getterName, {\n          get: () => {\n            const result = getGetterValue(getterName);\n            trackedDependencies[getterName] = result;\n            return result;\n          },\n        });\n        return acc;\n      }, {});\n  }\n\n  return { getters, trackedDependencies };\n};\n\n/** @internal */\nexport const isTrackedDependenciesChanged = (\n  pluginHost,\n  prevTrackedDependencies,\n  getGetterValue = getterName => pluginHost.get(`${getterName}Getter`),\n) => {\n  const trackedDependencies = Object.keys(prevTrackedDependencies)\n    // tslint:disable-next-line: prefer-object-spread\n    .reduce((acc, getterName) => Object.assign(acc, {\n      [getterName]: getGetterValue(getterName),\n    }), {});\n\n  return !shallowEqual(prevTrackedDependencies, trackedDependencies);\n};\n\n/** @internal */\nexport const getAvailableActions = (\n  pluginHost,\n  getAction = actionName => pluginHost.collect(`${actionName}Action`).slice().reverse()[0],\n) => {\n  let actions;\n  if (typeof Proxy !== 'undefined') {\n    actions = new Proxy({}, {\n      get(target, prop) {\n        if (typeof prop !== 'string') return undefined;\n        return getAction(prop);\n      },\n      getOwnPropertyDescriptor(target, prop) {\n        return {\n          configurable: true,\n          enumerable: true,\n          value: this.get!(target as any, prop, undefined),\n        };\n      },\n      ownKeys() {\n        return pluginHost.knownKeys('Action');\n      },\n    });\n  } else {\n    actions = pluginHost.knownKeys('Action')\n      .reduce((acc, actionName) => {\n        Object.defineProperty(acc, actionName, {\n          get: () => getAction(actionName),\n        });\n        return acc;\n      }, {});\n  }\n  return actions;\n};\n","import * as React from 'react';\nimport { InnerPlugin } from '@devexpress/dx-core';\nimport {\n  getAvailableGetters,\n  getAvailableActions,\n} from './helpers';\nimport { PLUGIN_HOST_CONTEXT, POSITION_CONTEXT } from './constants';\nimport { withHostAndPosition } from '../utils/with-props-from-context';\nimport { PluginContextProps } from './plugin-context-prop-types';\nimport { Getters, Actions } from '../types';\n\nexport interface ActionProps {\n  /** The action name. */\n  name: string;\n  /** A function that is called when the action is executed. */\n  action: (payload: any, getters: Getters, actions: Actions) => void;\n}\n\n/** @internal */\nexport class ActionBase extends React.PureComponent<ActionProps & PluginContextProps> {\n  plugin: InnerPlugin;\n  pluginRegistered: boolean;\n\n  constructor(props) {\n    super(props);\n\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost, [POSITION_CONTEXT]: positionContext } = props;\n    const { name } = props;\n\n    this.plugin = {\n      position: () => positionContext(),\n      [`${name}Action`]: (params) => {\n        const { action } = this.props;\n        const { getters } = getAvailableGetters(\n          pluginHost,\n          getterName => pluginHost.get(`${getterName}Getter`, this.plugin),\n        );\n        let nextParams = params;\n        const actions = getAvailableActions(\n          pluginHost,\n          actionName => (actionName === name\n            ? (newParams) => { nextParams = newParams; }\n            : pluginHost.collect(`${actionName}Action`, this.plugin).slice().reverse()[0]),\n        );\n        action(params, getters, actions);\n        const nextAction = pluginHost.collect(`${name}Action`, this.plugin).slice().reverse()[0];\n        if (nextAction) {\n          nextAction(nextParams);\n        }\n      },\n    };\n\n    pluginHost.registerPlugin(this.plugin);\n\n    this.pluginRegistered = true;\n  }\n\n  componentDidMount() {\n    if (this.pluginRegistered) {\n      return;\n    }\n\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n\n    pluginHost.registerPlugin(this.plugin);\n    this.pluginRegistered = true;\n  }\n\n  componentWillUnmount() {\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n\n    pluginHost.unregisterPlugin(this.plugin);\n    this.pluginRegistered = false;\n  }\n\n  render() {\n    return null;\n  }\n}\n\nexport const Action: React.ComponentType<ActionProps> = withHostAndPosition(ActionBase);\n","import * as React from 'react';\nimport {\n  isTrackedDependenciesChanged,\n  getAvailableGetters,\n  getAvailableActions,\n} from './helpers';\nimport { UPDATE_CONNECTION_EVENT, PLUGIN_HOST_CONTEXT, POSITION_CONTEXT } from './constants';\nimport { withHostAndPosition } from '../utils/with-props-from-context';\nimport { InnerPlugin } from '@devexpress/dx-core';\nimport { PluginContextProps } from './plugin-context-prop-types';\nimport { ComputedFn } from '../types';\n\nexport interface GetterProps {\n  /** The Getter's name. */\n  name: string;\n  /** The shared value. */\n  value?: any;\n  /*** A function that calculates a value depending on the values other Getters expose.\n   * The value is computed each time a related Getter's value changes.\n   * Applies only if `value` is not defined.\n   */\n  computed?: ComputedFn;\n}\n\n/** @internal */\nexport class GetterBase extends React.PureComponent<GetterProps & PluginContextProps> {\n  plugin: InnerPlugin;\n  pluginRegistered: boolean;\n\n  constructor(props) {\n    super(props);\n\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost, [POSITION_CONTEXT]: positionContext } = props;\n    const { name } = props;\n\n    let lastComputed;\n    let lastTrackedDependencies = {};\n    let lastResult;\n\n    this.plugin = {\n      position: () => positionContext(),\n      [`${name}Getter`]: (original) => {\n        const { value, computed } = this.props;\n        if (computed === undefined) return value;\n\n        const getGetterValue = getterName => ((getterName === name)\n          ? original\n          : pluginHost.get(`${getterName}Getter`, this.plugin));\n\n        if (computed === lastComputed\n          && !isTrackedDependenciesChanged(pluginHost, lastTrackedDependencies, getGetterValue)) {\n          return lastResult;\n        }\n\n        const { getters, trackedDependencies } = getAvailableGetters(pluginHost, getGetterValue);\n        const actions = getAvailableActions(pluginHost);\n\n        lastComputed = computed;\n        lastTrackedDependencies = trackedDependencies;\n        lastResult = computed(getters, actions);\n        return lastResult;\n      },\n    };\n\n    pluginHost.registerPlugin(this.plugin);\n\n    this.pluginRegistered = true;\n  }\n\n  componentDidMount() {\n    if (this.pluginRegistered) {\n      return;\n    }\n\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n\n    pluginHost.registerPlugin(this.plugin);\n    this.pluginRegistered = true;\n  }\n\n  componentDidUpdate() {\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n\n    pluginHost.broadcast(UPDATE_CONNECTION_EVENT);\n  }\n\n  componentWillUnmount() {\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n\n    pluginHost.unregisterPlugin(this.plugin);\n    this.pluginRegistered = false;\n  }\n\n  render() {\n    return null;\n  }\n}\n\nexport const Getter: React.ComponentType<GetterProps> = withHostAndPosition(GetterBase);\n","import * as React from 'react';\nimport { InnerPlugin } from '@devexpress/dx-core';\nimport {\n  PLUGIN_HOST_CONTEXT, POSITION_CONTEXT,\n  RERENDER_TEMPLATE_EVENT, RERENDER_TEMPLATE_SCOPE_EVENT,\n} from './constants';\nimport { withHostAndPosition } from '../utils/with-props-from-context';\nimport { PluginContextProps } from './plugin-context-prop-types';\n\nexport interface TemplateProps {\n  // tslint:disable-next-line:max-line-length\n  /** The template name. The `root` name is reserved. A template called `root` is rendered as the plugin based component's root. */\n  name: string;\n  // tslint:disable-next-line:max-line-length\n  /** A predicate function that returns a Boolean value that specifies whether the template should be rendered. */\n  predicate?: (params: object) => boolean;\n  /** A markup or function that returns a markup based on the specified parameters. */\n  children: React.ReactNode | ((params: object) => React.ReactNode);\n}\n\nlet globalTemplateId = 0;\n/** @internal */\nexport class TemplateBase extends React.PureComponent<TemplateProps & PluginContextProps> {\n  id: number;\n  plugin: InnerPlugin;\n  children: () => any;\n  pluginRegistered: boolean;\n\n  constructor(props) {\n    super(props);\n\n    this.children = () => void 0;\n\n    globalTemplateId += 1;\n    this.id = globalTemplateId;\n\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost, [POSITION_CONTEXT]: positionContext } = props;\n    const { name, predicate } = props;\n\n    this.plugin = {\n      position: () => positionContext(),\n      [`${name}Template`]: {\n        id: this.id,\n        predicate: params => (predicate ? predicate(params) : true),\n        children: () => {\n          const { children } = this.props;\n          return children;\n        },\n      },\n    };\n\n    pluginHost.registerPlugin(this.plugin);\n    pluginHost.broadcast(RERENDER_TEMPLATE_SCOPE_EVENT, name);\n\n    this.pluginRegistered = true;\n  }\n\n  componentDidMount() {\n    if (this.pluginRegistered) {\n      return;\n    }\n\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n    const { name } = this.props;\n\n    pluginHost.registerPlugin(this.plugin);\n    pluginHost.broadcast(RERENDER_TEMPLATE_SCOPE_EVENT, name);\n    this.pluginRegistered = true;\n  }\n\n  componentDidUpdate() {\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n    pluginHost.broadcast(RERENDER_TEMPLATE_EVENT, this.id);\n  }\n\n  componentWillUnmount() {\n    const { [PLUGIN_HOST_CONTEXT]: pluginHost } = this.props;\n    const { name } = this.props;\n    pluginHost.unregisterPlugin(this.plugin);\n    pluginHost.broadcast(RERENDER_TEMPLATE_SCOPE_EVENT, name);\n    this.pluginRegistered = false;\n  }\n\n  render() {\n    return null;\n  }\n}\n\n/*** A React component that defines a markup that is rendered\n * as the corresponding TemplatePlaceholder.\n */\nexport const Template: React.ComponentType<TemplateProps> = withHostAndPosition(TemplateBase);\n","import * as React from 'react';\nimport { UPDATE_CONNECTION_EVENT } from './constants';\nimport {\n  isTrackedDependenciesChanged,\n  getAvailableGetters,\n  getAvailableActions,\n} from './helpers';\nimport { PluginHostContext } from './contexts';\nimport { Getters, Actions } from '../types';\n\nexport interface TemplateConnectorProps {\n  /** A function that renders a markup using Getters and Actions passed as arguments. */\n  children: (\n    getters: Getters,\n    actions: Actions,\n  ) => React.ReactNode;\n}\n\n/** @internal */\nclass TemplateConnectorBase extends React.Component<TemplateConnectorProps> {\n  trackedDependencies: { [key: string]: { get: (args) => any }};\n  subscription: { [UPDATE_CONNECTION_EVENT: string]: (args) => void };\n\n  constructor(props, context) {\n    super(props, context);\n\n    this.trackedDependencies = {};\n    this.subscription = {\n      [UPDATE_CONNECTION_EVENT]: () => this.updateConnection(),\n    };\n  }\n\n  componentDidMount() {\n    const pluginHost = this.context;\n    pluginHost.registerSubscription(this.subscription);\n  }\n\n  componentWillUnmount() {\n    const pluginHost = this.context;\n    pluginHost.unregisterSubscription(this.subscription);\n  }\n\n  updateConnection() {\n    const pluginHost = this.context;\n\n    if (isTrackedDependenciesChanged(pluginHost, this.trackedDependencies)) {\n      this.forceUpdate();\n    }\n  }\n\n  render() {\n    const pluginHost = this.context;\n    const { children } = this.props;\n\n    const { getters, trackedDependencies } = getAvailableGetters(pluginHost);\n    this.trackedDependencies = trackedDependencies;\n    const actions = getAvailableActions(pluginHost);\n\n    return children(getters, actions);\n  }\n}\n\nTemplateConnectorBase.contextType = PluginHostContext;\n\n/** A React component that provides access to Getters and Actions within a Template. */\nexport const TemplateConnector: React.ComponentType<TemplateConnectorProps> = TemplateConnectorBase;\n","const TIMEOUT = 180;\n\n/** @internal */\nexport class TouchStrategy {\n  delegate: any;\n  touchStartTimeout: any;\n  dragging: boolean;\n\n  constructor(delegate) {\n    this.delegate = delegate;\n    this.touchStartTimeout = null;\n    this.dragging = false;\n  }\n\n  isDragging() {\n    return this.dragging;\n  }\n\n  isWaiting() {\n    return !!this.touchStartTimeout;\n  }\n\n  cancelWaiting() {\n    clearTimeout(this.touchStartTimeout);\n    this.touchStartTimeout = undefined;\n  }\n\n  start(e) {\n    const { clientX: x, clientY: y } = e.touches[0];\n    this.touchStartTimeout = setTimeout(() => {\n      this.delegate.onStart({ x, y });\n      this.dragging = true;\n    }, TIMEOUT);\n  }\n\n  move(e) {\n    this.cancelWaiting();\n    if (this.dragging) {\n      const { clientX, clientY } = e.touches[0];\n      e.preventDefault();\n      this.delegate.onMove({ x: clientX, y: clientY });\n    }\n  }\n\n  end(e) {\n    this.cancelWaiting();\n    if (this.dragging) {\n      const { clientX, clientY } = e.changedTouches[0];\n      this.delegate.onEnd({ x: clientX, y: clientY });\n    }\n    this.dragging = false;\n  }\n}\n","/* globals document:true */\n\nlet gestureCover: HTMLElement;\n/** @internal */\nexport const toggleGestureCover = (toggle, cursor?) => {\n  let style: React.CSSProperties = {\n    pointerEvents: toggle ? 'all' : 'none',\n  };\n  if (toggle && cursor) {\n    style = {\n      ...style,\n      cursor,\n    };\n  }\n  if (!gestureCover) {\n    style = {\n      ...style,\n      position: 'fixed',\n      top: 0,\n      right: 0,\n      left: 0,\n      bottom: 0,\n      opacity: 0,\n      zIndex: 2147483647,\n    };\n\n    gestureCover = document.createElement('div');\n    document.body.appendChild(gestureCover);\n  }\n  Object.keys(style).forEach((key) => { gestureCover.style[key] = style[key]; });\n};\n","/* globals document:true window:true */\n\n/** @internal */\nexport const clear = () => {\n  const selection = window.getSelection && window.getSelection();\n\n  if (selection) {\n    if (selection.empty) {\n      selection.empty();\n    } else if (selection.removeAllRanges) {\n      selection.removeAllRanges();\n    }\n  }\n};\n","/* globals window:true document:true */\n\nimport { toggleGestureCover } from './gesture-cover';\nimport { clear } from './selection-utils';\n\nconst BOUNDARY = 10;\nconst clamp = (value, min, max) => Math.max(Math.min(value, max), min);\nconst isBoundExceeded = (\n  { x: initialX, y: initialY }, { x, y },\n) => clamp(x, initialX - BOUNDARY, initialX + BOUNDARY) !== x\n  || clamp(y, initialY - BOUNDARY, initialY + BOUNDARY) !== y;\n\n/** @internal */\nexport class MouseStrategy {\n  delegate: any;\n  mouseInitialOffset: any;\n  dragging: boolean;\n  e: any;\n\n  constructor(delegate) {\n    this.delegate = delegate;\n    this.mouseInitialOffset = null;\n    this.dragging = false;\n  }\n\n  isDragging() {\n    return this.dragging;\n  }\n\n  start(e) {\n    const { clientX: x, clientY: y } = e;\n    this.e = e;\n    this.mouseInitialOffset = { x, y };\n  }\n\n  move(e) {\n    const { clientX: x, clientY: y } = e;\n    let dragStarted = false;\n    if (!this.dragging && this.mouseInitialOffset) {\n      if (isBoundExceeded(this.mouseInitialOffset, { x, y })) {\n        this.delegate.onStart(this.mouseInitialOffset);\n        clear();\n        dragStarted = true;\n        this.dragging = true;\n      }\n    }\n    if (this.dragging) {\n      e.preventDefault();\n      this.delegate.onMove({ x, y });\n    }\n    if (dragStarted) {\n      const element = document.elementFromPoint(x, y);\n      const cursor = element ? window.getComputedStyle(element).cursor : null;\n      toggleGestureCover(true, cursor);\n    }\n  }\n\n  end(e) {\n    if (this.dragging) {\n      const { clientX: x, clientY: y } = e;\n      toggleGestureCover(false);\n      this.delegate.onEnd({ x, y });\n    }\n    this.mouseInitialOffset = null;\n    this.dragging = false;\n  }\n}\n","/* globals window:true */\n\nimport { EventEmitter } from '@devexpress/dx-core';\n\nlet eventEmitter;\n/** @internal */\nexport const getSharedEventEmitter = () => {\n  if (!eventEmitter) {\n    eventEmitter = new EventEmitter();\n\n    ['mousemove', 'mouseup', 'touchmove', 'touchend', 'touchcancel', 'contextmenu']\n      .forEach(name => window.addEventListener(\n        name, e => eventEmitter.emit([name, e]), { passive: false },\n      ));\n  }\n  return eventEmitter;\n};\n","import * as React from 'react';\n\n/** @internal */\nexport const RefHolder = React.forwardRef((\n  { children }: { children: React.ReactNode },\n  ref: React.MutableRefObject<any> | React.RefCallback<any> | null,\n) => {\n  return React.isValidElement<any>(children) ?\n    typeof children.type === 'string'\n      ? React.cloneElement(children, { ref })\n      : React.cloneElement(children, {\n        forwardedRef: children.props?.forwardedRef ? (node) => {\n          children.props.forwardedRef(node);\n          if (typeof ref === 'function') {\n            ref(node);\n          } else if (ref) {\n            ref.current = node;\n          }\n        } : ref }) :\n    React.createElement(\n      'div',\n      { ref, style: { display: 'contents' } },\n      children,\n    );\n});\n","import * as React from 'react';\nimport { unstable_batchedUpdates } from 'react-dom';\nimport { TouchStrategy } from './draggable/touch-strategy';\nimport { MouseStrategy } from './draggable/mouse-strategy';\nimport { getSharedEventEmitter } from './draggable/shared-events';\nimport { clear } from './draggable/selection-utils';\nimport { RefHolder } from './ref-holder';\n\nconst draggingHandled = Symbol('draggingHandled');\n\ntype DraggableProps = {\n  onStart?: (args) => void;\n  onUpdate?: (args) => void;\n  onEnd?: (args) => void;\n  dragItem?: React.MutableRefObject<any> | React.RefCallback<any> | null;\n};\n\n/** @internal */\nexport class Draggable extends React.PureComponent<DraggableProps> {\n  mouseStrategy: MouseStrategy;\n  touchStrategy: TouchStrategy;\n  elementRef: React.MutableRefObject<Element | null>;\n  eventParams: { e: any, isMouseEvent: boolean } | null = null;\n  detachNodeEvents: any = null;\n\n  constructor(props) {\n    super(props);\n    const delegate = {\n      onStart: ({ x, y }) => {\n        const { onStart } = this.props;\n        if (!onStart) return;\n        unstable_batchedUpdates(() => {\n          onStart({ x, y });\n        });\n      },\n      onMove: ({ x, y }) => {\n        const { onUpdate } = this.props;\n        if (!onUpdate) return;\n        unstable_batchedUpdates(() => {\n          onUpdate({ x, y });\n        });\n      },\n      onEnd: ({ x, y }) => {\n        const { onEnd } = this.props;\n        if (!onEnd) return;\n        unstable_batchedUpdates(() => {\n          onEnd({ x, y });\n        });\n      },\n    };\n\n    this.mouseStrategy = new MouseStrategy(delegate);\n    this.touchStrategy = new TouchStrategy(delegate);\n    this.elementRef = React.createRef();\n\n    this.mouseDownListener = this.mouseDownListener.bind(this);\n    this.touchStartListener = this.touchStartListener.bind(this);\n    this.globalListener = this.globalListener.bind(this);\n  }\n\n  componentDidMount() {\n    getSharedEventEmitter().subscribe(this.globalListener);\n    this.setupNodeSubscription();\n  }\n\n  componentDidUpdate() {\n    this.setupNodeSubscription();\n  }\n\n  componentWillUnmount() {\n    if (this.eventParams) {\n      const { isMouseEvent, e } = this.eventParams;\n      if (isMouseEvent) {\n        this.mouseStrategy.end(e);\n      } else {\n        this.touchStrategy.end(e);\n      }\n      this.eventParams = null;\n    }\n    this.detachNodeEvents?.();\n    getSharedEventEmitter().unsubscribe(this.globalListener);\n  }\n\n  setupNodeSubscription() {\n    const node = this.elementRef.current;\n    if (!node) return;\n    this.detachNodeEvents?.();\n    node.addEventListener('mousedown', this.mouseDownListener);\n    node.addEventListener('touchstart', this.touchStartListener, { passive: true });\n    this.detachNodeEvents = () => {\n      node.removeEventListener('mousedown', this.mouseDownListener);\n      node.removeEventListener('touchstart', this.touchStartListener);\n    };\n  }\n\n  mouseDownListener(e) {\n    if (this.touchStrategy.isWaiting() || e[draggingHandled]) return;\n    e.preventDefault();\n    this.mouseStrategy.start(e);\n    e[draggingHandled] = true;\n  }\n\n  touchStartListener(e) {\n    if (e[draggingHandled]) return;\n    this.touchStrategy.start(e);\n    e[draggingHandled] = true;\n  }\n\n  saveEvent(e, isMouseEvent) {\n    this.eventParams = {\n      e,\n      isMouseEvent,\n    };\n  }\n\n  globalListener([name, e]) {\n    switch (name) {\n      case 'mousemove':\n        this.saveEvent(e, true);\n        this.mouseStrategy.move(e);\n        break;\n      case 'contextmenu':\n      case 'mouseup':\n        this.eventParams = null;\n        this.mouseStrategy.end(e);\n        break;\n      case 'touchmove': {\n        this.saveEvent(e, false);\n        this.touchStrategy.move(e);\n        break;\n      }\n      case 'touchend':\n      case 'touchcancel': {\n        this.eventParams = null;\n        this.touchStrategy.end(e);\n        break;\n      }\n      default:\n        break;\n    }\n    if (this.mouseStrategy.isDragging() || this.touchStrategy.isDragging()) {\n      clear();\n    }\n  }\n\n  render() {\n    const { children, dragItem } = this.props;\n    return <RefHolder\n      ref={(node: Element | null) => {\n        this.elementRef.current = node;\n        if (typeof dragItem === 'function') {\n          dragItem(node);\n        } else if (dragItem) {\n          dragItem.current = node;\n        }\n      }}\n    >\n      {children}\n    </RefHolder>;\n  }\n}\n","import * as React from 'react';\nimport { DragDropProviderCore } from './provider';\n\n/** @internal */\nexport const DragDropContext = React.createContext<DragDropProviderCore | null>(null);\n","import * as React from 'react';\n\nimport { EventEmitter } from '@devexpress/dx-core';\nimport { DragDropContext } from './context';\n\n/** @internal */\nexport class DragDropProviderCore {\n  payload: null;\n  dragEmitter: EventEmitter;\n\n  constructor() {\n    this.payload = null;\n    this.dragEmitter = new EventEmitter();\n  }\n\n  start(payload, clientOffset) {\n    this.payload = payload;\n    this.dragEmitter.emit({ clientOffset, payload: this.payload });\n  }\n\n  update(clientOffset) {\n    this.dragEmitter.emit({ clientOffset, payload: this.payload });\n  }\n\n  end(clientOffset) {\n    this.dragEmitter.emit({ clientOffset, payload: this.payload, end: true });\n    this.payload = null;\n  }\n}\n\nconst defaultProps = {\n  onChange: ({ payload, clientOffset }) => {},\n};\ntype DragDropProviderDefaultProps = Readonly<typeof defaultProps>;\ntype DragDropProviderProps = Partial<DragDropProviderDefaultProps>;\n\n/** @internal */\n// tslint:disable-next-line: max-classes-per-file\nexport class DragDropProvider extends React.Component<\n  DragDropProviderProps & DragDropProviderDefaultProps\n> {\n  static defaultProps = defaultProps;\n  dragDropProvider: DragDropProviderCore;\n\n  constructor(props) {\n    super(props);\n    const { onChange } = this.props;\n\n    this.dragDropProvider = new DragDropProviderCore();\n\n    this.dragDropProvider.dragEmitter.subscribe(({ payload, clientOffset, end }) => {\n      onChange({\n        payload: end ? null : payload,\n        clientOffset: end ? null : clientOffset,\n      });\n    });\n  }\n\n  shouldComponentUpdate(nextProps) {\n    const { children } = this.props;\n    return nextProps.children !== children;\n  }\n\n  render() {\n    const { children } = this.props;\n    return (\n      <DragDropContext.Provider value={this.dragDropProvider}>\n        {children}\n      </DragDropContext.Provider>\n    );\n  }\n}\n","import * as React from 'react';\nimport { DragDropContext } from './context';\nimport { Draggable } from '../draggable';\n\nconst defaultProps = {\n  onStart: ({ clientOffset }) => {},\n  onUpdate: ({ clientOffset }) => {},\n  onEnd: ({ clientOffset }) => {},\n};\ntype DragSourceDefaultProps = Readonly<typeof defaultProps>;\ntype DragSourceProps = {\n  payload: any;\n  ref?: React.Ref<Element>;\n} & Partial<DragSourceDefaultProps>;\n\n/** @internal */\nexport const DragSource: React.FC<DragSourceProps> = React.forwardRef(({\n  onStart, onUpdate, onEnd, payload, children,\n}, ref) => {\n  const context = React.useContext(DragDropContext);\n  const dragDropProvider = context;\n\n  return (\n    <Draggable\n      onStart={({ x, y }) => {\n        dragDropProvider?.start(payload, { x, y });\n        onStart?.({ clientOffset: { x, y } });\n      }}\n      onUpdate={({ x, y }) => {\n        dragDropProvider?.update({ x, y });\n        onUpdate?.({ clientOffset: { x, y } });\n      }}\n      onEnd={({ x, y }) => {\n        dragDropProvider?.end({ x, y });\n        onEnd?.({ clientOffset: { x, y } });\n      }}\n      dragItem={ref}\n    >\n      {children}\n    </Draggable>\n  );\n});\nDragSource.defaultProps = defaultProps;\n","import * as React from 'react';\nimport { RefHolder } from '../ref-holder';\nimport { DragDropContext } from './context';\n\nconst clamp = (value, min, max) => Math.max(Math.min(value, max), min);\n\nconst defaultProps = {\n  onEnter: (args) => {},\n  onOver: (args) => {},\n  onLeave: (args) => {},\n  onDrop: (args) => {},\n};\ntype DropTargetDefaultProps = Readonly<typeof defaultProps>;\n\n/** @internal */\nexport class DropTarget extends React.Component<DropTargetDefaultProps> {\n  static defaultProps = defaultProps;\n  isOver: boolean;\n  elementRef: React.RefObject<Element>;\n\n  constructor(props) {\n    super(props);\n\n    this.isOver = false;\n\n    this.handleDrag = this.handleDrag.bind(this);\n\n    this.elementRef = React.createRef();\n  }\n\n  componentDidMount() {\n    const { dragEmitter } = this.context;\n    dragEmitter.subscribe(this.handleDrag);\n  }\n\n  shouldComponentUpdate(nextProps) {\n    const { children } = this.props;\n    return nextProps.children !== children;\n  }\n\n  componentWillUnmount() {\n    const { dragEmitter } = this.context;\n    dragEmitter.unsubscribe(this.handleDrag);\n  }\n\n  handleDrag({ payload, clientOffset, end }) {\n    const {\n      left,\n      top,\n      right,\n      bottom,\n    } = this.elementRef.current!.getBoundingClientRect();\n    const {\n      onDrop, onEnter, onLeave, onOver,\n    } = this.props;\n    const isOver = clientOffset\n      && clamp(clientOffset.x, left, right) === clientOffset.x\n      && clamp(clientOffset.y, top, bottom) === clientOffset.y;\n\n    if (!this.isOver && isOver) onEnter({ payload, clientOffset });\n    if (this.isOver && isOver) onOver({ payload, clientOffset });\n    if (this.isOver && !isOver) onLeave({ payload, clientOffset });\n    if (isOver && end) onDrop({ payload, clientOffset });\n\n    this.isOver = isOver && !end;\n  }\n\n  render() {\n    const { children } = this.props;\n    return <RefHolder ref={this.elementRef}>{React.Children.only(children)}</RefHolder>;\n  }\n}\n\nDropTarget.contextType = DragDropContext;\n","/* globals document:true */\n\nimport * as React from 'react';\nimport { SizerProps, Size } from './types';\nimport { shallowEqual } from '@devexpress/dx-core';\n\nconst SCROLL_OFFSET = 2;\nconst styles: Record<string, React.CSSProperties> = {\n  root: {\n    position: 'relative',\n  },\n  triggersRoot: {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    height: '100%',\n    width: '100%',\n    overflow: 'hidden',\n    zIndex: -1,\n    visibility: 'hidden',\n    opacity: 0,\n  },\n  expandTrigger: {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    height: '100%',\n    width: '100%',\n    overflow: 'auto',\n  },\n  contractTrigger: {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    height: '100%',\n    width: '100%',\n    overflow: 'auto',\n    minHeight: '1px',\n    minWidth: '1px',\n  },\n  contractNotifier: {\n    position: 'absolute',\n    top: 0,\n    left: 0,\n    width: '200%',\n    height: '200%',\n    minHeight: '2px',\n    minWidth: '2px',\n  },\n};\n\n/** @internal */\nexport class Sizer extends React.Component<SizerProps> {\n  static defaultProps = {\n    containerComponent: 'div',\n  };\n\n  rootRef: React.RefObject<HTMLElement>;\n\n  rootNode!: HTMLElement;\n  triggersRoot!: HTMLDivElement;\n  expandTrigger!: HTMLDivElement;\n  expandNotifier!: HTMLDivElement;\n  contractTrigger!: HTMLDivElement;\n  contractNotifier!: HTMLDivElement;\n\n  constructor(props) {\n    super(props);\n\n    this.setupListeners = this.setupListeners.bind(this);\n    this.updateScrolling = this.updateScrolling.bind(this);\n    this.rootRef = React.createRef();\n  }\n\n  componentDidMount() {\n    this.rootNode = this.rootRef.current!;\n    this.createListeners();\n\n    this.expandTrigger.addEventListener('scroll', this.setupListeners);\n    this.contractTrigger.addEventListener('scroll', this.setupListeners);\n    this.setupListeners();\n  }\n\n  shouldComponentUpdate(prevProps) {\n    if (prevProps.scrollTop !== this.props.scrollTop ||\n      prevProps.scrollLeft !== this.props.scrollLeft ||\n      (prevProps.style && this.props.style &&\n        !shallowEqual(prevProps.style, this.props.style)) ||\n        (prevProps.style && !this.props.style) ||\n        prevProps.children !== this.props.children) {\n      return true;\n    }\n    return false;\n  }\n\n  componentDidUpdate() {\n    // We can scroll the VirtualTable manually only by changing\n    // containter's (rootNode) scrollTop property.\n    // Viewport changes its own properties automatically.\n    const { scrollTop, scrollLeft } = this.props;\n    if (scrollTop !== undefined && scrollTop > -1) {\n      this.rootNode.scrollTop = scrollTop;\n    }\n    if (scrollLeft !== undefined && scrollLeft > -1) {\n      this.rootNode.scrollLeft = scrollLeft;\n    }\n    this.updateScrolling(this.getSize());\n  }\n\n  // There is no need to remove listeners as divs are removed from DOM when component is unmount.\n  // But there is a little chance that component unmounting and 'scroll' event happen roughly\n  // at the same time so that `setupListeners` is called after component is unmount.\n  componentWillUnmount() {\n    this.expandTrigger.removeEventListener('scroll', this.setupListeners);\n    this.contractTrigger.removeEventListener('scroll', this.setupListeners);\n  }\n\n  getSize = (): Size => ({\n    height: this.rootNode.clientHeight,\n    width: this.rootNode.clientWidth,\n  })\n\n  setupListeners() {\n    const size = this.getSize();\n    const { width, height } = size;\n\n    this.expandNotifier.style.width = `${width + SCROLL_OFFSET}px`;\n    this.expandNotifier.style.height = `${height + SCROLL_OFFSET}px`;\n\n    this.updateScrolling(size);\n\n    const { onSizeChange } = this.props;\n    onSizeChange(size);\n  }\n\n  createListeners() {\n    this.triggersRoot = document.createElement('div');\n    Object.assign(this.triggersRoot.style, styles.triggersRoot);\n    this.rootNode!.appendChild(this.triggersRoot);\n\n    this.expandTrigger = document.createElement('div');\n    Object.assign(this.expandTrigger.style, styles.expandTrigger);\n    this.expandTrigger.addEventListener('scroll', this.setupListeners);\n    this.triggersRoot.appendChild(this.expandTrigger);\n\n    this.expandNotifier = document.createElement('div');\n    this.expandTrigger.appendChild(this.expandNotifier);\n\n    this.contractTrigger = document.createElement('div');\n    Object.assign(this.contractTrigger.style, styles.contractTrigger);\n    this.contractTrigger.addEventListener('scroll', this.setupListeners);\n    this.triggersRoot.appendChild(this.contractTrigger);\n\n    this.contractNotifier = document.createElement('div');\n    Object.assign(this.contractNotifier.style, styles.contractNotifier);\n    this.contractTrigger.appendChild(this.contractNotifier);\n  }\n\n  updateScrolling(size) {\n    const { width, height } = size;\n    this.contractTrigger.scrollTop = height;\n    this.contractTrigger.scrollLeft = width;\n    this.expandTrigger.scrollTop = SCROLL_OFFSET;\n    this.expandTrigger.scrollLeft = SCROLL_OFFSET;\n  }\n\n  render() {\n    const {\n      onSizeChange,\n      containerComponent: Container,\n      style,\n      scrollTop,\n      scrollLeft,\n      ...restProps\n    } = this.props;\n\n    return (\n      <Container // NOTE: should have `position: relative`\n        forwardedRef={this.rootRef}\n        style={style ? { ...styles.root, ...style } : styles.root}\n        {...restProps}\n      />\n    );\n  }\n}\n","import * as React from 'react';\n\ntype RenderComponentProps = {\n  update: () => void;\n};\n\n/*** A function that creates a new component that allows you to pass additional properties\n * to the wrapped component.\n */\nexport const connectProps = (\n  WrappedComponent: React.ComponentType<any>, getAdditionalProps: () => object,\n): React.ComponentType<any> & { update(): void } => {\n  let storedAdditionalProps = getAdditionalProps();\n  const components = new Set<React.Component>();\n  class RenderComponent extends React.PureComponent<RenderComponentProps> {\n    static update: () => void;\n\n    componentDidMount() {\n      components.add(this);\n    }\n\n    componentWillUnmount() {\n      components.delete(this);\n    }\n\n    render() {\n      return <WrappedComponent {...this.props} {...storedAdditionalProps} />;\n    }\n  }\n  RenderComponent.update = () => {\n    storedAdditionalProps = getAdditionalProps();\n    Array.from(components.values()).forEach(component => component.forceUpdate());\n  };\n  return RenderComponent;\n};\n","import { CreateStateHelperFn } from '../types';\n\n/** @internal */\nexport const createStateHelper: CreateStateHelperFn = (\n  component, controlledStateProperties = {},\n) => {\n  const notifyStateChange = (nextState, state) => {\n    Object.keys(controlledStateProperties).forEach((propertyName) => {\n      const changeEvent = controlledStateProperties[propertyName]();\n      if (changeEvent && nextState[propertyName] !== state[propertyName]) {\n        changeEvent(nextState[propertyName]);\n      }\n    });\n  };\n\n  let lastStateUpdater: (state) => void;\n  let initialState = null;\n  let lastInitialState = null;\n  let newState = null;\n  let shouldNotify = false;\n\n  const applyReducer = (reduce, payload?, callback?) => {\n    const stateUpdater = (prevState) => {\n      if (initialState === null) {\n        initialState = prevState;\n      }\n      const stateChange = reduce({ ...prevState }, payload);\n      const state = { ...prevState, ...stateChange };\n\n      if (typeof callback === 'function') {\n        callback(state, prevState);\n      }\n      if (stateUpdater === lastStateUpdater) {\n        if (lastInitialState !== initialState) {\n          newState = state;\n          if (!shouldNotify) {\n            lastInitialState = initialState;\n            shouldNotify = true;\n          }\n        }\n        initialState = null;\n      }\n\n      return stateChange;\n    };\n    lastStateUpdater = stateUpdater;\n\n    component.setState(stateUpdater, () => {\n      if (shouldNotify) {\n        notifyStateChange(newState, lastInitialState);\n        shouldNotify = false;\n      }\n    });\n  };\n  const applyFieldReducer = (field, reduce, payload) => {\n    applyReducer(state => ({\n      [field]: reduce(state[field], payload),\n    }));\n  };\n\n  return {\n    applyReducer,\n    applyFieldReducer,\n  };\n};\n","import * as React from 'react';\n\nconst makeBoundComponent = (Target, components, exposed: object) => {\n  class Component extends React.PureComponent {\n    static components: PluginComponents;\n\n    render() {\n      return <Target {...components} {...this.props} />;\n    }\n  }\n  Component.components = Target.components;\n  Object.assign(Component, exposed);\n  return Component;\n};\n\nexport type PluginComponents = { [key: string]: string };\nexport interface ITargetComponent {\n  components: PluginComponents;\n}\n// type ITargetComponentStatic = new() => ITargetComponent;\n\n/** @internal */\nexport const withComponents = components => (Target) => {\n  const props = {};\n  const exposed = {};\n  const targetComponents = (Target as ITargetComponent).components;\n\n  Object.entries(targetComponents).forEach(([fieldName, componentName]: [string, string]) => {\n    const component = components[componentName];\n    if (component && component !== Target[componentName]) {\n      props[fieldName] = component;\n    }\n    exposed[componentName] = component || Target[componentName];\n  });\n\n  return Object.keys(props).length > 0\n    ? makeBoundComponent(Target, props, exposed) : Target;\n};\n","/* globals Element */\n// tslint:disable-next-line\nimport PropTypes from 'prop-types';\n\n/** @internal */\nexport const RefType = PropTypes.shape({\n  current: PropTypes.instanceOf((typeof Element !== 'undefined') ? Element : Object),\n});\n"],"names":["React.createContext","React.createElement","React.Children","React.PureComponent","shallowEqual","React.Component","PluginHostCore","EventEmitter","React.forwardRef","React.isValidElement","React.cloneElement","unstable_batchedUpdates","React.createRef","defaultProps","React.useContext","clamp"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASA;IACO,IAAM,iBAAiB,GAAGA,mBAAmB,CAAoB,IAAI,CAAC,CAAC;IAC9E;IACO,IAAM,eAAe,GAAGA,mBAAmB,CAAmB,cAAM,OAAA,EAAE,GAAA,CAAC,CAAC;IAC/E;IACO,IAAM,mBAAmB,GAAGA,mBAAmB,CAA+B,IAAI,CAAC;;ICH1F;IACA;QAAmC,iCAAuC;QAA1E;YAAA,qEAgCC;YA/BC,aAAO,GAA0C,EAAE,CAAC;YACpD,aAAO,GAA6B,UAAC,KAAK,EAAE,eAAe;gBACzD,IAAI,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC;oBAAE,OAAO,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAEpD,IAAM,EAAE,GAAqB;oBAC3B,IAAM,kBAAkB,GAAG,eAAe,EAAE,CAAC;oBAC7C,8CAAW,kBAAkB,YAAE,KAAK,UAAE;iBACvC,CAAC;gBACF,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;gBAEzB,OAAO,EAAE,CAAC;aACX,CAAA;;SAoBF;QAnBC,8BAAM,GAAN;YAAA,iBAkBC;YAjBS,IAAA,QAAQ,GAAK,IAAI,CAAC,KAAK,SAAf,CAAgB;YAChC,QACEC,oBAAC,eAAe,CAAC,QAAQ,QACtB,UAAA,eAAe,IAAI,QAClBC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,KAAU,EAAE,KAAa;gBACrD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAC;gBACxC,IAAM,aAAa,GAAG,KAAI,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;gBAE3D,QACED,oBAAC,eAAe,CAAC,QAAQ,IAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,aAAa,IAC/D,KAAK,CACmB,EAC3B;aACH,CAAC,IACH,CACwB,EAC3B;SACH;QACH,oBAAC;IAAD,CAAC,CAhCkCE,mBAAmB,GAgCrD;;IC5CD;AACA,IAAO,IAAM,mBAAmB,GAAG,2BAA2B,CAAC;IAC/D;AACA,IAAO,IAAM,gBAAgB,GAAG,yBAAyB,CAAC;IAC1D;AACA,IAAO,IAAM,qBAAqB,GAAG,6BAA6B,CAAC;IAEnE;AACA,IAAO,IAAM,uBAAuB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAClE;AACA,IAAO,IAAM,6BAA6B,GAAG,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAC7E;AACA,IAAO,IAAM,uBAAuB,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;;ICRlE;AACA,IAAO,IAAM,WAAW,GAAG,UAAC,OAAO,EAAE,IAAI,IAAK,OAAA,UAAA,SAAS,IAAI,OAAA,UAAA,KAAK,IAAI,QAClEF,oBAAC,OAAO,CAAC,QAAQ,QACd,UAAA,OAAO;;QAAI,QACVA,oBAAC,SAAS,eAAK,KAAK,YAAQ,GAAC,IAAI,IAAG,OAAO,OAAM;IADvC,CAEX,CACgB,IACpB,GAAA,GAAA,CAAC;IAEF;AACA,IAAO,IAAM,mBAAmB,GAAG,UAAA,SAAS,IAAI,OAAA,WAAW,CACzD,iBAAiB,EACjB,mBAAmB,CACpB,CAAC,WAAW,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC,SAAS,CAAC,CAAC,GAAA,CAAC;;ICH7D;IACA;QAAgC,8BAAqD;QAArF;;SAkCC;QA/BC,sCAAiB,GAAjB;YACU,IAAoE,KAAA,IAAI,CAAC,KAAK,EAA9E,KAAC,mBAAoB,EAAE,UAAU,SAAA,EAAE,KAAC,gBAAiB,EAAE,QAAQ,SAAe,CAAC;YACjF,IAAA,KAAyB,IAAI,CAAC,KAAK,EAAjC,IAAI,UAAA,EAAE,YAAY,kBAAe,CAAC;YAC1C,IAAI,CAAC,MAAM,GAAG;gBACZ,QAAQ,UAAA;gBACR,IAAI,MAAA;gBACJ,YAAY,cAAA;gBACZ,SAAS,EAAE,IAAI;aAChB,CAAC;YACF,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,UAAU,CAAC,kBAAkB,EAAE,CAAC;SACjC;QAED,uCAAkB,GAAlB;YACU,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YACzD,UAAU,CAAC,kBAAkB,EAAE,CAAC;SACjC;QAED,yCAAoB,GAApB;YACU,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YACzD,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC1C;QAED,2BAAM,GAAN;YACU,IAAA,QAAQ,GAAK,IAAI,CAAC,KAAK,SAAf,CAAgB;YAChC,QACEA,oBAAC,aAAa,QACX,QAAQ,CACK,EAChB;SACH;QACH,iBAAC;IAAD,CAAC,CAlC+BE,mBAAmB,GAkClD;QAEY,MAAM,GAAqC,mBAAmB,CAAC,UAAU,CAAC;;IC3BvF,IAAM,gBAAgB,GAAG,UAAC,KAAY;QAC5B,IAAA,IAAI,GAAa,KAAK,KAAlB,EAAE,MAAM,GAAK,KAAK,OAAV,CAAW;QAC/B,IAAI,IAAI,EAAE;YACA,IAAsC,KAAA,KAAK,EAA3C,KAAC,mBAAoB,EAAE,UAAU,SAAU,CAAC;YACpD,OAAO;gBACL,MAAM,QAAA;gBACN,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,UAAG,IAAI,aAAU,CAAC;qBAC7C,MAAM,CAAC,UAAA,QAAQ,IAAI,OAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,GAAA,CAAC;qBAC9C,OAAO,EAAE;aACb,CAAC;SACH;QACO,IAA0C,KAAA,KAAK,EAA/C,KAAC,qBAAsB,EAAE,YAAY,SAAU,CAAC;QACxD,OAAO;YACL,MAAM,EAAE,MAAM,IAAI,YAAY,CAAC,MAAM,EAAE;YACvC,SAAS,EAAE,YAAY,CAAC,SAAS,EAAE;SACpC,CAAC;IACJ,CAAC,CAAC;IAEF;QAAsC,2CAAsB;QAA5D;;YAAA,qEAmEC;YAlEC,kBAAY;gBACV,GAAC,uBAAuB,IAAG,UAAC,EAAU;oBACpC,IAAI,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,EAAE;wBAC5C,KAAI,CAAC,WAAW,EAAE,CAAC;qBACpB;iBACF;gBACD,GAAC,6BAA6B,IAAG,UAAC,IAAY;oBACpC,IAAM,SAAS,GAAK,KAAI,CAAC,KAAK,KAAf,CAAgB;oBACvC,IAAI,SAAS,KAAK,IAAI,EAAE;wBACtB,KAAI,CAAC,WAAW,EAAE,CAAC;qBACpB;iBACF;oBACD;YACF,cAAQ,GAAwB,IAAI,CAAC;YACrC,YAAM,GAAY,EAAE,CAAC;;SAoDtB;QAlDC,mDAAiB,GAAjB;YACU,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YACzD,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACpD;QAED,uDAAqB,GAArB,UAAsB,SAAgB;YAC9B,IAAA,KAAwB,gBAAgB,CAAC,SAAS,CAAC,EAAjD,MAAM,YAAA,EAAE,SAAS,eAAgC,CAAC;YACpD,IAAA,KAAA,OAAa,SAAS,IAAA,EAArB,QAAQ,QAAa,CAAC;YACrB,IAAA,QAAQ,GAAK,IAAI,CAAC,KAAK,SAAf,CAAgB;YAEhC,OAAO,QAAQ,KAAK,SAAS,CAAC,QAAQ;mBACjC,SAAS,CAAC,MAAM,KAAK,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAM;mBAClE,IAAI,CAAC,QAAQ,KAAK,QAAQ;mBAC1B,CAACC,mBAAY,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACzC;QAED,sDAAoB,GAApB;YACU,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YACzD,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACtD;QAED,wCAAM,GAAN;;YAAA,iBA4BC;YA3BO,IAAA,KAAwB,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAlD,MAAM,YAAA,EAAE,SAAS,eAAiC,CAAC;YAE3D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,KAAA,OAAkB,SAAS,IAAA,EAA1B,IAAI,CAAC,QAAQ,QAAA,CAAc;YAC5B,IAAM,aAAa,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAEzC,IAAI,OAAO,GAA8B,IAAI,CAAC;YAC9C,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACT,IAAU,eAAe,GAAK,IAAI,CAAC,QAAQ,SAAlB,CAAmB;gBAEpD,OAAO,GAAG,eAAe,EAAE,IAAI,IAAI,CAAC;gBACpC,IAAI,OAAO,IAAI,OAAO,OAAO,KAAK,UAAU,EAAE;oBAC5C,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;iBAC3B;aACF;YAEO,IAAU,mBAAmB,GAAK,IAAI,CAAC,KAAK,SAAf,CAAgB;YACrD,QACEH,oBAAC,mBAAmB,CAAC,QAAQ,IAC3B,KAAK,EAAE;oBACL,SAAS,EAAE,cAAM,OAAA,aAAa,GAAA;oBAC9B,MAAM,EAAE,cAAM,OAAA,KAAI,CAAC,MAAM,GAAA;iBAC1B,IAEA,mBAAmB,GAAG,mBAAmB,CAAC,OAAO,CAAC,GAAG,OAAO,CAChC,EAC/B;SACH;QACH,8BAAC;IAAD,CAAC,CAnEqCI,eAAe,GAmEpD;IAED;AACA,QAAa,mBAAmB,GAAkD,WAAW,CAC3F,iBAAiB,EAAE,mBAAmB,CACvC,CACC,WAAW,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,CAAC,uBAAuB,CAAC,CACjF,CAAC;QAEW,kBAAkB,GAE1B,UAAC,EAAwB;YAAtB,MAAM,YAAA,EAAE,YAAY,kBAAA;QAAO,QACjCJ,oBAAC,mBAAmB,IAClB,MAAM,wBACD,MAAM,KACT,YAAY,cAAA,MAEd;IAN+B,CAOlC;;ICpHD;IACA;QAA6B,kCAAoC;QAG/D,wBAAY,KAAsB;YAAlC,YACE,kBAAM,KAAK,CAAC,SAGb;YADC,KAAI,CAAC,IAAI,GAAG,IAAIK,iBAAc,EAAE,CAAC;;SAClC;QAED,+BAAM,GAAN;YACU,IAAA,QAAQ,GAAK,IAAI,CAAC,KAAK,SAAf,CAAgB;YAEhC,QACEL,oBAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,CAAC,IAAI;gBAC1CA,oBAAC,aAAa,QACX,QAAQ,CACK;gBAChBA,oBAAC,mBAAmB,IAAC,IAAI,EAAC,MAAM,GAAG,CACR,EAC7B;SACH;QACH,qBAAC;IAAD,CAAC,CArB4BE,mBAAmB,GAqB/C;AAED,QAAa,UAAU,GAAyC,cAAc;;ICjC9E;AACA,IAAO,IAAM,mBAAmB,GAAG,UACjC,UAAU,EACV,cAAoE;QAApE,+BAAA,EAAA,2BAAiB,UAAU,IAAI,OAAA,UAAU,CAAC,GAAG,CAAC,UAAG,UAAU,WAAQ,CAAC,GAAA;QAEpE,IAAM,mBAAmB,GAAG,EAAE,CAAC;QAE/B,IAAI,OAAO,CAAC;QACZ,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAChC,OAAO,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;gBACtB,GAAG,YAAC,MAAM,EAAE,IAAI;oBACd,IAAI,OAAO,IAAI,KAAK,QAAQ;wBAAE,OAAO,SAAS,CAAC;oBAC/C,IAAM,MAAM,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;oBACpC,mBAAmB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;oBACnC,OAAO,MAAM,CAAC;iBACf;gBACD,wBAAwB,YAAC,MAAM,EAAE,IAAI;oBACnC,OAAO;wBACL,YAAY,EAAE,IAAI;wBAClB,UAAU,EAAE,IAAI;wBAChB,KAAK,EAAE,IAAI,CAAC,GAAI,CAAC,MAAa,EAAE,IAAI,EAAE,SAAS,CAAC;qBACjD,CAAC;iBACH;gBACD,OAAO;oBACL,OAAO,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;iBACvC;aACF,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;iBACrC,MAAM,CAAC,UAAC,GAAG,EAAE,UAAU;gBACtB,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE;oBACrC,GAAG,EAAE;wBACH,IAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;wBAC1C,mBAAmB,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC;wBACzC,OAAO,MAAM,CAAC;qBACf;iBACF,CAAC,CAAC;gBACH,OAAO,GAAG,CAAC;aACZ,EAAE,EAAE,CAAC,CAAC;SACV;QAED,OAAO,EAAE,OAAO,SAAA,EAAE,mBAAmB,qBAAA,EAAE,CAAC;IAC1C,CAAC,CAAC;IAEF;AACA,IAAO,IAAM,4BAA4B,GAAG,UAC1C,UAAU,EACV,uBAAuB,EACvB,cAAoE;QAApE,+BAAA,EAAA,2BAAiB,UAAU,IAAI,OAAA,UAAU,CAAC,GAAG,CAAC,UAAG,UAAU,WAAQ,CAAC,GAAA;QAEpE,IAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC;;aAE7D,MAAM,CAAC,UAAC,GAAG,EAAE,UAAU;;YAAK,OAAA,MAAM,CAAC,MAAM,CAAC,GAAG;gBAC5C,GAAC,UAAU,IAAG,cAAc,CAAC,UAAU,CAAC;oBACxC;SAAA,EAAE,EAAE,CAAC,CAAC;QAEV,OAAO,CAACC,mBAAY,CAAC,uBAAuB,EAAE,mBAAmB,CAAC,CAAC;IACrE,CAAC,CAAC;IAEF;AACA,IAAO,IAAM,mBAAmB,GAAG,UACjC,UAAU,EACV,SAAwF;QAAxF,0BAAA,EAAA,sBAAY,UAAU,IAAI,OAAA,UAAU,CAAC,OAAO,CAAC,UAAG,UAAU,WAAQ,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,GAAA;QAExF,IAAI,OAAO,CAAC;QACZ,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAChC,OAAO,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;gBACtB,GAAG,YAAC,MAAM,EAAE,IAAI;oBACd,IAAI,OAAO,IAAI,KAAK,QAAQ;wBAAE,OAAO,SAAS,CAAC;oBAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;iBACxB;gBACD,wBAAwB,YAAC,MAAM,EAAE,IAAI;oBACnC,OAAO;wBACL,YAAY,EAAE,IAAI;wBAClB,UAAU,EAAE,IAAI;wBAChB,KAAK,EAAE,IAAI,CAAC,GAAI,CAAC,MAAa,EAAE,IAAI,EAAE,SAAS,CAAC;qBACjD,CAAC;iBACH;gBACD,OAAO;oBACL,OAAO,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;iBACvC;aACF,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC;iBACrC,MAAM,CAAC,UAAC,GAAG,EAAE,UAAU;gBACtB,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE;oBACrC,GAAG,EAAE,cAAM,OAAA,SAAS,CAAC,UAAU,CAAC,GAAA;iBACjC,CAAC,CAAC;gBACH,OAAO,GAAG,CAAC;aACZ,EAAE,EAAE,CAAC,CAAC;SACV;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;;IC5EF;IACA;QAAgC,8BAAqD;QAInF,oBAAY,KAAK;;YAAjB,YACE,kBAAM,KAAK,CAAC,SA+Bb;YA7BS,IAA2E,KAAA,KAAK,EAAhF,KAAC,mBAAoB,EAAE,UAAU,SAAA,EAAE,KAAC,gBAAiB,EAAE,eAAe,SAAU,CAAC;YACjF,IAAA,IAAI,GAAK,KAAK,KAAV,CAAW;YAEvB,KAAI,CAAC,MAAM;oBACT,QAAQ,EAAE,cAAM,OAAA,eAAe,EAAE,GAAA;;gBACjC,GAAC,UAAG,IAAI,WAAQ,IAAG,UAAC,MAAM;oBAChB,IAAA,MAAM,GAAK,KAAI,CAAC,KAAK,OAAf,CAAgB;oBACtB,IAAA,OAAO,GAAK,mBAAmB,CACrC,UAAU,EACV,UAAA,UAAU,IAAI,OAAA,UAAU,CAAC,GAAG,CAAC,UAAG,UAAU,WAAQ,EAAE,KAAI,CAAC,MAAM,CAAC,GAAA,CACjE,QAHc,CAGb;oBACF,IAAI,UAAU,GAAG,MAAM,CAAC;oBACxB,IAAM,OAAO,GAAG,mBAAmB,CACjC,UAAU,EACV,UAAA,UAAU,IAAI,QAAC,UAAU,KAAK,IAAI;0BAC9B,UAAC,SAAS,IAAO,UAAU,GAAG,SAAS,CAAC,EAAE;0BAC1C,UAAU,CAAC,OAAO,CAAC,UAAG,UAAU,WAAQ,EAAE,KAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAC,CACjF,CAAC;oBACF,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;oBACjC,IAAM,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,UAAG,IAAI,WAAQ,EAAE,KAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;oBACzF,IAAI,UAAU,EAAE;wBACd,UAAU,CAAC,UAAU,CAAC,CAAC;qBACxB;iBACF;mBACF,CAAC;YAEF,UAAU,CAAC,cAAc,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;YAEvC,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;;SAC9B;QAED,sCAAiB,GAAjB;YACE,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,OAAO;aACR;YAEO,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YAEzD,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B;QAED,yCAAoB,GAApB;YACU,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YAEzD,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC/B;QAED,2BAAM,GAAN;YACE,OAAO,IAAI,CAAC;SACb;QACH,iBAAC;IAAD,CAAC,CA3D+BD,mBAAmB,GA2DlD;QAEY,MAAM,GAAqC,mBAAmB,CAAC,UAAU,CAAC;;ICxDvF;IACA;QAAgC,8BAAqD;QAInF,oBAAY,KAAK;;YAAjB,YACE,kBAAM,KAAK,CAAC,SAqCb;YAnCS,IAA2E,KAAA,KAAK,EAAhF,KAAC,mBAAoB,EAAE,UAAU,SAAA,EAAE,KAAC,gBAAiB,EAAE,eAAe,SAAU,CAAC;YACjF,IAAA,IAAI,GAAK,KAAK,KAAV,CAAW;YAEvB,IAAI,YAAY,CAAC;YACjB,IAAI,uBAAuB,GAAG,EAAE,CAAC;YACjC,IAAI,UAAU,CAAC;YAEf,KAAI,CAAC,MAAM;oBACT,QAAQ,EAAE,cAAM,OAAA,eAAe,EAAE,GAAA;;gBACjC,GAAC,UAAG,IAAI,WAAQ,IAAG,UAAC,QAAQ;oBACpB,IAAA,KAAsB,KAAI,CAAC,KAAK,EAA9B,KAAK,WAAA,EAAE,QAAQ,cAAe,CAAC;oBACvC,IAAI,QAAQ,KAAK,SAAS;wBAAE,OAAO,KAAK,CAAC;oBAEzC,IAAM,cAAc,GAAG,UAAA,UAAU,IAAI,QAAC,CAAC,UAAU,KAAK,IAAI;0BACtD,QAAQ;0BACR,UAAU,CAAC,GAAG,CAAC,UAAG,UAAU,WAAQ,EAAE,KAAI,CAAC,MAAM,CAAC,IAAC,CAAC;oBAExD,IAAI,QAAQ,KAAK,YAAY;2BACxB,CAAC,4BAA4B,CAAC,UAAU,EAAE,uBAAuB,EAAE,cAAc,CAAC,EAAE;wBACvF,OAAO,UAAU,CAAC;qBACnB;oBAEK,IAAA,KAAmC,mBAAmB,CAAC,UAAU,EAAE,cAAc,CAAC,EAAhF,OAAO,aAAA,EAAE,mBAAmB,yBAAoD,CAAC;oBACzF,IAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;oBAEhD,YAAY,GAAG,QAAQ,CAAC;oBACxB,uBAAuB,GAAG,mBAAmB,CAAC;oBAC9C,UAAU,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACxC,OAAO,UAAU,CAAC;iBACnB;mBACF,CAAC;YAEF,UAAU,CAAC,cAAc,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;YAEvC,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;;SAC9B;QAED,sCAAiB,GAAjB;YACE,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,OAAO;aACR;YAEO,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YAEzD,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B;QAED,uCAAkB,GAAlB;YACU,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YAEzD,UAAU,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;SAC/C;QAED,yCAAoB,GAApB;YACU,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YAEzD,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC/B;QAED,2BAAM,GAAN;YACE,OAAO,IAAI,CAAC;SACb;QACH,iBAAC;IAAD,CAAC,CAvE+BA,mBAAmB,GAuElD;QAEY,MAAM,GAAqC,mBAAmB,CAAC,UAAU,CAAC;;IC9EvF,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB;IACA;QAAkC,gCAAuD;QAMvF,sBAAY,KAAK;;YAAjB,YACE,kBAAM,KAAK,CAAC,SA0Bb;YAxBC,KAAI,CAAC,QAAQ,GAAG,cAAM,OAAA,KAAK,CAAC,GAAA,CAAC;YAE7B,gBAAgB,IAAI,CAAC,CAAC;YACtB,KAAI,CAAC,EAAE,GAAG,gBAAgB,CAAC;YAEnB,IAA2E,KAAA,KAAK,EAAhF,KAAC,mBAAoB,EAAE,UAAU,SAAA,EAAE,KAAC,gBAAiB,EAAE,eAAe,SAAU,CAAC;YACjF,IAAA,IAAI,GAAgB,KAAK,KAArB,EAAE,SAAS,GAAK,KAAK,UAAV,CAAW;YAElC,KAAI,CAAC,MAAM;oBACT,QAAQ,EAAE,cAAM,OAAA,eAAe,EAAE,GAAA;;gBACjC,GAAC,UAAG,IAAI,aAAU,IAAG;oBACnB,EAAE,EAAE,KAAI,CAAC,EAAE;oBACX,SAAS,EAAE,UAAA,MAAM,IAAI,QAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,IAAC;oBAC3D,QAAQ,EAAE;wBACA,IAAA,QAAQ,GAAK,KAAI,CAAC,KAAK,SAAf,CAAgB;wBAChC,OAAO,QAAQ,CAAC;qBACjB;iBACF;mBACF,CAAC;YAEF,UAAU,CAAC,cAAc,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;YACvC,UAAU,CAAC,SAAS,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;YAE1D,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;;SAC9B;QAED,wCAAiB,GAAjB;YACE,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACzB,OAAO;aACR;YAEO,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YACjD,IAAA,IAAI,GAAK,IAAI,CAAC,KAAK,KAAf,CAAgB;YAE5B,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvC,UAAU,CAAC,SAAS,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B;QAED,yCAAkB,GAAlB;YACU,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YACzD,UAAU,CAAC,SAAS,CAAC,uBAAuB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;SACxD;QAED,2CAAoB,GAApB;YACU,IAAsC,KAAA,IAAI,CAAC,KAAK,EAAhD,KAAC,mBAAoB,EAAE,UAAU,SAAe,CAAC;YACjD,IAAA,IAAI,GAAK,IAAI,CAAC,KAAK,KAAf,CAAgB;YAC5B,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,UAAU,CAAC,SAAS,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;SAC/B;QAED,6BAAM,GAAN;YACE,OAAO,IAAI,CAAC;SACb;QACH,mBAAC;IAAD,CAAC,CAhEiCA,mBAAmB,GAgEpD;IAED;;;QAGa,QAAQ,GAAuC,mBAAmB,CAAC,YAAY,CAAC;;ICzE7F;IACA;QAAoC,yCAAuC;QAIzE,+BAAY,KAAK,EAAE,OAAO;;YAA1B,YACE,kBAAM,KAAK,EAAE,OAAO,CAAC,SAMtB;YAJC,KAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;YAC9B,KAAI,CAAC,YAAY;gBACf,GAAC,uBAAuB,IAAG,cAAM,OAAA,KAAI,CAAC,gBAAgB,EAAE,GAAA;mBACzD,CAAC;;SACH;QAED,iDAAiB,GAAjB;YACE,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;YAChC,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACpD;QAED,oDAAoB,GAApB;YACE,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;YAChC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACtD;QAED,gDAAgB,GAAhB;YACE,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;YAEhC,IAAI,4BAA4B,CAAC,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE;gBACtE,IAAI,CAAC,WAAW,EAAE,CAAC;aACpB;SACF;QAED,sCAAM,GAAN;YACE,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;YACxB,IAAA,QAAQ,GAAK,IAAI,CAAC,KAAK,SAAf,CAAgB;YAE1B,IAAA,KAAmC,mBAAmB,CAAC,UAAU,CAAC,EAAhE,OAAO,aAAA,EAAE,mBAAmB,yBAAoC,CAAC;YACzE,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;YAC/C,IAAM,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAEhD,OAAO,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACnC;QACH,4BAAC;IAAD,CAAC,CAzCmCE,eAAe,GAyClD;IAED,qBAAqB,CAAC,WAAW,GAAG,iBAAiB,CAAC;IAEtD;AACA,QAAa,iBAAiB,GAAgD,qBAAqB;;ICjEnG,IAAM,OAAO,GAAG,GAAG,CAAC;IAEpB;IACA;QAKE,uBAAY,QAAQ;YAClB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;QAED,kCAAU,GAAV;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QAED,iCAAS,GAAT;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;SACjC;QAED,qCAAa,GAAb;YACE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACrC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;SACpC;QAED,6BAAK,GAAL,UAAM,CAAC;YAAP,iBAMC;YALO,IAAA,KAA6B,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAA9B,CAAC,aAAA,EAAW,CAAC,aAAiB,CAAC;YAChD,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;gBAClC,KAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAC,CAAC;gBAChC,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;aACtB,EAAE,OAAO,CAAC,CAAC;SACb;QAED,4BAAI,GAAJ,UAAK,CAAC;YACJ,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACX,IAAA,KAAuB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAjC,OAAO,aAAA,EAAE,OAAO,aAAiB,CAAC;gBAC1C,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;aAClD;SACF;QAED,2BAAG,GAAH,UAAI,CAAC;YACH,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACX,IAAA,KAAuB,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAxC,OAAO,aAAA,EAAE,OAAO,aAAwB,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;aACjD;YACD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;QACH,oBAAC;IAAD,CAAC,IAAA;;ICpDD;IAEA,IAAI,YAAyB,CAAC;IAC9B;AACA,IAAO,IAAM,kBAAkB,GAAG,UAAC,MAAM,EAAE,MAAO;QAChD,IAAI,KAAK,GAAwB;YAC/B,aAAa,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM;SACvC,CAAC;QACF,IAAI,MAAM,IAAI,MAAM,EAAE;YACpB,KAAK,yBACA,KAAK,KACR,MAAM,QAAA,GACP,CAAC;SACH;QACD,IAAI,CAAC,YAAY,EAAE;YACjB,KAAK,yBACA,KAAK,KACR,QAAQ,EAAE,OAAO,EACjB,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,CAAC,EACR,IAAI,EAAE,CAAC,EACP,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,UAAU,GACnB,CAAC;YAEF,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC7C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;SACzC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAC,GAAG,IAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC,CAAC;;IC9BF;IAEA;AACA,QAAa,KAAK,GAAG;QACnB,IAAM,SAAS,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAE/D,IAAI,SAAS,EAAE;YACb,IAAI,SAAS,CAAC,KAAK,EAAE;gBACnB,SAAS,CAAC,KAAK,EAAE,CAAC;aACnB;iBAAM,IAAI,SAAS,CAAC,eAAe,EAAE;gBACpC,SAAS,CAAC,eAAe,EAAE,CAAC;aAC7B;SACF;IACH,CAAC;;ICbD;AAEA,IAGA,IAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,IAAM,KAAK,GAAG,UAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAK,OAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAA,CAAC;IACvE,IAAM,eAAe,GAAG,UACtB,EAA4B,EAAE,EAAQ;YAAjC,QAAQ,OAAA,EAAK,QAAQ,OAAA;YAAM,CAAC,OAAA,EAAE,CAAC,OAAA;QACjC,OAAA,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;eACxD,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,QAAQ,EAAE,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;IADxD,CACwD,CAAC;IAE9D;IACA;QAME,uBAAY,QAAQ;YAClB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;YACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;QAED,kCAAU,GAAV;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QAED,6BAAK,GAAL,UAAM,CAAC;YACG,IAAS,CAAC,GAAiB,CAAC,QAAlB,EAAW,CAAC,GAAK,CAAC,QAAN,CAAO;YACrC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YACX,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAC;SACpC;QAED,4BAAI,GAAJ,UAAK,CAAC;YACI,IAAS,CAAC,GAAiB,CAAC,QAAlB,EAAW,CAAC,GAAK,CAAC,QAAN,CAAO;YACrC,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC7C,IAAI,eAAe,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAC,EAAE;oBACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAC/C,KAAK,EAAE,CAAC;oBACR,WAAW,GAAG,IAAI,CAAC;oBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;iBACtB;aACF;YACD,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,CAAC,CAAC,cAAc,EAAE,CAAC;gBACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAC,CAAC;aAChC;YACD,IAAI,WAAW,EAAE;gBACf,IAAM,OAAO,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAChD,IAAM,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;gBACxE,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;aAClC;SACF;QAED,2BAAG,GAAH,UAAI,CAAC;YACH,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACT,IAAS,CAAC,GAAiB,CAAC,QAAlB,EAAW,CAAC,GAAK,CAAC,QAAN,CAAO;gBACrC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC1B,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAC,CAAC;aAC/B;YACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;QACH,oBAAC;IAAD,CAAC,IAAA;;IClED;AAEA,IAEA,IAAI,YAAY,CAAC;IACjB;AACA,IAAO,IAAM,qBAAqB,GAAG;QACnC,IAAI,CAAC,YAAY,EAAE;YACjB,YAAY,GAAG,IAAIE,mBAAY,EAAE,CAAC;YAElC,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,CAAC;iBAC5E,OAAO,CAAC,UAAA,IAAI,IAAI,OAAA,MAAM,CAAC,gBAAgB,CACtC,IAAI,EAAE,UAAA,CAAC,IAAI,OAAA,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAA,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAC5D,GAAA,CAAC,CAAC;SACN;QACD,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC;;ICdF;AACA,QAAa,SAAS,GAAGC,gBAAgB,CAAC,UACxC,EAA2C,EAC3C,GAAgE;;YAD9D,QAAQ,cAAA;QAGV,OAAOC,oBAAoB,CAAM,QAAQ,CAAC;YACxC,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;kBAC7BC,kBAAkB,CAAC,QAAQ,EAAE,EAAE,GAAG,KAAA,EAAE,CAAC;kBACrCA,kBAAkB,CAAC,QAAQ,EAAE;oBAC7B,YAAY,EAAE,CAAA,MAAA,QAAQ,CAAC,KAAK,0CAAE,YAAY,IAAG,UAAC,IAAI;wBAChD,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;wBAClC,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;4BAC7B,GAAG,CAAC,IAAI,CAAC,CAAC;yBACX;6BAAM,IAAI,GAAG,EAAE;4BACd,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;yBACpB;qBACF,GAAG,GAAG;iBAAE,CAAC;YACdT,mBAAmB,CACjB,KAAK,EACL,EAAE,GAAG,KAAA,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EACvC,QAAQ,CACT,CAAC;IACN,CAAC,CAAC;;IChBF,IAAM,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;IASlD;;QAC+B,6BAAmC;QAOhE,mBAAY,KAAK;YAAjB,YACE,kBAAM,KAAK,CAAC,SAgCb;YApCD,iBAAW,GAA6C,IAAI,CAAC;YAC7D,sBAAgB,GAAQ,IAAI,CAAC;YAI3B,IAAM,QAAQ,GAAG;gBACf,OAAO,EAAE,UAAC,EAAQ;wBAAN,CAAC,OAAA,EAAE,CAAC,OAAA;oBACN,IAAA,OAAO,GAAK,KAAI,CAAC,KAAK,QAAf,CAAgB;oBAC/B,IAAI,CAAC,OAAO;wBAAE,OAAO;oBACrBU,gCAAuB,CAAC;wBACtB,OAAO,CAAC,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAC,CAAC;qBACnB,CAAC,CAAC;iBACJ;gBACD,MAAM,EAAE,UAAC,EAAQ;wBAAN,CAAC,OAAA,EAAE,CAAC,OAAA;oBACL,IAAA,QAAQ,GAAK,KAAI,CAAC,KAAK,SAAf,CAAgB;oBAChC,IAAI,CAAC,QAAQ;wBAAE,OAAO;oBACtBA,gCAAuB,CAAC;wBACtB,QAAQ,CAAC,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAC,CAAC;qBACpB,CAAC,CAAC;iBACJ;gBACD,KAAK,EAAE,UAAC,EAAQ;wBAAN,CAAC,OAAA,EAAE,CAAC,OAAA;oBACJ,IAAA,KAAK,GAAK,KAAI,CAAC,KAAK,MAAf,CAAgB;oBAC7B,IAAI,CAAC,KAAK;wBAAE,OAAO;oBACnBA,gCAAuB,CAAC;wBACtB,KAAK,CAAC,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAC,CAAC;qBACjB,CAAC,CAAC;iBACJ;aACF,CAAC;YAEF,KAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;YACjD,KAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;YACjD,KAAI,CAAC,UAAU,GAAGC,eAAe,EAAE,CAAC;YAEpC,KAAI,CAAC,iBAAiB,GAAG,KAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;YAC3D,KAAI,CAAC,kBAAkB,GAAG,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;YAC7D,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;;SACtD;QAED,qCAAiB,GAAjB;YACE,qBAAqB,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACvD,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,sCAAkB,GAAlB;YACE,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;QAED,wCAAoB,GAApB;;YACE,IAAI,IAAI,CAAC,WAAW,EAAE;gBACd,IAAA,KAAsB,IAAI,CAAC,WAAW,EAApC,YAAY,kBAAA,EAAE,CAAC,OAAqB,CAAC;gBAC7C,IAAI,YAAY,EAAE;oBAChB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC3B;qBAAM;oBACL,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBAC3B;gBACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aACzB;YACD,MAAA,IAAI,CAAC,gBAAgB,oDAAI,CAAC;YAC1B,qBAAqB,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SAC1D;QAED,yCAAqB,GAArB;YAAA,iBAUC;;YATC,IAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YACrC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,MAAA,IAAI,CAAC,gBAAgB,oDAAI,CAAC;YAC1B,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC3D,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAChF,IAAI,CAAC,gBAAgB,GAAG;gBACtB,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC9D,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,KAAI,CAAC,kBAAkB,CAAC,CAAC;aACjE,CAAC;SACH;QAED,qCAAiB,GAAjB,UAAkB,CAAC;YACjB,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,eAAe,CAAC;gBAAE,OAAO;YACjE,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;SAC3B;QAED,sCAAkB,GAAlB,UAAmB,CAAC;YAClB,IAAI,CAAC,CAAC,eAAe,CAAC;gBAAE,OAAO;YAC/B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,CAAC,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;SAC3B;QAED,6BAAS,GAAT,UAAU,CAAC,EAAE,YAAY;YACvB,IAAI,CAAC,WAAW,GAAG;gBACjB,CAAC,GAAA;gBACD,YAAY,cAAA;aACb,CAAC;SACH;QAED,kCAAc,GAAd,UAAe,EAAS;gBAAT,KAAA,aAAS,EAAR,IAAI,QAAA,EAAE,CAAC,QAAA;YACrB,QAAQ,IAAI;gBACV,KAAK,WAAW;oBACd,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM;gBACR,KAAK,aAAa,CAAC;gBACnB,KAAK,SAAS;oBACZ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC1B,MAAM;gBACR,KAAK,WAAW,EAAE;oBAChB,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;oBACzB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC3B,MAAM;iBACP;gBACD,KAAK,UAAU,CAAC;gBAChB,KAAK,aAAa,EAAE;oBAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC1B,MAAM;iBACP;aAGF;YACD,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE;gBACtE,KAAK,EAAE,CAAC;aACT;SACF;QAED,0BAAM,GAAN;YAAA,iBAcC;YAbO,IAAA,KAAyB,IAAI,CAAC,KAAK,EAAjC,QAAQ,cAAA,EAAE,QAAQ,cAAe,CAAC;YAC1C,OAAOX,oBAAC,SAAS,IACf,GAAG,EAAE,UAAC,IAAoB;oBACxB,KAAI,CAAC,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;oBAC/B,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;wBAClC,QAAQ,CAAC,IAAI,CAAC,CAAC;qBAChB;yBAAM,IAAI,QAAQ,EAAE;wBACnB,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;qBACzB;iBACF,IAEA,QAAQ,CACC,CAAC;SACd;QACH,gBAAC;IAAD,CAAC,CA9I8BE,mBAAmB;;ICflD;AACA,IAAO,IAAM,eAAe,GAAGH,mBAAmB,CAA8B,IAAI,CAAC,CAAC;;ICCtF;IACA;QAIE;YACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,WAAW,GAAG,IAAIO,mBAAY,EAAE,CAAC;SACvC;QAED,oCAAK,GAAL,UAAM,OAAO,EAAE,YAAY;YACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,cAAA,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAChE;QAED,qCAAM,GAAN,UAAO,YAAY;YACjB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,cAAA,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SAChE;QAED,kCAAG,GAAH,UAAI,YAAY;YACd,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,YAAY,cAAA,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;QACH,2BAAC;IAAD,CAAC,IAAA;IAED,IAAM,YAAY,GAAG;QACnB,QAAQ,EAAE,UAAC,EAAyB;gBAAvB,OAAO,aAAA,EAAE,YAAY,kBAAA;SAAS;KAC5C,CAAC;IAIF;IACA;;QACsC,oCAErC;QAIC,0BAAY,KAAK;YAAjB,YACE,kBAAM,KAAK,CAAC,SAWb;YAVS,IAAA,QAAQ,GAAK,KAAI,CAAC,KAAK,SAAf,CAAgB;YAEhC,KAAI,CAAC,gBAAgB,GAAG,IAAI,oBAAoB,EAAE,CAAC;YAEnD,KAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC,UAAC,EAA8B;oBAA5B,OAAO,aAAA,EAAE,YAAY,kBAAA,EAAE,GAAG,SAAA;gBACvE,QAAQ,CAAC;oBACP,OAAO,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO;oBAC7B,YAAY,EAAE,GAAG,GAAG,IAAI,GAAG,YAAY;iBACxC,CAAC,CAAC;aACJ,CAAC,CAAC;;SACJ;QAED,gDAAqB,GAArB,UAAsB,SAAS;YACrB,IAAA,QAAQ,GAAK,IAAI,CAAC,KAAK,SAAf,CAAgB;YAChC,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC;SACxC;QAED,iCAAM,GAAN;YACU,IAAA,QAAQ,GAAK,IAAI,CAAC,KAAK,SAAf,CAAgB;YAChC,QACEN,oBAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,IACnD,QAAQ,CACgB,EAC3B;SACH;QA7BM,6BAAY,GAAG,YAAY,CAAC;QA8BrC,uBAAC;KAjCD,CAAsCI,eAAe;;IClCrD,IAAMQ,cAAY,GAAG;QACnB,OAAO,EAAE,UAAC,EAAgB;gBAAd,YAAY,kBAAA;SAAS;QACjC,QAAQ,EAAE,UAAC,EAAgB;gBAAd,YAAY,kBAAA;SAAS;QAClC,KAAK,EAAE,UAAC,EAAgB;gBAAd,YAAY,kBAAA;SAAS;KAChC,CAAC;IAOF;AACA,QAAa,UAAU,GAA8BL,gBAAgB,CAAC,UAAC,EAEtE,EAAE,GAAG;YADJ,OAAO,aAAA,EAAE,QAAQ,cAAA,EAAE,KAAK,WAAA,EAAE,OAAO,aAAA,EAAE,QAAQ,cAAA;QAE3C,IAAM,OAAO,GAAGM,gBAAgB,CAAC,eAAe,CAAC,CAAC;QAClD,IAAM,gBAAgB,GAAG,OAAO,CAAC;QAEjC,QACEb,oBAAC,SAAS,IACR,OAAO,EAAE,UAAC,EAAQ;oBAAN,CAAC,OAAA,EAAE,CAAC,OAAA;gBACd,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAC,CAAC;gBAC3C,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,EAAE,YAAY,EAAE,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,EAAE,CAAC,CAAC;aACvC,EACD,QAAQ,EAAE,UAAC,EAAQ;oBAAN,CAAC,OAAA,EAAE,CAAC,OAAA;gBACf,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,MAAM,CAAC,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAC,CAAC;gBACnC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,EAAE,YAAY,EAAE,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,EAAE,CAAC,CAAC;aACxC,EACD,KAAK,EAAE,UAAC,EAAQ;oBAAN,CAAC,OAAA,EAAE,CAAC,OAAA;gBACZ,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,GAAG,CAAC,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,CAAC,CAAC;gBAChC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,EAAE,YAAY,EAAE,EAAE,CAAC,GAAA,EAAE,CAAC,GAAA,EAAE,EAAE,CAAC,CAAC;aACrC,EACD,QAAQ,EAAE,GAAG,IAEZ,QAAQ,CACC,EACZ;IACJ,CAAC,CAAC,CAAC;IACH,UAAU,CAAC,YAAY,GAAGY,cAAY,CAAC;;ICtCvC,IAAME,OAAK,GAAG,UAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAK,OAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,GAAA,CAAC;IAEvE,IAAMF,cAAY,GAAG;QACnB,OAAO,EAAE,UAAC,IAAI,KAAO;QACrB,MAAM,EAAE,UAAC,IAAI,KAAO;QACpB,OAAO,EAAE,UAAC,IAAI,KAAO;QACrB,MAAM,EAAE,UAAC,IAAI,KAAO;KACrB,CAAC;IAGF;;QACgC,8BAAuC;QAKrE,oBAAY,KAAK;YAAjB,YACE,kBAAM,KAAK,CAAC,SAOb;YALC,KAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YAEpB,KAAI,CAAC,UAAU,GAAG,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;YAE7C,KAAI,CAAC,UAAU,GAAGD,eAAe,EAAE,CAAC;;SACrC;QAED,sCAAiB,GAAjB;YACU,IAAA,WAAW,GAAK,IAAI,CAAC,OAAO,YAAjB,CAAkB;YACrC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACxC;QAED,0CAAqB,GAArB,UAAsB,SAAS;YACrB,IAAA,QAAQ,GAAK,IAAI,CAAC,KAAK,SAAf,CAAgB;YAChC,OAAO,SAAS,CAAC,QAAQ,KAAK,QAAQ,CAAC;SACxC;QAED,yCAAoB,GAApB;YACU,IAAA,WAAW,GAAK,IAAI,CAAC,OAAO,YAAjB,CAAkB;YACrC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC1C;QAED,+BAAU,GAAV,UAAW,EAA8B;gBAA5B,OAAO,aAAA,EAAE,YAAY,kBAAA,EAAE,GAAG,SAAA;YAC/B,IAAA,KAKF,IAAI,CAAC,UAAU,CAAC,OAAQ,CAAC,qBAAqB,EAAE,EAJlD,IAAI,UAAA,EACJ,GAAG,SAAA,EACH,KAAK,WAAA,EACL,MAAM,YAC4C,CAAC;YAC/C,IAAA,KAEF,IAAI,CAAC,KAAK,EADZ,MAAM,YAAA,EAAE,OAAO,aAAA,EAAE,OAAO,aAAA,EAAE,MAAM,YACpB,CAAC;YACf,IAAM,MAAM,GAAG,YAAY;mBACtBG,OAAK,CAAC,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,YAAY,CAAC,CAAC;mBACrDA,OAAK,CAAC,YAAY,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC;YAE3D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM;gBAAE,OAAO,CAAC,EAAE,OAAO,SAAA,EAAE,YAAY,cAAA,EAAE,CAAC,CAAC;YAC/D,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;gBAAE,MAAM,CAAC,EAAE,OAAO,SAAA,EAAE,YAAY,cAAA,EAAE,CAAC,CAAC;YAC7D,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,EAAE,OAAO,SAAA,EAAE,YAAY,cAAA,EAAE,CAAC,CAAC;YAC/D,IAAI,MAAM,IAAI,GAAG;gBAAE,MAAM,CAAC,EAAE,OAAO,SAAA,EAAE,YAAY,cAAA,EAAE,CAAC,CAAC;YAErD,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;SAC9B;QAED,2BAAM,GAAN;YACU,IAAA,QAAQ,GAAK,IAAI,CAAC,KAAK,SAAf,CAAgB;YAChC,OAAOd,oBAAC,SAAS,IAAC,GAAG,EAAE,IAAI,CAAC,UAAU,IAAGC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAa,CAAC;SACrF;QAtDM,uBAAY,GAAGW,cAAY,CAAC;QAuDrC,iBAAC;KAxDD,CAAgCR,eAAe,GAwD9C;IAED,UAAU,CAAC,WAAW,GAAG,eAAe,CAAC;;ICzEzC;IAMA,IAAM,aAAa,GAAG,CAAC,CAAC;IACxB,IAAM,MAAM,GAAwC;QAClD,IAAI,EAAE;YACJ,QAAQ,EAAE,UAAU;SACrB;QACD,YAAY,EAAE;YACZ,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,QAAQ;YAClB,MAAM,EAAE,CAAC,CAAC;YACV,UAAU,EAAE,QAAQ;YACpB,OAAO,EAAE,CAAC;SACX;QACD,aAAa,EAAE;YACb,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,MAAM;SACjB;QACD,eAAe,EAAE;YACf,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,MAAM;YACd,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,MAAM;YAChB,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;SAChB;QACD,gBAAgB,EAAE;YAChB,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,CAAC;YACN,IAAI,EAAE,CAAC;YACP,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,MAAM;YACd,SAAS,EAAE,KAAK;YAChB,QAAQ,EAAE,KAAK;SAChB;KACF,CAAC;IAEF;;QAC2B,yBAA2B;QAcpD,eAAY,KAAK;YAAjB,YACE,kBAAM,KAAK,CAAC,SAKb;YA6CD,aAAO,GAAG,cAAY,QAAC;gBACrB,MAAM,EAAE,KAAI,CAAC,QAAQ,CAAC,YAAY;gBAClC,KAAK,EAAE,KAAI,CAAC,QAAQ,CAAC,WAAW;aACjC,IAAC,CAAA;YAnDA,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;YACrD,KAAI,CAAC,eAAe,GAAG,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;YACvD,KAAI,CAAC,OAAO,GAAGO,eAAe,EAAE,CAAC;;SAClC;QAED,iCAAiB,GAAjB;YACE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAQ,CAAC;YACtC,IAAI,CAAC,eAAe,EAAE,CAAC;YAEvB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACnE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACrE,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;QAED,qCAAqB,GAArB,UAAsB,SAAS;YAC7B,IAAI,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC9C,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU;iBAC7C,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;oBAClC,CAACR,mBAAY,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;iBAChD,SAAS,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gBACtC,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAC9C,OAAO,IAAI,CAAC;aACb;YACD,OAAO,KAAK,CAAC;SACd;QAED,kCAAkB,GAAlB;;;;YAIQ,IAAA,KAA4B,IAAI,CAAC,KAAK,EAApC,SAAS,eAAA,EAAE,UAAU,gBAAe,CAAC;YAC7C,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE;gBAC7C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,SAAS,CAAC;aACrC;YACD,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,GAAG,CAAC,CAAC,EAAE;gBAC/C,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC;aACvC;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;SACtC;;;;QAKD,oCAAoB,GAApB;YACE,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACtE,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;SACzE;QAOD,8BAAc,GAAd;YACE,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YACpB,IAAA,KAAK,GAAa,IAAI,MAAjB,EAAE,MAAM,GAAK,IAAI,OAAT,CAAU;YAE/B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,UAAG,KAAK,GAAG,aAAa,OAAI,CAAC;YAC/D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,UAAG,MAAM,GAAG,aAAa,OAAI,CAAC;YAEjE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAEnB,IAAA,YAAY,GAAK,IAAI,CAAC,KAAK,aAAf,CAAgB;YACpC,YAAY,CAAC,IAAI,CAAC,CAAC;SACpB;QAED,+BAAe,GAAf;YACE,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;YAC5D,IAAI,CAAC,QAAS,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE9C,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;YAC9D,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACnE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAElD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAEpD,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,eAAe,CAAC,CAAC;YAClE,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;YACrE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAEpD,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACpE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACzD;QAED,+BAAe,GAAf,UAAgB,IAAI;YACV,IAAA,KAAK,GAAa,IAAI,MAAjB,EAAE,MAAM,GAAK,IAAI,OAAT,CAAU;YAC/B,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG,MAAM,CAAC;YACxC,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,KAAK,CAAC;YACxC,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,aAAa,CAAC;YAC7C,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,aAAa,CAAC;SAC/C;QAED,sBAAM,GAAN;YACE,IAAM,KAOF,IAAI,CAAC,KAAK,EANZ,YAAY,kBAAA,EACQ,SAAS,wBAAA,EAC7B,KAAK,WAAA,EACL,SAAS,eAAA,EACT,UAAU,gBAAA,EACP,SAAS,cANR,0EAOL,CAAa,CAAC;YAEf,QACEH,oBAAC,SAAS;yBACR,YAAY,EAAE,IAAI,CAAC,OAAO,EAC1B,KAAK,EAAE,KAAK,yBAAQ,MAAM,CAAC,IAAI,GAAK,KAAK,IAAK,MAAM,CAAC,IAAI,IACrD,SAAS,EACb,EACF;SACH;QAlIM,kBAAY,GAAG;YACpB,kBAAkB,EAAE,KAAK;SAC1B,CAAC;QAiIJ,YAAC;KApID,CAA2BI,eAAe;;IC9C1C;;;QAGa,YAAY,GAAG,UAC1B,gBAA0C,EAAE,kBAAgC;QAE5E,IAAI,qBAAqB,GAAG,kBAAkB,EAAE,CAAC;QACjD,IAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;QAC9C;YAA8B,mCAAyC;YAAvE;;aAcC;YAXC,2CAAiB,GAAjB;gBACE,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACtB;YAED,8CAAoB,GAApB;gBACE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;aACzB;YAED,gCAAM,GAAN;gBACE,OAAOJ,oBAAC,gBAAgB,eAAK,IAAI,CAAC,KAAK,EAAM,qBAAqB,EAAI,CAAC;aACxE;YACH,sBAAC;SAAA,CAd6BE,mBAAmB,GAchD;QACD,eAAe,CAAC,MAAM,GAAG;YACvB,qBAAqB,GAAG,kBAAkB,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,UAAA,SAAS,IAAI,OAAA,SAAS,CAAC,WAAW,EAAE,GAAA,CAAC,CAAC;SAC/E,CAAC;QACF,OAAO,eAAe,CAAC;IACzB,CAAC;;IChCD;QACa,iBAAiB,GAAwB,UACpD,SAAS,EAAE,yBAA8B;QAA9B,0CAAA,EAAA,8BAA8B;QAEzC,IAAM,iBAAiB,GAAG,UAAC,SAAS,EAAE,KAAK;YACzC,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,OAAO,CAAC,UAAC,YAAY;gBAC1D,IAAM,WAAW,GAAG,yBAAyB,CAAC,YAAY,CAAC,EAAE,CAAC;gBAC9D,IAAI,WAAW,IAAI,SAAS,CAAC,YAAY,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,EAAE;oBAClE,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;iBACtC;aACF,CAAC,CAAC;SACJ,CAAC;QAEF,IAAI,gBAAiC,CAAC;QACtC,IAAI,YAAY,GAAG,IAAI,CAAC;QACxB,IAAI,gBAAgB,GAAG,IAAI,CAAC;QAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,YAAY,GAAG,KAAK,CAAC;QAEzB,IAAM,YAAY,GAAG,UAAC,MAAM,EAAE,OAAQ,EAAE,QAAS;YAC/C,IAAM,YAAY,GAAG,UAAC,SAAS;gBAC7B,IAAI,YAAY,KAAK,IAAI,EAAE;oBACzB,YAAY,GAAG,SAAS,CAAC;iBAC1B;gBACD,IAAM,WAAW,GAAG,MAAM,cAAM,SAAS,GAAI,OAAO,CAAC,CAAC;gBACtD,IAAM,KAAK,yBAAQ,SAAS,GAAK,WAAW,CAAE,CAAC;gBAE/C,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE;oBAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;iBAC5B;gBACD,IAAI,YAAY,KAAK,gBAAgB,EAAE;oBACrC,IAAI,gBAAgB,KAAK,YAAY,EAAE;wBACrC,QAAQ,GAAG,KAAK,CAAC;wBACjB,IAAI,CAAC,YAAY,EAAE;4BACjB,gBAAgB,GAAG,YAAY,CAAC;4BAChC,YAAY,GAAG,IAAI,CAAC;yBACrB;qBACF;oBACD,YAAY,GAAG,IAAI,CAAC;iBACrB;gBAED,OAAO,WAAW,CAAC;aACpB,CAAC;YACF,gBAAgB,GAAG,YAAY,CAAC;YAEhC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE;gBAC/B,IAAI,YAAY,EAAE;oBAChB,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;oBAC9C,YAAY,GAAG,KAAK,CAAC;iBACtB;aACF,CAAC,CAAC;SACJ,CAAC;QACF,IAAM,iBAAiB,GAAG,UAAC,KAAK,EAAE,MAAM,EAAE,OAAO;YAC/C,YAAY,CAAC,UAAA,KAAK;;gBAAI;oBACpB,GAAC,KAAK,IAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;;aACtC,CAAC,CAAC;SACL,CAAC;QAEF,OAAO;YACL,YAAY,cAAA;YACZ,iBAAiB,mBAAA;SAClB,CAAC;IACJ,CAAC;;IC9DD,IAAM,kBAAkB,GAAG,UAAC,MAAM,EAAE,UAAU,EAAE,OAAe;QAC7D;YAAwB,6BAAmB;YAA3C;;aAMC;YAHC,0BAAM,GAAN;gBACE,OAAOF,oBAAC,MAAM,eAAK,UAAU,EAAM,IAAI,CAAC,KAAK,EAAI,CAAC;aACnD;YACH,gBAAC;SAAA,CANuBE,mBAAmB,GAM1C;QACD,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAMF;IAEA;AACA,QAAa,cAAc,GAAG,UAAA,UAAU,IAAI,OAAA,UAAC,MAAM;QACjD,IAAM,KAAK,GAAG,EAAE,CAAC;QACjB,IAAM,OAAO,GAAG,EAAE,CAAC;QACnB,IAAM,gBAAgB,GAAI,MAA2B,CAAC,UAAU,CAAC;QAEjE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,UAAC,EAA4C;gBAA5C,KAAA,aAA4C,EAA3C,SAAS,QAAA,EAAE,aAAa,QAAA;YACjE,IAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;YAC5C,IAAI,SAAS,IAAI,SAAS,KAAK,MAAM,CAAC,aAAa,CAAC,EAAE;gBACpD,KAAK,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;aAC9B;YACD,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC;SAC7D,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;cAChC,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC;IAC1D,CAAC,GAAA;;ICrCD;AACA,IAGA;QACa,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC;QACrC,OAAO,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,GAAG,MAAM,CAAC;KACnF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;"}