Current File : /home/exataengenharia/public_html/node_modules/@splidejs/splide/dist/js/splide-renderer.min.js.map
{"version":3,"file":"splide-renderer.min.js","sources":["../../src/js/components/Arrows/path.ts","../../src/js/constants/directions.ts","../../src/js/components/Direction/Direction.ts","../../src/js/constants/arrows.ts","../../src/js/constants/project.ts","../../src/js/constants/classes.ts","../../src/js/constants/defaults.ts","../../src/js/constants/i18n.ts","../../src/js/utils/arrayLike/slice/slice.ts","../../src/js/utils/function/apply/apply.ts","../../src/js/utils/type/type.ts","../../src/js/utils/array/toArray/toArray.ts","../../src/js/utils/array/forEach/forEach.ts","../../src/js/utils/array/push/push.ts","../../src/js/utils/dom/matches/matches.ts","../../src/js/utils/dom/child/child.ts","../../src/js/utils/dom/children/children.ts","../../src/js/utils/object/ownKeys/ownKeys.ts","../../src/js/utils/object/forOwn/forOwn.ts","../../src/js/utils/object/assign/assign.ts","../../src/js/utils/object/merge/merge.ts","../../src/js/utils/dom/remove/remove.ts","../../src/js/utils/dom/unit/unit.ts","../../src/js/utils/error/assert/assert.ts","../../src/js/utils/math/math/math.ts","../../src/js/utils/string/camelToKebab/camelToKebab.ts","../../src/js/utils/string/uniqueId/uniqueId.ts","../../src/js/constructors/EventBinder/EventBinder.ts","../../src/js/utils/array/empty/empty.ts","../../src/js/constructors/EventInterface/EventInterface.ts","../../src/js/constants/events.ts","../../src/js/renderer/constants/classes.ts","../../src/js/renderer/constants/defaults.ts","../../src/js/renderer/Style/Style.ts","../../src/js/renderer/SplideRenderer/SplideRenderer.ts","../../src/js/utils/string/pad/pad.ts","../../src/js/utils/dom/queryAll/queryAll.ts","../../src/js/constants/types.ts"],"sourcesContent":["/**\r\n * The namespace for SVG elements.\r\n */\r\nexport const XML_NAME_SPACE = 'http://www.w3.org/2000/svg';\r\n\r\n/**\r\n * The arrow path.\r\n */\r\nexport const PATH = 'm15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z';\r\n\r\n/**\r\n * SVG width and height.\r\n */\r\nexport const SIZE = 40;\r\n","/**\r\n * Enumerates slides from left to right.\r\n */\r\nexport const LTR = 'ltr';\r\n\r\n/**\r\n * Enumerates slides from right to left.\r\n */\r\nexport const RTL = 'rtl';\r\n\r\n/**\r\n * Enumerates slides in a col.\r\n */\r\nexport const TTB = 'ttb';\r\n","import { ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, ARROW_UP } from '../../constants/arrows';\r\nimport { RTL, TTB } from '../../constants/directions';\r\nimport { Splide } from '../../core/Splide/Splide';\r\nimport { BaseComponent, Components, Options } from '../../types';\r\n\r\n\r\n/**\r\n * The interface for the Direction component.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport interface DirectionComponent extends BaseComponent {\r\n  resolve( prop: string, axisOnly?: boolean, direction?: Options['direction'] ): string;\r\n  orient( value: number ): number;\r\n}\r\n\r\n/**\r\n * The translation map for directions.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport const ORIENTATION_MAP = {\r\n  width     : [ 'height' ],\r\n  left      : [ 'top', 'right' ],\r\n  right     : [ 'bottom', 'left' ],\r\n  x         : [ 'y' ],\r\n  X         : [ 'Y' ],\r\n  Y         : [ 'X' ],\r\n  ArrowLeft : [ ARROW_UP, ARROW_RIGHT ],\r\n  ArrowRight: [ ARROW_DOWN, ARROW_LEFT ],\r\n};\r\n\r\n/**\r\n * The component that absorbs the difference among directions.\r\n *\r\n * @since 3.0.0\r\n *\r\n * @param Splide     - A Splide instance.\r\n * @param Components - A collection of components.\r\n * @param options    - Options.\r\n *\r\n * @return A Direction component object.\r\n */\r\nexport function Direction( Splide: Splide, Components: Components, options: Options ): DirectionComponent {\r\n  /**\r\n   * Resolves the provided property name.\r\n   *\r\n   * @param prop      - A property name to translate.\r\n   * @param axisOnly  - Optional. If `ture`, returns the same property for LTR and RTL.\r\n   * @param direction - Optional. Specify the direction. The default value is the `direction` option.\r\n   */\r\n  function resolve( prop: string, axisOnly?: boolean, direction?: Options['direction'] ): string {\r\n    direction = direction || options.direction;\r\n    const index = direction === RTL && ! axisOnly ? 1 : direction === TTB ? 0 : -1;\r\n\r\n    return ORIENTATION_MAP[ prop ] && ORIENTATION_MAP[ prop ][ index ]\r\n      || prop.replace( /width|left|right/i, ( match, offset ) => {\r\n        const replacement = ORIENTATION_MAP[ match.toLowerCase() ][ index ] || match;\r\n        return offset > 0 ? replacement.charAt( 0 ).toUpperCase() + replacement.slice( 1 ) : replacement;\r\n      } );\r\n  }\r\n\r\n  /**\r\n   * Orients the value towards the current direction.\r\n   *\r\n   * @param value - A value to orient.\r\n   *\r\n   * @return The oriented value.\r\n   */\r\n  function orient( value: number ): number {\r\n    return value * ( options.direction === RTL ? 1 : -1 );\r\n  }\r\n\r\n  return {\r\n    resolve,\r\n    orient,\r\n  };\r\n}\r\n","const ARROW = 'Arrow';\r\nexport const ARROW_LEFT  = `${ ARROW }Left`;\r\nexport const ARROW_RIGHT = `${ ARROW }Right`;\r\nexport const ARROW_UP    = `${ ARROW }Up`;\r\nexport const ARROW_DOWN  = `${ ARROW }Down`;","/**\r\n * The project code.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport const PROJECT_CODE = 'splide';\r\n\r\n/**\r\n * The data attribute prefix.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport const DATA_ATTRIBUTE = `data-${ PROJECT_CODE }`;\r\n","import { PROJECT_CODE } from './project';\r\n\r\n/**\r\n * The prefix for classes.\r\n *\r\n * @since 4.1.0\r\n */\r\nconst CLASS_PREFIX = `${ PROJECT_CODE }__`;\r\n\r\n/**\r\n * The prefix for status classes.\r\n *\r\n * @since 4.1.0\r\n */\r\nconst STATUS_CLASS_PREFIX = 'is-';\r\n\r\n/**\r\n * All classes as constants.\r\n */\r\nexport const CLASS_ROOT            = PROJECT_CODE;\r\nexport const CLASS_TRACK           = `${ CLASS_PREFIX }track`;\r\nexport const CLASS_LIST            = `${ CLASS_PREFIX }list`;\r\nexport const CLASS_SLIDE           = `${ CLASS_PREFIX }slide`;\r\nexport const CLASS_CLONE           = `${ CLASS_SLIDE }--clone`;\r\nexport const CLASS_CONTAINER       = `${ CLASS_SLIDE }__container`;\r\nexport const CLASS_ARROWS          = `${ CLASS_PREFIX }arrows`;\r\nexport const CLASS_ARROW           = `${ CLASS_PREFIX }arrow`;\r\nexport const CLASS_ARROW_PREV      = `${ CLASS_ARROW }--prev`;\r\nexport const CLASS_ARROW_NEXT      = `${ CLASS_ARROW }--next`;\r\nexport const CLASS_PAGINATION      = `${ CLASS_PREFIX }pagination`;\r\nexport const CLASS_PAGINATION_PAGE = `${ CLASS_PAGINATION }__page`;\r\nexport const CLASS_PROGRESS        = `${ CLASS_PREFIX }progress`;\r\nexport const CLASS_PROGRESS_BAR    = `${ CLASS_PROGRESS }__bar`;\r\nexport const CLASS_TOGGLE          = `${ CLASS_PREFIX }toggle`;\r\nexport const CLASS_TOGGLE_PLAY     = `${ CLASS_TOGGLE }__play`;\r\nexport const CLASS_TOGGLE_PAUSE    = `${ CLASS_TOGGLE }__pause`;\r\nexport const CLASS_SPINNER         = `${ CLASS_PREFIX }spinner`;\r\nexport const CLASS_SR              = `${ CLASS_PREFIX }sr`;\r\nexport const CLASS_INITIALIZED     = `${ STATUS_CLASS_PREFIX }initialized`;\r\nexport const CLASS_ACTIVE          = `${ STATUS_CLASS_PREFIX }active`;\r\nexport const CLASS_PREV            = `${ STATUS_CLASS_PREFIX }prev`;\r\nexport const CLASS_NEXT            = `${ STATUS_CLASS_PREFIX }next`;\r\nexport const CLASS_VISIBLE         = `${ STATUS_CLASS_PREFIX }visible`;\r\nexport const CLASS_LOADING         = `${ STATUS_CLASS_PREFIX }loading`;\r\nexport const CLASS_FOCUS_IN        = `${ STATUS_CLASS_PREFIX }focus-in`;\r\nexport const CLASS_OVERFLOW        = `${ STATUS_CLASS_PREFIX }overflow`;\r\n\r\n/**\r\n * The array with all status classes except for `is-initialized`.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport const STATUS_CLASSES = [\r\n  CLASS_ACTIVE,\r\n  CLASS_VISIBLE,\r\n  CLASS_PREV,\r\n  CLASS_NEXT,\r\n  CLASS_LOADING,\r\n  CLASS_FOCUS_IN,\r\n  CLASS_OVERFLOW,\r\n];\r\n\r\n/**\r\n * The collection of classes for elements that Splide dynamically creates.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport const CLASSES = {\r\n  slide     : CLASS_SLIDE,\r\n  clone     : CLASS_CLONE,\r\n  arrows    : CLASS_ARROWS,\r\n  arrow     : CLASS_ARROW,\r\n  prev      : CLASS_ARROW_PREV,\r\n  next      : CLASS_ARROW_NEXT,\r\n  pagination: CLASS_PAGINATION,\r\n  page      : CLASS_PAGINATION_PAGE,\r\n  spinner   : CLASS_SPINNER,\r\n};\r\n","import { Options } from '../types';\r\nimport { CLASSES } from './classes';\r\nimport { I18N } from './i18n';\r\n\r\n\r\n/**\r\n * The collection of default options.\r\n * Note that this collection does not contain all options.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport const DEFAULTS: Options = {\r\n  type              : 'slide',\r\n  role              : 'region',\r\n  speed             : 400,\r\n  perPage           : 1,\r\n  cloneStatus       : true,\r\n  arrows            : true,\r\n  pagination        : true,\r\n  paginationKeyboard: true,\r\n  interval          : 5000,\r\n  pauseOnHover      : true,\r\n  pauseOnFocus      : true,\r\n  resetProgress     : true,\r\n  easing            : 'cubic-bezier(0.25, 1, 0.5, 1)',\r\n  drag              : true,\r\n  direction         : 'ltr',\r\n  trimSpace         : true,\r\n  focusableNodes    : 'a, button, textarea, input, select, iframe',\r\n  live              : true,\r\n  classes           : CLASSES,\r\n  i18n              : I18N,\r\n  reducedMotion: {\r\n    speed      : 0,\r\n    rewindSpeed: 0,\r\n    autoplay   : 'pause',\r\n  },\r\n};","/**\r\n * The collection of i18n strings.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport const I18N = {\r\n  prev      : 'Previous slide',\r\n  next      : 'Next slide',\r\n  first     : 'Go to first slide',\r\n  last      : 'Go to last slide',\r\n  slideX    : 'Go to slide %s',\r\n  pageX     : 'Go to page %s',\r\n  play      : 'Start autoplay',\r\n  pause     : 'Pause autoplay',\r\n  carousel  : 'carousel',\r\n  slide     : 'slide',\r\n  select    : 'Select a slide to show',\r\n  slideLabel: '%s of %s', // [ slide number ] / [ slide size ]\r\n};\r\n","/**\r\n * The slice method for an array-like object.\r\n *\r\n * @param arrayLike - An array-like object.\r\n * @param start     - Optional. A start index.\r\n * @param end       - Optional. A end index.\r\n *\r\n * @return An array with sliced elements.\r\n */\r\nexport function slice<T>( arrayLike: ArrayLike<T>, start?: number, end?: number ): T[] {\r\n  return Array.prototype.slice.call( arrayLike, start, end );\r\n}\r\n","import { AnyFunction, ShiftN } from '../../../types';\r\nimport { slice } from '../../arrayLike';\r\n\r\n\r\n/**\r\n * Create a function where provided arguments are bound.\r\n * `this` parameter will be always null.\r\n *\r\n * @param func - A function.\r\n * @param args - Arguments to bind to the function.\r\n *\r\n * @return A function where arguments are bound.\r\n */\r\nexport function apply<F extends AnyFunction, A extends any[] = any[]>(\r\n  func: F,\r\n  ...args: A\r\n): ( ...args: ShiftN<Parameters<F>, A[\"length\"]> ) => ReturnType<F>;\r\n\r\n/**\r\n * Create a function where provided arguments are bound.\r\n * `this` parameter will be always null.\r\n *\r\n * @param func - A function.\r\n */\r\nexport function apply( func: AnyFunction ): any {\r\n  // eslint-disable-next-line prefer-rest-params, prefer-spread\r\n  return func.bind( null, ...slice( arguments, 1 ) );\r\n}\r\n","import { AnyFunction } from '../../types';\r\nimport { apply } from '../function';\r\n\r\n\r\n/**\r\n * The alias of the type check function.\r\n *\r\n * @param type    - A type.\r\n * @param subject - A subject to check.\r\n *\r\n * @return `true` if the subject is the specified type.\r\n */\r\nfunction typeOf( type: string, subject: unknown ): boolean {\r\n  return typeof subject === type;\r\n}\r\n\r\n/**\r\n * Checks if the given subject is an object or not.\r\n *\r\n * @param subject - A subject to check.\r\n *\r\n * @return `true` if the subject is an object, or otherwise `false`.\r\n */\r\nexport function isObject( subject: unknown ): subject is object {\r\n  return ! isNull( subject ) && typeOf( 'object', subject );\r\n}\r\n\r\n/**\r\n * Checks if the given subject is an array or not.\r\n *\r\n * @param subject - A subject to check.\r\n *\r\n * @return `true` if the subject is an array, or otherwise `false`.\r\n */\r\nexport const isArray: <T>( subject: unknown ) => subject is T[] = Array.isArray;\r\n\r\n/**\r\n * Checks if the given subject is a function or not.\r\n *\r\n * @param subject - A subject to check.\r\n *\r\n * @return `true` if the subject is a function, or otherwise `false`.\r\n */\r\nexport const isFunction = <( subject: unknown ) => subject is AnyFunction>apply( typeOf, 'function' );\r\n\r\n/**\r\n * Checks if the given subject is a string or not.\r\n *\r\n * @param subject - A subject to check.\r\n *\r\n * @return `true` if the subject is a string, or otherwise `false`.\r\n */\r\nexport const isString = <( subject: unknown ) => subject is string>apply( typeOf, 'string' );\r\n\r\n/**\r\n * Checks if the given subject is `undefined` or not.\r\n *\r\n * @param subject - A subject to check.\r\n *\r\n * @return `true` if the subject is `undefined`, or otherwise `false`.\r\n */\r\nexport const isUndefined = <( subject: unknown ) => subject is undefined>apply( typeOf, 'undefined' );\r\n\r\n/**\r\n * Checks if the given subject is `null` or not.\r\n *\r\n * @param subject - A subject to check.\r\n *\r\n * @return `true` if the subject is `null`, or otherwise `false`.\r\n */\r\nexport function isNull( subject: unknown ): subject is null {\r\n  return subject === null;\r\n}\r\n\r\n/**\r\n * Checks if the given subject is an HTMLElement instance or not.\r\n * This method takes into account which `window` the node belongs to.\r\n *\r\n * @param subject - A subject to check.\r\n *\r\n * @return `true` if the subject is an HTMLElement instance, or otherwise `false`.\r\n */\r\nexport function isHTMLElement( subject: unknown ): subject is HTMLElement {\r\n  try {\r\n    return subject instanceof ( ( subject as Node ).ownerDocument.defaultView || window ).HTMLElement;\r\n  } catch ( e ) {\r\n    return false;\r\n  }\r\n}","import { isArray } from '../../type/type';\r\n\r\n\r\n/**\r\n * Push the provided value to an array if the value is not an array.\r\n *\r\n * @param value - A value to push.\r\n *\r\n * @return An array containing the value, or the value itself if it is already an array.\r\n */\r\nexport function toArray<T>( value: T | T[] ): T[] {\r\n  return isArray( value ) ? value : [ value ];\r\n}\r\n","import { toArray } from '../toArray/toArray';\r\n\r\n\r\n/**\r\n * The extended `Array#forEach` method that accepts a single value as an argument.\r\n *\r\n * @param values   - A value or values to iterate over.\r\n * @param iteratee - An iteratee function.\r\n */\r\nexport function forEach<T>( values: T | T[], iteratee: ( value: T, index: number, array: T[] ) => void ): void {\r\n  toArray( values ).forEach( iteratee );\r\n}\r\n","import { toArray } from '../toArray/toArray';\r\n\r\n\r\n/**\r\n * Extended `Array#push()` that accepts an item or an array with items.\r\n *\r\n * @param array - An array to push items.\r\n * @param items - An item or items to push.\r\n *\r\n * @return A provided array itself.\r\n */\r\nexport function push<T>( array: T[], items: T | T[] ): T[] {\r\n  array.push( ...toArray( items ) );\r\n  return array;\r\n}\r\n","import { isHTMLElement } from '../../type/type';\r\n\r\n\r\n/**\r\n * Checks if the element can be selected by the provided selector or not.\r\n *\r\n * @param elm      - An element to check.\r\n * @param selector - A selector to test.\r\n *\r\n * @return `true` if the selector matches the element, or otherwise `false`.\r\n */\r\nexport function matches( elm: Element | EventTarget, selector: string ): boolean {\r\n  return isHTMLElement( elm ) && ( elm[ 'msMatchesSelector' ] || elm.matches ).call( elm, selector );\r\n}\r\n","import { children } from '../children/children';\r\n\r\n\r\n/**\r\n * Returns a child element that matches the specified tag or class name.\r\n *\r\n * @param parent   - A parent element.\r\n * @param selector - A selector to filter children.\r\n *\r\n * @return A matched child element if available, or otherwise `undefined`.\r\n */\r\nexport function child<E extends HTMLElement>( parent: HTMLElement, selector?: string ): E | undefined {\r\n  return selector ? children<E>( parent, selector )[ 0 ] : parent.firstElementChild as E;\r\n}\r\n","import { slice } from '../../arrayLike';\r\nimport { matches } from '../matches/matches';\r\n\r\n\r\n/**\r\n * Finds children that has the specified tag or class name.\r\n *\r\n * @param parent   - A parent element.\r\n * @param selector - Optional. A selector to filter children.\r\n *\r\n * @return An array with filtered children.\r\n */\r\nexport function children<E extends HTMLElement>( parent: HTMLElement, selector?: string ): E[] {\r\n  const children = parent ? slice( parent.children ) as E[] : [];\r\n  return selector ? children.filter( child => matches( child, selector ) ) : children;\r\n}\r\n","/**\r\n * An alias of `Object.keys()`\r\n */\r\nexport const ownKeys = Object.keys;","import { ownKeys } from '../ownKeys/ownKeys';\r\n\r\n\r\n/**\r\n * Iterates over the provided object by own enumerable keys with calling the iteratee function.\r\n *\r\n * @param object   - An object to iterate over.\r\n * @param iteratee - An iteratee function that takes `value` and `key` as arguments.\r\n * @param right    - If `true`, the method iterates over the object from the end like `forEachRight()`.\r\n *\r\n * @return A provided object itself.\r\n */\r\nexport function forOwn<T extends object>(\r\n  object: T,\r\n  iteratee: ( value: T[ keyof T ], key: string ) => boolean | void,\r\n  right?: boolean\r\n): T {\r\n  if ( object ) {\r\n    ( right ? ownKeys( object ).reverse() : ownKeys( object ) ).forEach( key => {\r\n      key !== '__proto__' && iteratee( object[ key ], key );\r\n    } );\r\n  }\r\n\r\n  return object;\r\n}\r\n","import { Cast, Head, Push, Resolve, Shift } from '../../../types';\r\nimport { slice } from '../../arrayLike';\r\nimport { forOwn } from '../forOwn/forOwn';\r\n\r\n\r\n/**\r\n * Assigns U to T.\r\n *\r\n * @typeParam T - An object to assign to.\r\n * @typeParam U - An object to assign.\r\n *\r\n * @return An assigned object type.\r\n */\r\nexport type Assign<T, U> = Omit<T, keyof U> & U;\r\n\r\n/**\r\n * Recursively assigns U[] to T.\r\n *\r\n * @typeParam T - An object to assign to.\r\n * @typeParam U - A tuple contains objects.\r\n *\r\n * @return An assigned object type.\r\n */\r\nexport type Assigned<T extends object, U extends object[], N extends number, C extends any[] = []> = {\r\n  0: T,\r\n  1: Assigned<Assign<T, Head<U>>, Shift<U>, N, Push<C>>,\r\n}[ C['length'] extends N ? 0 : 1 ] extends infer A ? Cast<A, any> : never;\r\n\r\nexport function assign<T extends object>( object: T ): T;\r\n\r\nexport function assign<T extends object, U extends object[]>(\r\n  object: T,\r\n  ...sources: U\r\n): Resolve<Assigned<T, U, U['length']>>\r\n\r\n/**\r\n * Assigns all own enumerable properties of all source objects to the provided object.\r\n *\r\n * @param object - An object to assign properties to.\r\n *\r\n * @return An object assigned properties of the sources to.\r\n */\r\nexport function assign<T extends object>( object: T ): any {\r\n  // eslint-disable-next-line prefer-rest-params, prefer-spread\r\n  slice( arguments, 1 ).forEach( source => {\r\n    forOwn( source, ( value, key ) => {\r\n      object[ key ] = source[ key ];\r\n    } );\r\n  } );\r\n\r\n  return object;\r\n}\r\n","import { Cast, Head, Push, Resolve, Shift } from '../../../types';\r\nimport { slice } from '../../arrayLike';\r\nimport { isArray, isObject } from '../../type/type';\r\nimport { forOwn } from '../forOwn/forOwn';\r\n\r\n\r\n/**\r\n * Merges U to T.\r\n *\r\n * @typeParam T - An object to merge U into.\r\n * @typeParam U - An object to merge properties from.\r\n *\r\n * @return A merged object type.\r\n */\r\nexport type Merge<T extends object, U extends object> = Omit<T, keyof U> & {\r\n  [ K in ( keyof T & keyof U ) ]: U[ K ] extends object\r\n    ? U[ K ] extends any[]\r\n      ? U[ K ]\r\n      : T[ K ] extends object\r\n        ? Merge<T[ K ], U[ K ]> extends infer A ? Resolve<Cast<A, object>> : never\r\n        : U[ K ]\r\n    : U[ K ];\r\n} & Omit<U, keyof T>;\r\n\r\n/**\r\n * Recursively merges U[] to T.\r\n *\r\n * @typeParam T - An object to assign to.\r\n * @typeParam U - A tuple contains objects.\r\n *\r\n * @return An assigned object type.\r\n */\r\nexport type Merged<T extends object, U extends object[], N extends number, C extends any[] = []> = {\r\n  0: T,\r\n  1: Merged<Merge<T, Head<U>>, Shift<U>, N, Push<C>>,\r\n}[ C['length'] extends N ? 0 : 1 ] extends infer A ? Cast<A, any> : never;\r\n\r\nexport function merge<T extends object>( object: T ): T;\r\n\r\nexport function merge<T extends object, U extends object[]>(\r\n  object: T,\r\n  ...sources: U\r\n): Resolve<Merged<T, U, U['length']>>\r\n\r\n/**\r\n * Recursively merges source properties to the object.\r\n * Be aware that this method does not merge arrays. They are just duplicated by `slice()`.\r\n *\r\n * @param object - An object to merge properties to.\r\n *\r\n * @return A new object with merged properties.\r\n */\r\nexport function merge<T extends object>( object: T ): any {\r\n  // eslint-disable-next-line prefer-rest-params\r\n  slice( arguments, 1 ).forEach( source => {\r\n    forOwn( source, ( value, key ) => {\r\n      if ( isArray( value ) ) {\r\n        object[ key ] = value.slice();\r\n      } else if ( isObject( value ) ) {\r\n        object[ key ] = merge( {}, isObject( object[ key ] ) ? object[ key ] : {}, value );\r\n      } else {\r\n        object[ key ] = value;\r\n      }\r\n    } );\r\n  } );\r\n\r\n  return object;\r\n}\r\n","import { forEach } from '../../array';\r\n\r\n\r\n/**\r\n * Removes the provided node from its parent.\r\n *\r\n * @param nodes - A node or nodes to remove.\r\n */\r\nexport function remove( nodes: Node | Node[] ): void {\r\n  forEach( nodes, node => {\r\n    if ( node && node.parentNode ) {\r\n      node.parentNode.removeChild( node );\r\n    }\r\n  } );\r\n}\r\n","import { isString } from '../../type/type';\r\n\r\n\r\n/**\r\n * Appends `px` to the provided number.\r\n * If the value is already string, just returns it.\r\n *\r\n * @param value - A value to append `px` to.\r\n *\r\n * @return A string with the CSS unit.\r\n */\r\nexport function unit( value: number | string ): string {\r\n  return isString( value ) ? value : value ? `${ value }px` : '';\r\n}\r\n","import { PROJECT_CODE } from '../../../constants/project';\r\n\r\n\r\n/**\r\n * Throws an error if the provided condition is falsy.\r\n *\r\n * @param condition - If falsy, an error is thrown.\r\n * @param message   - Optional. A message to display.\r\n */\r\nexport function assert( condition: any, message?: string ): void {\r\n  if ( ! condition ) {\r\n    throw new Error( `[${ PROJECT_CODE }] ${ message || '' }` );\r\n  }\r\n}\r\n","export const { min, max, floor, ceil, abs } = Math;\r\n","/**\r\n * Converts the provided string in the camel case to the kebab case.\r\n *\r\n * @param string - A string to convert.\r\n */\r\nexport function camelToKebab( string: string ): string {\r\n  return string.replace( /([a-z0-9])([A-Z])/g, '$1-$2' ).toLowerCase();\r\n}\r\n","import { pad } from '../pad/pad';\r\n\r\n\r\n/**\r\n * Stores unique IDs.\r\n *\r\n * @since 3.0.0\r\n */\r\nconst ids: Record<string, number> = {};\r\n\r\n/**\r\n * Returns a sequential unique ID as \"{ prefix }-{ number }\".\r\n *\r\n * @param prefix - A prefix for the ID.\r\n */\r\nexport function uniqueId( prefix: string ): string {\r\n  return `${ prefix }${ pad( ( ids[ prefix ] = ( ids[ prefix ] || 0 ) + 1 ) ) }`;\r\n}\r\n","import { AnyFunction } from '../../types';\r\nimport { empty, forEach } from '../../utils';\r\n\r\n\r\n/**\r\n * The type for an EventTarget or an array with EventTarget objects.\r\n *\r\n * @since 4.0.0\r\n */\r\ntype EventTargets = EventTarget | EventTarget[];\r\n\r\n/**\r\n * The interface for the EventBinder object.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport interface EventBinderObject {\r\n  bind( target: EventTargets, events: string | string[], callback: AnyFunction, options?: AddEventListenerOptions ): void\r\n  unbind( target: EventTarget | EventTarget[], events: string | string[], callback?: AnyFunction ): void;\r\n  dispatch<T>( target: EventTarget, event: string, detail?: T ): void;\r\n  destroy(): void;\r\n}\r\n\r\n/**\r\n * The constructor function to provide methods to subscribe native events.\r\n *\r\n * @since 4.0.0\r\n * @constructor\r\n *\r\n * @return An EventBinder object.\r\n */\r\nexport function EventBinder(): EventBinderObject {\r\n  /**\r\n   * Stores all handlers that listen to native events.\r\n   * `[ target, event, namespace, callback, remover ]`\r\n   */\r\n  let listeners: [ EventTarget, string, string | undefined, AnyFunction, () => void ][] = [];\r\n\r\n  /**\r\n   * Listens to native events.\r\n   * - `destroy()` can unsubscribe all events.\r\n   * - In IE, mediaQueryList does not inherit EventTarget,\r\n   *   and only supports deprecated `addListener` and `removeListener`.\r\n   *\r\n   * @link https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList/addListener\r\n   *\r\n   * @param targets  - A target element, the window object or the document object.\r\n   * @param events   - An event or events to listen to.\r\n   * @param callback - A callback function.\r\n   * @param options  - Optional. The options to pass to the `addEventListener` function.\r\n   */\r\n  function bind(\r\n    targets: EventTargets,\r\n    events: string | string[],\r\n    callback: AnyFunction,\r\n    options?: AddEventListenerOptions\r\n  ): void {\r\n    forEachEvent( targets, events, ( target, event, namespace ) => {\r\n      const isEventTarget = 'addEventListener' in target;\r\n      const remover = isEventTarget\r\n        ? target.removeEventListener.bind( target, event, callback, options )\r\n        : target[ 'removeListener' ].bind( target, callback );\r\n\r\n      isEventTarget ? target.addEventListener( event, callback, options ) : target[ 'addListener' ]( callback );\r\n      listeners.push( [ target, event, namespace, callback, remover ] );\r\n    } );\r\n  }\r\n\r\n  /**\r\n   * Removes the event handler.\r\n   *\r\n   * @param targets  - A target element, the window object or the document object.\r\n   * @param events   - An event name or names to remove.\r\n   * @param callback - Optional. Specify the callback to remove.\r\n   */\r\n  function unbind( targets: EventTargets, events: string | string[], callback?: AnyFunction ): void {\r\n    forEachEvent( targets, events, ( target, event, namespace ) => {\r\n      listeners = listeners.filter( listener => {\r\n        if ( listener[ 0 ] === target\r\n          && listener[ 1 ] === event\r\n          && listener[ 2 ] === namespace\r\n          && ( ! callback || listener[ 3 ] === callback )\r\n        ) {\r\n          listener[ 4 ]();\r\n          return false;\r\n        }\r\n\r\n        return true;\r\n      } );\r\n    } );\r\n  }\r\n\r\n  /**\r\n   * Dispatches a custom event of the target.\r\n   *\r\n   * @param target - An event target.\r\n   * @param type   - An event type.\r\n   * @param detail - Optional. The `detail` object of the event.\r\n   *\r\n   * @return An event object.\r\n   */\r\n  function dispatch<T>( target: EventTarget, type: string, detail?: T ): CustomEvent {\r\n    let e: CustomEvent;\r\n    const bubbles = true;\r\n\r\n    if ( typeof CustomEvent === 'function' ) {\r\n      e = new CustomEvent( type, { bubbles, detail } );\r\n    } else {\r\n      e = document.createEvent( 'CustomEvent' );\r\n      e.initCustomEvent( type, bubbles, false, detail );\r\n    }\r\n\r\n    target.dispatchEvent( e );\r\n    return e;\r\n  }\r\n\r\n  /**\r\n   * Iterates over each target and event.\r\n   *\r\n   * @param targets  - A target element, the window object or the document object.\r\n   * @param events   - An event name or names.\r\n   * @param iteratee - An iteratee function.\r\n   */\r\n  function forEachEvent(\r\n    targets: EventTargets,\r\n    events: string | string[],\r\n    iteratee: ( target: EventTarget, event: string, namespace: string | undefined ) => void\r\n  ): void {\r\n    forEach( targets, target => {\r\n      target && forEach( events, events => {\r\n        events.split( ' ' ).forEach( eventNS => {\r\n          const fragment = eventNS.split( '.' );\r\n          iteratee( target, fragment[ 0 ], fragment[ 1 ] );\r\n        } );\r\n      } );\r\n    } );\r\n  }\r\n\r\n  /**\r\n   * Removes all listeners.\r\n   */\r\n  function destroy(): void {\r\n    listeners.forEach( data => { data[ 4 ]() } );\r\n    empty( listeners );\r\n  }\r\n\r\n  return {\r\n    bind,\r\n    unbind,\r\n    dispatch,\r\n    destroy,\r\n  };\r\n}\r\n","/**\r\n * Empties the array.\r\n *\r\n * @param array - A array to empty.\r\n */\r\nexport function empty( array: any[] ): void {\r\n  array.length = 0;\r\n}\r\n","import { EVENT_DESTROY } from '../../constants/events';\r\nimport { Splide } from '../../core/Splide/Splide';\r\nimport { AnyFunction, EventMap } from '../../types';\r\nimport { apply, assign, isArray, slice, toArray } from '../../utils';\r\nimport { EventBinder, EventBinderObject } from '../EventBinder/EventBinder';\r\n\r\n\r\n/**\r\n * The interface for the EventInterface object.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport interface EventInterfaceObject extends EventBinderObject {\r\n  on<K extends keyof EventMap>( event: K, callback: EventMap[ K ] ): void;\r\n  on( events: string | string[], callback: AnyFunction ): void;\r\n  off<K extends keyof EventMap>( events: K | K[] | string | string[] ): void;\r\n  emit<K extends keyof EventMap>( event: K, ...args: Parameters<EventMap[ K ]> ): void\r\n  emit( event: string, ...args: any[] ): void;\r\n\r\n  /** @internal */\r\n  bus: DocumentFragment;\r\n}\r\n\r\n/**\r\n * The constructor function that provides interface for internal and native events.\r\n *\r\n * @since 3.0.0\r\n * @constructor\r\n *\r\n * @param Splide - A Splide instance.\r\n *\r\n * @return A collection of interface functions.\r\n */\r\nexport function EventInterface( Splide?: Splide ): EventInterfaceObject {\r\n  /**\r\n   * The document fragment for internal events.\r\n   * Provide the Splide instance to share the bus.\r\n   */\r\n  const bus = Splide ? Splide.event.bus : document.createDocumentFragment();\r\n\r\n  /**\r\n   * An event binder object.\r\n   */\r\n  const binder = EventBinder();\r\n\r\n  /**\r\n   * Listens to an internal event or events.\r\n   *\r\n   * @param events   - An event name or names separated by spaces. Use a dot(.) to add a namespace.\r\n   * @param callback - A callback function to register.\r\n   */\r\n  function on( events: string | string[], callback: AnyFunction ): void {\r\n    binder.bind( bus, toArray( events ).join( ' ' ), e => {\r\n      callback.apply( callback, isArray( e.detail ) ? e.detail : [] );\r\n    } );\r\n  }\r\n\r\n  /**\r\n   * Triggers callback functions.\r\n   * This accepts additional arguments and passes them to callbacks.\r\n   *\r\n   * @param event - An event name.\r\n   */\r\n  function emit( event: string ): void {\r\n    // eslint-disable-next-line prefer-rest-params, prefer-spread\r\n    binder.dispatch( bus, event, slice( arguments, 1 ) );\r\n  }\r\n\r\n  if ( Splide ) {\r\n    Splide.event.on( EVENT_DESTROY, binder.destroy );\r\n  }\r\n\r\n  return assign( binder, {\r\n    bus,\r\n    on,\r\n    off: apply( binder.unbind, bus ),\r\n    emit,\r\n  } );\r\n}","export const EVENT_MOUNTED            = 'mounted';\r\nexport const EVENT_READY              = 'ready';\r\nexport const EVENT_MOVE               = 'move';\r\nexport const EVENT_MOVED              = 'moved';\r\nexport const EVENT_CLICK              = 'click';\r\nexport const EVENT_ACTIVE             = 'active';\r\nexport const EVENT_INACTIVE           = 'inactive';\r\nexport const EVENT_VISIBLE            = 'visible';\r\nexport const EVENT_HIDDEN             = 'hidden';\r\nexport const EVENT_REFRESH            = 'refresh';\r\nexport const EVENT_UPDATED            = 'updated';\r\nexport const EVENT_RESIZE             = 'resize';\r\nexport const EVENT_RESIZED            = 'resized';\r\nexport const EVENT_DRAG               = 'drag';\r\nexport const EVENT_DRAGGING           = 'dragging';\r\nexport const EVENT_DRAGGED            = 'dragged';\r\nexport const EVENT_SCROLL             = 'scroll';\r\nexport const EVENT_SCROLLED           = 'scrolled';\r\nexport const EVENT_OVERFLOW           = 'overflow';\r\nexport const EVENT_DESTROY            = 'destroy';\r\nexport const EVENT_ARROWS_MOUNTED     = 'arrows:mounted';\r\nexport const EVENT_ARROWS_UPDATED     = 'arrows:updated';\r\nexport const EVENT_PAGINATION_MOUNTED = 'pagination:mounted';\r\nexport const EVENT_PAGINATION_UPDATED = 'pagination:updated';\r\nexport const EVENT_NAVIGATION_MOUNTED = 'navigation:mounted';\r\nexport const EVENT_AUTOPLAY_PLAY      = 'autoplay:play';\r\nexport const EVENT_AUTOPLAY_PLAYING   = 'autoplay:playing';\r\nexport const EVENT_AUTOPLAY_PAUSE     = 'autoplay:pause';\r\nexport const EVENT_LAZYLOAD_LOADED    = 'lazyload:loaded';\r\n\r\n/** @internal */\r\nexport const EVENT_SLIDE_KEYDOWN     = 'sk';\r\nexport const EVENT_SHIFTED           = 'sh';\r\nexport const EVENT_END_INDEX_CHANGED = 'ei';\r\n","export const CLASS_RENDERED = 'is-rendered';\r\n","import { RendererConfig } from '../types/types';\r\n\r\n\r\n/**\r\n * Default options for generating static HTML.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport const RENDERER_DEFAULT_CONFIG: RendererConfig = {\r\n  listTag : 'ul',\r\n  slideTag: 'li',\r\n};\r\n","import { Options } from '../../types';\r\nimport { forOwn } from '../../utils';\r\n\r\n\r\ninterface Styles {\r\n  [ breakpoint: string ]: {\r\n    [ selector: string ]: Record<string, string | number>\r\n  };\r\n}\r\n\r\n/**\r\n * The class for generating styles as a string.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport class Style {\r\n  /**\r\n   * The collection of registered styles categorized by each breakpoint.\r\n   */\r\n  private readonly styles: Styles = {};\r\n\r\n  /**\r\n   * The ID of the slider.\r\n   */\r\n  private readonly id: string;\r\n\r\n  /**\r\n   * Holds options.\r\n   */\r\n  private readonly options: Options;\r\n\r\n  /**\r\n   * The Style constructor.\r\n   *\r\n   * @param id      - A slider ID.\r\n   * @param options - Options.\r\n   */\r\n  constructor( id: string, options: Options ) {\r\n    this.id      = id;\r\n    this.options = options;\r\n  }\r\n\r\n  /**\r\n   * Registers a CSS rule.\r\n   *\r\n   * @param selector - A selector.\r\n   * @param prop\r\n   * @param value\r\n   * @param breakpoint\r\n   */\r\n  rule( selector: string, prop: string, value: string | number, breakpoint?: string ): void {\r\n    breakpoint = breakpoint || 'default';\r\n    const selectors = ( this.styles[ breakpoint ] = this.styles[ breakpoint ] || {} );\r\n    const styles    = ( selectors[ selector ] = selectors[ selector ] || {} );\r\n    styles[ prop ] = value;\r\n  }\r\n\r\n  /**\r\n   * Builds styles as a single string.\r\n   *\r\n   * @return Built styles.\r\n   */\r\n  build(): string {\r\n    let css = '';\r\n\r\n    if ( this.styles.default ) {\r\n      css += this.buildSelectors( this.styles.default );\r\n    }\r\n\r\n    Object.keys( this.styles )\r\n      .sort( ( n, m ) => this.options.mediaQuery === 'min' ? +n - +m : +m - +n )\r\n      .forEach( breakpoint => {\r\n        if ( breakpoint !== 'default' ) {\r\n          css += `@media screen and (max-width: ${ breakpoint }px) {`;\r\n          css += this.buildSelectors( this.styles[ breakpoint ] );\r\n          css += `}`;\r\n        }\r\n      } );\r\n\r\n    return css;\r\n  }\r\n\r\n  /**\r\n   * Builds styles for each breakpoint.\r\n   *\r\n   * @param selectors - An object with styles.\r\n   *\r\n   * @return Built styles.\r\n   */\r\n  private buildSelectors( selectors: Record<string, Record<string, string | number>> ): string {\r\n    let css = '';\r\n\r\n    forOwn( selectors, ( styles, selector ) => {\r\n      selector = `#${ this.id } ${ selector }`.trim();\r\n      css += `${ selector } {`;\r\n\r\n      forOwn( styles, ( value, prop ) => {\r\n        if ( value || value === 0 ) {\r\n          css += `${ prop }: ${ value };`;\r\n        }\r\n      } );\r\n\r\n      css += '}';\r\n    } );\r\n\r\n    return css;\r\n  }\r\n}\r\n","import { PATH, SIZE, XML_NAME_SPACE } from '../../components/Arrows/path';\r\nimport { Direction, DirectionComponent } from '../../components/Direction/Direction';\r\nimport { CLASS_ACTIVE, CLASS_CLONE, CLASS_LIST, CLASS_ROOT, CLASS_SLIDE, CLASS_TRACK } from '../../constants/classes';\r\nimport { DEFAULTS } from '../../constants/defaults';\r\nimport { TTB } from '../../constants/directions';\r\nimport { EVENT_MOUNTED } from '../../constants/events';\r\nimport { LOOP, SLIDE } from '../../constants/types';\r\nimport { EventInterface } from '../../constructors';\r\nimport { Splide } from '../../core/Splide/Splide';\r\nimport { Options } from '../../types';\r\nimport {\r\n  assert,\r\n  assign,\r\n  camelToKebab,\r\n  child,\r\n  forOwn,\r\n  isObject,\r\n  isString,\r\n  max,\r\n  merge,\r\n  push,\r\n  queryAll,\r\n  remove,\r\n  uniqueId,\r\n  unit,\r\n} from '../../utils';\r\nimport { CLASS_RENDERED } from '../constants/classes';\r\nimport { RENDERER_DEFAULT_CONFIG } from '../constants/defaults';\r\nimport { Style } from '../Style/Style';\r\nimport { RendererConfig, SlideContent } from '../types/types';\r\n\r\n\r\n/**\r\n * The class to generate static HTML of the slider for the first view.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport class SplideRenderer {\r\n  /**\r\n   * Removes a style element and clones.\r\n   *\r\n   * @param splide - A Splide instance.\r\n   */\r\n  static clean( splide: Splide ): void {\r\n    const { on } = EventInterface( splide );\r\n    const { root } = splide;\r\n    const clones = queryAll( root, `.${ CLASS_CLONE }` );\r\n\r\n    on( EVENT_MOUNTED, () => {\r\n      remove( child( root, 'style' ) );\r\n    } );\r\n\r\n    remove( clones );\r\n  }\r\n\r\n  /**\r\n   * Holds slide contents.\r\n   */\r\n  private readonly contents: string[] | SlideContent[];\r\n\r\n  /**\r\n   * Stores data of slides.\r\n   */\r\n  private readonly slides: SlideContent[] = [];\r\n\r\n  /**\r\n   * The Direction component.\r\n   */\r\n  private readonly Direction: DirectionComponent;\r\n\r\n  /**\r\n   * Holds the Style instance.\r\n   */\r\n  private readonly Style: Style;\r\n\r\n  /**\r\n   * Holds options.\r\n   */\r\n  private readonly options: Options = {};\r\n\r\n  /**\r\n   * Holds options for this instance.\r\n   */\r\n  private readonly config: RendererConfig;\r\n\r\n  /**\r\n   * The slider ID.\r\n   */\r\n  private readonly id: string;\r\n\r\n  /**\r\n   * An array with options for each breakpoint.\r\n   */\r\n  private readonly breakpoints: [ string, Options ][] = [];\r\n\r\n  /**\r\n   * The SplideRenderer constructor.\r\n   *\r\n   * @param contents - An array with slide contents. Each item must be an HTML or a plain text.\r\n   * @param options  - Optional. Slider options.\r\n   * @param config   - Static default options.\r\n   * @param defaults - Default options for the slider. Pass `Splide.defaults` if you are using it.\r\n   */\r\n  constructor( contents: string[] | SlideContent[], options?: Options, config?: RendererConfig, defaults?: Options ) {\r\n    merge( DEFAULTS, defaults || {} );\r\n    merge( merge( this.options, DEFAULTS ), options || {} );\r\n\r\n    this.contents  = contents;\r\n    this.config    = assign( {}, RENDERER_DEFAULT_CONFIG, config || {} );\r\n    this.id        = this.config.id || uniqueId( 'splide' );\r\n    this.Style     = new Style( this.id, this.options );\r\n    this.Direction = Direction( null, null, this.options );\r\n\r\n    assert( this.contents.length, 'Provide at least 1 content.' );\r\n\r\n    this.init();\r\n  }\r\n\r\n  /**\r\n   * Initializes the instance.\r\n   */\r\n  private init(): void {\r\n    this.parseBreakpoints();\r\n    this.initSlides();\r\n    this.registerRootStyles();\r\n    this.registerTrackStyles();\r\n    this.registerSlideStyles();\r\n    this.registerListStyles();\r\n  }\r\n\r\n  /**\r\n   * Initializes slides.\r\n   */\r\n  private initSlides(): void {\r\n    push( this.slides, this.contents.map( ( content, index ) => {\r\n      content = isString( content ) ? { html: content } : content;\r\n      content.styles = content.styles || {};\r\n      content.attrs  = content.attrs || {};\r\n\r\n      this.cover( content );\r\n\r\n      const classes = `${ this.options.classes.slide } ${ index === 0 ? CLASS_ACTIVE : '' }`;\r\n\r\n      assign( content.attrs, {\r\n        class: `${ classes } ${ content.attrs.class || '' }`.trim(),\r\n        style: this.buildStyles( content.styles ),\r\n      } );\r\n\r\n      return content;\r\n    } ) );\r\n\r\n    if ( this.isLoop() ) {\r\n      this.generateClones( this.slides );\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Registers styles for the root element.\r\n   */\r\n  private registerRootStyles(): void {\r\n    this.breakpoints.forEach( ( [ width, options ] ) => {\r\n      this.Style.rule( ' ', 'max-width', unit( options.width ), width );\r\n    } );\r\n  }\r\n\r\n  /**\r\n   * Registers styles for the track element.\r\n   */\r\n  private registerTrackStyles(): void {\r\n    const { Style } = this;\r\n    const selector = `.${ CLASS_TRACK }`;\r\n\r\n    this.breakpoints.forEach( ( [ width, options ] ) => {\r\n      Style.rule( selector, this.resolve( 'paddingLeft' ), this.cssPadding( options, false ), width );\r\n      Style.rule( selector, this.resolve( 'paddingRight' ), this.cssPadding( options, true ), width );\r\n      Style.rule( selector, 'height', this.cssTrackHeight( options ), width );\r\n    } );\r\n  }\r\n\r\n  /**\r\n   * Registers styles for the list element.\r\n   */\r\n  private registerListStyles(): void {\r\n    const { Style } = this;\r\n    const selector = `.${ CLASS_LIST }`;\r\n\r\n    this.breakpoints.forEach( ( [ width, options ] ) => {\r\n      Style.rule( selector, 'transform', this.buildTranslate( options ), width );\r\n\r\n      if ( ! this.cssSlideHeight( options ) ) {\r\n        Style.rule( selector, 'aspect-ratio', this.cssAspectRatio( options ), width );\r\n      }\r\n    } );\r\n  }\r\n\r\n  /**\r\n   * Registers styles for slides and clones.\r\n   */\r\n  private registerSlideStyles(): void {\r\n    const { Style } = this;\r\n    const selector = `.${ CLASS_SLIDE }`;\r\n\r\n    this.breakpoints.forEach( ( [ width, options ] ) => {\r\n      Style.rule( selector, 'width', this.cssSlideWidth( options ), width );\r\n      Style.rule( selector, 'height', this.cssSlideHeight( options ) || '100%', width );\r\n      Style.rule( selector, this.resolve( 'marginRight' ), unit( options.gap ) || '0px', width );\r\n      Style.rule( `${ selector } > img`, 'display', options.cover ? 'none' : 'inline', width );\r\n    } );\r\n  }\r\n\r\n  /**\r\n   * Builds multiple `translateX` for the list element.\r\n   *\r\n   * @param options - Options for each breakpoint.\r\n   *\r\n   * @return A string with multiple translate functions.\r\n   */\r\n  private buildTranslate( options: Options ): string {\r\n    const { resolve, orient } = this.Direction;\r\n    const values = [];\r\n\r\n    values.push( this.cssOffsetClones( options ) );\r\n    values.push( this.cssOffsetGaps( options ) );\r\n\r\n    if ( this.isCenter( options ) ) {\r\n      values.push( this.buildCssValue( orient( -50 ), '%' ) );\r\n      values.push( ...this.cssOffsetCenter( options ) );\r\n    }\r\n\r\n    return values\r\n      .filter( Boolean )\r\n      .map( value => `translate${ resolve( 'X' ) }(${ value })` )\r\n      .join( ' ' );\r\n  }\r\n\r\n  /**\r\n   * Returns offset for the list element.\r\n   * This does not include gaps because it can not be converted into percent.\r\n   *\r\n   * @param options - Options for each breakpoint.\r\n   *\r\n   * @return The offset.\r\n   */\r\n  private cssOffsetClones( options: Options ): string {\r\n    const { resolve, orient } = this.Direction;\r\n    const cloneCount = this.getCloneCount();\r\n\r\n    if ( this.isFixedWidth( options ) ) {\r\n      const { value, unit } = this.parseCssValue( options[ resolve( 'fixedWidth' ) ] );\r\n      return this.buildCssValue( orient( value ) * cloneCount, unit );\r\n    }\r\n\r\n    const percent = 100 * cloneCount / options.perPage;\r\n    return `${ orient( percent ) }%`;\r\n  }\r\n\r\n  /**\r\n   * Returns offset for centering the active slide.\r\n   *\r\n   * Note:\r\n   * ( 100% + gap ) / perPage - gap\r\n   * 100% / perPage + gap / perPage - gap;\r\n   * 50% / perPage + ( gap / perPage - gap ) / 2;\r\n   *\r\n   * @param options - Options for each breakpoint.\r\n   *\r\n   * @return The offset.\r\n   */\r\n  private cssOffsetCenter( options: Options ): string[] {\r\n    const { resolve, orient } = this.Direction;\r\n\r\n    if ( this.isFixedWidth( options ) ) {\r\n      const { value, unit } = this.parseCssValue( options[ resolve( 'fixedWidth' ) ] );\r\n      return [ this.buildCssValue( orient( value / 2 ), unit ) ];\r\n    }\r\n\r\n    const values = [];\r\n    const { perPage, gap } = options;\r\n\r\n    values.push( `${ orient( 50 / perPage ) }%` );\r\n\r\n    if ( gap ) {\r\n      const { value, unit } = this.parseCssValue( gap );\r\n      const gapOffset = ( value / perPage - value ) / 2;\r\n      values.push( this.buildCssValue( orient( gapOffset ), unit ) );\r\n    }\r\n\r\n    return values;\r\n  }\r\n\r\n  /**\r\n   * Returns offset for gaps.\r\n   *\r\n   * @param options - Options for each breakpoint.\r\n   *\r\n   * @return The offset as `calc()`.\r\n   */\r\n  private cssOffsetGaps( options: Options ): string {\r\n    const cloneCount = this.getCloneCount();\r\n\r\n    if ( cloneCount && options.gap ) {\r\n      const { orient } = this.Direction;\r\n      const { value, unit } = this.parseCssValue( options.gap );\r\n\r\n      if ( this.isFixedWidth( options ) ) {\r\n        return this.buildCssValue( orient( value * cloneCount ), unit );\r\n      }\r\n\r\n      const { perPage } = options;\r\n      const gaps = cloneCount / perPage;\r\n      return this.buildCssValue( orient( gaps * value ), unit );\r\n    }\r\n\r\n    return '';\r\n  }\r\n\r\n  /**\r\n   * Resolves the prop for the current direction and converts it into the Kebab case.\r\n   *\r\n   * @param prop - A property name to resolve.\r\n   *\r\n   * @return A resolved property name in the Kebab case.\r\n   */\r\n  private resolve( prop: string ): string {\r\n    return camelToKebab( this.Direction.resolve( prop ) );\r\n  }\r\n\r\n  /**\r\n   * Returns padding in the CSS format.\r\n   *\r\n   * @param options - Options.\r\n   * @param right   - Determines whether to get padding right or left.\r\n   *\r\n   * @return Padding in the CSS format.\r\n   */\r\n  private cssPadding( options: Options, right: boolean ): string {\r\n    const { padding } = options;\r\n    const prop = this.Direction.resolve( right ? 'right' : 'left', true );\r\n    return padding && unit( padding[ prop ] || ( isObject( padding ) ? 0 : padding ) ) || '0px';\r\n  }\r\n\r\n  /**\r\n   * Returns height of the track element in the CSS format.\r\n   *\r\n   * @param options - Options.\r\n   *\r\n   * @return Height in the CSS format.\r\n   */\r\n  private cssTrackHeight( options: Options ): string {\r\n    let height = '';\r\n\r\n    if ( this.isVertical() ) {\r\n      height = this.cssHeight( options );\r\n      assert( height, '\"height\" is missing.' );\r\n      height = `calc(${ height } - ${ this.cssPadding( options, false ) } - ${ this.cssPadding( options, true ) })`;\r\n    }\r\n\r\n    return height;\r\n  }\r\n\r\n  /**\r\n   * Returns height provided though options in the CSS format.\r\n   *\r\n   * @param options - Options.\r\n   *\r\n   * @return Height in the CSS format.\r\n   */\r\n  private cssHeight( options: Options ): string {\r\n    return unit( options.height );\r\n  }\r\n\r\n  /**\r\n   * Returns width of each slide in the CSS format.\r\n   *\r\n   * @param options - Options.\r\n   *\r\n   * @return Width in the CSS format.\r\n   */\r\n  private cssSlideWidth( options: Options ): string {\r\n    return options.autoWidth\r\n      ? ''\r\n      : unit( options.fixedWidth ) || ( this.isVertical() ? '' : this.cssSlideSize( options ) );\r\n  }\r\n\r\n  /**\r\n   * Returns height of each slide in the CSS format.\r\n   *\r\n   * @param options - Options.\r\n   *\r\n   * @return Height in the CSS format.\r\n   */\r\n  private cssSlideHeight( options: Options ): string {\r\n    return unit( options.fixedHeight )\r\n      || ( this.isVertical()\r\n        ? ( options.autoHeight ? '' : this.cssSlideSize( options ) )\r\n        : this.cssHeight( options )\r\n      );\r\n  }\r\n\r\n  /**\r\n   * Returns width or height of each slide in the CSS format, considering the current direction.\r\n   *\r\n   * @param options - Options.\r\n   *\r\n   * @return Width or height in the CSS format.\r\n   */\r\n  private cssSlideSize( options: Options ): string {\r\n    const gap = unit( options.gap );\r\n    return `calc((100%${ gap && ` + ${ gap }` })/${ options.perPage || 1 }${ gap && ` - ${ gap }` })`;\r\n  }\r\n\r\n  /**\r\n   * Returns the aspectRatio value to simulate the `heightRatio` option.\r\n   *\r\n   * @param options - Options.\r\n   *\r\n   * @return aspectRatio in the CSS format.\r\n   */\r\n  private cssAspectRatio( options: Options ): string {\r\n    const { heightRatio } = options;\r\n    return heightRatio ? `${ 1 / heightRatio }` : '';\r\n  }\r\n\r\n  /**\r\n   * Builds the css value by the provided value and unit.\r\n   *\r\n   * @param value - A value.\r\n   * @param unit  - A CSS unit.\r\n   *\r\n   * @return A built value for a CSS value.\r\n   */\r\n  private buildCssValue( value: number, unit: string ): string {\r\n    return `${ value }${ unit }`;\r\n  }\r\n\r\n  /**\r\n   * Parses the CSS value into number and unit.\r\n   *\r\n   * @param value - A value to parse.\r\n   *\r\n   * @return An object with value and unit.\r\n   */\r\n  private parseCssValue( value: string | number ): { value: number, unit: string } {\r\n    if ( isString( value ) ) {\r\n      const number = parseFloat( value ) || 0;\r\n      const unit   = value.replace( /\\d*(\\.\\d*)?/, '' ) || 'px';\r\n      return { value: number, unit };\r\n    }\r\n\r\n    return { value, unit: 'px' };\r\n  }\r\n\r\n  /**\r\n   * Parses breakpoints and generate options for each breakpoint.\r\n   */\r\n  private parseBreakpoints(): void {\r\n    const { breakpoints } = this.options;\r\n\r\n    this.breakpoints.push( [ 'default', this.options ] );\r\n\r\n    if ( breakpoints ) {\r\n      forOwn( breakpoints, ( options, width ) => {\r\n        this.breakpoints.push( [ width, merge( merge( {}, this.options ), options ) ] );\r\n      } );\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Checks if the slide width is fixed or not.\r\n   *\r\n   * @return `true` if the slide width is fixed, or otherwise `false`.\r\n   */\r\n  private isFixedWidth( options: Options ): boolean {\r\n    return !! options[ this.Direction.resolve( 'fixedWidth' ) ];\r\n  }\r\n\r\n  /**\r\n   * Checks if the slider type is loop or not.\r\n   *\r\n   * @return `true` if the slider type is loop, or otherwise `false`.\r\n   */\r\n  private isLoop(): boolean {\r\n    return this.options.type === LOOP;\r\n  }\r\n\r\n  /**\r\n   * Checks if the active slide should be centered or not.\r\n   *\r\n   * @return `true` if the slide should be centered, or otherwise `false`.\r\n   */\r\n  private isCenter( options: Options ): boolean {\r\n    if( options.focus === 'center' ) {\r\n      if ( this.isLoop() ) {\r\n        return true;\r\n      }\r\n\r\n      if ( this.options.type === SLIDE ) {\r\n        return ! this.options.trimSpace;\r\n      }\r\n    }\r\n\r\n    return false;\r\n  }\r\n\r\n  /**\r\n   * Checks if the direction is TTB or not.\r\n   *\r\n   * @return `true` if the direction is TTB, or otherwise `false`.\r\n   */\r\n  private isVertical(): boolean {\r\n    return this.options.direction === TTB;\r\n  }\r\n\r\n  /**\r\n   * Builds classes of the root element.\r\n   *\r\n   * @return Classes for the root element as a single string.\r\n   */\r\n  private buildClasses(): string {\r\n    const { options } = this;\r\n\r\n    return [\r\n      CLASS_ROOT,\r\n      `${ CLASS_ROOT }--${ options.type }`,\r\n      `${ CLASS_ROOT }--${ options.direction }`,\r\n      options.drag && `${ CLASS_ROOT }--draggable`,\r\n      options.isNavigation && `${ CLASS_ROOT }--nav`,\r\n      CLASS_ACTIVE,\r\n      ! this.config.hidden && CLASS_RENDERED,\r\n    ].filter( Boolean ).join( ' ' );\r\n  }\r\n\r\n  /**\r\n   * Converts provided attributes into a single string.\r\n   *\r\n   * @param attrs - An object with attributes.\r\n   *\r\n   * @return A built string.\r\n   */\r\n  private buildAttrs( attrs: Record<string, string | number | boolean> ): string {\r\n    let attr = '';\r\n\r\n    forOwn( attrs, ( value, key ) => {\r\n      attr += value ? ` ${ camelToKebab( key ) }=\"${ value }\"` : '';\r\n    } );\r\n\r\n    return attr.trim();\r\n  }\r\n\r\n  /**\r\n   * Converts provided styles into a single string.\r\n   *\r\n   * @param styles - An object with styles.\r\n   *\r\n   * @return A built string.\r\n   */\r\n  private buildStyles( styles: Record<string, string | number> ): string {\r\n    let style = '';\r\n\r\n    forOwn( styles, ( value, key ) => {\r\n      style += ` ${ camelToKebab( key ) }:${ value };`;\r\n    } );\r\n\r\n    return style.trim();\r\n  }\r\n\r\n  /**\r\n   * Generates HTML of slides with inserting provided contents.\r\n   *\r\n   * @return The HTML for all slides and clones.\r\n   */\r\n  private renderSlides(): string {\r\n    const { slideTag: tag } = this.config;\r\n\r\n    return this.slides.map( content => {\r\n      return `<${ tag } ${ this.buildAttrs( content.attrs ) }>${ content.html || '' }</${ tag }>`;\r\n    } ).join( '' );\r\n  }\r\n\r\n  /**\r\n   * Add the `background` style for the cover mode.\r\n   *\r\n   * @param content - A slide content.\r\n   */\r\n  private cover( content: SlideContent ): void {\r\n    const { styles, html = '' } = content;\r\n\r\n    if ( this.options.cover && ! this.options.lazyLoad ) {\r\n      const src = html.match( /<img.*?src\\s*=\\s*(['\"])(.+?)\\1.*?>/ );\r\n\r\n      if ( src && src[ 2 ] ) {\r\n        styles.background = `center/cover no-repeat url('${ src[ 2 ] }')`;\r\n      }\r\n    }\r\n  }\r\n\r\n  /**\r\n   * Generates clones.\r\n   *\r\n   * @param contents - An array with SlideContent objects.\r\n   */\r\n  private generateClones( contents: SlideContent[] ): void {\r\n    const { classes } = this.options;\r\n    const count  = this.getCloneCount();\r\n    const slides = contents.slice();\r\n\r\n    while ( slides.length < count ) {\r\n      push( slides, slides );\r\n    }\r\n\r\n    push( slides.slice( -count ).reverse(), slides.slice( 0, count ) ).forEach( ( content, index ) => {\r\n      const attrs = assign( {}, content.attrs, { class: `${ content.attrs.class } ${ classes.clone }` } );\r\n      const clone = assign( {}, content, { attrs } );\r\n      index < count ? contents.unshift( clone ) : contents.push( clone );\r\n    } );\r\n  }\r\n\r\n  /**\r\n   * Returns the number of clones to generate.\r\n   *\r\n   * @return A number of clones.\r\n   */\r\n  private getCloneCount(): number {\r\n    if ( this.isLoop() ) {\r\n      const { options } = this;\r\n\r\n      if ( options.clones ) {\r\n        return options.clones;\r\n      }\r\n\r\n      const perPage = max( ...this.breakpoints.map( ( [ , options ] ) => options.perPage ) );\r\n      return perPage * ( ( options.flickMaxPages || 1 ) + 1 );\r\n    }\r\n\r\n    return 0;\r\n  }\r\n\r\n  /**\r\n   * Generates arrows and the wrapper element.\r\n   *\r\n   * @return The HTML for arrows.\r\n   */\r\n  private renderArrows(): string {\r\n    let html = '';\r\n\r\n    html += `<div class=\"${ this.options.classes.arrows }\">`;\r\n    html += this.renderArrow( true );\r\n    html += this.renderArrow( false );\r\n    html += `</div>`;\r\n\r\n    return html;\r\n  }\r\n\r\n  /**\r\n   * Generates an arrow HTML.\r\n   * Some attributes are temporary, and Splide changes them after mount.\r\n   *\r\n   * @param prev - Options for each breakpoint.\r\n   *\r\n   * @return The HTML for the prev or next arrow.\r\n   */\r\n  private renderArrow( prev: boolean ): string {\r\n    const { classes, i18n } = this.options;\r\n    const attrs = {\r\n      class    : `${ classes.arrow } ${ prev ? classes.prev : classes.next }`,\r\n      type     : 'button',\r\n      ariaLabel: prev ? i18n.prev : i18n.next,\r\n    };\r\n\r\n    return `<button ${ this.buildAttrs( attrs ) }>`\r\n      +\t`<svg xmlns=\"${ XML_NAME_SPACE }\" viewBox=\"0 0 ${ SIZE } ${ SIZE }\" width=\"${ SIZE }\" height=\"${ SIZE }\">`\r\n      + `<path d=\"${ this.options.arrowPath || PATH }\" />`\r\n      + `</svg>`\r\n      + `</button>`;\r\n  }\r\n\r\n  /**\r\n   * Returns the HTML of the slider.\r\n   *\r\n   * @return The generated HTML.\r\n   */\r\n  html(): string {\r\n    const { rootClass, listTag, arrows, beforeTrack, afterTrack, slider, beforeSlider, afterSlider } = this.config;\r\n\r\n    let html = '';\r\n\r\n    html += `<div id=\"${ this.id }\" class=\"${ this.buildClasses() } ${ rootClass || '' }\">`;\r\n    html += `<style>${ this.Style.build() }</style>`;\r\n\r\n    if ( slider ) {\r\n      html += beforeSlider || '';\r\n      html += `<div class=\"splide__slider\">`;\r\n    }\r\n\r\n    html += beforeTrack || '';\r\n\r\n    if ( arrows ) {\r\n      html += this.renderArrows();\r\n    }\r\n\r\n    html += `<div class=\"splide__track\">`;\r\n    html += `<${ listTag } class=\"splide__list\">`;\r\n\r\n    html += this.renderSlides();\r\n\r\n    html += `</${ listTag }>`;\r\n    html += `</div>`; // .track\r\n\r\n    html += afterTrack || '';\r\n\r\n    if ( slider ) {\r\n      html += `</div>`;\r\n      html += afterSlider || '';\r\n    }\r\n\r\n    html += `</div>`; // .splide\r\n\r\n    return html;\r\n  }\r\n}\r\n","/**\r\n * Pads the number with 0.\r\n *\r\n * @param number - A number to pad.\r\n *\r\n * @return string - Padded number.\r\n */\r\nexport function pad( number: number ): string {\r\n  return number < 10 ? `0${ number }` : `${ number }`;\r\n}\r\n","import { slice } from '../../arrayLike';\r\n\r\n\r\n/**\r\n * Returns elements that match the provided selector.\r\n *\r\n * @param parent   - A parent element to start searching from.\r\n * @param selector - A selector to query.\r\n *\r\n * @return An array with matched elements.\r\n */\r\nexport function queryAll<E extends Element = Element>( parent: Element | Document, selector?: string ): E[] {\r\n  return selector ? slice<E>( parent.querySelectorAll( selector ) ) : [];\r\n}\r\n","/**\r\n * The type for the regular slider.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport const SLIDE = 'slide';\r\n\r\n/**\r\n * The type for the carousel slider.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport const LOOP = 'loop';\r\n\r\n/**\r\n * The type for the fade slider that can not have multiple slides in a page.\r\n *\r\n * @since 3.0.0\r\n */\r\nexport const FADE = 'fade';\r\n"],"names":["RTL","TTB","ORIENTATION_MAP","width","left","right","x","X","Y","ArrowLeft","ARROW","ArrowRight","Direction","Splide","Components","options","resolve","prop","axisOnly","direction","index","replace","match","offset","replacement","toLowerCase","charAt","toUpperCase","slice","orient","value","PROJECT_CODE","CLASS_PREFIX","CLASS_ROOT","CLASS_TRACK","CLASS_LIST","CLASS_SLIDE","CLASS_CLONE","CLASS_ARROW","CLASS_PAGINATION","CLASS_ACTIVE","STATUS_CLASS_PREFIX","DEFAULTS","type","role","speed","perPage","cloneStatus","arrows","pagination","paginationKeyboard","interval","pauseOnHover","pauseOnFocus","resetProgress","easing","drag","trimSpace","focusableNodes","live","classes","slide","clone","arrow","prev","next","page","spinner","i18n","first","last","slideX","pageX","play","pause","carousel","select","slideLabel","reducedMotion","rewindSpeed","autoplay","arrayLike","start","end","Array","prototype","call","apply","func","bind","arguments","typeOf","subject","isObject","isArray","isString","toArray","forEach","values","iteratee","push","array","items","matches","elm","selector","ownerDocument","defaultView","window","HTMLElement","e","child","parent","children","filter","firstElementChild","ownKeys","Object","keys","forOwn","object","reverse","key","assign","source","merge","remove","nodes","node","parentNode","removeChild","unit","assert","condition","message","Error","Math","min","max","floor","ceil","abs","camelToKebab","string","ids","EventBinder","listeners","forEachEvent","targets","events","target","split","eventNS","fragment","callback","event","namespace","isEventTarget","remover","removeEventListener","addEventListener","unbind","listener","dispatch","detail","CustomEvent","bubbles","document","createEvent","initCustomEvent","dispatchEvent","destroy","data","length","EventInterface","bus","createDocumentFragment","binder","on","join","off","emit","RENDERER_DEFAULT_CONFIG","listTag","slideTag","Style","id","this","styles","rule","breakpoint","selectors","build","_this","css","default","buildSelectors","sort","n","m","mediaQuery","_this2","trim","SplideRenderer","contents","config","defaults","slides","breakpoints","prefix","number","init","clean","splide","root","clones","querySelectorAll","parseBreakpoints","initSlides","registerRootStyles","registerTrackStyles","registerSlideStyles","registerListStyles","_this3","map","content","html","attrs","cover","class","style","buildStyles","isLoop","generateClones","_this4","_ref","_this5","_ref2","cssPadding","cssTrackHeight","_this6","_ref3","buildTranslate","cssSlideHeight","cssAspectRatio","_this7","_ref4","cssSlideWidth","gap","_this$Direction","cssOffsetClones","cssOffsetGaps","isCenter","buildCssValue","cssOffsetCenter","Boolean","_this$Direction2","cloneCount","getCloneCount","isFixedWidth","_this$parseCssValue","parseCssValue","_this$Direction3","_this$parseCssValue2","_this$parseCssValue3","_this$parseCssValue4","padding","height","isVertical","cssHeight","autoWidth","fixedWidth","cssSlideSize","fixedHeight","autoHeight","heightRatio","parseFloat","_this8","focus","buildClasses","isNavigation","hidden","buildAttrs","attr","renderSlides","_this9","tag","_content$html","lazyLoad","src","background","count","unshift","_ref5","flickMaxPages","renderArrows","renderArrow","_this$options","ariaLabel","arrowPath","_this$config","rootClass","beforeTrack","afterTrack","slider","beforeSlider","afterSlider"],"mappings":";;;;;;yCAGO,ICKMA,EAAM,MAKNC,EAAM,MCQNC,EAAkB,CAC7BC,MAAY,CAAE,UACdC,KAAY,CAAE,MAAO,SACrBC,MAAY,CAAE,SAAU,QACxBC,EAAY,CAAE,KACdC,EAAY,CAAE,KACdC,EAAY,CAAE,KACdC,UAAY,CCzBiBC,UADAA,cD2B7BC,WAAY,CCzBiBD,YAHAA,YDoBA,EAsBf,SAAAE,EAAWC,EAAgBC,EAAwBC,GA8B1D,MAAA,CACLC,QAvBO,SAASC,EAAcC,EAAoBC,GAE5C,IAAAC,GADND,EAAYA,GAAaJ,EAAQI,aACLnB,GAASkB,EAAeC,IAAclB,EAAM,EAAI,CAAA,EAA5B,EAEzC,OAAAC,EAAiBe,IAAUf,EAAiBe,GAAQG,IACtDH,EAAKI,QAAS,oBAAqB,SAAEC,EAAOC,GACvCC,EAActB,EAAiBoB,EAAMG,YAAN,GAAuBL,IAAWE,EAChE,OAAS,EAATC,EAAaC,EAAYE,OAAQ,CAApB,EAAwBC,YAAxB,EAAwCH,EAAYI,MAAO,CAAnB,EAAyBJ,CACrF,CAHC,CAIP,EAeEK,OANF,SAAiBC,GACf,OAAOA,GAAUf,EAAQI,YAAcnB,EAAM,EAAI,CAAA,EACnD,CAEO,CAIT,CExEO,IAAM+B,EAAe,SCEtBC,EAAmBD,EAAzB,KAYaE,EAAwBF,EACxBG,EAA4BF,EAAlC,QACMG,EAA4BH,EAAlC,OACMI,EAA4BJ,EAAlC,QACMK,EAA4BD,EAAlC,UAGME,EAA4BN,EAAlC,QAGMO,EAA4BP,EAAlC,aAUMQ,EAA4BC,YC5B5BC,EAAoB,CAC/BC,KAAoB,QACpBC,KAAoB,SACpBC,MAAoB,IACpBC,QAAoB,EACpBC,YAAoB,CAAA,EACpBC,OAAoB,CAAA,EACpBC,WAAoB,CAAA,EACpBC,mBAAoB,CAAA,EACpBC,SAAoB,IACpBC,aAAoB,CAAA,EACpBC,aAAoB,CAAA,EACpBC,cAAoB,CAAA,EACpBC,OAAoB,gCACpBC,KAAoB,CAAA,EACpBrC,UAAoB,MACpBsC,UAAoB,CAAA,EACpBC,eAAoB,6CACpBC,KAAoB,CAAA,EACpBC,QDqCqB,CACrBC,MAAYzB,EACZ0B,MAAYzB,EACZW,OA7CuChB,EAAlC,SA8CL+B,MAAYzB,EACZ0B,KA7CuC1B,EAAlC,SA8CL2B,KA7CuC3B,EAAlC,SA8CLW,WAAYV,EACZ2B,KA7CuC3B,EAAlC,SA8CL4B,QAxCuCnC,EAAlC,SA+BgB,ECpCrBoC,KC1BkB,CAClBJ,KAAY,iBACZC,KAAY,aACZI,MAAY,oBACZC,KAAY,mBACZC,OAAY,iBACZC,MAAY,gBACZC,KAAY,iBACZC,MAAY,iBACZC,SAAY,WACZd,MAAY,QACZe,OAAY,yBACZC,WAAY,UAZM,ED2BlBC,cAAe,CACbjC,MAAa,EACbkC,YAAa,EACbC,SAAa,OAHA,CArBgB,EEFjB,SAAApD,EAAUqD,EAAyBC,EAAgBC,GACjE,OAAOC,MAAMC,UAAUzD,MAAM0D,KAAML,EAAWC,EAAOC,CAA9C,CACT,CCaO,SAASI,EAAOC,GAErB,OAAOA,EAAKC,KAALF,MAAAC,EAAW,CAAA,MAAS5D,OAAAA,EAAO8D,UAAW,CAAX,EAAlC,CACF,CCfA,SAASC,EAAQhD,EAAciD,GAC7B,OAAO,OAAOA,IAAYjD,CAC5B,CASO,SAASkD,EAAUD,GACxB,OA+CmB,OA/CFA,GAAaD,EAAQ,SAAUC,CAAlB,CAChC,CASO,IAAME,EAAqDV,MAAMU,QAkB3DC,GAT6DR,EAAOI,EAAQ,UAAR,EASdJ,EAAOI,EAAQ,QAAR,GC1CnE,SAASK,EAAYlE,GAC1B,OAAOgE,EAAShE,CAAA,EAAUA,EAAQ,CAAEA,EACtC,CCHgB,SAAAmE,EAAYC,EAAiBC,GAClCH,EAAAE,CAAA,EAASD,QAASE,CAAlB,CACX,CCAgB,SAAAC,EAASC,EAAYC,GAE5B,OADPD,EAAMD,KAANC,MAAAA,EAAeL,EAASM,CAAA,CAAxB,EACOD,CACT,CCHgB,SAAAE,EAASC,EAA4BC,GAC5C,OJsEF,SAAwBb,GACzB,IACF,OAAOA,aAAuBA,EAAkBc,cAAcC,aAAeC,QAASC,WAGxF,OAFUC,GACD,MAAA,CAAA,CACT,CACF,EI5EwBN,CAAf,IAA0BA,EAAA,mBAA8BA,EAAID,SAAUjB,KAAMkB,EAAKC,CAAvD,CACnC,CCFgB,SAAAM,EAA8BC,EAAqBP,GACjE,OAAOA,GCA6DA,EDA7BA,ECCjCQ,GADyCD,EDAhBA,GCCLpF,EAAOoF,EAAOC,QAAd,EAAkC,IACrDR,EAAWQ,EAASC,OAAQ,SAAAH,GAAA,OAASR,EAASQ,EAAON,EAAzB,CAAjBQ,EAAyDA,GDFxB,IAAMD,EAAOG,kBCAlD,IAAsDV,CDCtE,CLgDyElB,EAAOI,EAAQ,WAAR,EO1DzE,IAAMyB,EAAUC,OAAOC,KCSd,SAAAC,EACdC,EACArB,EACA9F,GAEKmH,IACDnH,EAAQ+G,EAASI,CAAA,EAASC,QAAlB,EAA8BL,EAASI,CAAA,GAAWvB,QAAS,SAAOyB,GAClE,cAARA,GAAuBvB,EAAUqB,EAAQE,GAAOA,CAAzB,CACvB,CAFA,CAMN,CCkBO,SAASC,EAA0BH,GAQjC,OANP5F,EAAO8D,UAAW,CAAlB,EAAsBO,QAAS,SAAU2B,GAC/BL,EAAAK,EAAQ,SAAE9F,EAAO4F,GACvBF,EAAQE,GAAQE,EAAQF,EACxB,CAFM,CAGR,CAJF,EAMOF,CACT,CCCO,SAASK,EAAyBL,GAchC,OAZP5F,EAAO8D,UAAW,CAAlB,EAAsBO,QAAS,SAAU2B,GAC/BL,EAAAK,EAAQ,SAAE9F,EAAO4F,GAClB5B,EAAShE,CAAT,EACK0F,EAAAE,GAAQ5F,EAAMF,MAAd,EACEiE,EAAU/D,CAAA,EACpB0F,EAAQE,GAAQG,EAAO,GAAIhC,EAAU2B,EAAQE,EAAR,EAAkBF,EAAQE,GAAQ,GAAI5F,CAA3D,EAEhB0F,EAAQE,GAAQ5F,CAElB,CARM,CASR,CAVF,EAYO0F,CACT,CC3DO,SAASM,EAAQC,GACtB9B,EAAS8B,EAAO,SAAQC,GACjBA,GAAQA,EAAKC,YACXD,EAAAC,WAAWC,YAAaF,CAAxB,CAEP,CAJF,CAKF,CCHO,SAASG,EAAMrG,GACpB,OAAOiE,EAAUjE,GAAUA,EAAQA,EAAYA,EAAZ,KAAyB,EAC9D,CCJgB,SAAAsG,EAAQC,EAAgBC,GACtC,GAAK,CAAED,EACL,MAAM,IAAIE,MAAYxG,IAAAA,QAAmBuG,GAAW,GAApD,CAEJ,CCb8CE,KAA/BC,IAAR,IAAaC,EAA0BF,KAA1BE,IAA0BF,KAArBG,MAAqBH,KAAdI,KAAcJ,KAARK,ICK/B,SAASC,EAAcC,GAC5B,OAAOA,EAAO1H,QAAS,qBAAsB,OAAtC,EAAgDI,YAAvD,CACF,CCCA,IAAMuH,EAA8B,GCuB7B,SAASC,IAKd,IAAIC,EAAoF,GAuF/E,SAAAC,EACPC,EACAC,EACAlD,GAEAF,EAASmD,EAAS,SAAUE,GAChBA,GAAArD,EAASoD,EAAQ,SAAAA,GACzBA,EAAOE,MAAO,GAAdF,EAAoBpD,QAAS,SAAWuD,GAChCC,EAAWD,EAAQD,MAAO,GAAf,EACjBpD,EAAUmD,EAAQG,EAAU,GAAKA,EAAU,EAA3C,CACA,CAHFJ,CAIA,CALQ,CAMV,CAPF,CAQF,CAUO,MAAA,CACL5D,KAhGF,SACE2D,EACAC,EACAK,EACA3I,GAEAoI,EAAcC,EAASC,EAAQ,SAAEC,EAAQK,EAAOC,GAC9C,IAAMC,EAAgB,qBAAsBP,EACtCQ,EAAUD,EACZP,EAAOS,oBAAoBtE,KAAM6D,EAAQK,EAAOD,EAAU3I,CAA1D,EACAuI,EAAA,eAA2B7D,KAAM6D,EAAQI,CAAzC,EAEYG,EAAAP,EAAOU,iBAAkBL,EAAOD,EAAU3I,CAA1C,EAAsDuI,EAAA,YAAyBI,CAAzB,EACtER,EAAU9C,KAAM,CAAEkD,EAAQK,EAAOC,EAAWF,EAAUI,EAAtD,CACA,CARF,CASF,EAkFEG,OAzEO,SAAQb,EAAuBC,EAA2BK,GACjEP,EAAcC,EAASC,EAAQ,SAAEC,EAAQK,EAAOC,GAClCV,EAAAA,EAAUhC,OAAQ,SAAYgD,GACxC,MAAKA,CAAAA,EAAAA,EAAU,KAAQZ,GAClBY,EAAU,KAAQP,GAClBO,EAAU,KAAQN,GACdF,GAAYQ,EAAU,KAAQR,KAErCQ,EAAU,GAAV,EACO,CAAA,EAIT,CAXU,CAYZ,CAbF,CAcF,EA2DEC,SAhDO,SAAab,EAAqB3G,EAAcyH,GACnD,IAAAtD,EAWG,MARqB,YAAvB,OAAOuD,YACVvD,EAAI,IAAIuD,YAAa1H,EAAM,CAAE2H,QAHf,CAAA,EAGwBF,OAAAA,CAAX,CAAvB,GAEAtD,EAAAyD,SAASC,YAAa,aAAtB,GACFC,gBAAiB9H,EANL,CAAA,EAMoB,CAAA,EAAOyH,CAAzC,EAGFd,EAAOoB,cAAe5D,CAAtB,EACOA,CACT,EAoCE6D,QATF,WACEzB,EAAUjD,QAAS,SAAQ2E,GAAEA,EAAM,GAAN,CAAc,CAA3C,EACO1B,ECzIH2B,OAAS,CD0If,CAEO,CAMT,CEvHO,SAASC,EAAgBjK,GAK9B,IAAMkK,EAAMlK,EAASA,EAAO8I,MAAMoB,IAAMR,SAASS,uBAAjD,EAKMC,EAAShC,EAAf,EA6BA,OAJKpI,GACHA,EAAO8I,MAAMuB,GClDuB,UDkDJD,EAAON,OAAvC9J,EAGK8G,EAAQsD,EAAQ,CACrBF,IAAAA,EACAG,GAvBO,SAAI7B,EAA2BK,GAC/BuB,EAAAxF,KAAMsF,EAAK/E,EAASqD,CAAA,EAAS8B,KAAM,GAAxB,EAA+B,SAAKrE,GAC3C4C,EAAAnE,MAAOmE,EAAU5D,EAASgB,EAAEsD,MAAF,EAAatD,EAAEsD,OAAS,EAAlD,CACT,CAFK,CAGT,EAoBEgB,IAAK7F,EAAO0F,EAAOhB,OAAQc,CAAtB,EACLM,KAbF,SAAe1B,GAEbsB,EAAOd,SAAUY,EAAKpB,EAAO/H,EAAO8D,UAAW,CAAX,CAApC,CACF,CAMuB,EAMzB,CE9EO,ICQM4F,EAA0C,CACrDC,QAAU,KACVC,SAAU,IAF2C,ECO1CC,aAsBX,SAAaC,EAAAA,EAAY3K,GAlBzB4K,KAAiBC,OAAiB,GAmBhCD,KAAKD,GAAUA,EACfC,KAAK5K,QAAUA,CACjB,4BAUA8K,KAAA,SAAMpF,EAAkBxF,EAAca,EAAwBgK,GAEtDC,EAAcJ,KAAKC,OADzBE,EAAaA,GAAc,WACqBH,KAAKC,OAAQE,IAAgB,IACzDC,EAAWtF,GAAasF,EAAWtF,IAAc,IAC7DxF,GAASa,CACnB,IAOAkK,MAAA,WAAgB,IAAAC,EAAAN,KACVO,EAAM,GAgBH,OAdFP,KAAKC,OAAOO,UACfD,GAAOP,KAAKS,eAAgBT,KAAKC,OAAOO,OAAjC,GAGF9E,OAAAC,KAAMqE,KAAKC,MAAX,EACJS,KAAM,SAAEC,EAAGC,GAAL,MAAwC,QAA5BN,EAAKlL,QAAQyL,WAAuB,CAACF,EAAI,CAACC,EAAI,CAACA,EAAI,CAACD,CAAhE,CADF,EAEJrG,QAAS,SAAc6F,GACF,YAAfA,IAGII,GAFPA,GAAA,iCAAyCJ,EAAzC,SACOG,EAAKG,eAAgBH,EAAKL,OAAQE,EAAlC,EACA,IAET,CARG,EAUAI,CACT,IASQE,eAAA,SAAgBL,GAAqE,IAAAU,EAAAd,KACvFO,EAAM,GAeH,OAbC3E,EAAAwE,EAAW,SAAEH,EAAQnF,GAC3BA,OAAgBgG,EAAKf,GAAQjF,IAAAA,GAAYiG,KAAzC,EACAR,GAAWzF,EAAX,KAEQc,EAAAqE,EAAQ,SAAE9J,EAAOb,GAClBa,CAAAA,GAAmB,IAAVA,IACZoK,GAAWjL,EAAWa,KAAAA,EAAtB,IAEF,CAJM,EAMDoK,GAAA,GACP,CAXM,EAaDA,CACT,yBCHA,SAAAS,EAAaC,EAAqC7L,EAAmB8L,EAAyBC,GAxC9FnB,KAAiBoB,OAAyB,GAe1CpB,KAAiB5K,QAAmB,GAepC4K,KAAiBqB,YAAqC,GAW7CnF,EAAAnF,EAAUoK,GAAY,EAAtB,EACPjF,EAAOA,EAAO8D,KAAK5K,QAAS2B,GAAY3B,GAAW,EAAnD,EAEA4K,KAAKiB,SAAYA,EACjBjB,KAAKkB,OAAYlF,EAAQ,GAAI2D,EAAyBuB,GAAU,EAAvC,EACzBlB,KAAKD,GAAYC,KAAKkB,OAAOnB,IR7FxB,IADiBuB,EQ8FuB,YCtG5BC,ETSUlE,EAAKiE,IAAajE,EAAKiE,IAAY,GAAM,GSRtD,GAAUC,IAAAA,KAAgBA,GDsGxCvB,KAAKF,MAAY,IAAIA,EAAOE,KAAKD,GAAIC,KAAK5K,OAAzB,EACjB4K,KAAK/K,UAAYA,EAAW,EAAM,EAAM+K,KAAK5K,OAA5B,EAETqH,EAAAuD,KAAKiB,SAAS/B,OAAQ,6BAAtB,EAERc,KAAKwB,KAAL,CACF,GAzEOC,MAAP,SAAcC,GACZ,IEjC+E5G,EFiCvEyE,EAAOJ,EAAgBuC,CAAhB,EAAPnC,GACAoC,EAASD,EAATC,KACFC,GEnC6CvG,EFmC1BsG,GEnCsD7G,EFmChE,IAAqBpE,GElCpBT,EAAUoF,EAAOwG,iBAAkB/G,CAAzB,CAAA,EAAwC,IFoClEyE,EJhDoC,UIgDjB,WACTpD,EAAAf,EAAOuG,EAAM,OAAb,CAAA,CACR,CAFF,EAIAxF,EAAQyF,CAAR,CACF,6BAoEQJ,KAAA,WACNxB,KAAK8B,iBAAL,EACA9B,KAAK+B,WAAL,EACA/B,KAAKgC,mBAAL,EACAhC,KAAKiC,oBAAL,EACAjC,KAAKkC,oBAAL,EACAlC,KAAKmC,mBAAL,CACF,IAKQJ,WAAA,WAAmB,IAAAK,EAAApC,KACzBvF,EAAMuF,KAAKoB,OAAQpB,KAAKiB,SAASoB,IAAK,SAAEC,EAAS7M,IAC/C6M,EAAUlI,EAAUkI,GAAY,CAAEC,KAAMD,CAAR,EAAoBA,GAC5CrC,OAASqC,EAAQrC,QAAU,GAC3BqC,EAAAE,MAASF,EAAQE,OAAS,GAElCJ,EAAKK,MAAOH,CAAZ,EAEMrK,EAAcmK,EAAKhN,QAAQ6C,QAAQC,MAAnC,KAAwD,IAAVzC,E7BtGjBqB,Y6BsG8C,IAO1E,OALPkF,EAAQsG,EAAQE,MAAO,CACrBE,OAAWzK,EAAJ,KAAiBqK,EAAQE,MAAME,OAAS,KAAM3B,KADhC,EAErB4B,MAAOP,EAAKQ,YAAaN,EAAQrC,MAA1B,CAFc,CAAvB,EAKOqC,CACP,CAfiB,CAAnB,EAiBKtC,KAAK6C,OAAL,GACE7C,KAAA8C,eAAgB9C,KAAKoB,MAArB,CAET,IAKQY,mBAAA,WAA2B,IAAAe,EAAA/C,KACjCA,KAAKqB,YAAY/G,QAAS,SAA0B0I,GAAA,IAAtBxO,EAAsBwO,EAAA,GAAf5N,EAAe4N,EAAA,GAC7CD,EAAAjD,MAAMI,KAAM,IAAK,YAAa1D,EAAMpH,EAAQZ,OAASA,CAArD,CACL,CAFF,CAGF,IAKQyN,oBAAA,WAA4B,IAAAgB,EAAAjD,KAC1BF,EAAUE,KAAVF,MACFhF,MAAgBvE,EAEtByJ,KAAKqB,YAAY/G,QAAS,SAA0B4I,GAAA,IAAtB1O,EAAsB0O,EAAA,GAAf9N,EAAe8N,EAAA,GAClDpD,EAAMI,KAAMpF,EAAUmI,EAAK5N,QAAS,aAAd,EAA+B4N,EAAKE,WAAY/N,EAAS,CAAA,CAA1B,EAAmCZ,CAAxFsL,EACAA,EAAMI,KAAMpF,EAAUmI,EAAK5N,QAAS,cAAd,EAAgC4N,EAAKE,WAAY/N,EAAS,CAAA,CAA1B,EAAkCZ,CAAxFsL,EACAA,EAAMI,KAAMpF,EAAU,SAAUmI,EAAKG,eAAgBhO,CAArB,EAAgCZ,CAAhEsL,CACA,CAJF,CAKF,IAKQqC,mBAAA,WAA2B,IAAAkB,EAAArD,KACzBF,EAAUE,KAAVF,MACFhF,MAAgBtE,EAEtBwJ,KAAKqB,YAAY/G,QAAS,SAA0BgJ,GAAA,IAAtB9O,EAAsB8O,EAAA,GAAflO,EAAekO,EAAA,GAClDxD,EAAMI,KAAMpF,EAAU,YAAauI,EAAKE,eAAgBnO,CAArB,EAAgCZ,CAAnEsL,EAEOuD,EAAKG,eAAgBpO,CAArB,GACL0K,EAAMI,KAAMpF,EAAU,eAAgBuI,EAAKI,eAAgBrO,CAArB,EAAgCZ,CAAtEsL,CAEF,CANF,CAOF,IAKQoC,oBAAA,WAA4B,IAAAwB,EAAA1D,KAC1BF,EAAUE,KAAVF,MACFhF,MAAgBrE,EAEtBuJ,KAAKqB,YAAY/G,QAAS,SAA0BqJ,GAAA,IAAtBnP,EAAsBmP,EAAA,GAAfvO,EAAeuO,EAAA,GAClD7D,EAAMI,KAAMpF,EAAU,QAAS4I,EAAKE,cAAexO,CAApB,EAA+BZ,CAA9DsL,EACAA,EAAMI,KAAMpF,EAAU,SAAU4I,EAAKF,eAAgBpO,CAArB,GAAkC,OAAQZ,CAA1EsL,EACAA,EAAMI,KAAMpF,EAAU4I,EAAKrO,QAAS,aAAd,EAA+BmH,EAAMpH,EAAQyO,GAAd,GAAuB,MAAOrP,CAAnFsL,EACAA,EAAMI,KAAUpF,WAAmB,UAAW1F,EAAQqN,MAAQ,OAAS,SAAUjO,CAAjFsL,CACA,CALF,CAMF,IASQyD,eAAA,SAAgBnO,GACtB,IAAA0O,EAA4B9D,KAAK/K,UAAzBI,IAAAA,QAASa,IAAAA,OACXqE,EAAS,GAUf,OARAA,EAAOE,KAAMuF,KAAK+D,gBAAiB3O,CAAtB,CAAb,EACAmF,EAAOE,KAAMuF,KAAKgE,cAAe5O,CAApB,CAAb,EAEK4K,KAAKiE,SAAU7O,CAAf,IACHmF,EAAOE,KAAMuF,KAAKkE,cAAehO,EAAQ,CAAI,IAAG,GAAnC,CAAb,EACAqE,EAAOE,KAAPb,MAAAW,EAAgByF,KAAKmE,gBAAiB/O,CAAtB,CAAhB,GAGKmF,EACJgB,OAAQ6I,OADJ,EAEJ/B,IAAK,SAAAlM,GAAA,MAAA,YAAsBd,EAAS,GAAT,MAAoBc,EAA1C,GAAA,CAFD,EAGJqJ,KAAM,GAHF,CAIT,IAUQuE,gBAAA,SAAiB3O,GACvB,IAIUe,EAJVkO,EAA4BrE,KAAK/K,UAAzBI,IAAAA,QAASa,IAAAA,OACXoO,EAAatE,KAAKuE,cAAlB,EAED,OAAAvE,KAAKwE,aAAcpP,CAAnB,GACKe,GAAgBsO,EAAAzE,KAAK0E,cAAetP,EAASC,EAAS,YAAA,EAAtC,GAAhBc,MAAOqG,IAAAA,KACRwD,KAAKkE,cAAehO,EAAQC,CAAR,EAAkBmO,EAAY9H,CAAlD,GAIEtG,EADK,IAAMoO,EAAalP,EAAQ+B,SACpC,GACT,IAcQgN,gBAAA,SAAiB/O,GACvB,IAQQ+B,EAKEhB,EAbVwO,EAA4B3E,KAAK/K,UAAzBI,IAAAA,QAASa,IAAAA,OAEZ,OAAA8J,KAAKwE,aAAcpP,CAAnB,GACKe,GAAgByO,EAAA5E,KAAK0E,cAAetP,EAASC,EAAS,YAAA,EAAtC,GAAhBc,MAAOqG,IAAAA,KACR,CAAEwD,KAAKkE,cAAehO,EAAQC,EAAQ,CAAhB,EAAqBqG,CAAzC,KAIHrF,EAAiB/B,EAAjB+B,QAAS0M,EAAQzO,EAARyO,KADXtJ,EAAS,IAGRE,KAAUvE,EAAQ,GAAKiB,CAAL,EAAzB,GAAA,EAEK0M,IACK1N,GAAR0O,EAAwB7E,KAAK0E,cAAeb,CAApB,GAAhB1N,MAAOqG,IAAAA,KAEfjC,EAAOE,KAAMuF,KAAKkE,cAAehO,GADbC,EAAQgB,EAAUhB,GAAU,GACMqG,CAAzC,CAAb,GAGKjC,EACT,IASQyJ,cAAA,SAAe5O,GACf,IAGIc,EACAC,EAAOqG,EAJX8H,EAAatE,KAAKuE,cAAlB,EAED,OAAAD,GAAclP,EAAQyO,KACjB3N,EAAW8J,KAAK/K,UAAhBiB,OACAC,GAAF2O,EAAkB9E,KAAK0E,cAAetP,EAAQyO,GAA5B,GAAhB1N,MAAOqG,IAAAA,KAEVwD,KAAKwE,aAAcpP,CAAnB,EACI4K,KAAKkE,cAAehO,EAAQC,EAAQmO,CAAhB,EAA8B9H,CAAlD,GAGDrF,EAAY/B,EAAZ+B,QAED6I,KAAKkE,cAAehO,EADdoO,EAAanN,EACgBhB,CAAf,EAAwBqG,CAA5C,IAGF,EACT,IASQnH,QAAA,SAASC,GACf,OAAO6H,EAAc6C,KAAK/K,UAAUI,QAASC,CAAxB,CAAA,CACvB,IAUQ6N,WAAA,SAAY/N,EAAkBV,GAC5BqQ,EAAY3P,EAAZ2P,QACFzP,EAAO0K,KAAK/K,UAAUI,QAASX,EAAQ,QAAU,OAAQ,CAAA,CAAlD,EACN,OAAAqQ,GAAWvI,EAAMuI,EAASzP,KAAY4E,EAAU6K,GAAY,EAAIA,KAAe,KACxF,IASQ3B,eAAA,SAAgBhO,GACtB,IAAI4P,EAAS,GAQN,OANFhF,KAAKiF,WAAL,IAEHxI,EADSuI,EAAAhF,KAAKkF,UAAW9P,CAAhB,EACO,sBAAhB,EACS4P,UAASA,EAAT,MAAuBhF,KAAKmD,WAAY/N,EAAS,CAAA,CAA1B,EAAvB,MAAgE4K,KAAKmD,WAAY/N,EAAS,CAAA,CAA1B,EAAhE,KAGJ4P,CACT,IASQE,UAAA,SAAW9P,GACV,OAAAoH,EAAMpH,EAAQ4P,MAAd,CACT,IASQpB,cAAA,SAAexO,GACrB,OAAOA,EAAQ+P,UACX,GACA3I,EAAMpH,EAAQgQ,UAAd,IAAgCpF,KAAKiF,WAAL,EAAoB,GAAKjF,KAAKqF,aAAcjQ,CAAnB,EAC/D,IASQoO,eAAA,SAAgBpO,GACtB,OAAOoH,EAAMpH,EAAQkQ,eACdtF,KAAKiF,WACJ7P,EAAAA,EAAQmQ,WAAa,GAAKvF,KAAKqF,aAAcjQ,CAAnB,EAC5B4K,KAAKkF,UAAW9P,CAAhB,EAER,IASQiQ,aAAA,SAAcjQ,GACd,IAAAyO,EAAMrH,EAAMpH,EAAQyO,GAAR,EACX,MAAA,cAAcA,SAAcA,GAA5B,MAAyCzO,EAAQ+B,SAAW,IAAM0M,SAAcA,GAAhF,GACT,IASQJ,eAAA,SAAgBrO,GACdoQ,EAAgBpQ,EAAhBoQ,YACD,OAAAA,EAAA,GAAkB,EAAIA,EAAiB,EAChD,IAUQtB,cAAA,SAAe/N,EAAeqG,GACpC,MAAWrG,GAAAA,EAAUqG,CACvB,IASQkI,cAAA,SAAevO,GAChB,OAAAiE,EAAUjE,CAAV,EAGI,CAAEA,MAFMsP,WAAYtP,CAAA,GAAW,EAEdqG,KADTrG,EAAMT,QAAS,cAAe,EAA9B,GAAsC,IAC9C,EAGF,CAAES,MAAAA,EAAOqG,KAAM,IAAf,CACT,IAKQsF,iBAAA,WAAyB,IAAA4D,EAAA1F,KACvBqB,EAAgBrB,KAAK5K,QAArBiM,YAERrB,KAAKqB,YAAY5G,KAAM,CAAE,UAAWuF,KAAK5K,QAAzC,EAEKiM,GACKzF,EAAAyF,EAAa,SAAEjM,EAASZ,GAC9BkR,EAAKrE,YAAY5G,KAAM,CAAEjG,EAAO0H,EAAOA,EAAO,GAAIwJ,EAAKtQ,OAAhB,EAA2BA,CAA3B,EAAvC,CACA,CAFM,CAIZ,IAOQoP,aAAA,SAAcpP,GACpB,MAAO,CAAC,CAAEA,EAAS4K,KAAK/K,UAAUI,QAAS,YAAxB,EACrB,IAOQwN,OAAA,WACC,MGtdS,SHsdT7C,KAAK5K,QAAQ4B,IACtB,IAOQiN,SAAA,SAAU7O,GACZ,GAAkB,WAAlBA,EAAQuQ,MAAqB,CAC1B,GAAA3F,KAAK6C,OAAL,EACI,MAAA,CAAA,EAGJ,GG3eU,UH2eV7C,KAAK5K,QAAQ4B,KACT,MAAA,CAAEgJ,KAAK5K,QAAQ0C,SAE1B,CAEO,MAAA,CAAA,CACT,IAOQmN,WAAA,WACC,OAAAjF,KAAK5K,QAAQI,YAAclB,CACpC,IAOQsR,aAAA,WACA,IAAExQ,EAAY4K,KAAZ5K,QAED,MAAA,CACLkB,EACIA,OAAiBlB,EAAQ4B,KACzBV,OAAiBlB,EAAQI,UAC7BJ,EAAQyC,MAAYvB,EAApB,cACAlB,EAAQyQ,cAAoBvP,EALvB,QAMLO,EACA,CAAEmJ,KAAKkB,OAAO4E,QHhhBU,eGihBxBvK,OAAQ6I,OARH,EAQa5E,KAAM,GARnB,CAST,IASQuG,WAAA,SAAYvD,GAClB,IAAIwD,EAAO,GAMX,OAJQpK,EAAA4G,EAAO,SAAErM,EAAO4F,GACtBiK,GAAQ7P,EAAQ,IAAKgH,EAAcpB,CAAA,EAAnB,KAA+B5F,EAA/B,IAA2C,EAC3D,CAFM,EAID6P,EAAKjF,KAAZ,CACF,IASQ6B,YAAA,SAAa3C,GACnB,IAAI0C,EAAQ,GAMZ,OAJQ/G,EAAAqE,EAAQ,SAAE9J,EAAO4F,GACd4G,OAAKxF,EAAcpB,CAAA,EAAnB,IAA8B5F,EAA9B,GACT,CAFM,EAIDwM,EAAM5B,KAAb,CACF,IAOQkF,aAAA,WAAuB,IAAAC,EAAAlG,KACXmG,EAAQnG,KAAKkB,OAAvBrB,SAED,OAAAG,KAAKoB,OAAOiB,IAAK,SAAWC,GAC1B,MAAA,IAAK6D,EAAS,IAAAD,EAAKH,WAAYzD,EAAQE,KAAzB,OAAsCF,EAAQC,MAAQ,SAAS4D,EAA7E,GACP,CAFK,EAEH3G,KAAM,EAFH,CAGT,IAOQiD,MAAA,SAAOH,GACb,IAAQrC,EAAsBqC,EAAtBrC,OAAsBqC,EAAAA,EAAdC,KAAAA,aAAO,GAAvB6D,EAEKpG,KAAK5K,QAAQqN,OAAWzC,CAAAA,KAAK5K,QAAQiR,WAClCC,EAAM/D,EAAK5M,MAAO,oCAAZ,IAEA2Q,EAAK,KACRrG,EAAAsG,WAAA,+BAA6CD,EAAK,GAAlD,KAGb,IAOQxD,eAAA,SAAgB7B,GAKd,IAJF,IAAEhJ,EAAY+H,KAAK5K,QAAjB6C,QACFuO,EAASxG,KAAKuE,cAAd,EACAnD,EAASH,EAAShL,MAAlB,EAEEmL,EAAOlC,OAASsH,GACtB/L,EAAM2G,EAAQA,CAAd,EAGF3G,EAAM2G,EAAOnL,MAAO,CAACuQ,CAAf,EAAuB1K,QAA7B,EAAwCsF,EAAOnL,MAAO,EAAGuQ,CAAjB,CAAxC,EAAmElM,QAAS,SAAEgI,EAAS7M,GACrF,IAAM+M,EAAQxG,EAAQ,GAAIsG,EAAQE,MAAO,CAAEE,MAAWJ,EAAQE,MAAME,MAAlB,IAA6BzK,EAAQE,KAA9C,CAA3B,EACRA,EAAQ6D,EAAQ,GAAIsG,EAAS,CAAEE,MAAAA,CAAF,CAAb,EACtB/M,EAAQ+Q,EAAQvF,EAASwF,QAAStO,CAAlB,EAA4B8I,EAASxG,KAAMtC,CAAf,CAC5C,CAJF,CAKF,IAOQoM,cAAA,WACD,IACKnP,EADL,OAAA4K,KAAK6C,OAAL,GACKzN,EAAY4K,KAAZ5K,SAEKwM,QAIG7E,EAAAnD,aAAQoG,KAAKqB,YAAYgB,IAAK,SAAAqE,GAAA,OAAAA,EAAA,GAA6BvP,OAA7B,CAAtB,CAAR,IACK/B,EAAQuR,eAAiB,GAAM,GAG/C,CACT,IAOQC,aAAA,WACN,IAAIrE,EAAO,GAOJ,OALCA,kBAAgBvC,KAAK5K,QAAQ6C,QAAQZ,OAArC,MACA2I,KAAK6G,YAAa,CAAA,CAAlB,EACA7G,KAAK6G,YAAa,CAAA,CAAlB,EACA,QAGV,IAUQA,YAAA,SAAaxO,GACnB,IAAAyO,EAA0B9G,KAAK5K,QAAvB6C,IAAAA,QAASQ,IAAAA,KACX+J,EAAQ,CACZE,MAAezK,EAAQG,WAAWC,EAAOJ,EAAQI,KAAOJ,EAAQK,MAChEtB,KAAW,SACX+P,UAAW1O,EAAOI,EAAKJ,KAAOI,EAAKH,IAHvB,EAMd,MAAmB,WAAA0H,KAAK+F,WAAYvD,CAAjB,EAAnB,iGAEiBxC,KAAK5K,QAAQ4R,WlCvpBd,yFkCqpBhB,qBAKF,IAOAzE,KAAA,WACQ,IAAA0E,EAA6FjH,KAAKkB,OAAhGgG,IAAAA,UAAWtH,IAAAA,QAASvI,IAAAA,OAAQ8P,IAAAA,YAAaC,IAAAA,WAAYC,IAAAA,OAAQC,IAAAA,aAAcC,IAAAA,YAE/EhF,EAAO,GAiCJ,OA9BCA,GADRA,GAAA,YAAqBvC,KAAKD,GAAgB,YAAAC,KAAK4F,aAAL,EAAyBsB,KAAAA,GAAa,IAAhF,iBACmBlH,KAAKF,MAAMO,QAAtB,YAEHgH,IAEK9E,EADRA,GAAQ+E,GAAgB,IAChB,gCAGV/E,GAAQ4E,GAAe,GAElB9P,IACHkL,GAAQvC,KAAK4G,aAAb,GAWFrE,GAHAA,GAJAA,EADQA,EAAA,+BACR,IAAa3C,EAAb,2BAEQI,KAAKiG,aAAb,GAEA,KAAcrG,EAAd,MACQ,UAEAwH,GAAc,IAEjBC,IAEH9E,EADQA,EAAA,UACAgF,GAAe,KAGjBhF,GAAA,QAGV"}