@vidispine/vdt-js 22.4.0-pre.9 → 22.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/_utils/parseAspectRatio.ts","../src/_utils/parseKeyValuePairTypes.ts","../src/auth/consts/roleNames.ts","../src/metadata/consts/attributeKeys.ts","../src/metadata/consts/systemKeys.ts","../src/metadata/createMetadataType/createMetadataType.ts","../src/metadata/_utils/sortTimespanList.ts","../src/metadata/_utils/index.ts","../src/metadata/_internal/parseValue.ts","../src/metadata/_internal/parseValueList.ts","../src/metadata/_internal/parseField.ts","../src/metadata/parseFieldList/parseFieldList.ts","../src/metadata/parseGroupList/parseGroupList.ts","../src/metadata/parseTimespan/parseTimespan.ts","../src/metadata/parseTimespanList/parseTimespanList.ts","../src/metadata/parseMetadataType/parseMetadataType.ts","../src/metadata/parseSimpleMetadataType/parseSimpleMetadataType.ts","../src/time/_consts/index.ts","../src/time/TimeBase/TimeBase.ts","../src/time/formatTimeBaseText/formatTimeBaseText.ts","../src/time/formatTimeBaseType/formatTimeBaseType.ts","../src/time/createTimeBase/createTimeBase.ts","../src/time/_utils/getAmountOfFrameDrops.ts","../src/time/_utils/isDropFrameTimeBase.ts","../src/time/TimeCode/TimeCode.ts","../src/time/_utils/getGreatestCommonDivisor.ts","../src/time/formatTimeCodeSeconds/formatTimeCodeSeconds.ts","../src/time/formatTimeCodeSmpte/_utils/getSamplesFromSmpte.ts","../src/time/formatTimeCodeSmpte/_utils/splitSmpte.ts","../src/time/formatTimeCodeSmpte/formatTimeCodeSmpte.ts","../src/time/formatTimeCodeText/formatTimeCodeText.ts","../src/time/formatTimeCodeType/formatTimeCodeType.ts","../src/time/createTimeCode/createTimeCode.ts","../src/metadata/metadataTypeToWebVtt/metadataTypeToWebVtt.ts","../src/search/createFacetType/createFacetType.ts","../src/search/parseFacetType/parseFacetType.ts","../src/search/parseHighlightTimespan/parseHighlightTimespan.ts","../src/search/parseHighlightTimespanList/parseHighlightTimespanList.ts","../src/search/parseNowDate/parseNowDate.ts","../src/shape/_utils/parseMediaInfoTypes.ts","../src/shape/parseAudioComponent/parseAudioComponent.ts","../src/file/parseFileType/parseFileType.ts","../src/shape/parseBinaryComponent/parseBinaryComponent.ts","../src/shape/parseContainerComponent/parseContainerComponent.ts","../src/shape/parseVideoComponent/parseVideoComponent.ts","../src/shape/parseShapeType/parseShapeType.ts","../src/shape/getShapeDocumentType/getShapeDocumentType.ts","../src/shape/filterShapeSource/filterShapeSource.ts","../src/shape/getShapeMediaType/getShapeMediaType.ts","../src/thumbnail/findNearestThumbnail/findNearestThumbnail.ts","../src/transcode/parseMediaConvertPreset/parseMediaConvertPreset.ts","../src/transcode/parseTranscodePreset/parseTranscodePreset.ts"],"sourcesContent":["const gcd = (a: number, b: number): number => (b ? gcd(b, a % b) : a);\n\nexport type AspectRatio = { width: number; height: number };\n\nexport const parseAspectRatio = (aspectRatio: AspectRatio) => {\n const { width, height } = aspectRatio || {};\n if (width === undefined || height === undefined) {\n return undefined;\n }\n const denominator = gcd(width, height);\n let widthRatio: string | number = width / denominator;\n let heightRatio = height / denominator;\n if (widthRatio > 21) {\n heightRatio = 1;\n widthRatio = (width / height).toFixed(2);\n }\n return [widthRatio, heightRatio].join(':');\n};\n","import { KeyValuePairType } from '@vidispine/types';\n\n/**\n *\n * @param keyValuePairTypes\n * @returns\n *\n * @category Other\n */\nexport const parseKeyValuePairTypes = (keyValuePairTypes: KeyValuePairType[]) => {\n return Object.fromEntries(\n keyValuePairTypes.map(({ key, value }) => {\n return [key, value];\n }),\n );\n};\n","/**\n * Object with all name of roles in VidiCore\n *\n * @category Auth\n */\nexport const ROLE_NAMES = {\n ACCESSCONTROL_READ: '_accesscontrol_read',\n ACCESSCONTROL_WRITE: '_accesscontrol_write',\n ADMINISTRATOR: '_administrator',\n AUTO_PROJECTION_READ: '_auto_projection_read',\n AUTO_PROJECTION_WRITE: '_auto_projection_write',\n COLLECTION_NOTIFICATION_READ: '_collection_notification_read',\n COLLECTION_NOTIFICATION_WRITE: '_collection_notification_write',\n COLLECTION_READ: '_collection_read',\n COLLECTION_WRITE: '_collection_write',\n CONFIGURATION_READ: '_configuration_read',\n DELETION_LOCK_NOTIFICATION_READ: '_deletion_lock_notification_read',\n DELETION_LOCK_NOTIFICATION_WRITE: '_deletion_lock_notification_write',\n DELETION_LOCK_READ: '_deletion_lock_read',\n DELETION_LOCK_WRITE: '_deletion_lock_write',\n DOCUMENT_NOTIFICATION_READ: '_document_notification_read',\n DOCUMENT_NOTIFICATION_WRITE: '_document_notification_write',\n DOCUMENT_READ: '_document_read',\n DOCUMENT_WRITE: '_document_write',\n ERROR_READ: '_error_read',\n ERROR_WRITE: '_error_write',\n EXPORT: '_export',\n EXPORT_TEMPLATE_READ: '_export_template_read',\n EXPORT_TEMPLATE_WRITE: '_export_template_write',\n EXTERNAL_ID_READ: '_external_id_read',\n EXTERNAL_ID_WRITE: '_external_id_write',\n FILE_NOTIFICATION_READ: '_file_notification_read',\n FILE_NOTIFICATION_WRITE: '_file_notification_write',\n FILE_READ: '_file_read',\n FILE_WRITE: '_file_write',\n GROUP_READ: '_group_read',\n GROUP_WRITE: '_group_write',\n IMPORT_WRITE: '_import',\n ITEM_ID_READ: '_item_id_read',\n ITEM_ID_WRITE: '_item_id_write',\n ITEM_NOTIFICATION_READ: '_item_notification_read',\n ITEM_NOTIFICATION_WRITE: '_item_notification_write',\n ITEM_WRITE: '_item_write',\n ITEM_SEARCH: '_item_search',\n ITEM_SHAPE_READ: '_item_shape_read',\n ITEM_SHAPE_WRITE: '_item_shape_write',\n ITEM_TIMELINE_READ: '_item_timeline_read',\n ITEM_TIMELINE_WRITE: '_item_timeline_write',\n ITEM_URI: '_item_uri',\n JOB_NOTIFICATION_READ: '_job_notification_read',\n JOB_NOTIFICATION_WRITE: '_job_notification_write',\n JOB_READ: '_job_read',\n JOB_WRITE: '_job_write',\n LIBRARY_READ: '_library_read',\n LIBRARY_WRITE: '_library_write',\n LOCK_READ: '_lock_read',\n LOCK_WRITE: '_lock_write',\n LOG_READ: '_log_read',\n METADATA_DATASET_READ: '_metadata_dataset_read',\n METADATA_DATASET_WRITE: '_metadata_dataset_write',\n METADATA_FIELD_GROUP_READ: '_metadata_field_group_read',\n METADATA_FIELD_GROUP_WRITE: '_metadata_field_group_write',\n METADATA_FIELD_READ: '_metadata_field_read',\n METADATA_FIELD_WRITE: '_metadata_field_write',\n METADATA_GLOBAL_READ: '_metadata_global_read',\n METADATA_GLOBAL_WRITE: '_metadata_global_write',\n METADATA_LOCK_READ: '_metadata_lock_read',\n METADATA_LOCK_WRITE: '_metadata_lock_write',\n METADATA_READ: '_metadata_read',\n METADATA_SCHEMA_READ: '_metadata_schema_read',\n METADATA_SCHEMA_WRITE: '_metadata_schema_write',\n METADATA_WRITE: '_metadata_write',\n OTIF_ANALYZE: '_otif_analyze',\n OTIF_READ: '_otif_read',\n OTIF_WRITE: '_otif_write',\n PLACEHOLDER_NOTIFICATION_READ: '_placeholder_notification_read',\n PLACEHOLDER_NOTIFICATION_WRITE: '_placeholder_notification_write',\n PROJECTION_READ: '_projection_read',\n PROJECTION_WRITE: '_projection_write',\n QUOTA_NOTIFICATION_READ: '_quota_notification_read',\n QUOTA_NOTIFICATION_WRITE: '_quota_notification_write',\n QUOTA_READ: '_quota_read',\n QUOTA_WRITE: '_quota_write',\n RELATION_READ: '_relation_read',\n RELATION_WRITE: '_relation_write',\n RESOURCE_READ: '_resource_read',\n RESOURCE_WRITE: '_resource_write',\n RUN_AS: '_run_as',\n SEARCH: '_search',\n SEQUENCE_READ: '_sequence_read',\n SEQUENCE_WRITE: '_sequence_write',\n SHAPE_TAG_READ: '_shape_tag_read',\n SHAPE_TAG_WRITE: '_shape_tag_write',\n SITE_MANAGER: '_site_manager',\n SITE_RULE_READ: '_site_rule_read',\n SITE_RULE_WRITE: '_site_rule_write',\n STORAGE_GROUP_READ: '_storage_group_read',\n STORAGE_GROUP_WRITE: '_storage_group_write',\n STORAGE_NOTIFICATION_READ: '_storage_notification_read',\n STORAGE_NOTIFICATION_WRITE: '_storage_notification_write',\n STORAGE_READ: '_storage_read',\n STORAGE_RULE_READ: '_storage_rule_read',\n STORAGE_RULE_WRITE: '_storage_rule_write',\n STORAGE_WRITE: '_storage_write',\n SUPER_ACCESS_USER: '_super_access_user',\n TASKDEFINITION_READ: '_taskdefinition_read',\n TASKDEFINITION_WRITE: '_taskdefinition_write',\n THUMBNAIL_READ: '_thumbnail_read',\n THUMBNAIL_WRITE: '_thumbnail_write',\n TRANSCODER: '_transcoder',\n TRANSFER_READ: '_transfer_read',\n TRANSFER_WRITE: '_transfer_write',\n USER: '_user',\n VXA: '_vxa',\n VXA_READ: '_vxa_read',\n} as const;\n","import {\n MetadataFieldValueType,\n MetadataGroupValueType,\n MetadataValueAttributes,\n MetadataValueType,\n} from '@vidispine/types';\n\nconst SHARED_ATTRIBUTE_KEYS: (keyof MetadataValueAttributes)[] = [\n 'uuid',\n 'user',\n 'timestamp',\n 'change',\n 'conflict',\n 'mode',\n];\n\nconst SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS = [\n 'name',\n 'id',\n 'referenced',\n 'data',\n 'inheritance',\n] as const;\n\n/**\n * Array with all available metadata group attributes\n *\n * @category Metadata\n */\nexport const GROUP_ATTRIBUTE_KEYS: (keyof MetadataGroupValueType)[] = [\n ...SHARED_ATTRIBUTE_KEYS,\n ...SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS,\n 'cycle',\n 'field',\n 'group',\n];\n\n/**\n * Array with all available metadata group attributes\n *\n * @category Metadata\n */\nexport const FIELD_ATTRIBUTE_KEYS: (keyof MetadataFieldValueType)[] = [\n ...SHARED_ATTRIBUTE_KEYS,\n ...SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS,\n 'value',\n 'reference',\n 'type',\n 'track',\n];\n\n/**\n * Array with all available metadata field value attributes\n *\n * @category Metadata\n */\nexport const FIELD_VALUE_ATTRIBUTE_KEYS: (keyof MetadataValueType)[] = [\n ...SHARED_ATTRIBUTE_KEYS,\n 'value',\n 'lang',\n];\n","/**\n * Array with all available VidiCore system/default field group names\n *\n * @category Metadata\n */\nexport const SYSTEM_FIELDGROUPS = [\n 'stl_subtitle',\n 'stl_tti',\n 'stl_gsi',\n 'mrk_marker',\n 'pho_validation',\n 'pho_resource',\n 'pho_error',\n 'facedetect_rect',\n 'facedetect_face',\n 'originalTrackFilename',\n 'stl_gsiHeader',\n] as const;\n\n/**\n * Array with all available VidiCore system/default field group names\n *\n * @category Metadata\n */\nexport const SYSTEM_FIELDS = [\n 'title',\n 'user',\n 'shapeTag',\n 'representativeThumbnail',\n 'representativeThumbnailNoAuth',\n 'representativeItems',\n 'itemId',\n 'collectionId',\n 'mediaType',\n 'mimeType',\n 'created',\n 'startTimeCode',\n 'startSeconds',\n 'fieldValidationError',\n 'schemaValidationError',\n 'originalFilename',\n 'originalUri',\n 'originalAudioCodec',\n 'originalVideoCodec',\n 'originalHeight',\n 'originalWidth',\n 'originalFormat',\n 'durationSeconds',\n 'durationTimeCode',\n 'solr-index',\n '__user',\n '__collection',\n '__collection_size',\n '__ancestor_collection',\n '__ancestor_collection_size',\n '__shape',\n '__shape_size',\n '__shape_last_added',\n '__placeholder_shape_size',\n '__version',\n '__version_count',\n '__storage',\n '__storage_size',\n '__shapetag_{tag}_hash_{hash}',\n '__storage_{tag}',\n '__storage_{tag}_size',\n '__storagegroup',\n '__storagegroup_size',\n '__sequence',\n '__sequence_size',\n '__metadata_last_modified',\n '__external_id',\n '__deletion_lock_id',\n '__deletion_lock_expiry',\n '__child_collection',\n '__child_collection_size',\n '__parent_collection',\n '__parent_collection_size',\n '__items_size',\n 'stl_text',\n 'stl_justification',\n 'stl_xrelative',\n 'stl_yrelative',\n 'stl_vertical',\n 'stl_verticalbase',\n 'stl_horizontalbase',\n 'stl_sizerelative',\n 'stl_color',\n 'stl_outline',\n 'stl_outlinecolor',\n 'stl_outlinesize',\n 'stl_font',\n 'stl_service',\n 'stl_tti',\n 'stl_gsi',\n 'cct',\n 'tcd',\n 'tcf',\n 'oet',\n 'cd',\n 'mnc',\n 'cpn',\n 'dfc',\n 'tcp',\n 'tcs',\n 'tet',\n 'tnb',\n 'tnd',\n 'en',\n 'co',\n 'tng',\n 'rd',\n 'mnr',\n 'dsc',\n 'opt',\n 'lc',\n 'tpt',\n 'tn',\n 'slr',\n 'tns',\n 'rn',\n 'pub',\n 'dsn',\n 'ecd',\n 'mrk_zerolength',\n 'mrk_text',\n 'mrk_color',\n 'pho_resource_name',\n 'pho_error_level',\n 'pho_error_code',\n 'pho_error_description',\n 'facedetect_rect_width',\n 'facedetect_rect_height',\n 'facedetect_rect_y',\n 'facedetect_rect_x',\n 'facedetect_pid',\n 'facedetect_rect',\n 'trackId',\n 'eidr_actor',\n 'eidr_alternateId',\n 'eidr_countryOfOrigin',\n 'eidr_director',\n 'eidr_id',\n 'eidr_referentType',\n 'eidr_releaseDate',\n 'eidr_resourceName',\n 'eidr_status',\n 'eidr_sync',\n 'ttml_div',\n 'ttml_root',\n 'vxa_collection_id',\n 'vxaId',\n 'vxaLocalPath',\n 'tco',\n 'cs',\n 'ebn',\n 'tf',\n 'cf',\n 'sgn',\n 'tci',\n 'jc',\n 'vp',\n 'sn',\n] as const;\n","import {\n MetadataType,\n MetadataGroupValueType,\n MetadataFieldValueType,\n MetadataValueType,\n} from '@vidispine/types';\n\nimport { FIELD_ATTRIBUTE_KEYS, FIELD_VALUE_ATTRIBUTE_KEYS, GROUP_ATTRIBUTE_KEYS } from '../consts';\n\nexport type InputValueTypes = string | boolean | number | Date;\n\n/** Possible input values for the field value */\nexport type InputValue = InputValueTypes | InputValueTypes[];\n\n/** Input value object for the field value */\nexport type InputValueObject = { value: string | InputValue } & Omit<MetadataValueType, 'value'>;\n\nexport type InputFieldValue = InputValueObject | InputValue | InputValueObject[] | InputValue[];\n\n/** Input object to create field of */\nexport type InputFieldObject = {\n value: InputFieldValue;\n} & MetadataFieldValueType;\n\n/** Input to create a field of */\nexport type InputField = InputFieldValue | InputFieldObject;\n\n/** Input to create one or multiple groups and/or fields of */\nexport type InputGroupsOrFields = InputGroup | InputGroup[] | InputField | InputField[];\n\n/** Input object to create group of */\nexport type InputGroup = {\n [groupOrFieldName: string]: InputGroupsOrFields;\n} & Partial<MetadataGroupValueType>;\n\n/** Input to create a timespan of */\nexport type InputTimespan = {\n // Start for timespan\n start?: string | number;\n // End for timespan\n end?: string | number;\n // Base for timespan (typically undefined)\n base?: string;\n // Group or field metadata\n [groupOrFieldName: string]: InputGroupsOrFields;\n};\n\nconst isValueObject = (o: any): o is InputValueObject =>\n Object.prototype.toString.call(o) === '[object Object]' && o.value !== undefined;\n\nconst isFieldType = (v: any): v is string | boolean | number =>\n ['string', 'boolean', 'number'].includes(typeof v);\n\nconst isFieldObject = (o: any): o is InputFieldObject =>\n isValueObject(o) && (o?.value === null || isValueObject(o.value) || isFieldType(o.value));\n\nconst isObject = (o: any): o is { value?: any } =>\n Object.prototype.toString.call(o) === '[object Object]';\n\nconst isDate = (o: any): o is Date => Object.prototype.toString.call(o) === '[object Date]';\nconst isField = (value: any): value is InputField => {\n if (value === null) {\n return true;\n }\n if (Array.isArray(value)) {\n return value.some(isField);\n }\n return isFieldType(value) || isFieldObject(value) || isDate(value);\n};\n\nconst isGroup = (value: any): value is InputGroup | InputGroup[] => {\n const isGroupObject = (v: any) => isObject(v) && v.value === undefined && !!Object.entries(value);\n if (Array.isArray(value)) {\n return value.every(isGroup);\n }\n return isGroupObject(value);\n};\n\nconst tryPluralize = (str: string, arr: any[]) => str + (arr.length > 1 ? 's' : '');\n\nconst ensureKeysAreValid = (keysToCheck: string[], keysToMatch: string[]) => {\n const unsupportedKeys = keysToCheck.filter((k) => !keysToMatch.includes(k));\n if (unsupportedKeys.length) {\n throw Error(\n `Unsupported ${tryPluralize('key', unsupportedKeys)} (${unsupportedKeys.join(', ')})`,\n );\n }\n};\n\nconst parseValue = (value: InputValue): { value?: MetadataValueType['value'] } => {\n if (Array.isArray(value)) {\n throw Error('Invalid value inside value object, cannot be array');\n }\n if ([undefined, null].includes(value)) return {};\n if (isDate(value)) return { value: value.toISOString() };\n return { value: value.toString() };\n};\n\nconst parseValueObject = (valueObject: InputValueObject): MetadataValueType => {\n ensureKeysAreValid(Object.keys(valueObject), FIELD_VALUE_ATTRIBUTE_KEYS);\n if (Object.keys(valueObject).length === 0) {\n throw Error('Invalid value object, cannot be empty object');\n }\n if (typeof valueObject?.value === 'string') {\n return valueObject as MetadataValueType;\n }\n const parsedValue = parseValue(valueObject?.value);\n return { ...valueObject, ...(parsedValue !== undefined ? parsedValue : {}) } as MetadataValueType;\n};\n\nconst parseFieldValue = (value: InputFieldValue): MetadataValueType | MetadataValueType[] => {\n if ([undefined, null].includes(value)) return undefined;\n if (Array.isArray(value)) return value.flatMap(parseFieldValue);\n if (isValueObject(value)) return parseValueObject(value);\n return parseValue(value);\n};\n\nconst parseFieldObject = (fieldObject: InputFieldObject): MetadataFieldValueType => {\n ensureKeysAreValid(Object.keys(fieldObject), FIELD_ATTRIBUTE_KEYS);\n const parsedFieldValue = parseFieldValue(fieldObject?.value);\n if (parsedFieldValue === undefined) {\n const { value, ...fieldObjectWithoutValue } = fieldObject;\n return fieldObjectWithoutValue;\n }\n return {\n ...fieldObject,\n value: [...(Array.isArray(parsedFieldValue) ? parsedFieldValue : [parsedFieldValue])],\n };\n};\n\nconst parseField = (field: InputField): MetadataFieldValueType => {\n if (isFieldObject(field)) {\n return parseFieldObject(field);\n }\n const parsedFieldValue = parseFieldValue(field);\n if (parsedFieldValue === undefined) {\n return undefined;\n }\n return { value: [...(Array.isArray(parsedFieldValue) ? parsedFieldValue : [parsedFieldValue])] };\n};\n\nconst parseGroupsAndFields = (\n groupOrField: InputGroupsOrFields,\n): {\n group?: MetadataGroupValueType[];\n field?: MetadataFieldValueType[];\n} & MetadataGroupValueType => {\n const group: MetadataGroupValueType[] = [];\n const field: MetadataFieldValueType[] = [];\n let groupAttributes: MetadataGroupValueType = {};\n Object.entries(groupOrField || {}).forEach(([name, value]) => {\n if (GROUP_ATTRIBUTE_KEYS.includes(name as keyof MetadataGroupValueType)) {\n groupAttributes = { ...groupAttributes, [name]: value };\n } else if (isField(value)) {\n try {\n field.push({ name, ...parseField(value) });\n } catch (error) {\n throw Error(error.message + (name ? ` for field \"${name}\"` : ''));\n }\n } else if (isGroup(value)) {\n (Array.isArray(value) ? value : [value]).forEach((childGroup) => {\n group.push({ name, ...parseGroupsAndFields(childGroup) });\n });\n } else {\n throw Error(`Unhandled value for \"${name}\"`);\n }\n });\n return {\n ...groupAttributes,\n ...(group.length > 0 ? { group } : {}),\n ...(field.length > 0 ? { field } : {}),\n };\n};\n\nconst parseTimespan = (timespan: InputTimespan): MetadataType['timespan'][number] => {\n const { start = '-INF', end = '+INF', base = undefined, ...groupsAndFields } = timespan;\n const { group, field } = parseGroupsAndFields(groupsAndFields);\n return {\n ...(group ? { group } : {}),\n ...(field ? { field } : {}),\n start: start.toString(),\n end: end.toString(),\n ...(base ? { base } : {}),\n };\n};\n\nexport type CreateMetadataTypeInput = InputTimespan | InputTimespan[];\n\n/**\n * Create a VidiCore metadata object from a more dense/simplified structure\n *\n * @param input To create VidiCore metadata object of\n * @returns A VidiCore metadata object\n *\n * @category Metadata\n */\nexport const createMetadataType = (input: CreateMetadataTypeInput): MetadataType => {\n return {\n timespan: (Array.isArray(input) ? input : [input || {}]).map((t) => parseTimespan(t)),\n };\n};\n","import { MetadataType } from '@vidispine/types';\n\n/**\n * @private\n *\n * Function to sort timespan lists with\n *\n * TODO:\n * - Take different time bases in account\n * - Also compare end if start is same (lowest end first)\n *\n * @param timespan1 first timespan to compare\n * @param timespan2 second timespan to compare\n * @returns -1 if first is before second, 1 if first is after second, 0 if same start\n */\nexport const sortTimespanList = (\n timespan1: MetadataType['timespan'][number],\n timespan2: MetadataType['timespan'][number],\n) => {\n const [firstStart] = timespan1?.start?.split('@') || [];\n const [secondStart] = timespan2?.start?.split('@') || [];\n if (Number(firstStart) < Number(secondStart)) {\n return -1;\n }\n if (Number(firstStart) > Number(secondStart)) {\n return 1;\n }\n return 0;\n};\n\nexport default sortTimespanList;\n","export * from './findTimespan';\nexport * from './sortTimespanList';\n\n/**\n * @private\n *\n * Wrap in array if not already an array, and return empty array if v is undefined\n *\n * @param v value to return as array\n * @returns input value wrapped as array\n */\nexport const asArray = <T>(v: T | T[]) => (Array.isArray(v) ? v : (v && [v]) || []);\n\n/**\n * @private\n *\n * Wrap in array if not already an array, and return empty array if v is undefined\n *\n * @param v value to return as array\n * @returns input value wrapped as array\n */\nexport const asSingle = <T>(v: T | T[]) => (Array.isArray(v) ? v.pop() : v);\n\n/**\n * @private\n * Check if array is string array (+ type guard)\n *\n * @param arr Array to check if string array\n * @returns true if string array\n */\nexport const isStringArray = (arr: any[]): arr is string[] =>\n arr?.every((v) => typeof v === 'string') || false;\n","import { MetadataValueType } from '@vidispine/types';\n\nexport type ParsedValueAttributes = Partial<Omit<MetadataValueType, 'value'>>;\n\nexport type ParsedValue<TOptions> = TOptions extends { includeValueAttributes?: false }\n ? string\n : { value: string } & ParsedValueAttributes;\n\nexport type ParseValueOptions = {\n // Include attributes on value\n includeValueAttributes?: boolean | (keyof ParsedValueAttributes)[];\n};\n\nexport const defaultOptions = {\n includeValueAttributes: false,\n};\n\n/**\n * @internal\n * Parse the value object inside a field value list\n *\n * @param value The Vidicore metadata value type\n * @param options For how to parse the value object\n * @returns The parsed value\n */\nexport function parseValue<TOptions extends ParseValueOptions = ParseValueOptions>(\n value: MetadataValueType,\n options?: TOptions,\n): ParsedValue<TOptions> {\n const { includeValueAttributes } = {\n ...defaultOptions,\n ...(options || {}),\n };\n if (includeValueAttributes === false) {\n return value?.value as ParsedValue<TOptions>;\n }\n const { value: stringValue, ...attributes } = value;\n const valueAttributes: ParsedValueAttributes =\n (includeValueAttributes === true && attributes) ||\n (Array.isArray(includeValueAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeValueAttributes.includes(key as keyof ParsedValueAttributes),\n ),\n )) ||\n {};\n\n return { ...valueAttributes, value: stringValue } as ParsedValue<TOptions>;\n}\n","import { MetadataValueType } from '@vidispine/types';\n\nimport { isStringArray } from '../_utils';\n\nimport {\n defaultOptions as defaultParseValueOptions,\n ParsedValue,\n parseValue,\n ParseValueOptions,\n} from './parseValue';\n\nexport type ParsedValueList<TOptions> = TOptions extends {\n joinValue?: string;\n includeValueAttributes?: false;\n}\n ? string\n : TOptions extends { arrayOnSingleValue?: true }\n ? ParsedValue<TOptions>[]\n : ParsedValue<TOptions> | ParsedValue<TOptions>[];\n\nexport type ParseValueListOptions = {\n // String to join the values, eg ','.\n joinValue?: string;\n // Return values as array even if single value\n arrayOnSingleValue?: boolean;\n} & ParseValueOptions;\n\nexport const defaultOptions = {\n ...defaultParseValueOptions,\n joinValue: undefined as string,\n arrayOnSingleValue: true,\n};\n\n/**\n * @internal\n *\n * @param valueList\n * @param options\n * @returns\n */\nexport function parseValueList<TOptions extends ParseValueListOptions = ParseValueListOptions>(\n valueList: MetadataValueType[],\n options?: TOptions,\n): ParsedValueList<TOptions> {\n const { joinValue, arrayOnSingleValue, ...parseValueOptions } = {\n ...defaultOptions,\n ...(options || {}),\n };\n\n const parsedValueList = valueList?.map((v) => parseValue(v, parseValueOptions));\n\n if (isStringArray(parsedValueList) && joinValue)\n return parsedValueList?.join(joinValue) as ParsedValueList<TOptions>;\n if (arrayOnSingleValue !== true && parsedValueList?.length <= 1)\n return parsedValueList?.[0] as ParsedValueList<TOptions>;\n return parsedValueList as ParsedValueList<TOptions>;\n}\n","import { MetadataFieldValueType } from '@vidispine/types';\n\nimport {\n defaultOptions as defaultParseValueListOptions,\n ParsedValueList,\n parseValueList,\n ParseValueListOptions,\n} from './parseValueList';\n\nexport type ParsedFieldAttributes = Partial<Omit<MetadataFieldValueType, 'value'>>;\n\nexport type ParsedFieldObject<TOptions> = {\n value: ParsedValueList<TOptions>;\n} & ParsedFieldAttributes;\n\nexport type ParsedField<TOptions> = TOptions extends {\n includeFieldAttributes?: false;\n}\n ? ParsedValueList<TOptions>\n : ParsedFieldObject<TOptions>;\n\nexport type ParseFieldOptions = {\n // Include attributes on field\n includeFieldAttributes?: boolean | (keyof ParsedFieldAttributes)[];\n} & ParseValueListOptions;\n\nexport const defaultOptions = {\n includeFieldAttributes: false,\n ...defaultParseValueListOptions,\n};\n\n/**\n * @internal\n *\n * @param field\n * @param options\n * @returns\n */\nexport const parseField = <TOptions extends ParseFieldOptions = ParseFieldOptions>(\n field: MetadataFieldValueType,\n options?: TOptions,\n): ParsedField<TOptions> => {\n const { includeFieldAttributes, ...parseValueListOptions } = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { value, ...attributes } = field;\n const parsedValueList = parseValueList(value, parseValueListOptions);\n\n const fieldAttributes: ParsedFieldAttributes =\n (includeFieldAttributes === true && attributes) ||\n (Array.isArray(includeFieldAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeFieldAttributes.includes(key as keyof ParsedFieldAttributes),\n ),\n )) ||\n {};\n\n return (\n includeFieldAttributes ? { ...fieldAttributes, value: parsedValueList } : parsedValueList\n ) as ParsedField<TOptions>;\n};\n","import { MetadataFieldValueType } from '@vidispine/types';\n\nimport {\n ParsedField,\n ParseFieldOptions,\n defaultOptions as defaultParseFieldOptions,\n parseField,\n} from '../_internal/parseField';\nimport { asArray } from '../_utils';\n\nexport type ParseFieldListOptions = {\n // Return fields as list\n fieldAsList?: boolean;\n // Return fields as array even if only one field\n arrayOnSingleField?: boolean;\n // Return all fields flattened (Note: keys might be overridden)\n overrideField?: boolean;\n} & ParseFieldOptions;\n\nexport const defaultOptions: ParseFieldListOptions = {\n ...defaultParseFieldOptions,\n fieldAsList: false,\n arrayOnSingleField: false,\n overrideField: undefined,\n};\n\nexport type ParsedFieldList<TOptions> = TOptions extends { fieldAsList?: true }\n ? ParsedField<TOptions>[]\n : TOptions extends\n | { arrayOnSingle?: true; arrayOnSingleField?: undefined | true }\n | { arrayOnSingleField?: true }\n ? {\n [name: string]: ParsedField<TOptions>[];\n }\n : TOptions extends { flat?: true; overrideField?: true | undefined } | { overrideField?: true }\n ? {\n [name: string]: ParsedField<TOptions>;\n }\n : {\n [name: string]: ParsedField<TOptions> | ParsedField<TOptions>[];\n };\n\n/**\n * Parse a metadata field list according to selected options\n *\n * @remarks\n * Duplicate fields (same field name in the same field list) are usually not the data model we'd advise using.\n * Since VidiCore supports multiple values in one fields, it's typically advised to store them as such.\n * But, given duplicated fields when parsing it will:\n * - with default options, merge duplicated field values to one field value array\n * - with `fieldAsList` enabled, separate fields in the list/array (as usual, even if not duplicate)\n * - with `includeFieldAttributes` enabled, return an array of field objects\n * - with `overrideField` enabled - Override so it returns the latest \"duplicated\" field it parses\n *\n * @param fieldList Field list to parse\n * @param [options=defaultOptions] Options for how to parse the field list\n * @returns A parsed field list\n *\n * @category Metadata\n */\nexport const parseFieldList = <TOptions extends ParseFieldListOptions = ParseFieldListOptions>(\n fieldList: MetadataFieldValueType[],\n options?: TOptions,\n): ParsedFieldList<TOptions> => {\n const parseFieldListOptions: ParseFieldListOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n\n const { fieldAsList, arrayOnSingleField, overrideField } = parseFieldListOptions;\n const shouldOverride = overrideField === true && fieldAsList === false;\n\n const output: {\n [name: string]: ParsedField<TOptions> | ParsedField<TOptions>[];\n } = {};\n fieldList?.forEach((field) => {\n const { name } = field;\n const parsedField = parseField<TOptions>(field, parseFieldListOptions as TOptions);\n const parsedFieldOutput = arrayOnSingleField === true ? asArray(parsedField) : parsedField;\n const existingParsedFields = output[name];\n if (!existingParsedFields) output[name] = parsedFieldOutput;\n else if (shouldOverride) output[name] = parsedField;\n else output[name] = [asArray(existingParsedFields), asArray(parsedField)].flat();\n });\n\n return (\n fieldAsList === true ? Object.values(output).flat() : output\n ) as ParsedFieldList<TOptions>;\n};\n","import { MetadataGroupValueType } from '@vidispine/types';\n\nimport { asArray } from '../_utils';\nimport {\n ParsedFieldList,\n defaultOptions as defaultParseFieldListOptions,\n parseFieldList,\n ParseFieldListOptions,\n} from '../parseFieldList/parseFieldList';\n\nexport type ParsedGroupAttributes = Omit<MetadataGroupValueType, 'field' | 'group'>;\n\n/*\n * _groupAsList_:\n * Return child groups as list (in array)\n *\n * __includeGroupAttributes__:\n * Include attributes on group\n * (Set `true` or \"array of attribute keys\" to include specific attributes)\n *\n * __arrayOnSingleGroup__:\n * Return single group in array\n *\n * @defaultValue `{ groupAsList: false, includeGroupAttributes: false, arrayOnSingleGroup: true, overrideGroup: undefined }`\n */\nexport type ParseGroupOptions = {\n includeGroupAttributes?: boolean | (keyof ParsedGroupAttributes)[];\n groupAsList?: boolean;\n arrayOnSingleGroup?: boolean;\n overrideGroup?: boolean;\n} & ParseFieldListOptions;\n\nconst defaultParseGroupOptions: ParseGroupOptions = {\n ...defaultParseFieldListOptions,\n includeGroupAttributes: false,\n groupAsList: false,\n arrayOnSingleGroup: false,\n overrideGroup: undefined,\n};\n\nexport type ParsedGroup<TOptions> = ((TOptions extends { groupAsList?: true }\n ? { group?: ParsedGroupList<TOptions> }\n : { [name: string]: ParsedGroupList<TOptions> }) &\n (TOptions extends { fieldAsList?: true }\n ? { field?: ParsedFieldList<TOptions> }\n : { [name: string]: ParsedFieldList<TOptions> })) &\n ParsedGroupAttributes;\n\n/**\n * @internal\n *\n * (Kept here due to circular dependency otherwise)\n *\n * @param group\n * @param options\n * @returns\n */\nconst parseGroup = <TOptions extends ParseGroupOptions = ParseGroupOptions>(\n group: MetadataGroupValueType,\n options?: TOptions,\n): ParsedGroup<TOptions> => {\n const parseGroupOptions = {\n ...defaultParseGroupOptions,\n ...(options || {}),\n };\n const { includeGroupAttributes } = parseGroupOptions;\n\n const parseFieldListOptions: ParseFieldListOptions = Object.fromEntries(\n Object.entries(parseGroupOptions).filter(([key]) =>\n Object.keys(defaultParseFieldListOptions).includes(key),\n ),\n );\n\n const { field: fieldList, group: groupList, ...attributes } = group;\n const parsedFieldList = fieldList && parseFieldList(fieldList, parseFieldListOptions);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const parsedGroupList = groupList && parseGroupList(groupList, parseGroupOptions);\n\n const groupAttributes: ParsedGroupAttributes =\n (includeGroupAttributes === true && attributes) ||\n (Array.isArray(includeGroupAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeGroupAttributes.includes(key as keyof ParsedGroupAttributes),\n ),\n )) ||\n {};\n\n return {\n ...groupAttributes,\n ...(parseFieldListOptions?.fieldAsList\n ? (parsedFieldList && { field: parsedFieldList }) || {}\n : parsedFieldList),\n ...(parseGroupOptions?.groupAsList\n ? (parsedGroupList && { group: parsedGroupList }) || {}\n : parsedGroupList),\n } as ParsedGroup<TOptions>;\n};\n\nexport type ParseGroupListOptions = ParseGroupOptions;\n\nexport type ParsedGroupList<TOptions> = TOptions extends { groupAsList?: true }\n ? ParsedGroup<TOptions>[]\n : TOptions extends\n | { arrayOnSingle?: true; arrayOnSingleGroup?: true | undefined }\n | { arrayOnSingleGroup?: true }\n ? {\n [groupName: string]: ParsedGroup<TOptions>[];\n }\n : TOptions extends { flat?: true; overrideGroup?: true | undefined } | { overrideGroup?: true }\n ? {\n [groupName: string]: ParsedGroup<TOptions>;\n }\n : {\n [groupName: string]: ParsedGroup<TOptions> | ParsedGroup<TOptions>[];\n };\n\nexport const defaultOptions: ParseGroupListOptions = defaultParseGroupOptions;\n\n/**\n * Parse a metadata group list according to selected options\n *\n * @remarks\n * Parsing duplicate groups (with identical name) in the same group list will return:\n * - with default options, an array of group objects\n * - with `groupAsList` enabled, separate group objects in the list/array (as usual, even if not duplicate)\n * - with `overrideGroup` enabled, return the latest duplicated group it parses\n *\n * @param groupList Group list to parse\n * @param options options for how to parse list\n * @returns A parsed group list\n *\n * @category Metadata\n */\nexport const parseGroupList = <TOptions extends ParseGroupOptions = ParseGroupOptions>(\n groupList: MetadataGroupValueType[],\n options?: TOptions,\n): ParsedGroupList<TOptions> => {\n const parseGroupOptions: ParseGroupListOptions = { ...defaultOptions, ...(options || {}) };\n\n const { groupAsList, arrayOnSingleGroup, overrideGroup } = parseGroupOptions;\n\n const shouldOverride = overrideGroup === true && groupAsList === false;\n\n const output: {\n [groupName: string]: ParsedGroup<TOptions> | ParsedGroup<TOptions>[];\n } = {};\n groupList?.forEach((group) => {\n const { name } = group;\n const parsedGroup = parseGroup<TOptions>(group, parseGroupOptions as TOptions);\n const parsedGroupOutput =\n arrayOnSingleGroup === true ? asArray<ParsedGroup<TOptions>>(parsedGroup) : parsedGroup;\n const existingParsedGroups = output[name];\n if (!existingParsedGroups) output[name] = parsedGroupOutput;\n else if (shouldOverride) output[name] = parsedGroup;\n else\n output[name] = [\n asArray(existingParsedGroups),\n asArray<ParsedGroup<TOptions>>(parsedGroup),\n ].flat();\n });\n\n if (groupAsList) {\n return Object.values(output).flat() as ParsedGroupList<TOptions>;\n }\n\n return output as ParsedGroupList<TOptions>;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport {\n ParsedFieldList,\n parseFieldList,\n ParseFieldListOptions,\n defaultOptions as defaultParseFieldListOptions,\n} from '../parseFieldList/parseFieldList';\nimport {\n ParsedGroupList,\n parseGroupList,\n ParseGroupListOptions,\n defaultOptions as defaultParseGroupListOptions,\n} from '../parseGroupList/parseGroupList';\n\nexport type ParsedTimespanAttributes = Omit<MetadataType['timespan'][number], 'field' | 'group'>;\n\n/**\n * __includeTimespanAttributes__:\n * Include attributes on timespan\n * (Set `true` or \"array of attribute keys\" to include specific attributes)\n *\n * __arrayOnSingle__:\n * Return groups, fields and values as array if single\n *\n * __flat__:\n * Return a flat (no array) representation of the timespan (Note: fields/groups might be overridden)\n *\n * @defaultValue `{ includeTimespanAttributes: false, arrayOnSingle: true, flat: false }`\n */\nexport type ParseTimespanOptions = {\n includeTimespanAttributes?: boolean | (keyof ParsedTimespanAttributes)[];\n arrayOnSingle?: boolean;\n flat?: boolean;\n} & ParseGroupListOptions;\n\nexport type ParsedTimespan<TOptions> = ((TOptions extends { groupAsList?: true }\n ? { group?: ParsedGroupList<TOptions> }\n : { [name: string]: ParsedGroupList<TOptions> }) &\n (TOptions extends { fieldAsList?: true }\n ? { field?: ParsedFieldList<TOptions> }\n : { [name: string]: ParsedFieldList<TOptions> })) &\n ParsedTimespanAttributes;\n\nexport const defaultOptions: ParseTimespanOptions = {\n ...defaultParseGroupListOptions,\n includeTimespanAttributes: false,\n flat: false,\n arrayOnSingle: false,\n arrayOnSingleValue: true,\n arrayOnSingleGroup: undefined,\n arrayOnSingleField: undefined,\n};\n\n/**\n *\n * Parses timespan according to specified options\n *\n * @remarks\n * To ensure a flat (no array) representation when using `flat: true`, the parser will also set `overrideGroup` and `overrideField` to true (unless those are explicitly set false)\n *\n * @param timespan - A VidiCore metadata timespan\n * @param options - Options to change how it is parsed\n * @returns Timespan parsed according to options\n *\n * @see {@link parseGroupList} and {@link parseFieldList} for more info\n *\n * @category Metadata\n */\nexport const parseTimespan = <TOptions extends ParseTimespanOptions = ParseTimespanOptions>(\n timespan: MetadataType['timespan'][number],\n options?: TOptions,\n): ParsedTimespan<TOptions> => {\n const parseTimespanOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { includeTimespanAttributes, arrayOnSingle, flat } = parseTimespanOptions;\n const parseGroupListOptions: ParseGroupListOptions = Object.fromEntries(\n Object.entries(options)\n .map(([key, value]) => {\n if (Object.keys(defaultParseGroupListOptions).includes(key)) {\n if (\n ['arrayOnSingleGroup', 'arrayOnSingleField', 'arrayOnSingleValue'].includes(key) &&\n (value !== undefined ? value : arrayOnSingle === true)\n ) {\n return [key, true];\n }\n if (\n ['overrideGroup', 'overrideField'].includes(key) &&\n (value !== undefined ? value : flat === true)\n ) {\n return [key, true];\n }\n return [key, value];\n }\n return undefined;\n })\n .filter((e) => !!e),\n );\n const parseFieldListOptions: ParseFieldListOptions = Object.fromEntries(\n Object.entries(options)\n .map(([key, value]) => {\n if (Object.keys(defaultParseFieldListOptions).includes(key)) {\n if (\n ['arrayOnSingleField', 'arrayOnSingleValue'].includes(key) &&\n (value !== undefined ? value : arrayOnSingle === true)\n ) {\n return [key, true];\n }\n if (['overrideField'].includes(key) && (value !== undefined ? value : flat === true)) {\n return [key, true];\n }\n return [key, value];\n }\n return undefined;\n })\n .filter((e) => !!e),\n );\n\n const { field: fieldList, group: groupList, ...attributes } = timespan || {};\n const parsedFieldList = fieldList && parseFieldList(fieldList, parseFieldListOptions);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const parsedGroupList = groupList && parseGroupList(groupList, parseGroupListOptions);\n\n const timespanAttributes: ParsedTimespanAttributes =\n (includeTimespanAttributes === true && attributes) ||\n (Array.isArray(includeTimespanAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeTimespanAttributes.includes(key as keyof ParsedTimespanAttributes),\n ),\n )) ||\n {};\n\n return {\n ...timespanAttributes,\n ...(parseFieldListOptions?.fieldAsList ? { field: parsedFieldList } : parsedFieldList),\n ...(parseGroupListOptions?.groupAsList ? { group: parsedGroupList } : parsedGroupList),\n } as ParsedTimespan<TOptions>;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport { asArray, asSingle, sortTimespanList } from '../_utils';\nimport { parseTimespan } from '../parseTimespan';\nimport {\n ParsedTimespan,\n ParseTimespanOptions,\n defaultOptions as defaultParseTimespanOptions,\n} from '../parseTimespan/parseTimespan';\n\nexport type ParsedTimespanList<TOptions> = TOptions extends { timespanAsList?: true }\n ? ParsedTimespan<TOptions>[]\n : TOptions extends { flat?: true; onlyGeneric?: true | undefined } | { onlyGeneric?: true }\n ? ParsedTimespan<TOptions>\n : {\n [timespanKey: string]: ParsedTimespan<TOptions>[];\n };\n\nexport type ParseTimespanListOptions = {\n // Return timespans as list\n timespanAsList?: boolean;\n // String to join timespans with (defaults to '_')\n joinTimespan?: string;\n // Sort timespanList by ascending start then end time\n sortTimespan?: boolean;\n // Return a flat representation - only one timespan with groups/fields named the same as single - of the timespan list (Note: timespans/fields/groups can be overridden)\n flat?: boolean;\n // Flatten timespans to one object with generic timespan having highest priority (Note: fields/groups might be overridden)\n flatTimespan?: boolean;\n} & ParseTimespanOptions;\n\nexport const defaultOptions: ParseTimespanListOptions = {\n ...defaultParseTimespanOptions,\n timespanAsList: false,\n joinTimespan: '_',\n sortTimespan: false,\n flat: false,\n flatTimespan: undefined,\n};\n/**\n * Parses timespanList according to specified options.\n * The attributes can be targeted for each sub-type.\n *\n * @param timespanList - A Vidicore metadata timespan list\n * @param options - Options which change how the metadataType is parsed.\n * @returns Timespan list parsed according to options\n *\n * @see {@link parseTimespan} for more info\n *\n * @category Metadata\n */\nexport const parseTimespanList = <\n TOptions extends ParseTimespanListOptions = ParseTimespanListOptions,\n>(\n timespanList: MetadataType['timespan'],\n options?: TOptions,\n): ParsedTimespanList<TOptions> => {\n const parseTimespanListOptions: ParseTimespanListOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { timespanAsList, joinTimespan, sortTimespan, flat, flatTimespan, ...otherOptions } =\n parseTimespanListOptions;\n\n const parseTimespanOptions = { flat, ...otherOptions };\n\n if (sortTimespan) timespanList.sort(sortTimespanList);\n\n const shouldFlatten =\n (flatTimespan !== undefined ? flatTimespan === true : flat === true) &&\n timespanAsList === false;\n\n const output: {\n [name: string]: ParsedTimespan<TOptions> | ParsedTimespan<TOptions>[];\n } = {};\n timespanList?.forEach((timespan) => {\n const { start, end } = timespan;\n const key = shouldFlatten ? 'flat' : [start, end].join(joinTimespan);\n const parsedTimespan = parseTimespan<TOptions>(timespan, parseTimespanOptions as TOptions);\n const existingParsedTimespans = output[key];\n if (!existingParsedTimespans) output[key] = parsedTimespan;\n else if (shouldFlatten) {\n if (start === '-INF' && end === '+INF') {\n output[key] = { ...asSingle(existingParsedTimespans), ...parsedTimespan };\n } else {\n output[key] = { ...parsedTimespan, ...asSingle(existingParsedTimespans) };\n }\n } else output[key] = [...asArray(existingParsedTimespans), parsedTimespan];\n });\n\n if (timespanAsList === true) {\n return Object.values(output) as ParsedTimespanList<TOptions>;\n }\n\n if (shouldFlatten) {\n return Object.values(output).pop() as ParsedTimespanList<TOptions>;\n }\n\n return output as ParsedTimespanList<TOptions>;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport { parseTimespanList } from '../parseTimespanList';\nimport {\n ParsedTimespanList,\n ParseTimespanListOptions,\n defaultOptions as defaultParseTimespanListOptions,\n} from '../parseTimespanList/parseTimespanList';\n\nexport type ParsedMetadataAttributes = Partial<\n Omit<MetadataType, 'timespan' | 'revision'> & {\n revision?: string[];\n }\n>;\n\nexport type ParsedMetadataType<TOptions> = (TOptions extends { timespanAsList?: true }\n ? {\n timespan: ParsedTimespanList<TOptions>;\n }\n : TOptions extends { flat?: true }\n ? ParsedTimespanList<TOptions>\n : {\n [timespanKey: string]: ParsedTimespanList<TOptions>;\n }) &\n (TOptions extends { includeMetadataAttributes?: true | string[] }\n ? ParsedMetadataAttributes\n : {});\n\nexport type ParseMetadataTypeOptions = {\n // Include metadata attributes\n includeMetadataAttributes?: boolean | (keyof ParsedMetadataAttributes)[];\n flat?: boolean;\n} & ParseTimespanListOptions;\n\nexport const defaultOptions: ParseMetadataTypeOptions = {\n ...defaultParseTimespanListOptions,\n includeMetadataAttributes: false,\n flat: false,\n};\n\n/**\n * Parses MetadataType according to specified options\n *\n * @remarks\n * Be aware that you need to take into account that the returned groups and fields can be an array if it has multiple values or groups/fields with same name.\n * If you are certain your metadata type won't return multiple groups/fields/values with same name or don't mind that they _might_ be overridden:\n * you can use the option `flat` along with `joinValue` or `arrayOnSingleValue: false`.\n *\n * @param metadataType - A MetadataType from VidiCore\n * @param options - Options which change how the metadataType is parsed\n * @returns Metadata object parsed according to options\n *\n * @see {@link parseTimespanList} for more info\n *\n * @category Metadata\n */\nfunction parseMetadataType<TOptions extends ParseMetadataTypeOptions = ParseMetadataTypeOptions>(\n metadataType: MetadataType,\n options?: TOptions,\n): ParsedMetadataType<TOptions> {\n const parseMetadataTypeOptions: ParseMetadataTypeOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { includeMetadataAttributes, flat } = parseMetadataTypeOptions;\n const { timespan: timespanList = [], ...attributes } = metadataType || {};\n\n const parseTimespanListOptions: ParseTimespanListOptions = Object.fromEntries(\n Object.entries(options)\n .map(([key, value]) => {\n if (Object.keys(defaultParseTimespanListOptions).includes(key)) {\n if (\n ['onlyGeneric', 'overrideGroup', 'overrideField'].includes(key) &&\n (value !== undefined ? value : flat === true)\n ) {\n return [key, true];\n }\n return [key, value];\n }\n return undefined;\n })\n .filter((e) => !!e),\n );\n\n const parsedTimespanList = parseTimespanList<TOptions>(\n timespanList,\n parseTimespanListOptions as TOptions,\n );\n\n const metadataAttributes: ParsedMetadataAttributes =\n (includeMetadataAttributes === true && {\n ...attributes,\n ...(attributes.revision ? { revision: attributes.revision.split(',') } : {}),\n }) ||\n (Array.isArray(includeMetadataAttributes) &&\n Object.fromEntries(\n Object.entries(attributes)\n .map(([key, value]) => {\n if (includeMetadataAttributes.includes(key as keyof ParsedMetadataAttributes)) {\n return [\n key,\n key === 'revision' && typeof value === 'string' ? value.split(',') : value,\n ];\n }\n return undefined;\n })\n .filter((o) => !!o),\n )) ||\n {};\n\n return {\n ...metadataAttributes,\n ...(parseTimespanListOptions?.timespanAsList\n ? { timespan: parsedTimespanList }\n : parsedTimespanList),\n } as ParsedMetadataType<TOptions>;\n}\n\nexport { parseMetadataType };\n","import { SimpleMetadataType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\n\n/**\n * Parse simple (key/value) metadata\n *\n * Not indexed metadata, available on almost all entities (storages, library, user, group, etc...)\n *\n * @param simpleMetadataType A VidiCore simple metadata object\n * @returns A parsed simple metadata object\n *\n * @category Metadata\n */\nexport const parseSimpleMetadataType = (\n simpleMetadataType: SimpleMetadataType,\n): {\n [key: string]: string;\n} => {\n const { field = [] } = simpleMetadataType || {};\n return parseKeyValuePairTypes(field);\n};\n","export type ConstantTimeBaseKey =\n | 'PAL'\n | 'NTSC'\n | 'NTSC30'\n | '29.97'\n | '59.94'\n | '23.976'\n | '23.98';\n\nexport const MAP_CONSTANT_TO_DEN_NUM: {\n [name in ConstantTimeBaseKey]: { denominator: number; numerator: number };\n} = {\n PAL: { denominator: 25, numerator: 1 },\n NTSC: { denominator: 30000, numerator: 1001 },\n NTSC30: { denominator: 30, numerator: 1 },\n 29.97: { denominator: 30000, numerator: 1001 },\n 59.94: { denominator: 60000, numerator: 1001 },\n 23.976: { denominator: 48000, numerator: 2002 },\n 23.98: { denominator: 48000, numerator: 2002 },\n};\n\nexport const TIME_BASE_CONSTANTS = Object.keys(MAP_CONSTANT_TO_DEN_NUM) as ConstantTimeBaseKey[];\n","import { TimeBaseType } from '@vidispine/types';\n\nimport { MAP_CONSTANT_TO_DEN_NUM } from '../_consts';\n\nexport type TimeBaseInput = {\n // The numerator for the TimeBase\n numerator?: number | string;\n\n // The denominator for the TimeBase\n denominator?: number | string;\n};\n\n/**\n * TimeBase class representing the TimeBaseType in VidiCore\n *\n * For more info, see the [Time bases section in VidiCore API Docs](https://apidoc.vidispine.com/latest/time.html#time-bases)\n *\n * @category Time\n */\nexport class TimeBase {\n // The numerator for the TimeBase\n numerator: number = 1;\n\n // The denominator for the TimeBase\n denominator: number = 1;\n\n /**\n * Constructor for TimeBase\n *\n * @param timeBaseType A TimeBaseType object\n */\n constructor(timeBaseType?: TimeBaseInput) {\n const { numerator = 1, denominator = 1 } = timeBaseType || {};\n this.numerator = Number(numerator);\n this.denominator = Number(denominator);\n }\n\n /**\n * Get TimeBase in a constant representation (e.g. \"PAL\") if possible, otherwise undefined\n * @returns Constant representation of the TimeBase\n */\n toConstant(): string {\n let constant: string;\n // If multiple equal den/num, it selects first in MAP_CONSTANT_TO_DEN_NUM\n Object.entries(MAP_CONSTANT_TO_DEN_NUM).find((timeBaseConstant) => {\n const [thisTimeBaseText, thisTimeBaseType] = timeBaseConstant;\n const { numerator, denominator } = thisTimeBaseType;\n if (numerator === this.numerator && denominator === this.denominator) {\n constant = thisTimeBaseText;\n return true;\n }\n return false;\n });\n return constant;\n }\n\n /**\n * Get TimeBase as a VidiCore TimeBaseType string\n *\n * @remarks\n * Default format: denominator(:numerator if > 1)\n * `constant` has precedence over `fraction` if both are true (e.g. NTSC > 30000:1001)\n *\n * @param options For how to display it as text\n * @returns Text representation of the TimeBase\n */\n toText(options?: {\n // Show time base as constant (e.g. PAL)\n constant?: boolean;\n // Show time base as fraction (25:1) even when numerator is 1\n fraction?: boolean;\n }): string {\n if (options?.constant) {\n const timeBaseText = this.toConstant();\n if (timeBaseText) return timeBaseText;\n }\n if (options?.fraction || this.numerator > 1) {\n const timeBaseText = [this.denominator, this.numerator].join(':');\n return timeBaseText;\n }\n const timeBaseText = String(this.denominator);\n return timeBaseText;\n }\n\n /**\n * Output TimeBase as frame rate (by default max 16 decimal places)\n *\n * @remarks\n * For `options.fixed`:\n * - `true` gives two decimal places\n * - `false` gives max amount of decimal places\n * - `number` gives that amount of decimal places\n *\n * Default format: rate with two decimals if needed (i.e. decimals are > 0)\n * Option precedence (when all true): `constant` > `rounded` > `fixed`\n *\n * @param options For how to display it as rate\n *\n * @return Rate of the TimeBase\n *\n * @category Time\n */\n toRate(options?: {\n // Amount of decimal places (true gives 2 decimal places)\n fixed?: boolean | number;\n // Rounded to nearest integer\n rounded?: boolean;\n }) {\n const rate = this.denominator / this.numerator;\n if (Number.isInteger(rate)) {\n return rate;\n }\n if (options?.rounded) {\n return Math.round(rate);\n }\n const { fixed = true } = options || {};\n if (fixed === true || typeof fixed === 'number') {\n return Number(rate.toFixed(typeof fixed === 'boolean' ? 2 : fixed));\n }\n\n return rate;\n }\n\n /**\n * Get TimeBase in a object representation\n *\n * @returns TimeBase as `{denominator, numerator}` object\n */\n toObject(): TimeBaseType {\n return {\n denominator: this.denominator,\n numerator: this.numerator,\n };\n }\n\n /**\n * @deprecated Use {@link TimeBase#toObject | toObject} instead\n *\n * @returns TimeBase as `{denominator, numerator}` object\n */\n toJson(): TimeBaseType {\n // eslint-disable-next-line no-console\n console.warn('Deprecated - use toObject instead');\n return this.toObject();\n }\n}\n","import { ConstantTimeBaseKey, MAP_CONSTANT_TO_DEN_NUM, TIME_BASE_CONSTANTS } from '../_consts';\nimport { TimeBase } from '../TimeBase';\n\n/**\n * Format a string representation of a time base to a TimeBase Instance\n *\n * @param timeBaseText The string to format to a TimeBase instance\n * @returns A TimeBase Instance\n *\n * @category Time\n */\nexport const formatTimeBaseText = (timeBaseText?: string | number) => {\n if (timeBaseText === undefined) {\n return new TimeBase();\n }\n if (typeof timeBaseText === 'number') {\n return new TimeBase({ denominator: timeBaseText });\n }\n if (typeof timeBaseText === 'string' && timeBaseText.includes(':')) {\n const [denominator, numerator] = timeBaseText.split(':');\n return new TimeBase({ denominator, numerator });\n }\n if (TIME_BASE_CONSTANTS.includes(timeBaseText as ConstantTimeBaseKey)) {\n return new TimeBase(MAP_CONSTANT_TO_DEN_NUM[timeBaseText as ConstantTimeBaseKey]);\n }\n if (!['string', 'number'].includes(typeof timeBaseText) || Number.isNaN(Number(timeBaseText))) {\n throw new Error(\n `timeBaseText must be a number or ${TIME_BASE_CONSTANTS.join(',')} - is ${JSON.stringify(\n timeBaseText,\n )}`,\n );\n }\n return new TimeBase({ denominator: Number(timeBaseText) });\n};\n","import { TimeBase } from '../TimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\n\n/**\n * Create a TimeBase instance of an object\n *\n * @param timeBase A TimeBase object\n * @returns A TimeBase instance\n *\n * @category Time\n */\nexport const formatTimeBaseType = (timeBase: TimeBaseInput) => new TimeBase(timeBase);\n","import { formatTimeBaseText } from '../formatTimeBaseText';\nimport { formatTimeBaseType } from '../formatTimeBaseType';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\n\n/**\n * Create a TimeBase Instance from a number, string or object representation of a time base\n *\n * @param timeBase Input to create time base from\n * @returns A TimeBase instance\n *\n * @category Time\n */\nexport const createTimeBase = (timeBase: TimeBaseInput | string | number) => {\n if (typeof timeBase === 'string' || typeof timeBase === 'number') {\n return formatTimeBaseText(timeBase);\n }\n return formatTimeBaseType(timeBase);\n};\n","import { TimeBase } from '../TimeBase';\n\n/**\n * @private\n *\n * Drops 4 frames (0-3) for 59.97 and 2 frames (0-1) for 29.97/NTSC\n *\n * @param timeBase Time base to get amount of frames to drop for\n * @returns Amount of frame drops for specified time base, false if no frame drops\n */\nexport const getAmountOfFrameDrops = (timeBase: TimeBase): number | false => {\n const timeBaseConstant = timeBase.toConstant();\n return (\n (timeBaseConstant === '59.94' && 4) ||\n (['NTSC', '29.97'].includes(timeBaseConstant) && 2) ||\n false\n );\n};\n","import { TimeBase } from '../TimeBase';\n\nimport { getAmountOfFrameDrops } from './getAmountOfFrameDrops';\n\n/**\n * @private\n *\n * Check if TimeBase drops frames\n *\n * @param timeBase TimeBase Instance to check\n * @returns true if time base drops frames, false otherwise\n */\nexport const isDropFrameTimeBase = (timeBase: TimeBase) => getAmountOfFrameDrops(timeBase) > 0;\n","import { getAmountOfFrameDrops } from '../_utils/getAmountOfFrameDrops';\nimport { isDropFrameTimeBase } from '../_utils/isDropFrameTimeBase';\nimport { createTimeBase } from '../createTimeBase';\nimport { TimeBase } from '../TimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\n\nconst getDroppedFramesFromSamples = (timeCode: TimeCode) => {\n const { samples, timeBase } = timeCode;\n const amountOfFrameDrops = getAmountOfFrameDrops(timeBase);\n if (!amountOfFrameDrops) return 0;\n\n const roundedFrameRate = timeBase.toRate({ rounded: true });\n const oneMinuteNotDroppedFrames = 60 * roundedFrameRate;\n const amountOfFramesToDropPerMinute = 60 * roundedFrameRate - amountOfFrameDrops;\n const tenMinuteFrames =\n 10 * (oneMinuteNotDroppedFrames - amountOfFrameDrops) + amountOfFrameDrops;\n const amountOfTenMinuteChunks = Math.floor((samples + 1) / tenMinuteFrames);\n const minuteRemainder = Math.max(\n 0,\n ((samples + 1) % tenMinuteFrames) - oneMinuteNotDroppedFrames,\n );\n const amountOfOneMinuteReminderChunks = Math.floor(\n minuteRemainder / amountOfFramesToDropPerMinute,\n );\n const frameRemainder = minuteRemainder % amountOfFramesToDropPerMinute;\n const amountOfFrameRemainderChunks = frameRemainder > 0 ? amountOfFrameDrops : 0;\n\n return (\n amountOfTenMinuteChunks * 9 * amountOfFrameDrops +\n amountOfOneMinuteReminderChunks * amountOfFrameDrops +\n amountOfFrameRemainderChunks\n );\n};\n\nexport type TimeCodeInput = {\n // Amount of samples for the time code\n samples?: number | string;\n // The time base it should have\n timeBase?: string | TimeBaseInput | TimeBase;\n};\n\nexport type TimeCodeInputOptions = {\n // If time code should be dropFrame or not (by default checks timeBase)\n dropFrame?: boolean;\n // Separator to use for frame smpte output (default \":\" for non-drop-frame and \";\" for dropFrame)\n frameSeparator?: string;\n};\n\n/**\n * TimeCode class representing the TimeCodeType in VidiCore\n *\n * For more info, see the [Time Codes section of VidiCore API Docs](https://apidoc.vidispine.com/latest/time.html#time-codes)\n *\n * @category Time\n */\nexport class TimeCode {\n // Amount of samples for the time code\n samples: number = 0;\n\n // The time base for the time code\n timeBase: TimeBase = new TimeBase();\n\n // If time code is dropFrame or not (by default checks timeBase)\n dropFrame?: boolean;\n\n // Separator for frame in smpte output (default \":\" for non-drop-frame and \";\" for dropFrame)\n frameSeparator?: string;\n\n /**\n * Constructor for TimeCode\n *\n * @param timeCodeType Object to create TimeCode of\n * @param options Options for the timeCode\n */\n constructor(timeCodeType: TimeCodeInput, options?: TimeCodeInputOptions) {\n const { samples, timeBase } = timeCodeType || {};\n\n if (samples !== undefined) {\n if (typeof samples === 'number') {\n this.samples = samples;\n } else if (typeof samples === 'string') {\n if (samples === '-INF') {\n this.samples = -Infinity;\n } else if (samples === '+INF') {\n this.samples = Infinity;\n } else {\n this.samples = Number(samples);\n }\n } else {\n throw new Error(`samples is not number/string/-Inf/+Inf is: ${samples}`);\n }\n }\n if (timeBase !== undefined) {\n if (timeBase instanceof TimeBase) {\n this.timeBase = timeBase;\n } else {\n this.timeBase = createTimeBase(timeBase);\n }\n }\n this.dropFrame = options?.dropFrame ?? isDropFrameTimeBase(this.timeBase);\n this.frameSeparator = options?.frameSeparator ?? (this.dropFrame ? ';' : ':');\n }\n\n /**\n * Return this TimeCode added with the supplied timeCodeType\n * If time bases differ, it will retain the time base of this TimeCode instance\n * If supplied time code has a more granular time base - it will round down exceeding samples (hasn't reached that sample yet)\n *\n * Note: This might make you \"lose\" frames depending on granularity of time bases, e.g.\n * \"51@50\".add(\"25@25\") => \"101@50\"\n * while \"25@25\".add(\"51@50\") => \"50@25\" (not \"101@50\")\n *\n * @param timeCode A TimeCode instance you want to add with\n * @returns A new TimeCode instance with the addition applied\n */\n add(timeCode: TimeCode) {\n if (!timeCode?.timeBase || timeCode?.samples === undefined) {\n throw Error('Invalid timeCodeType, cannot be added');\n }\n const { numerator, denominator } = timeCode?.timeBase || {};\n\n let conformedTimeCode = timeCode;\n if (numerator !== this.timeBase.numerator || denominator !== this.timeBase.denominator) {\n conformedTimeCode = timeCode.conformTimeBase(this.timeBase);\n }\n const { samples } = conformedTimeCode;\n return new TimeCode({ samples: this.samples + samples, timeBase: this.timeBase });\n }\n\n /**\n * Return this TimeCode subtracted with the supplied timeCodeType\n * If time bases differ, it will retain the time base of the instance time code\n * If supplied time code has a more granular time base - it will round down exceeding samples (hasn't reached that sample yet)\n *\n * Note: This might make you \"lose\" frames depending on granularity of time bases, e.g.\n * \"101@50\".subtract(\"25@25\") => \"51@50\"\n * while \"50@25\".subtract(\"51@50\") => \"25@25\" (not \"49@50\")\n *\n * @param timeCode A TimeCode instance you want to subtract with\n * @returns A new TimeCode instance with the subtraction applied\n */\n subtract(timeCode: TimeCode) {\n if (!timeCode?.timeBase || timeCode?.samples === undefined) {\n throw Error('Invalid timeCodeType, cannot be subtracted');\n }\n const { timeBase: { numerator, denominator } = {} } = timeCode;\n let conformedTimeCode = timeCode;\n if (numerator !== this.timeBase.numerator || denominator !== this.timeBase.denominator) {\n conformedTimeCode = timeCode.conformTimeBase(this.timeBase);\n }\n const { samples } = conformedTimeCode;\n return new TimeCode({ samples: this.samples - samples, timeBase: this.timeBase });\n }\n\n /**\n * Creates a new TimeCode instance with specified timeBase and samples adjusted to that.\n *\n * If it conforms to a less granular time base - it will floor samples (hasn't reached that sample yet)\n * - e.g. \"51@50\".conformTo(\"PAL\") => \"25@PAL\" (not \"26@PAL\")\n *\n * @param timeBase The TimeBase it should conform the TimeCode to\n * @returns A new TimeCode instance with the conformTo timeBase applied\n */\n conformTimeBase(timeBase: TimeCodeInput['timeBase']) {\n const conformToTimeBase = timeBase instanceof TimeBase ? timeBase : createTimeBase(timeBase);\n\n const samples = Math.floor(\n this.samples /\n (this.timeBase.toRate({ fixed: false }) / conformToTimeBase.toRate({ fixed: false })),\n );\n const timeCode = { samples, timeBase: conformToTimeBase };\n return new TimeCode(timeCode);\n }\n\n /**\n * Get TimeCode as a text representation\n *\n * @remarks\n * Default format: samples@denominator(:numerator if > 1)\n * `constant` has precedence over `fraction` if both are true\n *\n * @param options Options for how to format text\n * @returns Text representation of TimeCode\n *\n * @category Time\n */\n toText(options?: {\n // Include time base even if seconds\n includeTimeBaseForSeconds?: boolean;\n // show as constant (e.g. @PAL)\n constant?: boolean;\n // show as fraction (@25:1)\n fraction?: boolean;\n }) {\n let timeCodeText = `${this.samples}`;\n const timeBaseText = this.timeBase.toText(options);\n if (options?.includeTimeBaseForSeconds || !['1', '1:1'].includes(timeBaseText)) {\n timeCodeText = [this.samples, timeBaseText].join('@');\n }\n return timeCodeText;\n }\n\n /**\n * Get TimeCode in a units object representation\n *\n * @returns Units (time and frames) for the time code\n */\n toUnits(): {\n hours: number;\n minutes: number;\n seconds: number;\n frames: number;\n } {\n const totalSamples = this.samples + (this.dropFrame ? getDroppedFramesFromSamples(this) : 0);\n let roundedFrameRate = this.timeBase.toRate({ rounded: true });\n\n // Calculated without drop-frame but with 2 decimal places\n if (['23.976', '23.98'].includes(this.timeBase.toConstant())) {\n roundedFrameRate = this.timeBase.toRate({ fixed: true });\n }\n\n const hours = Math.floor(totalSamples / (3600 * roundedFrameRate));\n const minutes = Math.floor(totalSamples / (60 * roundedFrameRate)) % 60;\n const seconds = Math.floor(totalSamples / roundedFrameRate) % 60;\n const frames = Math.floor(totalSamples % roundedFrameRate);\n return {\n hours,\n minutes,\n seconds,\n frames,\n };\n }\n\n /**\n * Get TimeCode in a time object representation\n * \"milliseconds\" is rounded down, if you want another representation use \"partialSeconds\"\n *\n * @returns Time for the time code\n */\n toTime(): {\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n partialSeconds: number;\n } {\n const totalSamples = this.samples + getDroppedFramesFromSamples(this);\n const { hours, minutes, seconds } = this.toUnits();\n const roundedFrameRate = this.timeBase.toRate({ rounded: true }) as number;\n const framesPrecise = totalSamples % roundedFrameRate;\n const milliseconds = Math.floor((1000 * framesPrecise) / roundedFrameRate);\n const partialSeconds = framesPrecise / roundedFrameRate;\n return {\n hours,\n minutes,\n seconds,\n milliseconds,\n partialSeconds,\n };\n }\n\n /**\n * Get TimeCode in a seconds representation\n *\n * @returns Total seconds for the time code\n */\n toSeconds() {\n const { numerator, denominator } = this.timeBase;\n return Math.round(1000 * +((this.samples * numerator) / denominator)) / 1000;\n }\n\n /**\n * Get TimeCode in a duration representation\n * The time unit char keys for the format string are:\n * - \"h\" for hour\n * - \"m\" for minute\n * - \"s\" for seconds\n * - \"S\" for milliseconds\n * Any other char will be kept in the duration output string.\n *\n * Add consecutive chars for zero padding.\n *\n * By default it:\n * - uses colon delimiter (e.g. for format \"hhmmss\")\n * - shows \"m:ss\" or \"h:mm:ss\" if format is undefined\n *\n * @param options Options for how to display duration\n * @returns Duration representation of the TimeCode\n */\n toDuration(options?: {\n // Specify format of duration string, e.g. hh:mm:ss.S for 01:23:04.5\n format?: string;\n }) {\n const { format } = options || {};\n const { hours, ...rest } = this.toTime();\n let { minutes, seconds, milliseconds } = rest;\n if (!!format && typeof format !== 'string') {\n throw Error('format has to be a string');\n }\n\n const isBefore = (unit: string, units: string[]) =>\n !format.includes(unit) ||\n !units.some((u) => format.includes(u) && format.lastIndexOf(unit) > format.indexOf(u));\n if (\n !!format &&\n !(isBefore('h', ['m', 's', 'S']) && isBefore('m', ['s', 'S']) && isBefore('s', ['S']))\n ) {\n throw Error('format order is unsupported (has to be h, m, s then S)');\n }\n\n if (!format) {\n return `${\n hours > 0 ? `${hours}:${`${minutes}`.padStart(2, '0')}` : minutes\n }:${`${seconds}`.padStart(2, '0')}`;\n }\n\n const countConsecutiveChars = (i: number, arr: string[]) => {\n let j = i;\n while (arr[j] === arr[j + 1]) {\n j += 1;\n }\n return j - i + 1;\n };\n\n const timeUnitKeys = ['h', 'm', 's', 'S'];\n\n const output: string[] = [];\n [...format].forEach((c, i, arr) => {\n switch (c) {\n case 'h': {\n if (arr[i - 1] === 'h') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n output.push(`${hours}`.padStart(amount, '0'));\n if (timeUnitKeys.includes(arr[i + amount])) {\n output.push(':');\n }\n break;\n }\n case 'm': {\n if (arr[i - 1] === 'm') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n if (!format.includes('h')) {\n minutes += hours * 60;\n }\n output.push(`${minutes}`.padStart(amount, '0'));\n if (timeUnitKeys.includes(arr[i + amount])) {\n output.push(':');\n }\n break;\n }\n case 's': {\n if (arr[i - 1] === 's') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n if (!format.includes('m')) {\n seconds += minutes * 60;\n }\n output.push(`${seconds}`.padStart(amount, '0'));\n if (timeUnitKeys.includes(arr[i + amount])) {\n output.push('.');\n }\n break;\n }\n case 'S': {\n if (arr[i - 1] === 'S') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n if (!format.includes('s')) {\n milliseconds += seconds * 1000;\n }\n output.push(`${Math.round(milliseconds / 10 ** (3 - amount))}`.padStart(amount, '0'));\n break;\n }\n default:\n output.push(c);\n }\n });\n return output.join('');\n }\n\n /**\n * Get TimeCode in a smpte representation\n *\n * @returns Smpte representation of the TimeCode\n */\n toSmpte() {\n if (this.samples === -Infinity) return '00:00:00:00';\n const { hours, minutes, seconds, frames } = this.toUnits();\n const hhmmss = [\n hours.toFixed().padStart(2, '0'),\n minutes.toFixed().padStart(2, '0'),\n seconds.toFixed().padStart(2, '0'),\n ].join(':');\n return [hhmmss, `${frames}`.padStart(2, '0')].join(this.frameSeparator);\n }\n\n /**\n * Get TimeCode as a VidiCore TimeCodeType object\n *\n * @returns TimeCode as `{ samples, timeBase }`\n */\n toObject() {\n return {\n samples: this.samples,\n timeBase: this.timeBase.toObject(),\n };\n }\n\n /**\n * @deprecated Use {@link TimeCode#toObject | toObject} instead\n *\n * @returns TimeCode as `{ samples, timeBase }`\n */\n toJson() {\n // eslint-disable-next-line no-console\n console.warn('Deprecated - use toObject instead');\n return this.toObject();\n }\n}\n","/* eslint-disable no-self-assign */\n\n/**\n * @private\n *\n * Using Euclid's algorithm\n *\n * @param num1 a number\n * @param num2 another number\n * @returns The greatest common divisor of num1 and num2\n */\nexport const getGreatestCommonDivisor = (num1: number, num2: number) => {\n let a = Math.abs(num1);\n let b = Math.abs(num2);\n while (a && b && a !== b) {\n if (a > b) {\n [a, b] = [a - b, b];\n } else {\n [a, b] = [a, b - a];\n }\n }\n return a || b;\n};\n","import { getGreatestCommonDivisor } from '../_utils/getGreatestCommonDivisor';\nimport { createTimeBase } from '../createTimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\nimport { TimeCode } from '../TimeCode';\nimport { TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nexport type FormatTimeCodeSecondsOptions = {\n /* The TimeBase the output TimeCode should have\n *\n * (if unset and useGCD=false, denominator will be 10^<amount-of-decimals>)\n */\n timeBase?: number | string | TimeBaseInput;\n /*\n * Samples and denominator are divided with GCD, e.g. 1.04 => 104@100 => 26@25\n * (ignored if timeBase is set)\n */\n useGCD?: boolean;\n} & TimeCodeInputOptions;\n\n/**\n * Format seconds to TimeCode object\n * Input time base is always 1:1 since it expects seconds as input\n *\n * Note: Max 15 digits accuracy (double precision float64), e.g.\n * - 10^6 seconds can have 10^9 decimals (nanosecond) precision\n * - 10^9 seconds can have 10^6 decimals (microsecond) precision\n * - 10^12 seconds can have 10^3 decimals (millisecond) precision\n *\n * @param seconds With or without decimals (\".\" and \",\" are both interpreted as decimal)\n * @param options Options for how to format the seconds to a TimeCode\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const formatTimeCodeSeconds = (\n seconds: string | number,\n options?: FormatTimeCodeSecondsOptions,\n) => {\n const { timeBase, useGCD = false, ...timeCodeOptions } = options || {};\n const secondsWithDot = `${seconds}`.replace(/,/g, '.');\n if (Number.isNaN(+secondsWithDot)) {\n throw new Error(`seconds must be digits, is ${seconds}`);\n }\n let denominator = 1;\n let samples;\n if (Number.isInteger(+secondsWithDot)) {\n samples = +secondsWithDot * denominator;\n } else {\n const [, ms] = secondsWithDot.split('.');\n const decimalPlaces = Math.min(ms?.length ?? 0, 16);\n denominator *= 10 ** decimalPlaces;\n samples = Math.round(Number(secondsWithDot) * denominator);\n }\n if (timeBase === undefined && useGCD) {\n const gcd = getGreatestCommonDivisor(denominator, samples);\n samples /= gcd;\n denominator /= gcd;\n }\n const timeCode = new TimeCode(\n { samples, timeBase: { denominator, numerator: 1 } },\n timeCodeOptions,\n );\n return timeBase !== undefined\n ? timeCode.conformTimeBase(createTimeBase(timeBase === true ? 1 : timeBase))\n : timeCode;\n};\n","import { getAmountOfFrameDrops } from '../../_utils/getAmountOfFrameDrops';\nimport { TimeBase } from '../../TimeBase';\n\nconst getDroppedFramesFromSmpte = (\n [hh, mm, ss, ff]: [number, number, number, number],\n samples: number,\n timeBase: TimeBase,\n) => {\n const roundedFrameRate = timeBase.toRate({ rounded: true });\n const dropFrames = getAmountOfFrameDrops(timeBase);\n if (samples === 0 || !dropFrames) {\n return 0;\n }\n\n const shouldDropMinute = mm % 10 !== 0;\n const shouldDropSecond = shouldDropMinute && ss === 0;\n const hourFrames = hh * (3600 * roundedFrameRate - 54 * dropFrames);\n const minuteFrames = mm * 60 * roundedFrameRate - (mm - Math.ceil(mm / 10)) * dropFrames;\n const secondFrames = ss * roundedFrameRate - (shouldDropMinute && ss > 1 ? dropFrames : 0);\n\n if (shouldDropSecond && ff < dropFrames) {\n throw new Error(\n `Frame does not exist for ${timeBase.toConstant() || timeBase.toRate()} drop-frame`,\n );\n }\n\n const frameFrames = shouldDropSecond ? ff - dropFrames : ff;\n\n const samplesWithoutDroppedFrames = hourFrames + minuteFrames + secondFrames + frameFrames;\n\n return samples - samplesWithoutDroppedFrames;\n};\n\nexport const getSamplesFromSmpte = (\n smpteValues: [number, number, number, number],\n timeBase: TimeBase,\n dropFrame: boolean,\n) => {\n const [hh, mm, ss, ff] = smpteValues;\n const roundedFrameRate = timeBase.toRate({ rounded: true });\n const samples =\n hh * 3600 * roundedFrameRate + mm * 60 * roundedFrameRate + ss * roundedFrameRate + ff;\n return samples - (dropFrame ? getDroppedFramesFromSmpte(smpteValues, samples, timeBase) : 0);\n};\n","export const splitSmpte = (smpte: string) => {\n const [nonColonFrameSeparator] = smpte?.match(/[^0-9:\\-_]/) || [];\n\n let smpteValues: string[] = [];\n if (nonColonFrameSeparator) {\n const [hhmmss, ff] = smpte.split(nonColonFrameSeparator);\n smpteValues = [...hhmmss.split(':'), ff];\n } else {\n smpteValues = smpte.split(':');\n }\n if (smpteValues.length !== 4) {\n throw new Error('Invalid format, must be \"##:##:##:##');\n }\n if (smpteValues.some((n) => Number.isNaN(n))) {\n throw new Error('Invalid format, values must be numbers');\n }\n const smpteFrameSeparator = nonColonFrameSeparator || ':';\n return {\n smpteValues: smpteValues.map(Number) as [number, number, number, number],\n smpteFrameSeparator,\n };\n};\n","import { isDropFrameTimeBase } from '../_utils/isDropFrameTimeBase';\nimport { createTimeBase } from '../createTimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\nimport { TimeCode } from '../TimeCode';\nimport { TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nimport { getSamplesFromSmpte } from './_utils/getSamplesFromSmpte';\nimport { splitSmpte } from './_utils/splitSmpte';\n\nconst EXCEEDING_OPTIONS = ['error', 'add', 'ignore'];\n\nexport type FormatTimeCodeSmpteOptions = {\n // TimeBase of smpte (and consequently TimeBase of output TimeCode)\n timeBase?: number | string | TimeBaseInput;\n // How to handle exceeding values (default `error`)\n exceedingMode?: 'add' | 'ignore' | 'error';\n /* Set it should parse and create time code with dropFrame\n *\n * Defaults to check timeBase (if supplied), otherwise true if smpte frame separator is ';' or ','\n */\n dropFrame?: boolean;\n /* The frame separator the TimeCode should store\n *\n * Defaults to the frame separator supplied smpte has)\n */\n frameSeparator?: string;\n} & Omit<TimeCodeInputOptions, 'dropFrame' | ' frameSeparator'>;\n\n/**\n * Format smpte text to a TimeCode Instance\n *\n * exceedingMode:\n * - \"overflow\" exceeding values will be kept (e.g. PAL and 00:00:00:25 => 00:00:01:00)\n * - \"truncate\" exceeding values will be truncated (e.g. PAL and 00:00:00:25 => 00:00:00:24)\n * - \"error\" exceeding values will throw error (e.g. PAL and 00:00:00:25 => Error)\n *\n * @param smpte String representation of smpte\n * @param options Options for creating the time code from smpte\n * @returns TimeCode instance created from smpte string\n *\n * @category Time\n */\nexport const formatTimeCodeSmpte = (smpte: string, options?: FormatTimeCodeSmpteOptions) => {\n const { exceedingMode = 'error', timeBase, ...timeCodeOptions } = options || {};\n if ([null, undefined].includes(smpte)) {\n throw new Error(`smpte cannot be undefined or null`);\n }\n if (typeof smpte !== 'string') {\n throw new Error(`smpte must be a string, is ${JSON.stringify(smpte)}`);\n }\n\n const { smpteValues, smpteFrameSeparator } = splitSmpte(smpte);\n const timeBaseInstance = createTimeBase(timeBase);\n\n const mergedOptions = {\n ...timeCodeOptions,\n frameSeparator: timeCodeOptions?.frameSeparator || smpteFrameSeparator,\n ...(timeCodeOptions?.dropFrame === undefined\n ? {\n dropFrame:\n timeBase !== undefined\n ? isDropFrameTimeBase(timeBaseInstance)\n : [';', ','].includes(smpteFrameSeparator),\n }\n : {}),\n };\n\n const roundedFrameRate = timeBaseInstance.toRate({ rounded: true });\n const maxFrame = Math.max(0, roundedFrameRate - 1);\n\n if (smpteValues.some((v) => v < 0)) {\n throw new Error('Negative values are not supported');\n }\n\n let samples;\n switch (exceedingMode) {\n case 'error': {\n const [hours, minutes, seconds, frames] = smpteValues;\n if (hours >= 100) {\n throw Error('Minutes has to be less than 60');\n }\n if (minutes >= 60) {\n throw Error('Minutes has to be less than 60');\n }\n if (seconds >= 60) {\n throw Error('Seconds has to be less than 60');\n }\n if (frames > maxFrame) {\n throw Error(`Frames has to be less or equal to ${maxFrame}`);\n }\n samples = getSamplesFromSmpte(smpteValues, timeBaseInstance, mergedOptions?.dropFrame);\n break;\n }\n case 'ignore': {\n const [hours, minutes, seconds, frames] = smpteValues;\n const truncatedSmpteValues: [number, number, number, number] = [\n Math.min(100, hours),\n Math.min(59, minutes),\n Math.min(59, seconds),\n Math.min(maxFrame, frames),\n ];\n samples = getSamplesFromSmpte(\n truncatedSmpteValues,\n timeBaseInstance,\n mergedOptions?.dropFrame,\n );\n break;\n }\n case 'add': {\n samples = getSamplesFromSmpte(smpteValues, timeBaseInstance, mergedOptions?.dropFrame);\n break;\n }\n default: {\n throw new Error(`Invalid exceedingMode, options are ${JSON.stringify(EXCEEDING_OPTIONS)}`);\n }\n }\n\n return new TimeCode({ samples, timeBase: timeBaseInstance }, mergedOptions);\n};\n","import { createTimeBase } from '../createTimeBase';\nimport { formatTimeBaseText } from '../formatTimeBaseText';\nimport { TimeBase } from '../TimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\nimport { TimeCode } from '../TimeCode';\nimport { TimeCodeInput, TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nexport type FormatTimeCodeTextOptions = {\n // The time base the returned TimeCode should have\n timeBase?: number | string | TimeBaseInput;\n} & TimeCodeInputOptions;\n/**\n * Format text to a TimeCode instance\n *\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const formatTimeCodeText = (\n /* A time code text (e.g. \"25@PAL\")\n *\n * Defaults to \"seconds\" (i.e. \"<seconds>@1:1\") if supplied as number or string without time base\n */\n timeCodeText?: number | string,\n // Options for how to format\n options?: FormatTimeCodeTextOptions,\n): TimeCode => {\n const { timeBase, ...timeCodeOptions } = options || {};\n let timeCodeObject: TimeCodeInput;\n\n if (timeCodeText === undefined) {\n timeCodeObject = { samples: 0 };\n } else if (typeof timeCodeText === 'number') {\n timeCodeObject = { samples: timeCodeText };\n } else if (timeCodeText.includes('@')) {\n const [samplesString, timeBaseText] = timeCodeText.split('@');\n const samples = Number(samplesString);\n timeCodeObject = { samples, timeBase: formatTimeBaseText(timeBaseText) };\n } else if (timeCodeText === '-INF') {\n timeCodeObject = { samples: -Infinity };\n } else if (timeCodeText === '+INF') {\n timeCodeObject = { samples: Infinity };\n } else {\n timeCodeObject = { samples: Number(timeCodeText) };\n }\n\n if (\n Number.isNaN(timeCodeObject?.samples) ||\n (timeCodeObject.timeBase && !(timeCodeObject.timeBase instanceof TimeBase))\n ) {\n throw new Error(`timeCodeText must be a number or sample@timeBase - is ${timeCodeText}`);\n }\n const timeCode = new TimeCode(timeCodeObject, timeCodeOptions);\n\n return timeBase ? timeCode.conformTimeBase(createTimeBase(timeBase)) : timeCode;\n};\n","import { TimeCode } from '../TimeCode';\nimport { TimeCodeInput, TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\n/**\n * Format an object to a TimeCode instance\n *\n * @param timeCode To create TimeCode instance of\n * @param options For the TimeCode constructor\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const formatTimeCodeType = (timeCode: TimeCodeInput, options?: TimeCodeInputOptions) =>\n new TimeCode(timeCode, options);\n","import { formatTimeCodeSeconds } from '../formatTimeCodeSeconds';\nimport { FormatTimeCodeSecondsOptions } from '../formatTimeCodeSeconds/formatTimeCodeSeconds';\nimport { formatTimeCodeSmpte } from '../formatTimeCodeSmpte';\nimport { FormatTimeCodeSmpteOptions } from '../formatTimeCodeSmpte/formatTimeCodeSmpte';\nimport { formatTimeCodeText } from '../formatTimeCodeText';\nimport { FormatTimeCodeTextOptions } from '../formatTimeCodeText/formatTimeCodeText';\nimport { formatTimeCodeType } from '../formatTimeCodeType';\nimport { TimeCodeInput, TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nconst hasSmpteFormat = (s: string) => !!s.match(/^(\\d\\d+):(\\d\\d+):(\\d\\d+)(:|;|\\.|,)(\\d\\d+)$/);\nconst isNumber = (s: string | number) => !Number.isNaN(Number(s));\n\nexport type CreateTimeCodeOptions =\n | TimeCodeInputOptions\n | FormatTimeCodeSmpteOptions\n | FormatTimeCodeSecondsOptions\n | FormatTimeCodeTextOptions;\n\n/**\n * Create a TimeCode instance from smpte, seconds/samples, timeCode object or string\n *\n * @param timeCode Smpte, seconds/samples, timeCode object or string\n * @param options For the format functions\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const createTimeCode = (\n timeCode: TimeCodeInput | string | number,\n options?: CreateTimeCodeOptions,\n) => {\n // TimeCode\n if (typeof timeCode !== 'string' && typeof timeCode !== 'number')\n return formatTimeCodeType(timeCode, options);\n // SMPTE\n if (typeof timeCode === 'string' && hasSmpteFormat(timeCode))\n return formatTimeCodeSmpte(timeCode, options as FormatTimeCodeSmpteOptions);\n if (['string', 'number'].includes(typeof timeCode) && isNumber(timeCode))\n return formatTimeCodeSeconds(timeCode, options as FormatTimeCodeSecondsOptions);\n if (typeof timeCode === 'string') {\n return formatTimeCodeText(timeCode, options as FormatTimeCodeTextOptions);\n }\n return undefined;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport { formatTimeCodeText } from '../../time';\nimport { parseTimespanList } from '../parseTimespanList';\n\nfunction timeToCueTime({ hours = 0, minutes = 0, seconds = 0, partialSeconds = 0 }) {\n const hourStr = hours.toFixed().padStart(2, '0');\n const minStr = minutes.toFixed().padStart(2, '0');\n const secondsStr = seconds.toFixed().padStart(2, '0');\n const partialStr = (partialSeconds * 10).toFixed().padStart(3, '0');\n return `${hourStr}:${minStr}:${secondsStr}.${partialStr}`;\n}\n\nexport type MetadataTypeToWebVttOptions = {\n // Name of group containing subtitle field/text\n subtitleGroup?: string;\n // Name of field (text) to use for the subtitles\n subtitleField?: string;\n};\n\nexport const defaultOptions: MetadataTypeToWebVttOptions = {\n subtitleGroup: 'stl_subtitle',\n subtitleField: 'stl_text',\n};\n\n/**\n * Convert metadata subtitle groups to WebVtt subtitles\n *\n * @param metadataType - Vidicore metadata object (should include subtitleGroup and subtitleField)\n * @param options - options for how to map subtitle group\n * @returns WebVtt subtitles\n *\n * @category Metadata\n */\nexport const metadataTypeToWebVtt = (\n metadataType: MetadataType,\n options?: MetadataTypeToWebVttOptions,\n) => {\n const { subtitleGroup, subtitleField } = { ...defaultOptions, ...(options || {}) };\n const { timespan: timespanList = [] } = metadataType || {};\n if (timespanList.length === 0) return '';\n const parsedTimespans = parseTimespanList(timespanList, {\n includeTimespanAttributes: true,\n sortTimespan: true,\n timespanAsList: true,\n overrideGroup: true,\n joinValue: ',',\n });\n const vttCues = parsedTimespans.map((timespan) => {\n const {\n start: startText,\n end: endText,\n [subtitleGroup]: { [subtitleField]: text } = {},\n } = (Array.isArray(timespan) ? timespan[0] : timespan) || {};\n if (!text) return '';\n const start = timeToCueTime(formatTimeCodeText(startText).toTime());\n const end = timeToCueTime(formatTimeCodeText(endText).toTime());\n return `${start} --> ${end} line:0%\\r${text}\\r`;\n });\n\n return `WEBVTT\\n\\n\\n${vttCues.join('\\n')}`;\n};\n","export type CreateFacetTypeFieldList = string[];\nexport type CreateFacetTypeOptions = {\n count: boolean;\n};\n\n/**\n * Create a Vidicore facet list\n *\n * @param fieldList Input to create facet of\n * @param options Options for creating the facet\n * @returns A VidiCore facet list\n *\n * @category Search\n */\nexport const createFacetType = (\n fieldList: CreateFacetTypeFieldList = [],\n options: Partial<CreateFacetTypeOptions> = { count: true },\n) =>\n fieldList.map((field) => ({\n field,\n name: field,\n count: options.count !== undefined ? options?.count : true,\n exclude: fieldList,\n }));\n","import { FacetType } from '@vidispine/types';\n\nexport type ParsedFacetTypeCount = { [fieldValue: string]: number };\n/** Parsed facet type */\nexport type ParsedFacetType = {\n // A key value object\n [fieldName: string]: ParsedFacetTypeCount;\n};\n\n/**\n * Parse a VidiCore facet type list\n *\n * @param facetType A facet type list to parse\n * @returns A parsed facet type list\n *\n * @category Search\n */\nexport const parseFacetType = (facetType: FacetType[] = []): ParsedFacetType => {\n const output: ParsedFacetType = {};\n facetType.forEach(({ name, field, count }) => {\n output[name || field] = count.reduce(\n (acc, { fieldValue, value }) => ({ ...acc, [fieldValue]: value }),\n {},\n );\n });\n return output;\n};\n","import { SearchResultEntryTimespanType } from '@vidispine/types';\n\nexport type ParseHighlightTimespanOptions = {\n // Return an array if there is a single value.\n arrayOnSingle?: boolean;\n // Return timespans as list.\n timespanAsList?: boolean;\n // String to join the values, eg ','.\n joinValue?: string;\n};\n\nexport type ParsedHighlightTimespan = {\n start?: string;\n end?: string;\n [key: string]: string | string[];\n};\n\nexport const defaultOptions: ParseHighlightTimespanOptions = {\n arrayOnSingle: true,\n joinValue: undefined as string,\n timespanAsList: false,\n};\n\n/**\n * Parses highlight timespan in VidiCore into key/value object.\n * The attributes can be targeted for each sub-type.\n * @param timespan - A VidiCore search timespan\n * @param options - Options which change how the timespans are parsed\n *\n * @category Search\n */\nexport const parseHighlightTimespan = (\n timespan: SearchResultEntryTimespanType,\n options: ParseHighlightTimespanOptions,\n): ParsedHighlightTimespan => {\n const {\n arrayOnSingle = true,\n joinValue = undefined,\n timespanAsList = false,\n } = { ...defaultOptions, ...(options || {}) };\n const { field = [], start, end } = timespan || {};\n const initialValue = timespanAsList ? { start, end } : {};\n const fieldList = field.reduce((acc, curr) => {\n const { name, value: valueList = [] } = curr;\n if (valueList.length === 0) return acc;\n let fieldValue;\n if (arrayOnSingle === false && valueList.length === 1) [fieldValue] = valueList;\n else if (joinValue) fieldValue = valueList.join(joinValue);\n else fieldValue = valueList;\n return { ...acc, [name]: fieldValue };\n }, initialValue);\n return fieldList;\n};\n","import { SearchResultEntryTimespanType } from '@vidispine/types';\n\nimport { parseHighlightTimespan } from '../parseHighlightTimespan';\nimport {\n ParsedHighlightTimespan,\n ParseHighlightTimespanOptions,\n defaultOptions as defaultParseHighlightTimespanOptions,\n} from '../parseHighlightTimespan/parseHighlightTimespan';\n\nexport type ParseHighlightTimespanListOptions = {\n // Return parsed timespan as list (in an array)\n timespanAsList?: boolean;\n // Character to join the start/end time codes with\n joinTimespan?: string;\n // Flatten to field-name/field-value (Note: field-values may be overwritten).\n flat?: boolean;\n // Flatten timespan to object with start/end as key.\n flatTimespan?: boolean;\n} & ParseHighlightTimespanOptions;\n\nexport const defaultOptions: ParseHighlightTimespanListOptions = {\n ...defaultParseHighlightTimespanOptions,\n timespanAsList: false,\n joinTimespan: '_',\n flat: false,\n flatTimespan: false,\n};\n\n/**\n * Parses highlight timespans from VidiCore into key/value object.\n * The attributes can be targeted for each sub-type.\n *\n * @param highlightTimespanList - A list of timespans from VidiCore.\n * @param options - Options to change how the timespans are parsed\n *\n * @category Search\n */\nexport const parseHighlightTimespanList = (\n highlightTimespanList: SearchResultEntryTimespanType[] = [],\n options?: ParseHighlightTimespanListOptions,\n): ParsedHighlightTimespan | ParsedHighlightTimespan[] => {\n const {\n timespanAsList,\n joinTimespan = '_',\n flat,\n flatTimespan,\n ...parseHighlightTimespanOptions\n } = { ...defaultOptions, ...(options || {}) };\n if (timespanAsList === true)\n return highlightTimespanList.map((timespan) =>\n parseHighlightTimespan(timespan, { ...parseHighlightTimespanOptions, timespanAsList }),\n );\n if (flat === true || flatTimespan === true)\n return highlightTimespanList.reduce(\n (a, timespan) => ({ ...a, ...parseHighlightTimespan(timespan, options) }),\n {} as ParsedHighlightTimespan,\n );\n return highlightTimespanList.reduce(\n (a, timespan) => ({\n ...a,\n [[timespan.start, timespan.end].join(joinTimespan)]: parseHighlightTimespan(\n timespan,\n options,\n ),\n }),\n {},\n );\n};\n","export const parseNowDate = (value = 'NOW') => {\n if (value.startsWith('NOW')) {\n if (value === 'NOW') return new Date();\n const sign = value[3];\n const number = Number(value.match(/(\\d+)/)[0]);\n const unit = value.match(/(\\d.*)/)[0].replace(/\\d/g, '');\n const nowDiff = new Date();\n switch (unit) {\n case 'HOUR':\n case 'HOURS':\n if (sign === '+') nowDiff.setHours(nowDiff.getHours() + number);\n if (sign === '-') nowDiff.setHours(nowDiff.getHours() - number);\n break;\n case 'DAY':\n case 'DAYS':\n if (sign === '+') nowDiff.setDate(nowDiff.getDate() + number);\n if (sign === '-') nowDiff.setDate(nowDiff.getDate() - number);\n break;\n case 'MONTH':\n case 'MONTHS':\n if (sign === '+') nowDiff.setMonth(nowDiff.getMonth() + number);\n if (sign === '-') nowDiff.setMonth(nowDiff.getMonth() - number);\n break;\n case 'YEAR':\n case 'YEARS':\n if (sign === '+') nowDiff.setFullYear(nowDiff.getFullYear() + number);\n if (sign === '-') nowDiff.setFullYear(nowDiff.getFullYear() - number);\n break;\n default:\n break;\n }\n return nowDiff;\n }\n return new Date(value);\n};\n\nexport default parseNowDate;\n","import { AudioMediaInfoType, BaseMediaInfoType, VideoMediaInfoType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\n\nexport type ParsedBaseMediaInfoType = { Bit_rate_mode?: string; Source?: string } & {\n [key: string]: string;\n};\n\nexport type ParsedAudioMediaInfoType = ParsedBaseMediaInfoType;\n\nexport type ParsedBinaryMediaInfoType = ParsedBaseMediaInfoType;\n\nexport type ParsedVideoMediaInfoType = ParsedBaseMediaInfoType & {\n Format_Settings_GOP?: string;\n intra_dc_precision?: string;\n};\n\nexport const parseBaseMediaInfoType = <\n T extends BaseMediaInfoType,\n TReturn extends ParsedBaseMediaInfoType,\n>(\n baseMediaInfoType: T,\n): TReturn => {\n const { property: keyValuePairTypes = [], ...props } = baseMediaInfoType || ({} as T);\n const parsedKeyValuePairType = parseKeyValuePairTypes(keyValuePairTypes);\n return { ...parsedKeyValuePairType, ...props } as unknown as TReturn;\n};\n\nexport const parseAudioMediaInfoType = (\n mediaInfoType: AudioMediaInfoType,\n): ParsedAudioMediaInfoType => parseBaseMediaInfoType(mediaInfoType);\n\nexport const parseVideoMediaInfoType = (\n mediaInfoType: VideoMediaInfoType,\n): ParsedVideoMediaInfoType => parseBaseMediaInfoType(mediaInfoType);\n\nexport const parseBinaryMediaInfoType = (\n mediaInfoType: BaseMediaInfoType,\n): ParsedBinaryMediaInfoType => parseBaseMediaInfoType(mediaInfoType);\n","import { AudioComponentType } from '@vidispine/types';\nimport parseFileSize from 'filesize';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\nimport { parseAudioMediaInfoType, ParsedAudioMediaInfoType } from '../_utils';\n\nconst sampleRateSymbols = { kB: 'kHz', B: 'Hz', mB: 'mHz' };\nconst bitRateSymbols = { kB: 'kbps', B: 'bps', MB: 'mbps' };\n\nexport type ParsedAudioComponentType = {\n audioFormat?: string;\n audioCodec?: string;\n audioSamplerate?: string;\n audioSamplerateSamples?: number;\n audioBitDepth?: string;\n audioBitrate?: string;\n audioBitRateMode?: string;\n audioChannels?: number;\n audioMetadata?: {\n [key: string]: string;\n };\n audioMediaInfo?: ParsedAudioMediaInfoType;\n};\n\n/**\n * Parses the technical information of a AudioComponentType.\n * @param audioComponentType - A AudioComponentType from VidiCore.\n * @returns Parsed component object.\n *\n * @category Shape\n */\nexport const parseAudioComponent = (\n audioComponentType: AudioComponentType,\n): ParsedAudioComponentType => {\n const {\n timeBase,\n channelCount: audioChannels,\n codec: audioCodec,\n mediaInfo,\n bitrate,\n metadata,\n } = audioComponentType;\n const audioMediaInfo = parseAudioMediaInfoType(mediaInfo);\n const {\n Format: audioFormat,\n Resolution: audioBitDepth,\n Bit_rate_mode: audioBitRateMode,\n } = audioMediaInfo;\n const audioMetadata = parseKeyValuePairTypes(metadata || []);\n const audioSamplerateSamples = timeBase?.denominator\n ? (timeBase?.denominator || 1) / (timeBase?.numerator || 1)\n : undefined;\n const audioSamplerate =\n audioSamplerateSamples !== undefined\n ? parseFileSize(audioSamplerateSamples, { base: 10, round: 1, symbols: sampleRateSymbols })\n : undefined;\n const audioBitrate =\n bitrate !== undefined\n ? parseFileSize(bitrate, { base: 10, round: 2, symbols: bitRateSymbols })\n : undefined;\n\n return {\n audioFormat,\n audioCodec,\n audioSamplerate,\n audioSamplerateSamples,\n audioBitDepth,\n audioBitrate,\n audioBitRateMode,\n audioChannels,\n audioMediaInfo,\n audioMetadata,\n };\n};\n","import { FileType } from '@vidispine/types';\nimport parseFileSize from 'filesize';\n\nexport type ParsedFileType = {\n uri?: string;\n hash?: string;\n fileSize?: string;\n fileSizeBytes?: number;\n path?: string;\n fileName?: string;\n fileId?: string;\n};\n\n/**\n * Parses a VidiCore file object\n *\n * @param fileType VidiCore file object\n * @returns A parsed file object\n *\n * @category File\n */\nexport const parseFileType = (fileType: FileType): ParsedFileType => {\n const { uri: uriList = [], size: fileSizeBytes, hash, path, id: fileId } = fileType;\n const [uri] = uriList;\n const fileSize = fileSizeBytes !== undefined ? parseFileSize(fileSizeBytes) : '';\n const fileName = path ? path.split('/').pop() : undefined;\n return {\n uri,\n hash,\n fileSize,\n fileSizeBytes,\n path,\n fileName,\n fileId,\n };\n};\n","import { BinaryComponentType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\nimport { parseFileType } from '../../file';\nimport { parseBaseMediaInfoType, ParsedBinaryMediaInfoType } from '../_utils';\n\nexport type ParsedBinaryComponentType = {\n binaryMetadata?: {\n [key: string]: string;\n };\n binaryMediaInfo?: ParsedBinaryMediaInfoType;\n};\n\n/**\n * Parses the technical information of a BinaryComponentType.\n * @param binaryComponentType - A BinaryComponentType from VidiCore.\n * @returns Parsed component object.\n *\n * @category Shape\n */\nexport const parseBinaryComponent = (\n binaryComponentType: BinaryComponentType = {},\n): ParsedBinaryComponentType => {\n const { file: fileList, mediaInfo, metadata = [] } = binaryComponentType;\n const binaryMetadata = parseKeyValuePairTypes(metadata);\n const binaryMediaInfo = parseBaseMediaInfoType(mediaInfo);\n\n let parsedBinaryComponent = { binaryMetadata, binaryMediaInfo };\n if (fileList) {\n const [fileType] = fileList;\n const parsedFileType = parseFileType(fileType);\n parsedBinaryComponent = {\n ...parsedBinaryComponent,\n ...parsedFileType,\n };\n }\n return parsedBinaryComponent;\n};\n","import { ContainerComponentType, TimeCodeType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\nimport { parseFileType } from '../../file';\nimport { ParsedFileType } from '../../file/parseFileType';\nimport { formatTimeCodeType } from '../../time';\nimport { parseBaseMediaInfoType, ParsedBaseMediaInfoType } from '../_utils';\n\n/**\n * Parsed container component\n */\nexport type ParsedContainerComponentType = {\n containerFormat?: string;\n videoFormat?: string;\n audioFormat?: string;\n textFormat?: string;\n originalFilename?: string;\n durationTimeCode?: TimeCodeType;\n duration?: string;\n startTimestamp?: TimeCodeType;\n startTimecode?: TimeCodeType;\n containerMetadata?: {\n [key: string]: string;\n };\n containerMediaInfo?: ParsedBaseMediaInfoType;\n} & ParsedFileType;\n\n/**\n * Parses the technical information of a ContainerComponentType.\n * @param containerComponentType - A ContainerComponentType from VidiCore.\n * @returns Parsed component object.\n *\n * @category Shape\n */\nexport const parseContainerComponent = (containerComponentType: ContainerComponentType = {}) => {\n const {\n mediaInfo,\n metadata,\n file: fileList,\n duration: durationTimeCode,\n startTimestamp,\n startTimecode,\n timeCodeTimeBase,\n } = containerComponentType;\n const containerMetadata = parseKeyValuePairTypes(metadata || []);\n const containerMediaInfo = parseBaseMediaInfoType(mediaInfo);\n let { Format: containerFormat } = containerMediaInfo;\n const {\n Video_Format_List: videoFormat,\n Audio_Format_List: audioFormat,\n Text_Format_List: textFormat,\n } = containerMediaInfo;\n if (containerFormat === undefined) {\n const { format } = containerComponentType;\n containerFormat = format;\n if (format && format.includes(',')) {\n const formatList = format.split(',');\n [containerFormat] = formatList;\n }\n }\n let parsedContainerComponentType: ParsedContainerComponentType = {\n containerFormat,\n videoFormat,\n audioFormat,\n textFormat,\n containerMetadata,\n containerMediaInfo,\n };\n if (containerMetadata.componentOriginalFilename) {\n parsedContainerComponentType.originalFilename = containerMetadata.componentOriginalFilename;\n }\n if (durationTimeCode !== undefined && durationTimeCode.samples !== 0) {\n const timeCode = formatTimeCodeType(durationTimeCode);\n parsedContainerComponentType.durationTimeCode = timeCode.toObject();\n parsedContainerComponentType.duration = timeCode.toDuration();\n }\n if (startTimestamp) {\n parsedContainerComponentType.startTimestamp = formatTimeCodeType(startTimestamp).toObject();\n }\n if (startTimecode !== undefined && timeCodeTimeBase) {\n parsedContainerComponentType.startTimecode = formatTimeCodeType({\n samples: startTimecode,\n timeBase: timeCodeTimeBase,\n });\n }\n if (fileList) {\n const [fileType] = fileList;\n const parsedFileType = parseFileType(fileType);\n parsedContainerComponentType = {\n ...parsedContainerComponentType,\n ...parsedFileType,\n };\n }\n return parsedContainerComponentType;\n};\n","import { VideoComponentType } from '@vidispine/types';\nimport parseFileSize from 'filesize';\n\nimport { parseKeyValuePairTypes, parseAspectRatio } from '../../_utils';\nimport {\n formatTimeBaseText,\n formatTimeBaseType,\n formatTimeCodeType,\n TimeBase,\n TimeCode,\n} from '../../time';\nimport { ParsedVideoMediaInfoType, parseVideoMediaInfoType } from '../_utils';\n\nexport type ParsedVideoComponentType = {\n videoFormat?: string;\n dimension?: string;\n frameRate?: string | number;\n height?: number;\n width?: number;\n timeBase?: TimeBase;\n timeCode?: TimeCode;\n videoCodec?: string;\n smpte?: string;\n videoBitrate?: string;\n fieldOrder?: string;\n colorSpace?: string;\n chromaSubsampling?: string;\n aspectRatio?: string;\n colorPrimaries?: string;\n videoMetadata?: {\n [key: string]: string;\n };\n videoMediaInfo?: ParsedVideoMediaInfoType;\n};\n\n/**\n * Parses the technical information of a VideoComponentType.\n * @param {Object} videoComponentType - A VideoComponentType from VidiCore.\n * @returns {Object} Parsed component object.\n *\n * @category Shape\n */\nexport const parseVideoComponent = (\n videoComponentType: VideoComponentType = {},\n): ParsedVideoComponentType => {\n const {\n codec: videoCodec,\n bitrate,\n fieldOrder,\n resolution,\n mediaInfo,\n metadata = [],\n } = videoComponentType;\n const videoMediaInfo = parseVideoMediaInfoType(mediaInfo);\n const videoMetadata = parseKeyValuePairTypes(metadata);\n const {\n Format: videoFormat,\n 'Frame rate': timeBaseText,\n 'Color space': colorSpace,\n 'Color primaries': colorPrimaries,\n Colorimetry: chromaSubsampling,\n } = videoMediaInfo;\n let timeBase;\n const { averageFrameRate, realBaseFrameRate } = videoComponentType;\n if (realBaseFrameRate !== undefined) {\n timeBase = formatTimeBaseType({\n numerator: realBaseFrameRate.denominator,\n denominator: realBaseFrameRate.numerator,\n });\n } else if (timeBaseText !== undefined) {\n timeBase = formatTimeBaseText(timeBaseText);\n } else if (averageFrameRate !== undefined) {\n timeBase = formatTimeBaseType({\n numerator: averageFrameRate.denominator,\n denominator: averageFrameRate.numerator,\n });\n }\n let { 'Frame count': samples } = videoMediaInfo;\n if (samples === undefined) {\n const { numberOfPackets } = videoComponentType;\n if (numberOfPackets !== undefined) samples = numberOfPackets.toString();\n }\n let timeCode: TimeCode;\n let frameRate: string | number;\n let smpte: string;\n if (samples && timeBase) {\n timeCode = formatTimeCodeType({ samples, timeBase });\n frameRate = timeCode.timeBase.toConstant() || timeCode.timeBase.toRate();\n smpte = timeCode.toSmpte();\n }\n const { height, width } = resolution || {};\n const aspectRatio = parseAspectRatio(resolution);\n const dimension = `${width}x${height}`;\n const videoBitrate = bitrate ? parseFileSize(bitrate, { bits: true }) : undefined;\n return {\n videoFormat,\n dimension,\n frameRate,\n height,\n width,\n timeBase,\n timeCode,\n videoCodec,\n smpte,\n videoBitrate,\n fieldOrder,\n colorSpace,\n chromaSubsampling,\n aspectRatio,\n colorPrimaries,\n videoMetadata,\n videoMediaInfo,\n };\n};\n","// eslint-disable-next-line import/no-cycle\nimport { ShapeType } from '@vidispine/types';\n\nimport { parseAudioComponent } from '../parseAudioComponent';\nimport { ParsedAudioComponentType } from '../parseAudioComponent/parseAudioComponent';\nimport { parseBinaryComponent } from '../parseBinaryComponent';\nimport { ParsedBinaryComponentType } from '../parseBinaryComponent/parseBinaryComponent';\nimport { parseContainerComponent } from '../parseContainerComponent';\nimport { ParsedContainerComponentType } from '../parseContainerComponent/parseContainerComponent';\nimport { parseVideoComponent } from '../parseVideoComponent';\nimport { ParsedVideoComponentType } from '../parseVideoComponent/parseVideoComponent';\n\nexport type ParsedShapeType = {\n uri?: string;\n tag?: string;\n mimeType?: string;\n} & ParsedContainerComponentType &\n ParsedBinaryComponentType &\n ParsedAudioComponentType &\n ParsedVideoComponentType;\n\n/**\n * Parses the technical information of a ShapeType and its various components.\n *\n * Will only parse the first videoComponent, audioComponent, binaryComponent in the corresponding array.\n * To parse a selected component see:\n * - {@link parseContainerComponent}\n * - {@link parseVideoComponent}\n * - {@link parseAudioComponent}\n * - {@link parseBinaryComponent}\n * @param shapeType - A ShapeType from VidiCore.\n * @returns Parsed shape object.\n *\n * @category Shape\n */\nexport const parseShapeType = (shapeType: ShapeType = {}): ParsedShapeType => {\n let parsedShape: ParsedShapeType = {};\n const {\n containerComponent,\n videoComponent: videoComponentList,\n audioComponent: audioComponentList,\n binaryComponent: binaryComponentList,\n mimeType: mimeTypeList = [],\n tag: tagList = [],\n } = shapeType;\n [parsedShape.tag] = tagList;\n [parsedShape.mimeType] = mimeTypeList;\n if (containerComponent) {\n const parsedContainerComponent = parseContainerComponent(containerComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedContainerComponent,\n };\n }\n if (videoComponentList) {\n const [videoComponent] = videoComponentList;\n const parsedVideoComponent = parseVideoComponent(videoComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedVideoComponent,\n };\n }\n if (audioComponentList) {\n const [audioComponent] = audioComponentList;\n const parsedAudioComponent = parseAudioComponent(audioComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedAudioComponent,\n };\n }\n if (binaryComponentList) {\n const [binaryComponent] = binaryComponentList;\n const parsedBinaryComponent = parseBinaryComponent(binaryComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedBinaryComponent,\n };\n }\n return parsedShape;\n};\n","// eslint-disable-next-line import/no-cycle\nimport { ShapeType } from '@vidispine/types';\n\nconst DOCUMENT_TYPES = {\n PDF: 'PDF',\n TEXT: 'TEXT',\n MSWORD: 'MSWORD',\n JSON: 'JSON',\n XML: 'XML',\n} as const;\n\nexport type DocumentType = keyof typeof DOCUMENT_TYPES;\n\n/**\n * Return a const for the document type of a shape (looks at mimeType)\n *\n * @param shape A VidiCore shape\n * @returns The document type for a shape\n *\n * @category Shape\n */\nexport const getShapeDocumentType = (shape: ShapeType = {}): DocumentType => {\n // shapeType.mimeType is always a string array,\n // but accepts passing in { mimeType: string } for backwards compatibility\n const { mimeType: mimeTypeArrayOrString } = shape;\n\n const mimeType = Array.isArray(mimeTypeArrayOrString)\n ? mimeTypeArrayOrString[0]\n : mimeTypeArrayOrString;\n\n if (!mimeType) return undefined;\n if (mimeType.endsWith('/pdf')) return DOCUMENT_TYPES.PDF;\n if (mimeType.startsWith('text/')) return DOCUMENT_TYPES.TEXT;\n if (mimeType.endsWith('/msword')) return DOCUMENT_TYPES.MSWORD;\n if (mimeType.endsWith('/json')) return DOCUMENT_TYPES.JSON;\n if (mimeType.endsWith('/xml')) return DOCUMENT_TYPES.XML;\n\n return undefined;\n};\n\nexport default getShapeDocumentType;\n","import { ItemType, ShapeType } from '@vidispine/types';\n\nimport { parseShapeType, ParsedShapeType } from '../parseShapeType';\n\nconst IMAGE_MIME_TYPES = [\n 'image/apng',\n 'image/bmp',\n 'image/gif',\n 'image/jpeg',\n 'image/x-icon',\n 'image/png',\n 'image/svg+xml',\n];\n\nconst VIDEO_MIME_TYPES = ['video/mp4'];\n\nconst AUDIO_MIME_TYPES = [\n 'audio/mp4',\n 'audio/mpeg',\n 'audio/x-aac',\n 'audio/aac',\n 'audio/x-wav',\n 'audio/wav',\n 'audio/accp',\n 'audio/ogg',\n 'audio/webm',\n 'audio/x-flac',\n];\n\nconst DEFAULT_ALLOWED_MIME_TYPES = [...VIDEO_MIME_TYPES, ...IMAGE_MIME_TYPES, ...AUDIO_MIME_TYPES];\n\nconst DEFAULT_ALLOWED_METHODS = ['http', 'https'];\n\nconst MP4_MIMETYPE = 'video/mp4';\nconst QUICKTIME_MIMETYPE = 'video/quicktime';\nconst M4V_MIMETYPE = 'video/x-m4v';\nconst MP4_CONTAINER = 'MPEG-4';\nconst MOV_CONTAINER = 'mov';\nconst H264_CODEC = 'h264';\n\n// Sort by tags in the order of previewShapeOrder, secondary alphabetical.\n// using reverse() so the first has highest index\nconst PREVIEW_SHAPE_ORDER = [\n '__mp4',\n '__mp3_160k',\n '__png',\n '__jpeg',\n '__gif',\n 'original',\n].reverse();\n\nexport type FilteredShapeListObject = {\n src: string;\n type: string;\n shape: ShapeType;\n parsedShape: ParsedShapeType;\n [key: string]: string | ParsedShapeType | ShapeType;\n};\n\nexport type FilterShapeSourceOption = {\n sortPriority?: Function;\n allowedMimeTypes?: string[];\n allowedMethods?: string[];\n sourceKey?: string;\n mimeTypeKey?: string;\n shapeKey?: string;\n parsedShapeKey?: string;\n};\n\nconst defaultSortPriority = (\n { parsedShape: { tag: firstEl } }: FilteredShapeListObject,\n { parsedShape: { tag: secondEl } }: FilteredShapeListObject,\n) => {\n if (PREVIEW_SHAPE_ORDER.includes(firstEl) || PREVIEW_SHAPE_ORDER.includes(secondEl)) {\n return PREVIEW_SHAPE_ORDER.indexOf(secondEl) - PREVIEW_SHAPE_ORDER.indexOf(firstEl);\n }\n return firstEl.toLowerCase().localeCompare(secondEl.toLowerCase());\n};\n\n/**\n * Filter a shape type list to get shapes that are playable in a browser\n *\n * @param itemType\n * @param options\n * @returns\n *\n * @category Shape\n */\nexport const filterShapeSource = (\n itemType: ItemType,\n options: FilterShapeSourceOption,\n): FilteredShapeListObject[] => {\n const {\n allowedMimeTypes = DEFAULT_ALLOWED_MIME_TYPES,\n allowedMethods = DEFAULT_ALLOWED_METHODS,\n sortPriority = defaultSortPriority,\n sourceKey = 'src',\n mimeTypeKey = 'type',\n shapeKey = 'shape',\n parsedShapeKey = 'parsedShape',\n } = options || {};\n const { shape: shapeList = [] } = itemType || {};\n const filteredShapeList: FilteredShapeListObject[] = shapeList.reduce((acc, shapeType) => {\n let type: string;\n let src: string;\n const parsedShape = parseShapeType(shapeType);\n const { uri, mimeType, containerFormat, videoCodec } = parsedShape;\n if (mimeType) {\n type = mimeType;\n if (\n (mimeType === QUICKTIME_MIMETYPE || mimeType === M4V_MIMETYPE) &&\n (containerFormat === MP4_CONTAINER || containerFormat === MOV_CONTAINER) &&\n videoCodec === H264_CODEC\n )\n type = MP4_MIMETYPE;\n }\n if (uri) {\n if (allowedMethods) {\n const [thisMethod] = uri.split('://');\n if (allowedMethods.includes(thisMethod)) src = uri;\n } else {\n src = uri;\n }\n }\n if (src && allowedMimeTypes.includes(type)) {\n acc.push({\n [sourceKey]: src,\n [mimeTypeKey]: type,\n [shapeKey]: shapeType,\n [parsedShapeKey]: parsedShape,\n });\n }\n return acc;\n }, []);\n if (typeof sortPriority === 'function') filteredShapeList.sort(defaultSortPriority);\n return filteredShapeList;\n};\n\nexport default filterShapeSource;\n","import { ShapeType } from '@vidispine/types';\n\nimport { parseShapeType } from '../parseShapeType';\n\n// eslint-disable-next-line import/no-cycle\n\nconst SHAPE_MEDIA_TYPES = {\n IMAGE: 'IMAGE',\n AUDIO: 'AUDIO',\n VIDEO: 'VIDEO',\n DOCUMENT: 'DOCUMENT',\n BINARY: 'BINARY',\n} as const;\n\nexport type ShapeMediaType = keyof typeof SHAPE_MEDIA_TYPES;\n\n/**\n * Returns a const for which media type a shape has\n *\n * @param shape\n * @returns\n *\n * @category Shape\n */\nexport const getShapeMediaType = (shape: ShapeType): ShapeMediaType => {\n const parsedShape = parseShapeType(shape);\n const { mimeType, videoCodec, audioCodec } = parsedShape;\n if (!mimeType) return undefined;\n if (mimeType.startsWith('audio/')) {\n if (audioCodec !== undefined) return SHAPE_MEDIA_TYPES.AUDIO;\n }\n if (mimeType.startsWith('video/')) {\n if (videoCodec !== undefined) return SHAPE_MEDIA_TYPES.VIDEO;\n if (audioCodec !== undefined) return SHAPE_MEDIA_TYPES.AUDIO;\n }\n if (mimeType.startsWith('image/')) return SHAPE_MEDIA_TYPES.IMAGE;\n if (mimeType.endsWith('/pdf')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.startsWith('text/')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/msword')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/json')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/xml')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/octet-stream')) return SHAPE_MEDIA_TYPES.BINARY;\n return undefined;\n};\n","import { ItemType } from '@vidispine/types';\n\nimport { createTimeCode, formatTimeCodeText } from '../../time';\nimport { TimeCode, TimeCodeInput } from '../../time/TimeCode/TimeCode';\n\n/**\n * Find the thumbnail uri in a VidiCore item object that's nearest a timeCode\n *\n * @remarks\n * Time code is included in path of VidiCore thumbnail uris\n *\n * @param itemType A VidiCore item object\n * @param timeCode A timeCode to find nearest thumbnail to\n * @returns A URI of a thumbnail, `undefined` if item has no thumbnails\n *\n * @category Thumbnail\n */\nexport const findNearestThumbnail = (itemType: ItemType, timeCode: TimeCode | TimeCodeInput) => {\n const tcSeconds = createTimeCode(timeCode).toSeconds();\n const { thumbnails = {} } = itemType || {};\n const { uri: srcList = [] } = thumbnails;\n const srcTcSeconds = srcList.map((url: string) => {\n const tc = new URL(url).pathname.split('/').pop();\n return formatTimeCodeText(tc).toSeconds();\n });\n\n const nearestSrcIndex = srcTcSeconds.reduce(\n (nearestIndex: number, curr, currIndex) =>\n Math.abs(curr - tcSeconds) < Math.abs(srcTcSeconds[nearestIndex] - tcSeconds)\n ? currIndex\n : nearestIndex,\n 0,\n );\n return srcList[nearestSrcIndex];\n};\n","import { TranscodePresetType } from '@vidispine/types';\n\nimport { parseAspectRatio } from '../../_utils';\nimport { formatTimeBaseType, TimeBase } from '../../time';\n\n/**\n * TODO\n */\nexport type ParsedMediaConvertTranscodePreset = {\n description?: string;\n containerFormat?: any;\n videoFormat?: string;\n height?: number;\n width?: number;\n dimension?: string;\n aspectRatio?: string;\n fieldOrder?: string;\n videoBitrate?: number;\n timeBase?: TimeBase;\n frameRate?: string | number;\n audioFormat?: string;\n audioSamplerate?: string;\n audioBitrate?: string;\n audioBitRateMode?: string;\n};\n\n/**\n * TODO\n *\n * @param mediaconvert\n * @returns\n *\n * @category Transcode\n */\nexport const parseMediaConvertPreset = (\n mediaconvert: TranscodePresetType['mediaconvert'],\n): ParsedMediaConvertTranscodePreset => {\n const output: ParsedMediaConvertTranscodePreset = {};\n const { outputSetting = [] } = mediaconvert || {};\n if (outputSetting.length === 0) return output;\n const mc: {\n Settings: {\n ContainerSettings: any;\n VideoDescription: any;\n AudioDescriptions: any;\n };\n } = JSON.parse(outputSetting[0]);\n const { Settings: { ContainerSettings, VideoDescription, AudioDescriptions } = {} } = mc;\n if (ContainerSettings) {\n output.containerFormat = ContainerSettings.Container;\n }\n if (VideoDescription) {\n const { CodecSettings = {} } = VideoDescription;\n const { Codec, ...otherSettings } = CodecSettings;\n output.videoFormat = Codec;\n const { Height: height, Width: width } = VideoDescription;\n output.height = height;\n output.width = width;\n if (height && width) {\n output.dimension = `${width}x${height}`;\n output.aspectRatio = parseAspectRatio({ height, width });\n }\n const [codecSpecs]: any[] = Object.values(otherSettings);\n if (codecSpecs) {\n output.fieldOrder = codecSpecs.InterlaceMode;\n if (output.fieldOrder && output.fieldOrder.includes('TOP')) output.fieldOrder = 'interlaced';\n output.videoBitrate = codecSpecs.Bitrate;\n const numerator = codecSpecs.FramerateDenominator; // other way round to vs ¯\\_(ツ)_/¯\n const denominator = codecSpecs.FramerateNumerator;\n const timeBase = formatTimeBaseType({ denominator, numerator });\n output.timeBase = timeBase;\n output.frameRate = timeBase.toConstant() || timeBase.toRate();\n }\n }\n if (AudioDescriptions && AudioDescriptions.length > 0) {\n const { CodecSettings = {} } = AudioDescriptions[0];\n const { Codec, ...otherSettings } = CodecSettings;\n output.audioFormat = Codec;\n const [codecSpecs]: any[] = Object.values(otherSettings);\n if (codecSpecs) {\n output.audioSamplerate = codecSpecs.SampleRate;\n output.audioBitrate = codecSpecs.Bitrate;\n output.audioBitRateMode = codecSpecs.RateControlMode;\n }\n }\n return output;\n};\n","import { TranscodePresetType } from '@vidispine/types';\n\nimport { parseAspectRatio } from '../../_utils';\nimport { formatTimeBaseType, TimeBase } from '../../time';\nimport { parseMediaConvertPreset } from '../parseMediaConvertPreset';\n\n/**\n * TODO\n */\nexport type ParsedTranscodePreset = {\n description?: string;\n containerFormat?: any;\n videoFormat?: string;\n height?: number;\n width?: number;\n dimension?: string;\n aspectRatio?: string;\n fieldOrder?: string;\n videoBitrate?: number;\n timeBase?: TimeBase;\n frameRate?: string | number;\n audioFormat?: string;\n audioSamplerate?: string;\n audioBitrate?: string;\n audioBitRateMode?: string;\n audioChannels?: number;\n};\n\n/**\n * TODO\n *\n * @param transcodePresetType\n * @returns\n *\n * @category Transcode\n */\nexport const parseTranscodePreset = (\n transcodePresetType: TranscodePresetType,\n): ParsedTranscodePreset => {\n const output: ParsedTranscodePreset = {};\n const { description, format, audio, video, mediaconvert } = transcodePresetType || {};\n if (mediaconvert) return { description, ...parseMediaConvertPreset(mediaconvert) };\n output.description = description;\n output.containerFormat = format;\n if (video) {\n output.videoFormat = video.codec;\n output.videoBitrate = video.bitrate;\n if (video.framerate) {\n const timeBase = formatTimeBaseType(video.framerate);\n output.timeBase = timeBase;\n output.frameRate = timeBase.toConstant() || timeBase.toRate();\n }\n if (video.scaling) {\n const { height, width } = video.scaling;\n output.height = height;\n output.width = width;\n if (height && width) {\n output.dimension = `${width}x${height}`;\n output.aspectRatio = parseAspectRatio({ height, width });\n }\n }\n }\n if (audio) {\n const { codec: audioFormat, channel } = audio;\n output.audioFormat = audioFormat;\n if (channel) output.audioChannels = channel.length;\n }\n return output;\n};\n"],"names":["gcd","a","b","parseAspectRatio","aspectRatio","width","height","undefined","denominator","widthRatio","heightRatio","toFixed","join","parseKeyValuePairTypes","keyValuePairTypes","Object","fromEntries","map","key","value","ROLE_NAMES","ACCESSCONTROL_READ","ACCESSCONTROL_WRITE","ADMINISTRATOR","AUTO_PROJECTION_READ","AUTO_PROJECTION_WRITE","COLLECTION_NOTIFICATION_READ","COLLECTION_NOTIFICATION_WRITE","COLLECTION_READ","COLLECTION_WRITE","CONFIGURATION_READ","DELETION_LOCK_NOTIFICATION_READ","DELETION_LOCK_NOTIFICATION_WRITE","DELETION_LOCK_READ","DELETION_LOCK_WRITE","DOCUMENT_NOTIFICATION_READ","DOCUMENT_NOTIFICATION_WRITE","DOCUMENT_READ","DOCUMENT_WRITE","ERROR_READ","ERROR_WRITE","EXPORT","EXPORT_TEMPLATE_READ","EXPORT_TEMPLATE_WRITE","EXTERNAL_ID_READ","EXTERNAL_ID_WRITE","FILE_NOTIFICATION_READ","FILE_NOTIFICATION_WRITE","FILE_READ","FILE_WRITE","GROUP_READ","GROUP_WRITE","IMPORT_WRITE","ITEM_ID_READ","ITEM_ID_WRITE","ITEM_NOTIFICATION_READ","ITEM_NOTIFICATION_WRITE","ITEM_WRITE","ITEM_SEARCH","ITEM_SHAPE_READ","ITEM_SHAPE_WRITE","ITEM_TIMELINE_READ","ITEM_TIMELINE_WRITE","ITEM_URI","JOB_NOTIFICATION_READ","JOB_NOTIFICATION_WRITE","JOB_READ","JOB_WRITE","LIBRARY_READ","LIBRARY_WRITE","LOCK_READ","LOCK_WRITE","LOG_READ","METADATA_DATASET_READ","METADATA_DATASET_WRITE","METADATA_FIELD_GROUP_READ","METADATA_FIELD_GROUP_WRITE","METADATA_FIELD_READ","METADATA_FIELD_WRITE","METADATA_GLOBAL_READ","METADATA_GLOBAL_WRITE","METADATA_LOCK_READ","METADATA_LOCK_WRITE","METADATA_READ","METADATA_SCHEMA_READ","METADATA_SCHEMA_WRITE","METADATA_WRITE","OTIF_ANALYZE","OTIF_READ","OTIF_WRITE","PLACEHOLDER_NOTIFICATION_READ","PLACEHOLDER_NOTIFICATION_WRITE","PROJECTION_READ","PROJECTION_WRITE","QUOTA_NOTIFICATION_READ","QUOTA_NOTIFICATION_WRITE","QUOTA_READ","QUOTA_WRITE","RELATION_READ","RELATION_WRITE","RESOURCE_READ","RESOURCE_WRITE","RUN_AS","SEARCH","SEQUENCE_READ","SEQUENCE_WRITE","SHAPE_TAG_READ","SHAPE_TAG_WRITE","SITE_MANAGER","SITE_RULE_READ","SITE_RULE_WRITE","STORAGE_GROUP_READ","STORAGE_GROUP_WRITE","STORAGE_NOTIFICATION_READ","STORAGE_NOTIFICATION_WRITE","STORAGE_READ","STORAGE_RULE_READ","STORAGE_RULE_WRITE","STORAGE_WRITE","SUPER_ACCESS_USER","TASKDEFINITION_READ","TASKDEFINITION_WRITE","THUMBNAIL_READ","THUMBNAIL_WRITE","TRANSCODER","TRANSFER_READ","TRANSFER_WRITE","USER","VXA","VXA_READ","SHARED_ATTRIBUTE_KEYS","SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS","GROUP_ATTRIBUTE_KEYS","FIELD_ATTRIBUTE_KEYS","FIELD_VALUE_ATTRIBUTE_KEYS","SYSTEM_FIELDGROUPS","SYSTEM_FIELDS","isValueObject","o","prototype","toString","call","isFieldType","v","includes","isFieldObject","isObject","isDate","isField","Array","isArray","some","isGroup","isGroupObject","entries","every","tryPluralize","str","arr","length","ensureKeysAreValid","keysToCheck","keysToMatch","unsupportedKeys","filter","k","Error","parseValue","toISOString","parseValueObject","valueObject","keys","parsedValue","parseFieldValue","flatMap","parseFieldObject","fieldObject","parsedFieldValue","fieldObjectWithoutValue","_excluded","_objectSpread","_toConsumableArray","parseField","field","parseGroupsAndFields","groupOrField","group","groupAttributes","forEach","_slicedToArray","name","_defineProperty","push","error","message","childGroup","parseTimespan","timespan","start","end","base","groupsAndFields","_excluded2","createMetadataType","input","t","sortTimespanList","timespan1","timespan2","split","firstStart","secondStart","Number","asArray","asSingle","pop","isStringArray","defaultOptions","includeValueAttributes","options","stringValue","attributes","valueAttributes","defaultParseValueOptions","joinValue","arrayOnSingleValue","parseValueList","valueList","parseValueOptions","_objectWithoutProperties","parsedValueList","includeFieldAttributes","defaultParseValueListOptions","parseValueListOptions","fieldAttributes","defaultParseFieldOptions","fieldAsList","arrayOnSingleField","overrideField","parseFieldList","fieldList","parseFieldListOptions","shouldOverride","output","parsedField","parsedFieldOutput","existingParsedFields","flat","values","defaultParseGroupOptions","defaultParseFieldListOptions","includeGroupAttributes","groupAsList","arrayOnSingleGroup","overrideGroup","parseGroup","parseGroupOptions","groupList","parsedFieldList","parsedGroupList","parseGroupList","parsedGroup","parsedGroupOutput","existingParsedGroups","defaultParseGroupListOptions","includeTimespanAttributes","arrayOnSingle","parseTimespanOptions","parseGroupListOptions","e","timespanAttributes","defaultParseTimespanOptions","timespanAsList","joinTimespan","sortTimespan","flatTimespan","parseTimespanList","timespanList","parseTimespanListOptions","otherOptions","sort","shouldFlatten","parsedTimespan","existingParsedTimespans","defaultParseTimespanListOptions","includeMetadataAttributes","parseMetadataType","metadataType","parseMetadataTypeOptions","parsedTimespanList","metadataAttributes","revision","parseSimpleMetadataType","simpleMetadataType","MAP_CONSTANT_TO_DEN_NUM","PAL","numerator","NTSC","NTSC30","TIME_BASE_CONSTANTS","TimeBase","timeBaseType","_classCallCheck","_createClass","constant","find","timeBaseConstant","thisTimeBaseText","thisTimeBaseType","timeBaseText","toConstant","fraction","String","rate","isInteger","rounded","Math","round","fixed","console","warn","toObject","formatTimeBaseText","isNaN","JSON","stringify","formatTimeBaseType","timeBase","createTimeBase","getAmountOfFrameDrops","isDropFrameTimeBase","getDroppedFramesFromSamples","timeCode","samples","amountOfFrameDrops","roundedFrameRate","toRate","oneMinuteNotDroppedFrames","amountOfFramesToDropPerMinute","tenMinuteFrames","amountOfTenMinuteChunks","floor","minuteRemainder","max","amountOfOneMinuteReminderChunks","frameRemainder","amountOfFrameRemainderChunks","TimeCode","timeCodeType","Infinity","dropFrame","frameSeparator","conformedTimeCode","conformTimeBase","conformToTimeBase","timeCodeText","toText","includeTimeBaseForSeconds","totalSamples","hours","minutes","seconds","frames","toUnits","framesPrecise","milliseconds","partialSeconds","format","toTime","rest","isBefore","unit","units","u","lastIndexOf","indexOf","padStart","countConsecutiveChars","i","j","timeUnitKeys","c","amount","hhmmss","getGreatestCommonDivisor","num1","num2","abs","formatTimeCodeSeconds","useGCD","timeCodeOptions","secondsWithDot","replace","ms","decimalPlaces","min","getDroppedFramesFromSmpte","hh","mm","ss","ff","dropFrames","shouldDropMinute","shouldDropSecond","hourFrames","minuteFrames","ceil","secondFrames","frameFrames","samplesWithoutDroppedFrames","getSamplesFromSmpte","smpteValues","splitSmpte","smpte","match","nonColonFrameSeparator","n","smpteFrameSeparator","EXCEEDING_OPTIONS","formatTimeCodeSmpte","exceedingMode","timeBaseInstance","mergedOptions","maxFrame","truncatedSmpteValues","formatTimeCodeText","timeCodeObject","samplesString","formatTimeCodeType","hasSmpteFormat","s","isNumber","createTimeCode","_typeof","timeToCueTime","hourStr","minStr","secondsStr","partialStr","subtitleGroup","subtitleField","metadataTypeToWebVtt","parsedTimespans","vttCues","startText","endText","text","createFacetType","count","exclude","parseFacetType","facetType","reduce","acc","fieldValue","parseHighlightTimespan","initialValue","curr","defaultParseHighlightTimespanOptions","parseHighlightTimespanList","highlightTimespanList","parseHighlightTimespanOptions","parseNowDate","startsWith","Date","sign","number","nowDiff","setHours","getHours","setDate","getDate","setMonth","getMonth","setFullYear","getFullYear","parseBaseMediaInfoType","baseMediaInfoType","property","props","parsedKeyValuePairType","parseAudioMediaInfoType","mediaInfoType","parseVideoMediaInfoType","sampleRateSymbols","kB","B","mB","bitRateSymbols","MB","parseAudioComponent","audioComponentType","audioChannels","channelCount","audioCodec","codec","mediaInfo","bitrate","metadata","audioMediaInfo","audioFormat","Format","audioBitDepth","Resolution","audioBitRateMode","Bit_rate_mode","audioMetadata","audioSamplerateSamples","audioSamplerate","parseFileSize","symbols","audioBitrate","parseFileType","fileType","uri","uriList","fileSizeBytes","size","hash","path","fileId","id","fileSize","fileName","parseBinaryComponent","binaryComponentType","fileList","file","binaryMetadata","binaryMediaInfo","parsedBinaryComponent","parsedFileType","parseContainerComponent","containerComponentType","durationTimeCode","duration","startTimestamp","startTimecode","timeCodeTimeBase","containerMetadata","containerMediaInfo","containerFormat","videoFormat","Video_Format_List","Audio_Format_List","textFormat","Text_Format_List","formatList","parsedContainerComponentType","componentOriginalFilename","originalFilename","toDuration","parseVideoComponent","videoComponentType","videoCodec","fieldOrder","resolution","videoMediaInfo","videoMetadata","colorSpace","colorPrimaries","chromaSubsampling","Colorimetry","averageFrameRate","realBaseFrameRate","numberOfPackets","frameRate","toSmpte","dimension","videoBitrate","bits","parseShapeType","shapeType","parsedShape","containerComponent","videoComponentList","videoComponent","audioComponentList","audioComponent","binaryComponentList","binaryComponent","mimeType","mimeTypeList","tag","tagList","parsedContainerComponent","parsedVideoComponent","parsedAudioComponent","DOCUMENT_TYPES","PDF","TEXT","MSWORD","XML","getShapeDocumentType","shape","mimeTypeArrayOrString","endsWith","IMAGE_MIME_TYPES","VIDEO_MIME_TYPES","AUDIO_MIME_TYPES","DEFAULT_ALLOWED_MIME_TYPES","DEFAULT_ALLOWED_METHODS","MP4_MIMETYPE","QUICKTIME_MIMETYPE","M4V_MIMETYPE","MP4_CONTAINER","MOV_CONTAINER","H264_CODEC","PREVIEW_SHAPE_ORDER","reverse","defaultSortPriority","firstEl","secondEl","toLowerCase","localeCompare","filterShapeSource","itemType","allowedMimeTypes","allowedMethods","sortPriority","sourceKey","mimeTypeKey","shapeKey","parsedShapeKey","shapeList","filteredShapeList","type","src","thisMethod","SHAPE_MEDIA_TYPES","IMAGE","AUDIO","VIDEO","DOCUMENT","BINARY","getShapeMediaType","findNearestThumbnail","tcSeconds","toSeconds","thumbnails","srcList","srcTcSeconds","url","tc","URL","pathname","nearestSrcIndex","nearestIndex","currIndex","parseMediaConvertPreset","mediaconvert","outputSetting","mc","parse","Settings","ContainerSettings","VideoDescription","AudioDescriptions","Container","CodecSettings","Codec","otherSettings","Height","Width","codecSpecs","InterlaceMode","Bitrate","FramerateDenominator","FramerateNumerator","SampleRate","RateControlMode","parseTranscodePreset","transcodePresetType","description","audio","video","framerate","scaling","channel"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAMA,GAAG,GAAG,SAANA,GAAM,CAACC,CAAD,EAAYC,CAAZ,EAAA;EAAA,OAAmCA,CAAC,GAAGF,GAAG,CAACE,CAAD,EAAID,CAAC,GAAGC,CAAR,CAAN,GAAmBD,CAAvD,CAAA;AAAA,CAAZ,CAAA;;AAIO,IAAME,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,WAAD,EAA8B;EAC5D,IAA0BA,IAAAA,GAAAA,WAAW,IAAI,EAAzC;MAAQC,KAAR,QAAQA,KAAR;MAAeC,MAAf,QAAeA,MAAf,CAAA;;AACA,EAAA,IAAID,KAAK,KAAKE,SAAV,IAAuBD,MAAM,KAAKC,SAAtC,EAAiD;AAC/C,IAAA,OAAOA,SAAP,CAAA;AACD,GAAA;;AACD,EAAA,IAAMC,WAAW,GAAGR,GAAG,CAACK,KAAD,EAAQC,MAAR,CAAvB,CAAA;AACA,EAAA,IAAIG,UAA2B,GAAGJ,KAAK,GAAGG,WAA1C,CAAA;AACA,EAAA,IAAIE,WAAW,GAAGJ,MAAM,GAAGE,WAA3B,CAAA;;EACA,IAAIC,UAAU,GAAG,EAAjB,EAAqB;AACnBC,IAAAA,WAAW,GAAG,CAAd,CAAA;IACAD,UAAU,GAAG,CAACJ,KAAK,GAAGC,MAAT,EAAiBK,OAAjB,CAAyB,CAAzB,CAAb,CAAA;AACD,GAAA;;EACD,OAAO,CAACF,UAAD,EAAaC,WAAb,EAA0BE,IAA1B,CAA+B,GAA/B,CAAP,CAAA;AACD,CAbM;;ACFP;AACA;AACA;AACA;AACA;AACA;AACA;IACaC,sBAAsB,GAAG,SAAzBA,sBAAyB,CAACC,iBAAD,EAA2C;EAC/E,OAAOC,MAAM,CAACC,WAAP,CACLF,iBAAiB,CAACG,GAAlB,CAAsB,UAAoB,IAAA,EAAA;IAAA,IAAjBC,GAAiB,QAAjBA,GAAiB;QAAZC,KAAY,QAAZA,KAAY,CAAA;AACxC,IAAA,OAAO,CAACD,GAAD,EAAMC,KAAN,CAAP,CAAA;AACD,GAFD,CADK,CAAP,CAAA;AAKD;;ACfD;AACA;AACA;AACA;AACA;AACO,IAAMC,UAAU,GAAG;AACxBC,EAAAA,kBAAkB,EAAE,qBADI;AAExBC,EAAAA,mBAAmB,EAAE,sBAFG;AAGxBC,EAAAA,aAAa,EAAE,gBAHS;AAIxBC,EAAAA,oBAAoB,EAAE,uBAJE;AAKxBC,EAAAA,qBAAqB,EAAE,wBALC;AAMxBC,EAAAA,4BAA4B,EAAE,+BANN;AAOxBC,EAAAA,6BAA6B,EAAE,gCAPP;AAQxBC,EAAAA,eAAe,EAAE,kBARO;AASxBC,EAAAA,gBAAgB,EAAE,mBATM;AAUxBC,EAAAA,kBAAkB,EAAE,qBAVI;AAWxBC,EAAAA,+BAA+B,EAAE,kCAXT;AAYxBC,EAAAA,gCAAgC,EAAE,mCAZV;AAaxBC,EAAAA,kBAAkB,EAAE,qBAbI;AAcxBC,EAAAA,mBAAmB,EAAE,sBAdG;AAexBC,EAAAA,0BAA0B,EAAE,6BAfJ;AAgBxBC,EAAAA,2BAA2B,EAAE,8BAhBL;AAiBxBC,EAAAA,aAAa,EAAE,gBAjBS;AAkBxBC,EAAAA,cAAc,EAAE,iBAlBQ;AAmBxBC,EAAAA,UAAU,EAAE,aAnBY;AAoBxBC,EAAAA,WAAW,EAAE,cApBW;AAqBxBC,EAAAA,MAAM,EAAE,SArBgB;AAsBxBC,EAAAA,oBAAoB,EAAE,uBAtBE;AAuBxBC,EAAAA,qBAAqB,EAAE,wBAvBC;AAwBxBC,EAAAA,gBAAgB,EAAE,mBAxBM;AAyBxBC,EAAAA,iBAAiB,EAAE,oBAzBK;AA0BxBC,EAAAA,sBAAsB,EAAE,yBA1BA;AA2BxBC,EAAAA,uBAAuB,EAAE,0BA3BD;AA4BxBC,EAAAA,SAAS,EAAE,YA5Ba;AA6BxBC,EAAAA,UAAU,EAAE,aA7BY;AA8BxBC,EAAAA,UAAU,EAAE,aA9BY;AA+BxBC,EAAAA,WAAW,EAAE,cA/BW;AAgCxBC,EAAAA,YAAY,EAAE,SAhCU;AAiCxBC,EAAAA,YAAY,EAAE,eAjCU;AAkCxBC,EAAAA,aAAa,EAAE,gBAlCS;AAmCxBC,EAAAA,sBAAsB,EAAE,yBAnCA;AAoCxBC,EAAAA,uBAAuB,EAAE,0BApCD;AAqCxBC,EAAAA,UAAU,EAAE,aArCY;AAsCxBC,EAAAA,WAAW,EAAE,cAtCW;AAuCxBC,EAAAA,eAAe,EAAE,kBAvCO;AAwCxBC,EAAAA,gBAAgB,EAAE,mBAxCM;AAyCxBC,EAAAA,kBAAkB,EAAE,qBAzCI;AA0CxBC,EAAAA,mBAAmB,EAAE,sBA1CG;AA2CxBC,EAAAA,QAAQ,EAAE,WA3Cc;AA4CxBC,EAAAA,qBAAqB,EAAE,wBA5CC;AA6CxBC,EAAAA,sBAAsB,EAAE,yBA7CA;AA8CxBC,EAAAA,QAAQ,EAAE,WA9Cc;AA+CxBC,EAAAA,SAAS,EAAE,YA/Ca;AAgDxBC,EAAAA,YAAY,EAAE,eAhDU;AAiDxBC,EAAAA,aAAa,EAAE,gBAjDS;AAkDxBC,EAAAA,SAAS,EAAE,YAlDa;AAmDxBC,EAAAA,UAAU,EAAE,aAnDY;AAoDxBC,EAAAA,QAAQ,EAAE,WApDc;AAqDxBC,EAAAA,qBAAqB,EAAE,wBArDC;AAsDxBC,EAAAA,sBAAsB,EAAE,yBAtDA;AAuDxBC,EAAAA,yBAAyB,EAAE,4BAvDH;AAwDxBC,EAAAA,0BAA0B,EAAE,6BAxDJ;AAyDxBC,EAAAA,mBAAmB,EAAE,sBAzDG;AA0DxBC,EAAAA,oBAAoB,EAAE,uBA1DE;AA2DxBC,EAAAA,oBAAoB,EAAE,uBA3DE;AA4DxBC,EAAAA,qBAAqB,EAAE,wBA5DC;AA6DxBC,EAAAA,kBAAkB,EAAE,qBA7DI;AA8DxBC,EAAAA,mBAAmB,EAAE,sBA9DG;AA+DxBC,EAAAA,aAAa,EAAE,gBA/DS;AAgExBC,EAAAA,oBAAoB,EAAE,uBAhEE;AAiExBC,EAAAA,qBAAqB,EAAE,wBAjEC;AAkExBC,EAAAA,cAAc,EAAE,iBAlEQ;AAmExBC,EAAAA,YAAY,EAAE,eAnEU;AAoExBC,EAAAA,SAAS,EAAE,YApEa;AAqExBC,EAAAA,UAAU,EAAE,aArEY;AAsExBC,EAAAA,6BAA6B,EAAE,gCAtEP;AAuExBC,EAAAA,8BAA8B,EAAE,iCAvER;AAwExBC,EAAAA,eAAe,EAAE,kBAxEO;AAyExBC,EAAAA,gBAAgB,EAAE,mBAzEM;AA0ExBC,EAAAA,uBAAuB,EAAE,0BA1ED;AA2ExBC,EAAAA,wBAAwB,EAAE,2BA3EF;AA4ExBC,EAAAA,UAAU,EAAE,aA5EY;AA6ExBC,EAAAA,WAAW,EAAE,cA7EW;AA8ExBC,EAAAA,aAAa,EAAE,gBA9ES;AA+ExBC,EAAAA,cAAc,EAAE,iBA/EQ;AAgFxBC,EAAAA,aAAa,EAAE,gBAhFS;AAiFxBC,EAAAA,cAAc,EAAE,iBAjFQ;AAkFxBC,EAAAA,MAAM,EAAE,SAlFgB;AAmFxBC,EAAAA,MAAM,EAAE,SAnFgB;AAoFxBC,EAAAA,aAAa,EAAE,gBApFS;AAqFxBC,EAAAA,cAAc,EAAE,iBArFQ;AAsFxBC,EAAAA,cAAc,EAAE,iBAtFQ;AAuFxBC,EAAAA,eAAe,EAAE,kBAvFO;AAwFxBC,EAAAA,YAAY,EAAE,eAxFU;AAyFxBC,EAAAA,cAAc,EAAE,iBAzFQ;AA0FxBC,EAAAA,eAAe,EAAE,kBA1FO;AA2FxBC,EAAAA,kBAAkB,EAAE,qBA3FI;AA4FxBC,EAAAA,mBAAmB,EAAE,sBA5FG;AA6FxBC,EAAAA,yBAAyB,EAAE,4BA7FH;AA8FxBC,EAAAA,0BAA0B,EAAE,6BA9FJ;AA+FxBC,EAAAA,YAAY,EAAE,eA/FU;AAgGxBC,EAAAA,iBAAiB,EAAE,oBAhGK;AAiGxBC,EAAAA,kBAAkB,EAAE,qBAjGI;AAkGxBC,EAAAA,aAAa,EAAE,gBAlGS;AAmGxBC,EAAAA,iBAAiB,EAAE,oBAnGK;AAoGxBC,EAAAA,mBAAmB,EAAE,sBApGG;AAqGxBC,EAAAA,oBAAoB,EAAE,uBArGE;AAsGxBC,EAAAA,cAAc,EAAE,iBAtGQ;AAuGxBC,EAAAA,eAAe,EAAE,kBAvGO;AAwGxBC,EAAAA,UAAU,EAAE,aAxGY;AAyGxBC,EAAAA,aAAa,EAAE,gBAzGS;AA0GxBC,EAAAA,cAAc,EAAE,iBA1GQ;AA2GxBC,EAAAA,IAAI,EAAE,OA3GkB;AA4GxBC,EAAAA,GAAG,EAAE,MA5GmB;AA6GxBC,EAAAA,QAAQ,EAAE,WAAA;AA7Gc;;ACE1B,IAAMC,qBAAwD,GAAG,CAC/D,MAD+D,EAE/D,MAF+D,EAG/D,WAH+D,EAI/D,QAJ+D,EAK/D,UAL+D,EAM/D,MAN+D,CAAjE,CAAA;AASA,IAAMC,qCAAqC,GAAG,CAC5C,MAD4C,EAE5C,IAF4C,EAG5C,YAH4C,EAI5C,MAJ4C,EAK5C,aAL4C,CAA9C,CAAA;AAQA;AACA;AACA;AACA;AACA;;AACaC,IAAAA,oBAAsD,GAC9DF,EAAAA,CAAAA,MAAAA,CAAAA,qBAD8D,EAE9DC,qCAF8D,EAGjE,CAAA,OAHiE,EAIjE,OAJiE,EAKjE,OALiE,CAA5D,EAAA;AAQP;AACA;AACA;AACA;AACA;;AACaE,IAAAA,oBAAsD,GAC9DH,EAAAA,CAAAA,MAAAA,CAAAA,qBAD8D,EAE9DC,qCAF8D,EAAA,CAGjE,OAHiE,EAIjE,WAJiE,EAKjE,MALiE,EAMjE,OANiE,CAA5D,EAAA;AASP;AACA;AACA;AACA;AACA;;AACO,IAAMG,0BAAuD,GAC/DJ,EAAAA,CAAAA,MAAAA,CAAAA,qBAD+D,GAElE,OAFkE,EAGlE,MAHkE,CAA7D;;ACxDP;AACA;AACA;AACA;AACA;AACO,IAAMK,kBAAkB,GAAG,CAChC,cADgC,EAEhC,SAFgC,EAGhC,SAHgC,EAIhC,YAJgC,EAKhC,gBALgC,EAMhC,cANgC,EAOhC,WAPgC,EAQhC,iBARgC,EAShC,iBATgC,EAUhC,uBAVgC,EAWhC,eAXgC,EAA3B;AAcP;AACA;AACA;AACA;AACA;;AACaC,IAAAA,aAAa,GAAG,CAC3B,OAD2B,EAE3B,MAF2B,EAG3B,UAH2B,EAI3B,yBAJ2B,EAK3B,+BAL2B,EAM3B,qBAN2B,EAO3B,QAP2B,EAQ3B,cAR2B,EAS3B,WAT2B,EAU3B,UAV2B,EAW3B,SAX2B,EAY3B,eAZ2B,EAa3B,cAb2B,EAc3B,sBAd2B,EAe3B,uBAf2B,EAgB3B,kBAhB2B,EAiB3B,aAjB2B,EAkB3B,oBAlB2B,EAmB3B,oBAnB2B,EAoB3B,gBApB2B,EAqB3B,eArB2B,EAsB3B,gBAtB2B,EAuB3B,iBAvB2B,EAwB3B,kBAxB2B,EAyB3B,YAzB2B,EA0B3B,QA1B2B,EA2B3B,cA3B2B,EA4B3B,mBA5B2B,EA6B3B,uBA7B2B,EA8B3B,4BA9B2B,EA+B3B,SA/B2B,EAgC3B,cAhC2B,EAiC3B,oBAjC2B,EAkC3B,0BAlC2B,EAmC3B,WAnC2B,EAoC3B,iBApC2B,EAqC3B,WArC2B,EAsC3B,gBAtC2B,EAuC3B,8BAvC2B,EAwC3B,iBAxC2B,EAyC3B,sBAzC2B,EA0C3B,gBA1C2B,EA2C3B,qBA3C2B,EA4C3B,YA5C2B,EA6C3B,iBA7C2B,EA8C3B,0BA9C2B,EA+C3B,eA/C2B,EAgD3B,oBAhD2B,EAiD3B,wBAjD2B,EAkD3B,oBAlD2B,EAmD3B,yBAnD2B,EAoD3B,qBApD2B,EAqD3B,0BArD2B,EAsD3B,cAtD2B,EAuD3B,UAvD2B,EAwD3B,mBAxD2B,EAyD3B,eAzD2B,EA0D3B,eA1D2B,EA2D3B,cA3D2B,EA4D3B,kBA5D2B,EA6D3B,oBA7D2B,EA8D3B,kBA9D2B,EA+D3B,WA/D2B,EAgE3B,aAhE2B,EAiE3B,kBAjE2B,EAkE3B,iBAlE2B,EAmE3B,UAnE2B,EAoE3B,aApE2B,EAqE3B,SArE2B,EAsE3B,SAtE2B,EAuE3B,KAvE2B,EAwE3B,KAxE2B,EAyE3B,KAzE2B,EA0E3B,KA1E2B,EA2E3B,IA3E2B,EA4E3B,KA5E2B,EA6E3B,KA7E2B,EA8E3B,KA9E2B,EA+E3B,KA/E2B,EAgF3B,KAhF2B,EAiF3B,KAjF2B,EAkF3B,KAlF2B,EAmF3B,KAnF2B,EAoF3B,IApF2B,EAqF3B,IArF2B,EAsF3B,KAtF2B,EAuF3B,IAvF2B,EAwF3B,KAxF2B,EAyF3B,KAzF2B,EA0F3B,KA1F2B,EA2F3B,IA3F2B,EA4F3B,KA5F2B,EA6F3B,IA7F2B,EA8F3B,KA9F2B,EA+F3B,KA/F2B,EAgG3B,IAhG2B,EAiG3B,KAjG2B,EAkG3B,KAlG2B,EAmG3B,KAnG2B,EAoG3B,gBApG2B,EAqG3B,UArG2B,EAsG3B,WAtG2B,EAuG3B,mBAvG2B,EAwG3B,iBAxG2B,EAyG3B,gBAzG2B,EA0G3B,uBA1G2B,EA2G3B,uBA3G2B,EA4G3B,wBA5G2B,EA6G3B,mBA7G2B,EA8G3B,mBA9G2B,EA+G3B,gBA/G2B,EAgH3B,iBAhH2B,EAiH3B,SAjH2B,EAkH3B,YAlH2B,EAmH3B,kBAnH2B,EAoH3B,sBApH2B,EAqH3B,eArH2B,EAsH3B,SAtH2B,EAuH3B,mBAvH2B,EAwH3B,kBAxH2B,EAyH3B,mBAzH2B,EA0H3B,aA1H2B,EA2H3B,WA3H2B,EA4H3B,UA5H2B,EA6H3B,WA7H2B,EA8H3B,mBA9H2B,EA+H3B,OA/H2B,EAgI3B,cAhI2B,EAiI3B,KAjI2B,EAkI3B,IAlI2B,EAmI3B,KAnI2B,EAoI3B,IApI2B,EAqI3B,IArI2B,EAsI3B,KAtI2B,EAuI3B,KAvI2B,EAwI3B,IAxI2B,EAyI3B,IAzI2B,EA0I3B,IA1I2B;;;;;;;;;ACuB7B,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,CAAD,EAAA;AAAA,EAAA,OACpB3H,MAAM,CAAC4H,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BH,CAA/B,CAAA,KAAsC,iBAAtC,IAA2DA,CAAC,CAACvH,KAAF,KAAYZ,SADnD,CAAA;AAAA,CAAtB,CAAA;;AAGA,IAAMuI,WAAW,GAAG,SAAdA,WAAc,CAACC,CAAD,EAAA;EAAA,OAClB,CAAC,QAAD,EAAW,SAAX,EAAsB,QAAtB,CAAgCC,CAAAA,QAAhC,CAAgDD,2BAAAA,CAAAA,CAAhD,CADkB,CAAA,CAAA;AAAA,CAApB,CAAA;;AAGA,IAAME,aAAa,GAAG,SAAhBA,aAAgB,CAACP,CAAD,EAAA;AAAA,EAAA,OACpBD,aAAa,CAACC,CAAD,CAAb,KAAqB,CAAAA,CAAC,KAAA,IAAD,IAAAA,CAAC,KAAD,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,CAAC,CAAEvH,KAAH,MAAa,IAAb,IAAqBsH,aAAa,CAACC,CAAC,CAACvH,KAAH,CAAlC,IAA+C2H,WAAW,CAACJ,CAAC,CAACvH,KAAH,CAA/E,CADoB,CAAA;AAAA,CAAtB,CAAA;;AAGA,IAAM+H,QAAQ,GAAG,SAAXA,QAAW,CAACR,CAAD,EAAA;EAAA,OACf3H,MAAM,CAAC4H,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BH,CAA/B,CAAA,KAAsC,iBADvB,CAAA;AAAA,CAAjB,CAAA;;AAGA,IAAMS,MAAM,GAAG,SAATA,MAAS,CAACT,CAAD,EAAA;EAAA,OAAuB3H,MAAM,CAAC4H,SAAP,CAAiBC,QAAjB,CAA0BC,IAA1B,CAA+BH,CAA/B,CAAA,KAAsC,eAA7D,CAAA;AAAA,CAAf,CAAA;;AACA,IAAMU,OAAO,GAAG,SAAVA,OAAU,CAACjI,KAAD,EAAqC;EACnD,IAAIA,KAAK,KAAK,IAAd,EAAoB;AAClB,IAAA,OAAO,IAAP,CAAA;AACD,GAAA;;AACD,EAAA,IAAIkI,KAAK,CAACC,OAAN,CAAcnI,KAAd,CAAJ,EAA0B;AACxB,IAAA,OAAOA,KAAK,CAACoI,IAAN,CAAWH,OAAX,CAAP,CAAA;AACD,GAAA;;AACD,EAAA,OAAON,WAAW,CAAC3H,KAAD,CAAX,IAAsB8H,aAAa,CAAC9H,KAAD,CAAnC,IAA8CgI,MAAM,CAAChI,KAAD,CAA3D,CAAA;AACD,CARD,CAAA;;AAUA,IAAMqI,OAAO,GAAG,SAAVA,OAAU,CAACrI,KAAD,EAAoD;AAClE,EAAA,IAAMsI,aAAa,GAAG,SAAhBA,aAAgB,CAACV,CAAD,EAAA;AAAA,IAAA,OAAYG,QAAQ,CAACH,CAAD,CAAR,IAAeA,CAAC,CAAC5H,KAAF,KAAYZ,SAA3B,IAAwC,CAAC,CAACQ,MAAM,CAAC2I,OAAP,CAAevI,KAAf,CAAtD,CAAA;GAAtB,CAAA;;AACA,EAAA,IAAIkI,KAAK,CAACC,OAAN,CAAcnI,KAAd,CAAJ,EAA0B;AACxB,IAAA,OAAOA,KAAK,CAACwI,KAAN,CAAYH,OAAZ,CAAP,CAAA;AACD,GAAA;;EACD,OAAOC,aAAa,CAACtI,KAAD,CAApB,CAAA;AACD,CAND,CAAA;;AAQA,IAAMyI,YAAY,GAAG,SAAfA,YAAe,CAACC,GAAD,EAAcC,GAAd,EAAA;EAAA,OAA6BD,GAAG,IAAIC,GAAG,CAACC,MAAJ,GAAa,CAAb,GAAiB,GAAjB,GAAuB,EAA3B,CAAhC,CAAA;AAAA,CAArB,CAAA;;AAEA,IAAMC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,WAAD,EAAwBC,WAAxB,EAAkD;AAC3E,EAAA,IAAMC,eAAe,GAAGF,WAAW,CAACG,MAAZ,CAAmB,UAACC,CAAD,EAAA;AAAA,IAAA,OAAO,CAACH,WAAW,CAAClB,QAAZ,CAAqBqB,CAArB,CAAR,CAAA;AAAA,GAAnB,CAAxB,CAAA;;EACA,IAAIF,eAAe,CAACJ,MAApB,EAA4B;AAC1B,IAAA,MAAMO,KAAK,CAAA,cAAA,CAAA,MAAA,CACMV,YAAY,CAAC,KAAD,EAAQO,eAAR,CADlB,EAAA,IAAA,CAAA,CAAA,MAAA,CAC+CA,eAAe,CAACvJ,IAAhB,CAAqB,IAArB,CAD/C,EAAX,GAAA,CAAA,CAAA,CAAA;AAGD,GAAA;AACF,CAPD,CAAA;;AASA,IAAM2J,YAAU,GAAG,SAAbA,UAAa,CAACpJ,KAAD,EAA+D;AAChF,EAAA,IAAIkI,KAAK,CAACC,OAAN,CAAcnI,KAAd,CAAJ,EAA0B;IACxB,MAAMmJ,KAAK,CAAC,oDAAD,CAAX,CAAA;AACD,GAAA;;EACD,IAAI,CAAC/J,SAAD,EAAY,IAAZ,CAAA,CAAkByI,QAAlB,CAA2B7H,KAA3B,CAAJ,EAAuC,OAAO,EAAP,CAAA;AACvC,EAAA,IAAIgI,MAAM,CAAChI,KAAD,CAAV,EAAmB,OAAO;IAAEA,KAAK,EAAEA,KAAK,CAACqJ,WAAN,EAAA;GAAhB,CAAA;EACnB,OAAO;IAAErJ,KAAK,EAAEA,KAAK,CAACyH,QAAN,EAAA;GAAhB,CAAA;AACD,CAPD,CAAA;;AASA,IAAM6B,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,WAAD,EAAsD;EAC7EV,kBAAkB,CAACjJ,MAAM,CAAC4J,IAAP,CAAYD,WAAZ,CAAD,EAA2BpC,0BAA3B,CAAlB,CAAA;;EACA,IAAIvH,MAAM,CAAC4J,IAAP,CAAYD,WAAZ,CAAyBX,CAAAA,MAAzB,KAAoC,CAAxC,EAA2C;IACzC,MAAMO,KAAK,CAAC,8CAAD,CAAX,CAAA;AACD,GAAA;;EACD,IAAI,QAAOI,WAAP,KAAA,IAAA,IAAOA,WAAP,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAOA,WAAW,CAAEvJ,KAApB,CAA8B,KAAA,QAAlC,EAA4C;AAC1C,IAAA,OAAOuJ,WAAP,CAAA;AACD,GAAA;;EACD,IAAME,WAAW,GAAGL,YAAU,CAACG,WAAD,KAACA,IAAAA,IAAAA,WAAD,KAACA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAW,CAAEvJ,KAAd,CAA9B,CAAA;EACA,OAAYuJ,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,WAAZ,GAA6BE,WAAW,KAAKrK,SAAhB,GAA4BqK,WAA5B,GAA0C,EAAvE,CAAA,CAAA;AACD,CAVD,CAAA;;AAYA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,CAAC1J,KAAD,EAAqE;EAC3F,IAAI,CAACZ,SAAD,EAAY,IAAZ,CAAA,CAAkByI,QAAlB,CAA2B7H,KAA3B,CAAJ,EAAuC,OAAOZ,SAAP,CAAA;AACvC,EAAA,IAAI8I,KAAK,CAACC,OAAN,CAAcnI,KAAd,CAAJ,EAA0B,OAAOA,KAAK,CAAC2J,OAAN,CAAcD,eAAd,CAAP,CAAA;EAC1B,IAAIpC,aAAa,CAACtH,KAAD,CAAjB,EAA0B,OAAOsJ,gBAAgB,CAACtJ,KAAD,CAAvB,CAAA;EAC1B,OAAOoJ,YAAU,CAACpJ,KAAD,CAAjB,CAAA;AACD,CALD,CAAA;;AAOA,IAAM4J,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,WAAD,EAA2D;EAClFhB,kBAAkB,CAACjJ,MAAM,CAAC4J,IAAP,CAAYK,WAAZ,CAAD,EAA2B3C,oBAA3B,CAAlB,CAAA;EACA,IAAM4C,gBAAgB,GAAGJ,eAAe,CAACG,WAAD,KAACA,IAAAA,IAAAA,WAAD,KAACA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,WAAW,CAAE7J,KAAd,CAAxC,CAAA;;EACA,IAAI8J,gBAAgB,KAAK1K,SAAzB,EAAoC;AAClC,IAA8CyK,WAA9C,CAAQ7J,KAAR,CAAA;YAAkB+J,uBAAlB,gDAA8CF,WAA9C,EAAAG,WAAA,EAAA;;AACA,IAAA,OAAOD,uBAAP,CAAA;AACD,GAAA;;AACD,EAAA,OAAAE,eAAA,CAAAA,eAAA,CAAA,EAAA,EACKJ,WADL,CAAA,EAAA,EAAA,EAAA;IAEE7J,KAAK,EAAAkK,sCAAA,CAAOhC,KAAK,CAACC,OAAN,CAAc2B,gBAAd,CAAA,GAAkCA,gBAAlC,GAAqD,CAACA,gBAAD,CAA5D,CAAA;AAFP,GAAA,CAAA,CAAA;AAID,CAXD,CAAA;;AAaA,IAAMK,YAAU,GAAG,SAAbA,UAAa,CAACC,KAAD,EAA+C;AAChE,EAAA,IAAItC,aAAa,CAACsC,KAAD,CAAjB,EAA0B;IACxB,OAAOR,gBAAgB,CAACQ,KAAD,CAAvB,CAAA;AACD,GAAA;;AACD,EAAA,IAAMN,gBAAgB,GAAGJ,eAAe,CAACU,KAAD,CAAxC,CAAA;;EACA,IAAIN,gBAAgB,KAAK1K,SAAzB,EAAoC;AAClC,IAAA,OAAOA,SAAP,CAAA;AACD,GAAA;;EACD,OAAO;IAAEY,KAAK,EAAAkK,sCAAA,CAAOhC,KAAK,CAACC,OAAN,CAAc2B,gBAAd,CAAA,GAAkCA,gBAAlC,GAAqD,CAACA,gBAAD,CAA5D,CAAA;GAAd,CAAA;AACD,CATD,CAAA;;AAWA,IAAMO,oBAAoB,GAAG,SAAvBA,oBAAuB,CAC3BC,YAD2B,EAKC;EAC5B,IAAMC,KAA+B,GAAG,EAAxC,CAAA;EACA,IAAMH,KAA+B,GAAG,EAAxC,CAAA;EACA,IAAII,eAAuC,GAAG,EAA9C,CAAA;EACA5K,MAAM,CAAC2I,OAAP,CAAe+B,YAAY,IAAI,EAA/B,CAAA,CAAmCG,OAAnC,CAA2C,UAAmB,IAAA,EAAA;AAAA,IAAA,IAAA,KAAA,GAAAC,kCAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AAAA,QAAjBC,IAAiB,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,QAAX3K,KAAW,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;AAC5D,IAAA,IAAIiH,oBAAoB,CAACY,QAArB,CAA8B8C,IAA9B,CAAJ,EAAyE;AACvEH,MAAAA,eAAe,uCAAQA,eAAR,CAAA,EAAA,EAAA,EAAAI,mCAAA,CAAA,EAAA,EAA0BD,IAA1B,EAAiC3K,KAAjC,CAAf,CAAA,CAAA;AACD,KAFD,MAEO,IAAIiI,OAAO,CAACjI,KAAD,CAAX,EAAoB;MACzB,IAAI;AACFoK,QAAAA,KAAK,CAACS,IAAN,CAAAZ,eAAA,CAAA;AAAaU,UAAAA,IAAI,EAAJA,IAAAA;SAASR,EAAAA,YAAU,CAACnK,KAAD,CAAhC,CAAA,CAAA,CAAA;OADF,CAEE,OAAO8K,KAAP,EAAc;AACd,QAAA,MAAM3B,KAAK,CAAC2B,KAAK,CAACC,OAAN,IAAiBJ,IAAI,GAAA,eAAA,CAAA,MAAA,CAAkBA,IAAlB,EAAA,IAAA,CAAA,GAA4B,EAAjD,CAAD,CAAX,CAAA;AACD,OAAA;AACF,KANM,MAMA,IAAItC,OAAO,CAACrI,KAAD,CAAX,EAAoB;AACzB,MAAA,CAACkI,KAAK,CAACC,OAAN,CAAcnI,KAAd,IAAuBA,KAAvB,GAA+B,CAACA,KAAD,CAAhC,EAAyCyK,OAAzC,CAAiD,UAACO,UAAD,EAAgB;AAC/DT,QAAAA,KAAK,CAACM,IAAN,CAAAZ,eAAA,CAAA;AAAaU,UAAAA,IAAI,EAAJA,IAAAA;SAASN,EAAAA,oBAAoB,CAACW,UAAD,CAA1C,CAAA,CAAA,CAAA;OADF,CAAA,CAAA;AAGD,KAJM,MAIA;MACL,MAAM7B,KAAK,CAAyBwB,wBAAAA,CAAAA,MAAAA,CAAAA,IAAzB,EAAX,IAAA,CAAA,CAAA,CAAA;AACD,KAAA;GAfH,CAAA,CAAA;AAiBA,EAAA,OAAAV,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EACKO,eADL,CAEMD,EAAAA,KAAK,CAAC3B,MAAN,GAAe,CAAf,GAAmB;AAAE2B,IAAAA,KAAK,EAALA,KAAAA;GAArB,GAA+B,EAFrC,CAGMH,EAAAA,KAAK,CAACxB,MAAN,GAAe,CAAf,GAAmB;AAAEwB,IAAAA,KAAK,EAALA,KAAAA;AAAF,GAAnB,GAA+B,EAHrC,CAAA,CAAA;AAKD,CA/BD,CAAA;;AAiCA,IAAMa,eAAa,GAAG,SAAhBA,aAAgB,CAACC,QAAD,EAA+D;EACnF,IAA+EA,eAAAA,GAAAA,QAA/E,CAAQC,KAAR;MAAQA,KAAR,gCAAgB,MAAhB,GAAA,eAAA;MAA+ED,aAAAA,GAAAA,QAA/E,CAAwBE,GAAxB;MAAwBA,GAAxB,8BAA8B,MAA9B,GAAA,aAAA;MAA+EF,cAAAA,GAAAA,QAA/E,CAAsCG,IAAtC;MAAsCA,IAAtC,+BAA6CjM,SAA7C,GAAA,cAAA;MAA2DkM,eAA3D,gDAA+EJ,QAA/E,EAAAK,YAAA,CAAA,CAAA;;EACA,IAAyBlB,qBAAAA,GAAAA,oBAAoB,CAACiB,eAAD,CAA7C;MAAQf,KAAR,yBAAQA,KAAR;MAAeH,KAAf,yBAAeA,KAAf,CAAA;;AACA,EAAA,OAAAH,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EACMM,KAAK,GAAG;AAAEA,IAAAA,KAAK,EAALA,KAAAA;AAAF,GAAH,GAAe,EAD1B,CAEMH,EAAAA,KAAK,GAAG;AAAEA,IAAAA,KAAK,EAALA,KAAAA;AAAF,GAAH,GAAe,EAF1B,CAAA,EAAA,EAAA,EAAA;AAGEe,IAAAA,KAAK,EAAEA,KAAK,CAAC1D,QAAN,EAHT;IAIE2D,GAAG,EAAEA,GAAG,CAAC3D,QAAJ,EAAA;AAJP,GAAA,EAKM4D,IAAI,GAAG;AAAEA,IAAAA,IAAI,EAAJA,IAAAA;AAAF,GAAH,GAAc,EALxB,CAAA,CAAA;AAOD,CAVD,CAAA;;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaG,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,KAAD,EAAkD;EAClF,OAAO;AACLP,IAAAA,QAAQ,EAAE,CAAChD,KAAK,CAACC,OAAN,CAAcsD,KAAd,CAAuBA,GAAAA,KAAvB,GAA+B,CAACA,KAAK,IAAI,EAAV,CAAhC,EAA+C3L,GAA/C,CAAmD,UAAC4L,CAAD,EAAA;MAAA,OAAOT,eAAa,CAACS,CAAD,CAApB,CAAA;KAAnD,CAAA;GADZ,CAAA;AAGD;;ACtMD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAC9BC,SAD8B,EAE9BC,SAF8B,EAG3B;AAAA,EAAA,IAAA,gBAAA,EAAA,gBAAA,CAAA;;AACH,EAAA,IAAA,IAAA,GAAqB,CAAAD,SAAS,KAAT,IAAA,IAAAA,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAA,gBAAA,GAAAA,SAAS,CAAET,KAAX,MAAkBW,IAAAA,IAAAA,gBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAAA,CAAAA,KAAlB,CAAwB,GAAxB,MAAgC,EAArD;AAAA,MAAA,KAAA,GAAApB,kCAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AAAA,MAAOqB,UAAP,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;AACA,EAAA,IAAA,KAAA,GAAsB,CAAAF,SAAS,KAAT,IAAA,IAAAA,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,CAAA,gBAAA,GAAAA,SAAS,CAAEV,KAAX,MAAkBW,IAAAA,IAAAA,gBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAAA,CAAAA,KAAlB,CAAwB,GAAxB,MAAgC,EAAtD;AAAA,MAAA,KAAA,GAAApB,kCAAA,CAAA,KAAA,EAAA,CAAA,CAAA;AAAA,MAAOsB,WAAP,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;EACA,IAAIC,MAAM,CAACF,UAAD,CAAN,GAAqBE,MAAM,CAACD,WAAD,CAA/B,EAA8C;AAC5C,IAAA,OAAO,CAAC,CAAR,CAAA;AACD,GAAA;;EACD,IAAIC,MAAM,CAACF,UAAD,CAAN,GAAqBE,MAAM,CAACD,WAAD,CAA/B,EAA8C;AAC5C,IAAA,OAAO,CAAP,CAAA;AACD,GAAA;;AACD,EAAA,OAAO,CAAP,CAAA;AACD,CAbM;;ACZP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAME,OAAO,GAAG,SAAVA,OAAU,CAAItE,CAAJ,EAAA;AAAA,EAAA,OAAoBM,KAAK,CAACC,OAAN,CAAcP,CAAd,CAAmBA,GAAAA,CAAnB,GAAwBA,CAAC,IAAI,CAACA,CAAD,CAAN,IAAc,EAAzD,CAAA;AAAA,CAAhB,CAAA;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMuE,QAAQ,GAAG,SAAXA,QAAW,CAAIvE,CAAJ,EAAA;EAAA,OAAoBM,KAAK,CAACC,OAAN,CAAcP,CAAd,CAAmBA,GAAAA,CAAC,CAACwE,GAAF,EAAnB,GAA6BxE,CAAjD,CAAA;AAAA,CAAjB,CAAA;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMyE,aAAa,GAAG,SAAhBA,aAAgB,CAAC1D,GAAD,EAAA;AAAA,EAAA,OAC3B,CAAAA,GAAG,KAAH,IAAA,IAAAA,GAAG,KAAA,KAAA,CAAH,GAAAA,KAAAA,CAAAA,GAAAA,GAAG,CAAEH,KAAL,CAAW,UAACZ,CAAD,EAAA;IAAA,OAAO,OAAOA,CAAP,KAAa,QAApB,CAAA;AAAA,GAAX,MAA4C,KADjB,CAAA;AAAA,CAAtB;;;;;;;;ACjBA,IAAM0E,gBAAc,GAAG;AAC5BC,EAAAA,sBAAsB,EAAE,KAAA;AADI,CAAvB,CAAA;AAIP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASnD,UAAT,CACLpJ,KADK,EAELwM,OAFK,EAGkB;AACvB,EAAA,IAAA,eAAA,GAAAvC,eAAA,CAAAA,eAAA,CAAA,EAAA,EACKqC,gBADL,CAAA,EAEME,OAAO,IAAI,EAFjB,CAAA;MAAQD,sBAAR,mBAAQA,sBAAR,CAAA;;EAIA,IAAIA,sBAAsB,KAAK,KAA/B,EAAsC;AACpC,IAAA,OAAOvM,KAAP,KAAOA,IAAAA,IAAAA,KAAP,KAAOA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAAEA,KAAd,CAAA;AACD,GAAA;;AACD,EAAA,IAAeyM,WAAf,GAA8CzM,KAA9C,CAAQA,KAAR;MAA+B0M,UAA/B,gDAA8C1M,KAA9C,EAAAgK,WAAA,CAAA,CAAA;;EACA,IAAM2C,eAAsC,GACzCJ,sBAAsB,KAAK,IAA3B,IAAmCG,UAApC,IACCxE,KAAK,CAACC,OAAN,CAAcoE,sBAAd,CACC3M,IAAAA,MAAM,CAACC,WAAP,CACED,MAAM,CAAC2I,OAAP,CAAemE,UAAf,CAA2BzD,CAAAA,MAA3B,CAAkC,UAAA,IAAA,EAAA;AAAA,IAAA,IAAA,KAAA,GAAAyB,kCAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AAAA,QAAE3K,GAAF,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;AAAA,IAAA,OAChCwM,sBAAsB,CAAC1E,QAAvB,CAAgC9H,GAAhC,CADgC,CAAA;GAAlC,CADF,CAFF,IAOA,EARF,CAAA;AAUA,EAAA,OAAAkK,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAY0C,eAAZ,CAAA,EAAA,EAAA,EAAA;AAA6B3M,IAAAA,KAAK,EAAEyM,WAAAA;AAApC,GAAA,CAAA,CAAA;AACD;;;;;;;ACrBM,IAAMH,gBAAc,GAAArC,eAAA,CAAAA,eAAA,CAAA,EAAA,EACtB2C,gBADsB,CAAA,EAAA,EAAA,EAAA;AAEzBC,EAAAA,SAAS,EAAEzN,SAFc;AAGzB0N,EAAAA,kBAAkB,EAAE,IAAA;AAHK,CAApB,CAAA,CAAA;AAMP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASC,cAAT,CACLC,SADK,EAELR,OAFK,EAGsB;AAC3B,EAAA,IAAA,eAAA,GAAAvC,eAAA,CAAAA,eAAA,CAAA,EAAA,EACKqC,gBADL,CAAA,EAEME,OAAO,IAAI,EAFjB,CAAA;MAAQK,SAAR,mBAAQA,SAAR;MAAmBC,kBAAnB,mBAAmBA,kBAAnB;AAAA,MAA0CG,iBAA1C,GAAAC,4CAAA,CAAA,eAAA,EAAAlD,WAAA,CAAA,CAAA;;EAKA,IAAMmD,eAAe,GAAGH,SAAH,KAAGA,IAAAA,IAAAA,SAAH,KAAGA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,SAAS,CAAElN,GAAX,CAAe,UAAC8H,CAAD,EAAA;AAAA,IAAA,OAAOwB,UAAU,CAACxB,CAAD,EAAIqF,iBAAJ,CAAjB,CAAA;AAAA,GAAf,CAAxB,CAAA;AAEA,EAAA,IAAIZ,aAAa,CAACc,eAAD,CAAb,IAAkCN,SAAtC,EACE,OAAOM,eAAP,KAAA,IAAA,IAAOA,eAAP,KAAOA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAe,CAAE1N,IAAjB,CAAsBoN,SAAtB,CAAP,CAAA;EACF,IAAIC,kBAAkB,KAAK,IAAvB,IAA+B,CAAAK,eAAe,KAAf,IAAA,IAAAA,eAAe,KAAA,KAAA,CAAf,GAAAA,KAAAA,CAAAA,GAAAA,eAAe,CAAEvE,MAAjB,KAA2B,CAA9D,EACE,OAAOuE,eAAP,KAAOA,IAAAA,IAAAA,eAAP,KAAOA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAe,CAAG,CAAH,CAAtB,CAAA;AACF,EAAA,OAAOA,eAAP,CAAA;AACD;;;;;;;;AC9BM,IAAMb,gBAAc,GAAArC,eAAA,CAAA;AACzBmD,EAAAA,sBAAsB,EAAE,KAAA;AADC,CAAA,EAEtBC,gBAFsB,CAApB,CAAA;AAKP;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMlD,UAAU,GAAG,SAAbA,UAAa,CACxBC,KADwB,EAExBoC,OAFwB,EAGE;AAC1B,EAAA,IAAA,eAAA,GAAAvC,eAAA,CAAAA,eAAA,CAAA,EAAA,EACKqC,gBADL,CAAA,EAEME,OAAO,IAAI,EAFjB,CAAA;MAAQY,sBAAR,mBAAQA,sBAAR;AAAA,MAAmCE,qBAAnC,GAAAJ,4CAAA,CAAA,eAAA,EAAAlD,WAAA,CAAA,CAAA;;AAIA,EAAA,IAAQhK,KAAR,GAAiCoK,KAAjC,CAAQpK,KAAR;MAAkB0M,UAAlB,gDAAiCtC,KAAjC,EAAAmB,YAAA,CAAA,CAAA;;AACA,EAAA,IAAM4B,eAAe,GAAGJ,cAAc,CAAC/M,KAAD,EAAQsN,qBAAR,CAAtC,CAAA;EAEA,IAAMC,eAAsC,GACzCH,sBAAsB,KAAK,IAA3B,IAAmCV,UAApC,IACCxE,KAAK,CAACC,OAAN,CAAciF,sBAAd,CACCxN,IAAAA,MAAM,CAACC,WAAP,CACED,MAAM,CAAC2I,OAAP,CAAemE,UAAf,CAA2BzD,CAAAA,MAA3B,CAAkC,UAAA,IAAA,EAAA;AAAA,IAAA,IAAA,KAAA,GAAAyB,kCAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AAAA,QAAE3K,GAAF,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;AAAA,IAAA,OAChCqN,sBAAsB,CAACvF,QAAvB,CAAgC9H,GAAhC,CADgC,CAAA;GAAlC,CADF,CAFF,IAOA,EARF,CAAA;EAUA,OACEqN,sBAAsB,uCAAQG,eAAR,CAAA,EAAA,EAAA,EAAA;AAAyBvN,IAAAA,KAAK,EAAEmN,eAAAA;AAAhC,GAAA,CAAA,GAAoDA,eAD5E,CAAA;AAGD,CAxBM;;;;;ACnBA,IAAMb,gBAAqC,GAAArC,eAAA,CAAAA,eAAA,CAAA,EAAA,EAC7CuD,gBAD6C,CAAA,EAAA,EAAA,EAAA;AAEhDC,EAAAA,WAAW,EAAE,KAFmC;AAGhDC,EAAAA,kBAAkB,EAAE,KAH4B;AAIhDC,EAAAA,aAAa,EAAEvO,SAAAA;AAJiC,CAA3C,CAAA,CAAA;;AAuBP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMwO,cAAc,GAAG,SAAjBA,cAAiB,CAC5BC,SAD4B,EAE5BrB,OAF4B,EAGE;AAC9B,EAAA,IAAMsB,qBAA4C,GAC7CxB,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,gBAD6C,GAE5CE,OAAO,IAAI,EAFiC,CAAlD,CAAA;;AAKA,EAAA,IAAQiB,WAAR,GAA2DK,qBAA3D,CAAQL,WAAR;AAAA,MAAqBC,kBAArB,GAA2DI,qBAA3D,CAAqBJ,kBAArB;AAAA,MAAyCC,aAAzC,GAA2DG,qBAA3D,CAAyCH,aAAzC,CAAA;EACA,IAAMI,cAAc,GAAGJ,aAAa,KAAK,IAAlB,IAA0BF,WAAW,KAAK,KAAjE,CAAA;EAEA,IAAMO,MAEL,GAAG,EAFJ,CAAA;EAGAH,SAAS,KAAA,IAAT,IAAAA,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,SAAS,CAAEpD,OAAX,CAAmB,UAACL,KAAD,EAAW;AAC5B,IAAA,IAAQO,IAAR,GAAiBP,KAAjB,CAAQO,IAAR,CAAA;AACA,IAAA,IAAMsD,WAAW,GAAG9D,UAAU,CAAWC,KAAX,EAAkB0D,qBAAlB,CAA9B,CAAA;IACA,IAAMI,iBAAiB,GAAGR,kBAAkB,KAAK,IAAvB,GAA8BxB,OAAO,CAAC+B,WAAD,CAArC,GAAqDA,WAA/E,CAAA;AACA,IAAA,IAAME,oBAAoB,GAAGH,MAAM,CAACrD,IAAD,CAAnC,CAAA;AACA,IAAA,IAAI,CAACwD,oBAAL,EAA2BH,MAAM,CAACrD,IAAD,CAAN,GAAeuD,iBAAf,CAA3B,KACK,IAAIH,cAAJ,EAAoBC,MAAM,CAACrD,IAAD,CAAN,GAAesD,WAAf,CAApB,KACAD,MAAM,CAACrD,IAAD,CAAN,GAAe,CAACuB,OAAO,CAACiC,oBAAD,CAAR,EAAgCjC,OAAO,CAAC+B,WAAD,CAAvC,CAAA,CAAsDG,IAAtD,EAAf,CAAA;GAPP,CAAA,CAAA;AAUA,EAAA,OACEX,WAAW,KAAK,IAAhB,GAAuB7N,MAAM,CAACyO,MAAP,CAAcL,MAAd,CAAA,CAAsBI,IAAtB,EAAvB,GAAsDJ,MADxD,CAAA;AAGD;;;;;;;;ACxDD,IAAMM,wBAA2C,uCAC5CC,gBAD4C,CAAA,EAAA,EAAA,EAAA;AAE/CC,EAAAA,sBAAsB,EAAE,KAFuB;AAG/CC,EAAAA,WAAW,EAAE,KAHkC;AAI/CC,EAAAA,kBAAkB,EAAE,KAJ2B;AAK/CC,EAAAA,aAAa,EAAEvP,SAAAA;AALgC,CAAjD,CAAA,CAAA;;AAgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMwP,UAAU,GAAG,SAAbA,UAAa,CACjBrE,KADiB,EAEjBiC,OAFiB,EAGS;AAC1B,EAAA,IAAMqC,iBAAiB,GAClBP,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,wBADkB,GAEjB9B,OAAO,IAAI,EAFM,CAAvB,CAAA;;AAIA,EAAA,IAAQgC,sBAAR,GAAmCK,iBAAnC,CAAQL,sBAAR,CAAA;AAEA,EAAA,IAAMV,qBAA4C,GAAGlO,MAAM,CAACC,WAAP,CACnDD,MAAM,CAAC2I,OAAP,CAAesG,iBAAf,CAAA,CAAkC5F,MAAlC,CAAyC,UAAA,IAAA,EAAA;AAAA,IAAA,IAAA,KAAA,GAAAyB,kCAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AAAA,QAAE3K,GAAF,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;IAAA,OACvCH,MAAM,CAAC4J,IAAP,CAAY+E,gBAAZ,CAA0C1G,CAAAA,QAA1C,CAAmD9H,GAAnD,CADuC,CAAA;AAAA,GAAzC,CADmD,CAArD,CAAA;;AAMA,EAAA,IAAe8N,SAAf,GAA8DtD,KAA9D,CAAQH,KAAR;AAAA,MAAiC0E,SAAjC,GAA8DvE,KAA9D,CAA0BA,KAA1B;MAA+CmC,UAA/C,gDAA8DnC,KAA9D,EAAAP,WAAA,CAAA,CAAA;;EACA,IAAM+E,eAAe,GAAGlB,SAAS,IAAID,cAAc,CAACC,SAAD,EAAYC,qBAAZ,CAAnD,CAd0B;;EAgB1B,IAAMkB,eAAe,GAAGF,SAAS,IAAIG,cAAc,CAACH,SAAD,EAAYD,iBAAZ,CAAnD,CAAA;EAEA,IAAMrE,eAAsC,GACzCgE,sBAAsB,KAAK,IAA3B,IAAmC9B,UAApC,IACCxE,KAAK,CAACC,OAAN,CAAcqG,sBAAd,CACC5O,IAAAA,MAAM,CAACC,WAAP,CACED,MAAM,CAAC2I,OAAP,CAAemE,UAAf,CAA2BzD,CAAAA,MAA3B,CAAkC,UAAA,KAAA,EAAA;AAAA,IAAA,IAAA,KAAA,GAAAyB,kCAAA,CAAA,KAAA,EAAA,CAAA,CAAA;AAAA,QAAE3K,GAAF,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;AAAA,IAAA,OAChCyO,sBAAsB,CAAC3G,QAAvB,CAAgC9H,GAAhC,CADgC,CAAA;GAAlC,CADF,CAFF,IAOA,EARF,CAAA;AAUA,EAAA,OAAAkK,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EACKO,eADL,CAAA,EAEMsD,qBAAqB,KAAA,IAArB,IAAAA,qBAAqB,KAArB,KAAA,CAAA,IAAAA,qBAAqB,CAAEL,WAAvB,GACCsB,eAAe,IAAI;AAAE3E,IAAAA,KAAK,EAAE2E,eAAAA;AAAT,GAApB,IAAmD,EADnD,GAEAA,eAJN,CAAA,EAKMF,iBAAiB,KAAjB,IAAA,IAAAA,iBAAiB,KAAA,KAAA,CAAjB,IAAAA,iBAAiB,CAAEJ,WAAnB,GACCO,eAAe,IAAI;AAAEzE,IAAAA,KAAK,EAAEyE,eAAAA;GAA7B,IAAmD,EADnD,GAEAA,eAPN,CAAA,CAAA;AASD,CAxCD,CAAA;;AA4DO,IAAM1C,gBAAqC,GAAGgC,wBAA9C,CAAA;AAEP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMW,cAAc,GAAG,SAAjBA,cAAiB,CAC5BH,SAD4B,EAE5BtC,OAF4B,EAGE;AAC9B,EAAA,IAAMqC,iBAAwC,GAAQvC,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,gBAAR,GAA4BE,OAAO,IAAI,EAAvC,CAA9C,CAAA;;AAEA,EAAA,IAAQiC,WAAR,GAA2DI,iBAA3D,CAAQJ,WAAR;AAAA,MAAqBC,kBAArB,GAA2DG,iBAA3D,CAAqBH,kBAArB;AAAA,MAAyCC,aAAzC,GAA2DE,iBAA3D,CAAyCF,aAAzC,CAAA;EAEA,IAAMZ,cAAc,GAAGY,aAAa,KAAK,IAAlB,IAA0BF,WAAW,KAAK,KAAjE,CAAA;EAEA,IAAMT,MAEL,GAAG,EAFJ,CAAA;EAGAc,SAAS,KAAA,IAAT,IAAAA,SAAS,KAAT,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,SAAS,CAAErE,OAAX,CAAmB,UAACF,KAAD,EAAW;AAC5B,IAAA,IAAQI,IAAR,GAAiBJ,KAAjB,CAAQI,IAAR,CAAA;AACA,IAAA,IAAMuE,WAAW,GAAGN,UAAU,CAAWrE,KAAX,EAAkBsE,iBAAlB,CAA9B,CAAA;IACA,IAAMM,iBAAiB,GACrBT,kBAAkB,KAAK,IAAvB,GAA8BxC,OAAO,CAAwBgD,WAAxB,CAArC,GAA4EA,WAD9E,CAAA;AAEA,IAAA,IAAME,oBAAoB,GAAGpB,MAAM,CAACrD,IAAD,CAAnC,CAAA;AACA,IAAA,IAAI,CAACyE,oBAAL,EAA2BpB,MAAM,CAACrD,IAAD,CAAN,GAAewE,iBAAf,CAA3B,KACK,IAAIpB,cAAJ,EAAoBC,MAAM,CAACrD,IAAD,CAAN,GAAeuE,WAAf,CAApB,KAEHlB,MAAM,CAACrD,IAAD,CAAN,GAAe,CACbuB,OAAO,CAACkD,oBAAD,CADM,EAEblD,OAAO,CAAwBgD,WAAxB,CAFM,CAAA,CAGbd,IAHa,EAAf,CAAA;GATJ,CAAA,CAAA;;AAeA,EAAA,IAAIK,WAAJ,EAAiB;AACf,IAAA,OAAO7O,MAAM,CAACyO,MAAP,CAAcL,MAAd,CAAA,CAAsBI,IAAtB,EAAP,CAAA;AACD,GAAA;;AAED,EAAA,OAAOJ,MAAP,CAAA;AACD;;;;;;;AC3HM,IAAM1B,gBAAoC,GAAArC,eAAA,CAAAA,eAAA,CAAA,EAAA,EAC5CoF,gBAD4C,CAAA,EAAA,EAAA,EAAA;AAE/CC,EAAAA,yBAAyB,EAAE,KAFoB;AAG/ClB,EAAAA,IAAI,EAAE,KAHyC;AAI/CmB,EAAAA,aAAa,EAAE,KAJgC;AAK/CzC,EAAAA,kBAAkB,EAAE,IAL2B;AAM/C4B,EAAAA,kBAAkB,EAAEtP,SAN2B;AAO/CsO,EAAAA,kBAAkB,EAAEtO,SAAAA;AAP2B,CAA1C,CAAA,CAAA;AAUP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM6L,aAAa,GAAG,SAAhBA,aAAgB,CAC3BC,QAD2B,EAE3BsB,OAF2B,EAGE;AAC7B,EAAA,IAAMgD,oBAAoB,GACrBlD,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,gBADqB,GAEpBE,OAAO,IAAI,EAFS,CAA1B,CAAA;;AAIA,EAAA,IAAQ8C,yBAAR,GAA2DE,oBAA3D,CAAQF,yBAAR;AAAA,MAAmCC,aAAnC,GAA2DC,oBAA3D,CAAmCD,aAAnC;AAAA,MAAkDnB,IAAlD,GAA2DoB,oBAA3D,CAAkDpB,IAAlD,CAAA;AACA,EAAA,IAAMqB,qBAA4C,GAAG7P,MAAM,CAACC,WAAP,CACnDD,MAAM,CAAC2I,OAAP,CAAeiE,OAAf,CACG1M,CAAAA,GADH,CACO,UAAkB,IAAA,EAAA;AAAA,IAAA,IAAA,KAAA,GAAA4K,kCAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AAAA,QAAhB3K,GAAgB,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,QAAXC,KAAW,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;IACrB,IAAIJ,MAAM,CAAC4J,IAAP,CAAY6F,gBAAZ,EAA0CxH,QAA1C,CAAmD9H,GAAnD,CAAJ,EAA6D;MAC3D,IACE,CAAC,oBAAD,EAAuB,oBAAvB,EAA6C,oBAA7C,CAAA,CAAmE8H,QAAnE,CAA4E9H,GAA5E,MACCC,KAAK,KAAKZ,SAAV,GAAsBY,KAAtB,GAA8BuP,aAAa,KAAK,IADjD,CADF,EAGE;AACA,QAAA,OAAO,CAACxP,GAAD,EAAM,IAAN,CAAP,CAAA;AACD,OAAA;;AACD,MAAA,IACE,CAAC,eAAD,EAAkB,eAAlB,CAAmC8H,CAAAA,QAAnC,CAA4C9H,GAA5C,CAAA,KACCC,KAAK,KAAKZ,SAAV,GAAsBY,KAAtB,GAA8BoO,IAAI,KAAK,IADxC,CADF,EAGE;AACA,QAAA,OAAO,CAACrO,GAAD,EAAM,IAAN,CAAP,CAAA;AACD,OAAA;;AACD,MAAA,OAAO,CAACA,GAAD,EAAMC,KAAN,CAAP,CAAA;AACD,KAAA;;AACD,IAAA,OAAOZ,SAAP,CAAA;AACD,GAlBH,CAmBG6J,CAAAA,MAnBH,CAmBU,UAACyG,CAAD,EAAA;IAAA,OAAO,CAAC,CAACA,CAAT,CAAA;AAAA,GAnBV,CADmD,CAArD,CAAA;AAsBA,EAAA,IAAM5B,qBAA4C,GAAGlO,MAAM,CAACC,WAAP,CACnDD,MAAM,CAAC2I,OAAP,CAAeiE,OAAf,CACG1M,CAAAA,GADH,CACO,UAAkB,KAAA,EAAA;AAAA,IAAA,IAAA,KAAA,GAAA4K,kCAAA,CAAA,KAAA,EAAA,CAAA,CAAA;AAAA,QAAhB3K,GAAgB,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,QAAXC,KAAW,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;IACrB,IAAIJ,MAAM,CAAC4J,IAAP,CAAY+E,gBAAZ,EAA0C1G,QAA1C,CAAmD9H,GAAnD,CAAJ,EAA6D;AAC3D,MAAA,IACE,CAAC,oBAAD,EAAuB,oBAAvB,CAA6C8H,CAAAA,QAA7C,CAAsD9H,GAAtD,CAAA,KACCC,KAAK,KAAKZ,SAAV,GAAsBY,KAAtB,GAA8BuP,aAAa,KAAK,IADjD,CADF,EAGE;AACA,QAAA,OAAO,CAACxP,GAAD,EAAM,IAAN,CAAP,CAAA;AACD,OAAA;;AACD,MAAA,IAAI,CAAC,eAAD,CAAA,CAAkB8H,QAAlB,CAA2B9H,GAA3B,CAAoCC,KAAAA,KAAK,KAAKZ,SAAV,GAAsBY,KAAtB,GAA8BoO,IAAI,KAAK,IAA3E,CAAJ,EAAsF;AACpF,QAAA,OAAO,CAACrO,GAAD,EAAM,IAAN,CAAP,CAAA;AACD,OAAA;;AACD,MAAA,OAAO,CAACA,GAAD,EAAMC,KAAN,CAAP,CAAA;AACD,KAAA;;AACD,IAAA,OAAOZ,SAAP,CAAA;AACD,GAfH,CAgBG6J,CAAAA,MAhBH,CAgBU,UAACyG,CAAD,EAAA;IAAA,OAAO,CAAC,CAACA,CAAT,CAAA;AAAA,GAhBV,CADmD,CAArD,CAAA;;EAoBA,IAA8DxE,KAAAA,GAAAA,QAAQ,IAAI,EAA1E;MAAe2C,SAAf,SAAQzD,KAAR;MAAiC0E,SAAjC,SAA0BvE,KAA1B;AAAA,MAA+CmC,UAA/C,GAAAQ,4CAAA,CAAA,KAAA,EAAAlD,WAAA,CAAA,CAAA;;EACA,IAAM+E,eAAe,GAAGlB,SAAS,IAAID,cAAc,CAACC,SAAD,EAAYC,qBAAZ,CAAnD,CAjD6B;;EAmD7B,IAAMkB,eAAe,GAAGF,SAAS,IAAIG,cAAc,CAACH,SAAD,EAAYW,qBAAZ,CAAnD,CAAA;EAEA,IAAME,kBAA4C,GAC/CL,yBAAyB,KAAK,IAA9B,IAAsC5C,UAAvC,IACCxE,KAAK,CAACC,OAAN,CAAcmH,yBAAd,CACC1P,IAAAA,MAAM,CAACC,WAAP,CACED,MAAM,CAAC2I,OAAP,CAAemE,UAAf,CAA2BzD,CAAAA,MAA3B,CAAkC,UAAA,KAAA,EAAA;AAAA,IAAA,IAAA,KAAA,GAAAyB,kCAAA,CAAA,KAAA,EAAA,CAAA,CAAA;AAAA,QAAE3K,GAAF,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;AAAA,IAAA,OAChCuP,yBAAyB,CAACzH,QAA1B,CAAmC9H,GAAnC,CADgC,CAAA;GAAlC,CADF,CAFF,IAOA,EARF,CAAA;EAUA,OACK4P,eAAAA,CAAAA,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,kBADL,CAEM7B,EAAAA,qBAAqB,KAArB,IAAA,IAAAA,qBAAqB,KAAA,KAAA,CAArB,IAAAA,qBAAqB,CAAEL,WAAvB,GAAqC;AAAErD,IAAAA,KAAK,EAAE2E,eAAAA;AAAT,GAArC,GAAkEA,eAFxE,CAGMU,EAAAA,qBAAqB,KAArB,IAAA,IAAAA,qBAAqB,KAAA,KAAA,CAArB,IAAAA,qBAAqB,CAAEhB,WAAvB,GAAqC;AAAElE,IAAAA,KAAK,EAAEyE,eAAAA;AAAT,GAArC,GAAkEA,eAHxE,CAAA,CAAA;AAKD;;;;;;;AC7GM,IAAM1C,gBAAwC,GAAArC,eAAA,CAAAA,eAAA,CAAA,EAAA,EAChD2F,gBADgD,CAAA,EAAA,EAAA,EAAA;AAEnDC,EAAAA,cAAc,EAAE,KAFmC;AAGnDC,EAAAA,YAAY,EAAE,GAHqC;AAInDC,EAAAA,YAAY,EAAE,KAJqC;AAKnD3B,EAAAA,IAAI,EAAE,KAL6C;AAMnD4B,EAAAA,YAAY,EAAE5Q,SAAAA;AANqC,CAA9C,CAAA,CAAA;AAQP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAM6Q,iBAAiB,GAAG,SAApBA,iBAAoB,CAG/BC,YAH+B,EAI/B1D,OAJ+B,EAKE;AACjC,EAAA,IAAM2D,wBAAkD,GACnD7D,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,gBADmD,GAElDE,OAAO,IAAI,EAFuC,CAAxD,CAAA;;AAIA,EAAA,IAAQqD,cAAR,GACEM,wBADF,CAAQN,cAAR;AAAA,MAAwBC,YAAxB,GACEK,wBADF,CAAwBL,YAAxB;AAAA,MAAsCC,YAAtC,GACEI,wBADF,CAAsCJ,YAAtC;AAAA,MAAoD3B,IAApD,GACE+B,wBADF,CAAoD/B,IAApD;AAAA,MAA0D4B,YAA1D,GACEG,wBADF,CAA0DH,YAA1D;MAA2EI,YAA3E,gDACED,wBADF,EAAAnG,WAAA,CAAA,CAAA;;AAGA,EAAA,IAAMwF,oBAAoB,GAAAvF,eAAA,CAAA;AAAKmE,IAAAA,IAAI,EAAJA,IAAAA;AAAL,GAAA,EAAcgC,YAAd,CAA1B,CAAA;;AAEA,EAAA,IAAIL,YAAJ,EAAkBG,YAAY,CAACG,IAAb,CAAkB1E,gBAAlB,CAAA,CAAA;AAElB,EAAA,IAAM2E,aAAa,GACjB,CAACN,YAAY,KAAK5Q,SAAjB,GAA6B4Q,YAAY,KAAK,IAA9C,GAAqD5B,IAAI,KAAK,IAA/D,KACAyB,cAAc,KAAK,KAFrB,CAAA;EAIA,IAAM7B,MAEL,GAAG,EAFJ,CAAA;EAGAkC,YAAY,KAAA,IAAZ,IAAAA,YAAY,KAAZ,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,YAAY,CAAEzF,OAAd,CAAsB,UAACS,QAAD,EAAc;AAClC,IAAA,IAAQC,KAAR,GAAuBD,QAAvB,CAAQC,KAAR;AAAA,QAAeC,GAAf,GAAuBF,QAAvB,CAAeE,GAAf,CAAA;AACA,IAAA,IAAMrL,GAAG,GAAGuQ,aAAa,GAAG,MAAH,GAAY,CAACnF,KAAD,EAAQC,GAAR,CAAA,CAAa3L,IAAb,CAAkBqQ,YAAlB,CAArC,CAAA;AACA,IAAA,IAAMS,cAAc,GAAGtF,aAAa,CAAWC,QAAX,EAAqBsE,oBAArB,CAApC,CAAA;AACA,IAAA,IAAMgB,uBAAuB,GAAGxC,MAAM,CAACjO,GAAD,CAAtC,CAAA;AACA,IAAA,IAAI,CAACyQ,uBAAL,EAA8BxC,MAAM,CAACjO,GAAD,CAAN,GAAcwQ,cAAd,CAA9B,KACK,IAAID,aAAJ,EAAmB;AACtB,MAAA,IAAInF,KAAK,KAAK,MAAV,IAAoBC,GAAG,KAAK,MAAhC,EAAwC;QACtC4C,MAAM,CAACjO,GAAD,CAAN,GAAAkK,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAmBkC,QAAQ,CAACqE,uBAAD,CAA3B,CAAA,EAAyDD,cAAzD,CAAA,CAAA;AACD,OAFD,MAEO;QACLvC,MAAM,CAACjO,GAAD,CAAN,GAAAkK,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAmBsG,cAAnB,CAAsCpE,EAAAA,QAAQ,CAACqE,uBAAD,CAA9C,CAAA,CAAA;AACD,OAAA;KALE,MAMExC,MAAM,CAACjO,GAAD,CAAN,GAAkBmM,EAAAA,CAAAA,MAAAA,CAAAA,sCAAAA,CAAAA,OAAO,CAACsE,uBAAD,CAAzB,CAAA,EAAA,CAAoDD,cAApD,CAAA,CAAA,CAAA;GAZT,CAAA,CAAA;;EAeA,IAAIV,cAAc,KAAK,IAAvB,EAA6B;AAC3B,IAAA,OAAOjQ,MAAM,CAACyO,MAAP,CAAcL,MAAd,CAAP,CAAA;AACD,GAAA;;AAED,EAAA,IAAIsC,aAAJ,EAAmB;AACjB,IAAA,OAAO1Q,MAAM,CAACyO,MAAP,CAAcL,MAAd,CAAA,CAAsB5B,GAAtB,EAAP,CAAA;AACD,GAAA;;AAED,EAAA,OAAO4B,MAAP,CAAA;AACD;;;;;;;ACjEM,IAAM1B,gBAAwC,GAAArC,eAAA,CAAAA,eAAA,CAAA,EAAA,EAChDwG,gBADgD,CAAA,EAAA,EAAA,EAAA;AAEnDC,EAAAA,yBAAyB,EAAE,KAFwB;AAGnDtC,EAAAA,IAAI,EAAE,KAAA;AAH6C,CAA9C,CAAA,CAAA;AAMP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASuC,iBAAT,CACEC,YADF,EAEEpE,OAFF,EAGgC;AAC9B,EAAA,IAAMqE,wBAAkD,GACnDvE,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,gBADmD,GAElDE,OAAO,IAAI,EAFuC,CAAxD,CAAA;;AAIA,EAAA,IAAQkE,yBAAR,GAA4CG,wBAA5C,CAAQH,yBAAR;AAAA,MAAmCtC,IAAnC,GAA4CyC,wBAA5C,CAAmCzC,IAAnC,CAAA;;EACA,IAAuDwC,IAAAA,GAAAA,YAAY,IAAI,EAAvE;AAAA,MAAA,aAAA,GAAA,IAAA,CAAQ1F,QAAR;MAAkBgF,YAAlB,8BAAiC,EAAjC,GAAA,aAAA;AAAA,MAAwCxD,UAAxC,GAAAQ,4CAAA,CAAA,IAAA,EAAAlD,WAAA,CAAA,CAAA;;AAEA,EAAA,IAAMmG,wBAAkD,GAAGvQ,MAAM,CAACC,WAAP,CACzDD,MAAM,CAAC2I,OAAP,CAAeiE,OAAf,CACG1M,CAAAA,GADH,CACO,UAAkB,KAAA,EAAA;AAAA,IAAA,IAAA,KAAA,GAAA4K,kCAAA,CAAA,KAAA,EAAA,CAAA,CAAA;AAAA,QAAhB3K,GAAgB,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,QAAXC,KAAW,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;IACrB,IAAIJ,MAAM,CAAC4J,IAAP,CAAYiH,gBAAZ,EAA6C5I,QAA7C,CAAsD9H,GAAtD,CAAJ,EAAgE;MAC9D,IACE,CAAC,aAAD,EAAgB,eAAhB,EAAiC,eAAjC,CAAA,CAAkD8H,QAAlD,CAA2D9H,GAA3D,MACCC,KAAK,KAAKZ,SAAV,GAAsBY,KAAtB,GAA8BoO,IAAI,KAAK,IADxC,CADF,EAGE;AACA,QAAA,OAAO,CAACrO,GAAD,EAAM,IAAN,CAAP,CAAA;AACD,OAAA;;AACD,MAAA,OAAO,CAACA,GAAD,EAAMC,KAAN,CAAP,CAAA;AACD,KAAA;;AACD,IAAA,OAAOZ,SAAP,CAAA;AACD,GAZH,CAaG6J,CAAAA,MAbH,CAaU,UAACyG,CAAD,EAAA;IAAA,OAAO,CAAC,CAACA,CAAT,CAAA;AAAA,GAbV,CADyD,CAA3D,CAAA;AAiBA,EAAA,IAAMoB,kBAAkB,GAAGb,iBAAiB,CAC1CC,YAD0C,EAE1CC,wBAF0C,CAA5C,CAAA;EAKA,IAAMY,kBAA4C,GAC/CL,yBAAyB,KAAK,IAA9B,IACIhE,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,UADJ,CAEKA,EAAAA,UAAU,CAACsE,QAAX,GAAsB;AAAEA,IAAAA,QAAQ,EAAEtE,UAAU,CAACsE,QAAX,CAAoBlF,KAApB,CAA0B,GAA1B,CAAA;GAAlC,GAAqE,EAF1E,CAAD,IAIC5D,KAAK,CAACC,OAAN,CAAcuI,yBAAd,CACC9Q,IAAAA,MAAM,CAACC,WAAP,CACED,MAAM,CAAC2I,OAAP,CAAemE,UAAf,CAAA,CACG5M,GADH,CACO,UAAkB,KAAA,EAAA;AAAA,IAAA,IAAA,KAAA,GAAA4K,kCAAA,CAAA,KAAA,EAAA,CAAA,CAAA;AAAA,QAAhB3K,GAAgB,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,QAAXC,KAAW,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;AACrB,IAAA,IAAI0Q,yBAAyB,CAAC7I,QAA1B,CAAmC9H,GAAnC,CAAJ,EAA+E;MAC7E,OAAO,CACLA,GADK,EAELA,GAAG,KAAK,UAAR,IAAsB,OAAOC,KAAP,KAAiB,QAAvC,GAAkDA,KAAK,CAAC8L,KAAN,CAAY,GAAZ,CAAlD,GAAqE9L,KAFhE,CAAP,CAAA;AAID,KAAA;;AACD,IAAA,OAAOZ,SAAP,CAAA;AACD,GATH,CAUG6J,CAAAA,MAVH,CAUU,UAAC1B,CAAD,EAAA;IAAA,OAAO,CAAC,CAACA,CAAT,CAAA;GAVV,CADF,CALF,IAkBA,EAnBF,CAAA;EAqBA,OACKwJ,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,kBADL,CAEMZ,EAAAA,wBAAwB,KAAxB,IAAA,IAAAA,wBAAwB,KAAA,KAAA,CAAxB,IAAAA,wBAAwB,CAAEN,cAA1B,GACA;AAAE3E,IAAAA,QAAQ,EAAE4F,kBAAAA;AAAZ,GADA,GAEAA,kBAJN,CAAA,CAAA;AAMD;;AChHD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACaG,uBAAuB,GAAG,SAA1BA,uBAA0B,CACrCC,kBADqC,EAIlC;EACH,IAAuBA,IAAAA,GAAAA,kBAAkB,IAAI,EAA7C;AAAA,MAAA,UAAA,GAAA,IAAA,CAAQ9G,KAAR;MAAQA,KAAR,2BAAgB,EAAhB,GAAA,UAAA,CAAA;;EACA,OAAO1K,sBAAsB,CAAC0K,KAAD,CAA7B,CAAA;AACD;;ACZM,IAAM+G,uBAEZ,GAAG;AACFC,EAAAA,GAAG,EAAE;AAAE/R,IAAAA,WAAW,EAAE,EAAf;AAAmBgS,IAAAA,SAAS,EAAE,CAAA;GADjC;AAEFC,EAAAA,IAAI,EAAE;AAAEjS,IAAAA,WAAW,EAAE,KAAf;AAAsBgS,IAAAA,SAAS,EAAE,IAAA;GAFrC;AAGFE,EAAAA,MAAM,EAAE;AAAElS,IAAAA,WAAW,EAAE,EAAf;AAAmBgS,IAAAA,SAAS,EAAE,CAAA;GAHpC;EAIF,KAAO,EAAA;AAAEhS,IAAAA,WAAW,EAAE,KAAf;AAAsBgS,IAAAA,SAAS,EAAE,IAAA;GAJtC;EAKF,KAAO,EAAA;AAAEhS,IAAAA,WAAW,EAAE,KAAf;AAAsBgS,IAAAA,SAAS,EAAE,IAAA;GALtC;EAMF,MAAQ,EAAA;AAAEhS,IAAAA,WAAW,EAAE,KAAf;AAAsBgS,IAAAA,SAAS,EAAE,IAAA;GANvC;EAOF,KAAO,EAAA;AAAEhS,IAAAA,WAAW,EAAE,KAAf;AAAsBgS,IAAAA,SAAS,EAAE,IAAA;AAAjC,GAAA;AAPL,CAFG,CAAA;AAYA,IAAMG,mBAAmB,GAAG5R,MAAM,CAAC4J,IAAP,CAAY2H,uBAAZ,CAA5B;;ACTP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAaM,QAAb,gBAAA,YAAA;AACE;AAGA;;AAGA;AACF;AACA;AACA;AACA;AACE,EAAA,SAAA,QAAA,CAAYC,YAAZ,EAA0C;AAAA,IAAAC,mCAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;;AAAA,IAAA/G,mCAAA,CAAA,IAAA,EAAA,WAAA,EAVtB,CAUsB,CAAA,CAAA;;AAAA,IAAAA,mCAAA,CAAA,IAAA,EAAA,aAAA,EAPpB,CAOoB,CAAA,CAAA;;IACxC,IAA2C8G,IAAAA,GAAAA,YAAY,IAAI,EAA3D;AAAA,QAAA,cAAA,GAAA,IAAA,CAAQL,SAAR;QAAQA,SAAR,+BAAoB,CAApB,GAAA,cAAA;AAAA,QAAA,gBAAA,GAAA,IAAA,CAAuBhS,WAAvB;QAAuBA,WAAvB,iCAAqC,CAArC,GAAA,gBAAA,CAAA;;AACA,IAAA,IAAA,CAAKgS,SAAL,GAAiBpF,MAAM,CAACoF,SAAD,CAAvB,CAAA;AACA,IAAA,IAAA,CAAKhS,WAAL,GAAmB4M,MAAM,CAAC5M,WAAD,CAAzB,CAAA;AACD,GAAA;AAED;AACF;AACA;AACA;;;AArBA,EAAAuS,gCAAA,CAAA,QAAA,EAAA,CAAA;AAAA,IAAA,GAAA,EAAA,YAAA;AAAA,IAAA,KAAA,EAsBE,SAAqB,UAAA,GAAA;AAAA,MAAA,IAAA,KAAA,GAAA,IAAA,CAAA;;MACnB,IAAIC,QAAJ,CADmB;;MAGnBjS,MAAM,CAAC2I,OAAP,CAAe4I,uBAAf,EAAwCW,IAAxC,CAA6C,UAACC,gBAAD,EAAsB;AACjE,QAAA,IAAA,iBAAA,GAAArH,kCAAA,CAA6CqH,gBAA7C,EAAA,CAAA,CAAA;AAAA,YAAOC,gBAAP,GAAA,iBAAA,CAAA,CAAA,CAAA;AAAA,YAAyBC,gBAAzB,GAAA,iBAAA,CAAA,CAAA,CAAA,CAAA;;AACA,QAAA,IAAQZ,SAAR,GAAmCY,gBAAnC,CAAQZ,SAAR;AAAA,YAAmBhS,WAAnB,GAAmC4S,gBAAnC,CAAmB5S,WAAnB,CAAA;;QACA,IAAIgS,SAAS,KAAK,KAAI,CAACA,SAAnB,IAAgChS,WAAW,KAAK,KAAI,CAACA,WAAzD,EAAsE;AACpEwS,UAAAA,QAAQ,GAAGG,gBAAX,CAAA;AACA,UAAA,OAAO,IAAP,CAAA;AACD,SAAA;;AACD,QAAA,OAAO,KAAP,CAAA;OAPF,CAAA,CAAA;AASA,MAAA,OAAOH,QAAP,CAAA;AACD,KAAA;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA9CA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,QAAA;IAAA,KA+CE,EAAA,SAAA,MAAA,CAAOrF,OAAP,EAKW;AACT,MAAA,IAAIA,OAAJ,KAAIA,IAAAA,IAAAA,OAAJ,eAAIA,OAAO,CAAEqF,QAAb,EAAuB;AACrB,QAAA,IAAMK,aAAY,GAAG,IAAKC,CAAAA,UAAL,EAArB,CAAA;;QACA,IAAID,aAAJ,EAAkB,OAAOA,aAAP,CAAA;AACnB,OAAA;;AACD,MAAA,IAAI1F,OAAO,KAAA,IAAP,IAAAA,OAAO,WAAP,IAAAA,OAAO,CAAE4F,QAAT,IAAqB,IAAA,CAAKf,SAAL,GAAiB,CAA1C,EAA6C;AAC3C,QAAA,IAAMa,cAAY,GAAG,CAAC,IAAA,CAAK7S,WAAN,EAAmB,IAAKgS,CAAAA,SAAxB,CAAmC5R,CAAAA,IAAnC,CAAwC,GAAxC,CAArB,CAAA;;AACA,QAAA,OAAOyS,cAAP,CAAA;AACD,OAAA;;AACD,MAAA,IAAMA,YAAY,GAAGG,MAAM,CAAC,IAAA,CAAKhT,WAAN,CAA3B,CAAA;AACA,MAAA,OAAO6S,YAAP,CAAA;AACD,KAAA;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAlFA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,QAAA;IAAA,KAmFE,EAAA,SAAA,MAAA,CAAO1F,OAAP,EAKG;AACD,MAAA,IAAM8F,IAAI,GAAG,IAAA,CAAKjT,WAAL,GAAmB,KAAKgS,SAArC,CAAA;;AACA,MAAA,IAAIpF,MAAM,CAACsG,SAAP,CAAiBD,IAAjB,CAAJ,EAA4B;AAC1B,QAAA,OAAOA,IAAP,CAAA;AACD,OAAA;;AACD,MAAA,IAAI9F,OAAJ,KAAIA,IAAAA,IAAAA,OAAJ,eAAIA,OAAO,CAAEgG,OAAb,EAAsB;AACpB,QAAA,OAAOC,IAAI,CAACC,KAAL,CAAWJ,IAAX,CAAP,CAAA;AACD,OAAA;;MACD,IAAyB9F,KAAAA,GAAAA,OAAO,IAAI,EAApC;AAAA,UAAA,WAAA,GAAA,KAAA,CAAQmG,KAAR;UAAQA,KAAR,4BAAgB,IAAhB,GAAA,WAAA,CAAA;;MACA,IAAIA,KAAK,KAAK,IAAV,IAAkB,OAAOA,KAAP,KAAiB,QAAvC,EAAiD;AAC/C,QAAA,OAAO1G,MAAM,CAACqG,IAAI,CAAC9S,OAAL,CAAa,OAAOmT,KAAP,KAAiB,SAAjB,GAA6B,CAA7B,GAAiCA,KAA9C,CAAD,CAAb,CAAA;AACD,OAAA;;AAED,MAAA,OAAOL,IAAP,CAAA;AACD,KAAA;AAED;AACF;AACA;AACA;AACA;;AA5GA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,UAAA;AAAA,IAAA,KAAA,EA6GE,SAAyB,QAAA,GAAA;MACvB,OAAO;QACLjT,WAAW,EAAE,KAAKA,WADb;AAELgS,QAAAA,SAAS,EAAE,IAAKA,CAAAA,SAAAA;OAFlB,CAAA;AAID,KAAA;AAED;AACF;AACA;AACA;AACA;;AAxHA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,QAAA;AAAA,IAAA,KAAA,EAyHE,SAAuB,MAAA,GAAA;AACrB;MACAuB,OAAO,CAACC,IAAR,CAAa,mCAAb,CAAA,CAAA;MACA,OAAO,IAAA,CAAKC,QAAL,EAAP,CAAA;AACD,KAAA;AA7HH,GAAA,CAAA,CAAA,CAAA;;AAAA,EAAA,OAAA,QAAA,CAAA;AAAA,CAAA;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACaC,kBAAkB,GAAG,SAArBA,kBAAqB,CAACb,YAAD,EAAoC;EACpE,IAAIA,YAAY,KAAK9S,SAArB,EAAgC;IAC9B,OAAO,IAAIqS,QAAJ,EAAP,CAAA;AACD,GAAA;;AACD,EAAA,IAAI,OAAOS,YAAP,KAAwB,QAA5B,EAAsC;IACpC,OAAO,IAAIT,QAAJ,CAAa;AAAEpS,MAAAA,WAAW,EAAE6S,YAAAA;AAAf,KAAb,CAAP,CAAA;AACD,GAAA;;EACD,IAAI,OAAOA,YAAP,KAAwB,QAAxB,IAAoCA,YAAY,CAACrK,QAAb,CAAsB,GAAtB,CAAxC,EAAoE;AAClE,IAAA,IAAA,mBAAA,GAAiCqK,YAAY,CAACpG,KAAb,CAAmB,GAAnB,CAAjC;AAAA,QAAA,oBAAA,GAAApB,kCAAA,CAAA,mBAAA,EAAA,CAAA,CAAA;AAAA,QAAOrL,WAAP,GAAA,oBAAA,CAAA,CAAA,CAAA;AAAA,QAAoBgS,SAApB,GAAA,oBAAA,CAAA,CAAA,CAAA,CAAA;;IACA,OAAO,IAAII,QAAJ,CAAa;AAAEpS,MAAAA,WAAW,EAAXA,WAAF;AAAegS,MAAAA,SAAS,EAATA,SAAAA;AAAf,KAAb,CAAP,CAAA;AACD,GAAA;;AACD,EAAA,IAAIG,mBAAmB,CAAC3J,QAApB,CAA6BqK,YAA7B,CAAJ,EAAuE;AACrE,IAAA,OAAO,IAAIT,QAAJ,CAAaN,uBAAuB,CAACe,YAAD,CAApC,CAAP,CAAA;AACD,GAAA;;EACD,IAAI,CAAC,CAAC,QAAD,EAAW,QAAX,CAAqBrK,CAAAA,QAArB,6BAAqCqK,YAArC,CAAA,CAAD,IAAuDjG,MAAM,CAAC+G,KAAP,CAAa/G,MAAM,CAACiG,YAAD,CAAnB,CAA3D,EAA+F;AAC7F,IAAA,MAAM,IAAI/I,KAAJ,CAAA,mCAAA,CAAA,MAAA,CACgCqI,mBAAmB,CAAC/R,IAApB,CAAyB,GAAzB,CADhC,EAAA,QAAA,CAAA,CAAA,MAAA,CACsEwT,IAAI,CAACC,SAAL,CACxEhB,YADwE,CADtE,CAAN,CAAA,CAAA;AAKD,GAAA;;EACD,OAAO,IAAIT,QAAJ,CAAa;IAAEpS,WAAW,EAAE4M,MAAM,CAACiG,YAAD,CAAA;AAArB,GAAb,CAAP,CAAA;AACD;;AC9BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaiB,kBAAkB,GAAG,SAArBA,kBAAqB,CAACC,QAAD,EAAA;AAAA,EAAA,OAA6B,IAAI3B,QAAJ,CAAa2B,QAAb,CAA7B,CAAA;AAAA;;ACPlC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaC,cAAc,GAAG,SAAjBA,cAAiB,CAACD,QAAD,EAA+C;EAC3E,IAAI,OAAOA,QAAP,KAAoB,QAApB,IAAgC,OAAOA,QAAP,KAAoB,QAAxD,EAAkE;IAChE,OAAOL,kBAAkB,CAACK,QAAD,CAAzB,CAAA;AACD,GAAA;;EACD,OAAOD,kBAAkB,CAACC,QAAD,CAAzB,CAAA;AACD;;ACfD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAME,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACF,QAAD,EAAwC;AAC3E,EAAA,IAAMrB,gBAAgB,GAAGqB,QAAQ,CAACjB,UAAT,EAAzB,CAAA;AACA,EAAA,OACGJ,gBAAgB,KAAK,OAArB,IAAgC,CAAjC,IACC,CAAC,MAAD,EAAS,OAAT,EAAkBlK,QAAlB,CAA2BkK,gBAA3B,CAAgD,IAAA,CADjD,IAEA,KAHF,CAAA;AAKD,CAPM;;ACNP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMwB,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACH,QAAD,EAAA;AAAA,EAAA,OAAwBE,qBAAqB,CAACF,QAAD,CAArB,GAAkC,CAA1D,CAAA;AAAA,CAA5B;;;;ACNP,IAAMI,2BAA2B,GAAG,SAA9BA,2BAA8B,CAACC,QAAD,EAAwB;AAC1D,EAAA,IAAQC,OAAR,GAA8BD,QAA9B,CAAQC,OAAR;AAAA,MAAiBN,QAAjB,GAA8BK,QAA9B,CAAiBL,QAAjB,CAAA;AACA,EAAA,IAAMO,kBAAkB,GAAGL,qBAAqB,CAACF,QAAD,CAAhD,CAAA;AACA,EAAA,IAAI,CAACO,kBAAL,EAAyB,OAAO,CAAP,CAAA;AAEzB,EAAA,IAAMC,gBAAgB,GAAGR,QAAQ,CAACS,MAAT,CAAgB;AAAErB,IAAAA,OAAO,EAAE,IAAA;AAAX,GAAhB,CAAzB,CAAA;EACA,IAAMsB,yBAAyB,GAAG,EAAA,GAAKF,gBAAvC,CAAA;AACA,EAAA,IAAMG,6BAA6B,GAAG,EAAKH,GAAAA,gBAAL,GAAwBD,kBAA9D,CAAA;AACA,EAAA,IAAMK,eAAe,GACnB,EAAA,IAAMF,yBAAyB,GAAGH,kBAAlC,IAAwDA,kBAD1D,CAAA;AAEA,EAAA,IAAMM,uBAAuB,GAAGxB,IAAI,CAACyB,KAAL,CAAW,CAACR,OAAO,GAAG,CAAX,IAAgBM,eAA3B,CAAhC,CAAA;AACA,EAAA,IAAMG,eAAe,GAAG1B,IAAI,CAAC2B,GAAL,CACtB,CADsB,EAErB,CAACV,OAAO,GAAG,CAAX,IAAgBM,eAAjB,GAAoCF,yBAFd,CAAxB,CAAA;EAIA,IAAMO,+BAA+B,GAAG5B,IAAI,CAACyB,KAAL,CACtCC,eAAe,GAAGJ,6BADoB,CAAxC,CAAA;AAGA,EAAA,IAAMO,cAAc,GAAGH,eAAe,GAAGJ,6BAAzC,CAAA;EACA,IAAMQ,4BAA4B,GAAGD,cAAc,GAAG,CAAjB,GAAqBX,kBAArB,GAA0C,CAA/E,CAAA;EAEA,OACEM,uBAAuB,GAAG,CAA1B,GAA8BN,kBAA9B,GACAU,+BAA+B,GAAGV,kBADlC,GAEAY,4BAHF,CAAA;AAKD,CA1BD,CAAA;;AA0CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAaC,QAAb,gBAAA,YAAA;AACE;AAGA;AAGA;AAGA;;AAGA;AACF;AACA;AACA;AACA;AACA;EACE,SAAYC,QAAAA,CAAAA,YAAZ,EAAyCjI,OAAzC,EAAyE;AAAA,IAAA,IAAA,kBAAA,EAAA,qBAAA,CAAA;;AAAA,IAAAmF,mCAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;;AAAA,IAAA/G,mCAAA,CAAA,IAAA,EAAA,SAAA,EAjBvD,CAiBuD,CAAA,CAAA;;IAAAA,mCAdpD,CAAA,IAAA,EAAA,UAAA,EAAA,IAAI6G,QAAJ,EAcoD,CAAA,CAAA;;AAAA,IAAA7G,mCAAA,CAAA,IAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;AAAA,IAAAA,mCAAA,CAAA,IAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;;IACvE,IAA8B6J,IAAAA,GAAAA,YAAY,IAAI,EAA9C;QAAQf,OAAR,QAAQA,OAAR;QAAiBN,QAAjB,QAAiBA,QAAjB,CAAA;;IAEA,IAAIM,OAAO,KAAKtU,SAAhB,EAA2B;AACzB,MAAA,IAAI,OAAOsU,OAAP,KAAmB,QAAvB,EAAiC;QAC/B,IAAKA,CAAAA,OAAL,GAAeA,OAAf,CAAA;AACD,OAFD,MAEO,IAAI,OAAOA,OAAP,KAAmB,QAAvB,EAAiC;QACtC,IAAIA,OAAO,KAAK,MAAhB,EAAwB;UACtB,IAAKA,CAAAA,OAAL,GAAe,CAACgB,QAAhB,CAAA;AACD,SAFD,MAEO,IAAIhB,OAAO,KAAK,MAAhB,EAAwB;UAC7B,IAAKA,CAAAA,OAAL,GAAegB,QAAf,CAAA;AACD,SAFM,MAEA;AACL,UAAA,IAAA,CAAKhB,OAAL,GAAezH,MAAM,CAACyH,OAAD,CAArB,CAAA;AACD,SAAA;AACF,OARM,MAQA;AACL,QAAA,MAAM,IAAIvK,KAAJ,CAAwDuK,6CAAAA,CAAAA,MAAAA,CAAAA,OAAxD,CAAN,CAAA,CAAA;AACD,OAAA;AACF,KAAA;;IACD,IAAIN,QAAQ,KAAKhU,SAAjB,EAA4B;MAC1B,IAAIgU,QAAQ,YAAY3B,QAAxB,EAAkC;QAChC,IAAK2B,CAAAA,QAAL,GAAgBA,QAAhB,CAAA;AACD,OAFD,MAEO;AACL,QAAA,IAAA,CAAKA,QAAL,GAAgBC,cAAc,CAACD,QAAD,CAA9B,CAAA;AACD,OAAA;AACF,KAAA;;AACD,IAAA,IAAA,CAAKuB,SAAL,GAAA,CAAA,kBAAA,GAAiBnI,OAAjB,KAAA,IAAA,IAAiBA,OAAjB,KAAiBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEmI,SAA1B,MAAuCpB,IAAAA,IAAAA,kBAAAA,KAAAA,KAAAA,CAAAA,GAAAA,kBAAAA,GAAAA,mBAAmB,CAAC,IAAA,CAAKH,QAAN,CAA1D,CAAA;AACA,IAAA,IAAA,CAAKwB,cAAL,GAAA,CAAA,qBAAA,GAAsBpI,OAAtB,KAAA,IAAA,IAAsBA,OAAtB,KAAsBA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEoI,cAA/B,yEAAkD,IAAKD,CAAAA,SAAL,GAAiB,GAAjB,GAAuB,GAAzE,CAAA;AACD,GAAA;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AA3DA,EAAA/C,gCAAA,CAAA,QAAA,EAAA,CAAA;AAAA,IAAA,GAAA,EAAA,KAAA;IAAA,KA4DE,EAAA,SAAA,GAAA,CAAI6B,QAAJ,EAAwB;MACtB,IAAI,EAACA,QAAD,KAACA,IAAAA,IAAAA,QAAD,eAACA,QAAQ,CAAEL,QAAX,CAAuB,IAAA,CAAAK,QAAQ,KAAR,IAAA,IAAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,QAAQ,CAAEC,OAAV,MAAsBtU,SAAjD,EAA4D;QAC1D,MAAM+J,KAAK,CAAC,uCAAD,CAAX,CAAA;AACD,OAAA;;MACD,IAAmC,KAAA,GAAA,CAAAsK,QAAQ,KAAA,IAAR,IAAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,QAAQ,CAAEL,QAAV,KAAsB,EAAzD;UAAQ/B,SAAR,SAAQA,SAAR;UAAmBhS,WAAnB,SAAmBA,WAAnB,CAAA;;MAEA,IAAIwV,iBAAiB,GAAGpB,QAAxB,CAAA;;AACA,MAAA,IAAIpC,SAAS,KAAK,IAAK+B,CAAAA,QAAL,CAAc/B,SAA5B,IAAyChS,WAAW,KAAK,IAAA,CAAK+T,QAAL,CAAc/T,WAA3E,EAAwF;AACtFwV,QAAAA,iBAAiB,GAAGpB,QAAQ,CAACqB,eAAT,CAAyB,IAAA,CAAK1B,QAA9B,CAApB,CAAA;AACD,OAAA;;AACD,MAAA,IAAA,kBAAA,GAAoByB,iBAApB;UAAQnB,OAAR,sBAAQA,OAAR,CAAA;MACA,OAAO,IAAIc,QAAJ,CAAa;AAAEd,QAAAA,OAAO,EAAE,IAAA,CAAKA,OAAL,GAAeA,OAA1B;AAAmCN,QAAAA,QAAQ,EAAE,IAAKA,CAAAA,QAAAA;AAAlD,OAAb,CAAP,CAAA;AACD,KAAA;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AArFA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,UAAA;IAAA,KAsFE,EAAA,SAAA,QAAA,CAASK,QAAT,EAA6B;MAC3B,IAAI,EAACA,QAAD,KAACA,IAAAA,IAAAA,QAAD,eAACA,QAAQ,CAAEL,QAAX,CAAuB,IAAA,CAAAK,QAAQ,KAAR,IAAA,IAAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,QAAQ,CAAEC,OAAV,MAAsBtU,SAAjD,EAA4D;QAC1D,MAAM+J,KAAK,CAAC,4CAAD,CAAX,CAAA;AACD,OAAA;;MACD,IAAsDsK,kBAAAA,GAAAA,QAAtD,CAAQL,QAAR,CAAA;AAAA,MAAA,kBAAA,GAAA,kBAAA,KAAA,KAAA,CAAA,GAA+C,EAA/C,GAAA,kBAAA,CAAA;MAAA,IAAoB/B,SAApB,sBAAoBA,SAApB;UAA+BhS,WAA/B,sBAA+BA,WAA/B,CAAA;MACA,IAAIwV,iBAAiB,GAAGpB,QAAxB,CAAA;;AACA,MAAA,IAAIpC,SAAS,KAAK,IAAK+B,CAAAA,QAAL,CAAc/B,SAA5B,IAAyChS,WAAW,KAAK,IAAA,CAAK+T,QAAL,CAAc/T,WAA3E,EAAwF;AACtFwV,QAAAA,iBAAiB,GAAGpB,QAAQ,CAACqB,eAAT,CAAyB,IAAA,CAAK1B,QAA9B,CAApB,CAAA;AACD,OAAA;;AACD,MAAA,IAAA,mBAAA,GAAoByB,iBAApB;UAAQnB,OAAR,uBAAQA,OAAR,CAAA;MACA,OAAO,IAAIc,QAAJ,CAAa;AAAEd,QAAAA,OAAO,EAAE,IAAA,CAAKA,OAAL,GAAeA,OAA1B;AAAmCN,QAAAA,QAAQ,EAAE,IAAKA,CAAAA,QAAAA;AAAlD,OAAb,CAAP,CAAA;AACD,KAAA;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA3GA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,iBAAA;IAAA,KA4GE,EAAA,SAAA,eAAA,CAAgBA,QAAhB,EAAqD;MACnD,IAAM2B,iBAAiB,GAAG3B,QAAQ,YAAY3B,QAApB,GAA+B2B,QAA/B,GAA0CC,cAAc,CAACD,QAAD,CAAlF,CAAA;AAEA,MAAA,IAAMM,OAAO,GAAGjB,IAAI,CAACyB,KAAL,CACd,IAAKR,CAAAA,OAAL,IACG,IAAA,CAAKN,QAAL,CAAcS,MAAd,CAAqB;AAAElB,QAAAA,KAAK,EAAE,KAAA;AAAT,OAArB,CAAyCoC,GAAAA,iBAAiB,CAAClB,MAAlB,CAAyB;AAAElB,QAAAA,KAAK,EAAE,KAAA;OAAlC,CAD5C,CADc,CAAhB,CAAA;AAIA,MAAA,IAAMc,QAAQ,GAAG;AAAEC,QAAAA,OAAO,EAAPA,OAAF;AAAWN,QAAAA,QAAQ,EAAE2B,iBAAAA;OAAtC,CAAA;AACA,MAAA,OAAO,IAAIP,QAAJ,CAAaf,QAAb,CAAP,CAAA;AACD,KAAA;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAlIA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,QAAA;IAAA,KAmIE,EAAA,SAAA,MAAA,CAAOjH,OAAP,EAOG;AACD,MAAA,IAAIwI,YAAY,GAAA,EAAA,CAAA,MAAA,CAAM,IAAKtB,CAAAA,OAAX,CAAhB,CAAA;MACA,IAAMxB,YAAY,GAAG,IAAKkB,CAAAA,QAAL,CAAc6B,MAAd,CAAqBzI,OAArB,CAArB,CAAA;;MACA,IAAIA,OAAO,SAAP,IAAAA,OAAO,WAAP,IAAAA,OAAO,CAAE0I,yBAAT,IAAsC,CAAC,CAAC,GAAD,EAAM,KAAN,CAAA,CAAarN,QAAb,CAAsBqK,YAAtB,CAA3C,EAAgF;QAC9E8C,YAAY,GAAG,CAAC,IAAA,CAAKtB,OAAN,EAAexB,YAAf,CAA6BzS,CAAAA,IAA7B,CAAkC,GAAlC,CAAf,CAAA;AACD,OAAA;;AACD,MAAA,OAAOuV,YAAP,CAAA;AACD,KAAA;AAED;AACF;AACA;AACA;AACA;;AAvJA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,SAAA;AAAA,IAAA,KAAA,EAwJE,SAKE,OAAA,GAAA;AACA,MAAA,IAAMG,YAAY,GAAG,IAAKzB,CAAAA,OAAL,IAAgB,IAAKiB,CAAAA,SAAL,GAAiBnB,2BAA2B,CAAC,IAAD,CAA5C,GAAqD,CAArE,CAArB,CAAA;AACA,MAAA,IAAII,gBAAgB,GAAG,IAAA,CAAKR,QAAL,CAAcS,MAAd,CAAqB;AAAErB,QAAAA,OAAO,EAAE,IAAA;OAAhC,CAAvB,CAFA;;AAKA,MAAA,IAAI,CAAC,QAAD,EAAW,OAAX,CAAoB3K,CAAAA,QAApB,CAA6B,IAAA,CAAKuL,QAAL,CAAcjB,UAAd,EAA7B,CAAJ,EAA8D;AAC5DyB,QAAAA,gBAAgB,GAAG,IAAA,CAAKR,QAAL,CAAcS,MAAd,CAAqB;AAAElB,UAAAA,KAAK,EAAE,IAAA;AAAT,SAArB,CAAnB,CAAA;AACD,OAAA;;MAED,IAAMyC,KAAK,GAAG3C,IAAI,CAACyB,KAAL,CAAWiB,YAAY,IAAI,IAAA,GAAOvB,gBAAX,CAAvB,CAAd,CAAA;AACA,MAAA,IAAMyB,OAAO,GAAG5C,IAAI,CAACyB,KAAL,CAAWiB,YAAY,IAAI,EAAKvB,GAAAA,gBAAT,CAAvB,CAAA,GAAqD,EAArE,CAAA;MACA,IAAM0B,OAAO,GAAG7C,IAAI,CAACyB,KAAL,CAAWiB,YAAY,GAAGvB,gBAA1B,CAAA,GAA8C,EAA9D,CAAA;MACA,IAAM2B,MAAM,GAAG9C,IAAI,CAACyB,KAAL,CAAWiB,YAAY,GAAGvB,gBAA1B,CAAf,CAAA;MACA,OAAO;AACLwB,QAAAA,KAAK,EAALA,KADK;AAELC,QAAAA,OAAO,EAAPA,OAFK;AAGLC,QAAAA,OAAO,EAAPA,OAHK;AAILC,QAAAA,MAAM,EAANA,MAAAA;OAJF,CAAA;AAMD,KAAA;AAED;AACF;AACA;AACA;AACA;AACA;;AAvLA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,QAAA;AAAA,IAAA,KAAA,EAwLE,SAME,MAAA,GAAA;MACA,IAAMJ,YAAY,GAAG,IAAKzB,CAAAA,OAAL,GAAeF,2BAA2B,CAAC,IAAD,CAA/D,CAAA;;MACA,IAAoC,aAAA,GAAA,IAAA,CAAKgC,OAAL,EAApC;UAAQJ,KAAR,iBAAQA,KAAR;UAAeC,OAAf,iBAAeA,OAAf;UAAwBC,OAAxB,iBAAwBA,OAAxB,CAAA;;AACA,MAAA,IAAM1B,gBAAgB,GAAG,IAAA,CAAKR,QAAL,CAAcS,MAAd,CAAqB;AAAErB,QAAAA,OAAO,EAAE,IAAA;AAAX,OAArB,CAAzB,CAAA;AACA,MAAA,IAAMiD,aAAa,GAAGN,YAAY,GAAGvB,gBAArC,CAAA;MACA,IAAM8B,YAAY,GAAGjD,IAAI,CAACyB,KAAL,CAAY,IAAOuB,GAAAA,aAAR,GAAyB7B,gBAApC,CAArB,CAAA;AACA,MAAA,IAAM+B,cAAc,GAAGF,aAAa,GAAG7B,gBAAvC,CAAA;MACA,OAAO;AACLwB,QAAAA,KAAK,EAALA,KADK;AAELC,QAAAA,OAAO,EAAPA,OAFK;AAGLC,QAAAA,OAAO,EAAPA,OAHK;AAILI,QAAAA,YAAY,EAAZA,YAJK;AAKLC,QAAAA,cAAc,EAAdA,cAAAA;OALF,CAAA;AAOD,KAAA;AAED;AACF;AACA;AACA;AACA;;AAlNA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,WAAA;AAAA,IAAA,KAAA,EAmNE,SAAY,SAAA,GAAA;AACV,MAAA,IAAA,cAAA,GAAmC,KAAKvC,QAAxC;UAAQ/B,SAAR,kBAAQA,SAAR;UAAmBhS,WAAnB,kBAAmBA,WAAnB,CAAA;AACA,MAAA,OAAOoT,IAAI,CAACC,KAAL,CAAW,OAAO,EAAG,IAAA,CAAKgB,OAAL,GAAerC,SAAhB,GAA6BhS,WAA/B,CAAlB,IAAiE,IAAxE,CAAA;AACD,KAAA;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAzOA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,YAAA;IAAA,KA0OE,EAAA,SAAA,UAAA,CAAWmN,OAAX,EAGG;MACD,IAAmBA,KAAAA,GAAAA,OAAO,IAAI,EAA9B;UAAQoJ,MAAR,SAAQA,MAAR,CAAA;;MACA,IAA2B,YAAA,GAAA,IAAA,CAAKC,MAAL,EAA3B;UAAQT,KAAR,gBAAQA,KAAR;AAAA,UAAkBU,IAAlB,GAAA5I,4CAAA,CAAA,YAAA,EAAAlD,WAAA,CAAA,CAAA;;AACA,MAAA,IAAMqL,OAAN,GAAyCS,IAAzC,CAAMT,OAAN;AAAA,UAAeC,OAAf,GAAyCQ,IAAzC,CAAeR,OAAf;AAAA,UAAwBI,YAAxB,GAAyCI,IAAzC,CAAwBJ,YAAxB,CAAA;;MACA,IAAI,CAAC,CAACE,MAAF,IAAY,OAAOA,MAAP,KAAkB,QAAlC,EAA4C;QAC1C,MAAMzM,KAAK,CAAC,2BAAD,CAAX,CAAA;AACD,OAAA;;AAED,MAAA,IAAM4M,QAAQ,GAAG,SAAXA,QAAW,CAACC,IAAD,EAAeC,KAAf,EAAA;AAAA,QAAA,OACf,CAACL,MAAM,CAAC/N,QAAP,CAAgBmO,IAAhB,CAAD,IACA,CAACC,KAAK,CAAC7N,IAAN,CAAW,UAAC8N,CAAD,EAAA;AAAA,UAAA,OAAON,MAAM,CAAC/N,QAAP,CAAgBqO,CAAhB,KAAsBN,MAAM,CAACO,WAAP,CAAmBH,IAAnB,CAA2BJ,GAAAA,MAAM,CAACQ,OAAP,CAAeF,CAAf,CAAxD,CAAA;AAAA,SAAX,CAFc,CAAA;OAAjB,CAAA;;AAGA,MAAA,IACE,CAAC,CAACN,MAAF,IACA,EAAEG,QAAQ,CAAC,GAAD,EAAM,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAN,CAAR,IAAkCA,QAAQ,CAAC,GAAD,EAAM,CAAC,GAAD,EAAM,GAAN,CAAN,CAA1C,IAA+DA,QAAQ,CAAC,GAAD,EAAM,CAAC,GAAD,CAAN,CAAzE,CAFF,EAGE;QACA,MAAM5M,KAAK,CAAC,wDAAD,CAAX,CAAA;AACD,OAAA;;MAED,IAAI,CAACyM,MAAL,EAAa;QACX,OACER,EAAAA,CAAAA,MAAAA,CAAAA,KAAK,GAAG,CAAR,GAAeA,EAAAA,CAAAA,MAAAA,CAAAA,KAAf,EAAwB,GAAA,CAAA,CAAA,MAAA,CAAA,EAAA,CAAA,MAAA,CAAGC,OAAH,CAAA,CAAagB,QAAb,CAAsB,CAAtB,EAAyB,GAAzB,CAAxB,CAAA,GAA0DhB,OAD5D,EAAA,GAAA,CAAA,CAAA,MAAA,CAEI,EAAGC,CAAAA,MAAAA,CAAAA,OAAH,CAAae,CAAAA,QAAb,CAAsB,CAAtB,EAAyB,GAAzB,CAFJ,CAAA,CAAA;AAGD,OAAA;;MAED,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACC,CAAD,EAAY5N,GAAZ,EAA8B;QAC1D,IAAI6N,CAAC,GAAGD,CAAR,CAAA;;QACA,OAAO5N,GAAG,CAAC6N,CAAD,CAAH,KAAW7N,GAAG,CAAC6N,CAAC,GAAG,CAAL,CAArB,EAA8B;AAC5BA,UAAAA,CAAC,IAAI,CAAL,CAAA;AACD,SAAA;;AACD,QAAA,OAAOA,CAAC,GAAGD,CAAJ,GAAQ,CAAf,CAAA;OALF,CAAA;;MAQA,IAAME,YAAY,GAAG,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,EAAgB,GAAhB,CAArB,CAAA;MAEA,IAAMzI,MAAgB,GAAG,EAAzB,CAAA;;MACA9D,sCAAI0L,CAAAA,MAAJ,CAAYnL,CAAAA,OAAZ,CAAoB,UAACiM,CAAD,EAAIH,CAAJ,EAAO5N,GAAP,EAAe;AACjC,QAAA,QAAQ+N,CAAR;AACE,UAAA,KAAK,GAAL;AAAU,YAAA;cACR,IAAI/N,GAAG,CAAC4N,CAAC,GAAG,CAAL,CAAH,KAAe,GAAnB,EAAwB;AACtB,gBAAA,MAAA;AACD,eAAA;;AACD,cAAA,IAAMI,MAAM,GAAGL,qBAAqB,CAACC,CAAD,EAAI5N,GAAJ,CAApC,CAAA;cACAqF,MAAM,CAACnD,IAAP,CAAY,EAAGuK,CAAAA,MAAAA,CAAAA,KAAH,CAAWiB,CAAAA,QAAX,CAAoBM,MAApB,EAA4B,GAA5B,CAAZ,CAAA,CAAA;;cACA,IAAIF,YAAY,CAAC5O,QAAb,CAAsBc,GAAG,CAAC4N,CAAC,GAAGI,MAAL,CAAzB,CAAJ,EAA4C;gBAC1C3I,MAAM,CAACnD,IAAP,CAAY,GAAZ,CAAA,CAAA;AACD,eAAA;;AACD,cAAA,MAAA;AACD,aAAA;;AACD,UAAA,KAAK,GAAL;AAAU,YAAA;cACR,IAAIlC,GAAG,CAAC4N,CAAC,GAAG,CAAL,CAAH,KAAe,GAAnB,EAAwB;AACtB,gBAAA,MAAA;AACD,eAAA;;AACD,cAAA,IAAMI,OAAM,GAAGL,qBAAqB,CAACC,CAAD,EAAI5N,GAAJ,CAApC,CAAA;;AACA,cAAA,IAAI,CAACiN,MAAM,CAAC/N,QAAP,CAAgB,GAAhB,CAAL,EAA2B;gBACzBwN,OAAO,IAAID,KAAK,GAAG,EAAnB,CAAA;AACD,eAAA;;cACDpH,MAAM,CAACnD,IAAP,CAAY,EAAGwK,CAAAA,MAAAA,CAAAA,OAAH,CAAagB,CAAAA,QAAb,CAAsBM,OAAtB,EAA8B,GAA9B,CAAZ,CAAA,CAAA;;cACA,IAAIF,YAAY,CAAC5O,QAAb,CAAsBc,GAAG,CAAC4N,CAAC,GAAGI,OAAL,CAAzB,CAAJ,EAA4C;gBAC1C3I,MAAM,CAACnD,IAAP,CAAY,GAAZ,CAAA,CAAA;AACD,eAAA;;AACD,cAAA,MAAA;AACD,aAAA;;AACD,UAAA,KAAK,GAAL;AAAU,YAAA;cACR,IAAIlC,GAAG,CAAC4N,CAAC,GAAG,CAAL,CAAH,KAAe,GAAnB,EAAwB;AACtB,gBAAA,MAAA;AACD,eAAA;;AACD,cAAA,IAAMI,QAAM,GAAGL,qBAAqB,CAACC,CAAD,EAAI5N,GAAJ,CAApC,CAAA;;AACA,cAAA,IAAI,CAACiN,MAAM,CAAC/N,QAAP,CAAgB,GAAhB,CAAL,EAA2B;gBACzByN,OAAO,IAAID,OAAO,GAAG,EAArB,CAAA;AACD,eAAA;;cACDrH,MAAM,CAACnD,IAAP,CAAY,EAAGyK,CAAAA,MAAAA,CAAAA,OAAH,CAAae,CAAAA,QAAb,CAAsBM,QAAtB,EAA8B,GAA9B,CAAZ,CAAA,CAAA;;cACA,IAAIF,YAAY,CAAC5O,QAAb,CAAsBc,GAAG,CAAC4N,CAAC,GAAGI,QAAL,CAAzB,CAAJ,EAA4C;gBAC1C3I,MAAM,CAACnD,IAAP,CAAY,GAAZ,CAAA,CAAA;AACD,eAAA;;AACD,cAAA,MAAA;AACD,aAAA;;AACD,UAAA,KAAK,GAAL;AAAU,YAAA;cACR,IAAIlC,GAAG,CAAC4N,CAAC,GAAG,CAAL,CAAH,KAAe,GAAnB,EAAwB;AACtB,gBAAA,MAAA;AACD,eAAA;;AACD,cAAA,IAAMI,QAAM,GAAGL,qBAAqB,CAACC,CAAD,EAAI5N,GAAJ,CAApC,CAAA;;AACA,cAAA,IAAI,CAACiN,MAAM,CAAC/N,QAAP,CAAgB,GAAhB,CAAL,EAA2B;gBACzB6N,YAAY,IAAIJ,OAAO,GAAG,IAA1B,CAAA;AACD,eAAA;;cACDtH,MAAM,CAACnD,IAAP,CAAY,EAAA,CAAA,MAAA,CAAG4H,IAAI,CAACC,KAAL,CAAWgD,YAAY,GAAG,IAAA,CAAA,GAAA,CAAA,EAAH,EAAU,CAAIiB,GAAAA,QAAd,CAAvB,CAAH,CAAA,CAAmDN,QAAnD,CAA4DM,QAA5D,EAAoE,GAApE,CAAZ,CAAA,CAAA;AACA,cAAA,MAAA;AACD,aAAA;;AACD,UAAA;YACE3I,MAAM,CAACnD,IAAP,CAAY6L,CAAZ,CAAA,CAAA;AApDJ,SAAA;OADF,CAAA,CAAA;;AAwDA,MAAA,OAAO1I,MAAM,CAACvO,IAAP,CAAY,EAAZ,CAAP,CAAA;AACD,KAAA;AAED;AACF;AACA;AACA;AACA;;AA/UA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,SAAA;AAAA,IAAA,KAAA,EAgVE,SAAU,OAAA,GAAA;AACR,MAAA,IAAI,KAAKiU,OAAL,KAAiB,CAACgB,QAAtB,EAAgC,OAAO,aAAP,CAAA;;MAChC,IAA4C,cAAA,GAAA,IAAA,CAAKc,OAAL,EAA5C;UAAQJ,KAAR,kBAAQA,KAAR;UAAeC,OAAf,kBAAeA,OAAf;UAAwBC,OAAxB,kBAAwBA,OAAxB;UAAiCC,MAAjC,kBAAiCA,MAAjC,CAAA;;AACA,MAAA,IAAMqB,MAAM,GAAG,CACbxB,KAAK,CAAC5V,OAAN,EAAgB6W,CAAAA,QAAhB,CAAyB,CAAzB,EAA4B,GAA5B,CADa,EAEbhB,OAAO,CAAC7V,OAAR,EAAkB6W,CAAAA,QAAlB,CAA2B,CAA3B,EAA8B,GAA9B,CAFa,EAGbf,OAAO,CAAC9V,OAAR,EAAkB6W,CAAAA,QAAlB,CAA2B,CAA3B,EAA8B,GAA9B,CAHa,EAIb5W,IAJa,CAIR,GAJQ,CAAf,CAAA;AAKA,MAAA,OAAO,CAACmX,MAAD,EAAS,EAAGrB,CAAAA,MAAAA,CAAAA,MAAH,EAAYc,QAAZ,CAAqB,CAArB,EAAwB,GAAxB,CAAT,CAAA,CAAuC5W,IAAvC,CAA4C,IAAA,CAAKmV,cAAjD,CAAP,CAAA;AACD,KAAA;AAED;AACF;AACA;AACA;AACA;;AA/VA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,UAAA;AAAA,IAAA,KAAA,EAgWE,SAAW,QAAA,GAAA;MACT,OAAO;QACLlB,OAAO,EAAE,KAAKA,OADT;AAELN,QAAAA,QAAQ,EAAE,IAAA,CAAKA,QAAL,CAAcN,QAAd,EAAA;OAFZ,CAAA;AAID,KAAA;AAED;AACF;AACA;AACA;AACA;;AA3WA,GAAA,EAAA;AAAA,IAAA,GAAA,EAAA,QAAA;AAAA,IAAA,KAAA,EA4WE,SAAS,MAAA,GAAA;AACP;MACAF,OAAO,CAACC,IAAR,CAAa,mCAAb,CAAA,CAAA;MACA,OAAO,IAAA,CAAKC,QAAL,EAAP,CAAA;AACD,KAAA;AAhXH,GAAA,CAAA,CAAA,CAAA;;AAAA,EAAA,OAAA,QAAA,CAAA;AAAA,CAAA;;ACvDA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAM+D,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACC,IAAD,EAAeC,IAAf,EAAgC;AACtE,EAAA,IAAIjY,CAAC,GAAG2T,IAAI,CAACuE,GAAL,CAASF,IAAT,CAAR,CAAA;AACA,EAAA,IAAI/X,CAAC,GAAG0T,IAAI,CAACuE,GAAL,CAASD,IAAT,CAAR,CAAA;;AACA,EAAA,OAAOjY,CAAC,IAAIC,CAAL,IAAUD,CAAC,KAAKC,CAAvB,EAA0B;IACxB,IAAID,CAAC,GAAGC,CAAR,EAAW;AAAA,MAAA,IAAA,IAAA,GACA,CAACD,CAAC,GAAGC,CAAL,EAAQA,CAAR,CADA,CAAA;MACRD,CADQ,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA;MACLC,CADK,GAAA,IAAA,CAAA,CAAA,CAAA,CAAA;AAEV,KAFD,MAEO;AAAA,MAAA,IAAA,KAAA,GACI,CAACD,CAAD,EAAIC,CAAC,GAAGD,CAAR,CADJ,CAAA;MACJA,CADI,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;MACDC,CADC,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AAEN,KAAA;AACF,GAAA;;EACD,OAAOD,CAAC,IAAIC,CAAZ,CAAA;AACD,CAXM;;;;ACQP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMkY,qBAAqB,GAAG,SAAxBA,qBAAwB,CACnC3B,OADmC,EAEnC9I,OAFmC,EAGhC;EACH,IAAyDA,IAAAA,GAAAA,OAAO,IAAI,EAApE;MAAQ4G,QAAR,QAAQA,QAAR;AAAA,MAAA,WAAA,GAAA,IAAA,CAAkB8D,MAAlB;MAAkBA,MAAlB,4BAA2B,KAA3B,GAAA,WAAA;AAAA,MAAqCC,eAArC,GAAAjK,4CAAA,CAAA,IAAA,EAAAlD,WAAA,CAAA,CAAA;;EACA,IAAMoN,cAAc,GAAG,EAAA,CAAA,MAAA,CAAG9B,OAAH,CAAA,CAAa+B,OAAb,CAAqB,IAArB,EAA2B,GAA3B,CAAvB,CAAA;;AACA,EAAA,IAAIpL,MAAM,CAAC+G,KAAP,CAAa,CAACoE,cAAd,CAAJ,EAAmC;AACjC,IAAA,MAAM,IAAIjO,KAAJ,CAAwCmM,6BAAAA,CAAAA,MAAAA,CAAAA,OAAxC,CAAN,CAAA,CAAA;AACD,GAAA;;EACD,IAAIjW,WAAW,GAAG,CAAlB,CAAA;AACA,EAAA,IAAIqU,OAAJ,CAAA;;AACA,EAAA,IAAIzH,MAAM,CAACsG,SAAP,CAAiB,CAAC6E,cAAlB,CAAJ,EAAuC;AACrC1D,IAAAA,OAAO,GAAG,CAAC0D,cAAD,GAAkB/X,WAA5B,CAAA;AACD,GAFD,MAEO;AAAA,IAAA,IAAA,UAAA,CAAA;;AACL,IAAA,IAAA,qBAAA,GAAe+X,cAAc,CAACtL,KAAf,CAAqB,GAArB,CAAf;AAAA,QAAA,sBAAA,GAAApB,kCAAA,CAAA,qBAAA,EAAA,CAAA,CAAA;AAAA,QAAS4M,EAAT,GAAA,sBAAA,CAAA,CAAA,CAAA,CAAA;;AACA,IAAA,IAAMC,aAAa,GAAG9E,IAAI,CAAC+E,GAAL,eAASF,EAAT,KAAA,IAAA,IAASA,EAAT,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAASA,EAAE,CAAE1O,MAAb,mDAAuB,CAAvB,EAA0B,EAA1B,CAAtB,CAAA;AACAvJ,IAAAA,WAAW,IAAI,IAAA,CAAA,GAAA,CAAA,EAAJ,EAAUkY,aAAV,CAAX,CAAA;IACA7D,OAAO,GAAGjB,IAAI,CAACC,KAAL,CAAWzG,MAAM,CAACmL,cAAD,CAAN,GAAyB/X,WAApC,CAAV,CAAA;AACD,GAAA;;AACD,EAAA,IAAI+T,QAAQ,KAAKhU,SAAb,IAA0B8X,MAA9B,EAAsC;AACpC,IAAA,IAAMrY,GAAG,GAAGgY,wBAAwB,CAACxX,WAAD,EAAcqU,OAAd,CAApC,CAAA;AACAA,IAAAA,OAAO,IAAI7U,GAAX,CAAA;AACAQ,IAAAA,WAAW,IAAIR,GAAf,CAAA;AACD,GAAA;;AACD,EAAA,IAAM4U,QAAQ,GAAG,IAAIe,QAAJ,CACf;AAAEd,IAAAA,OAAO,EAAPA,OAAF;AAAWN,IAAAA,QAAQ,EAAE;AAAE/T,MAAAA,WAAW,EAAXA,WAAF;AAAegS,MAAAA,SAAS,EAAE,CAAA;AAA1B,KAAA;GADN,EAEf8F,eAFe,CAAjB,CAAA;EAIA,OAAO/D,QAAQ,KAAKhU,SAAb,GACHqU,QAAQ,CAACqB,eAAT,CAAyBzB,cAAc,CAACD,QAAQ,KAAK,IAAb,GAAoB,CAApB,GAAwBA,QAAzB,CAAvC,CADG,GAEHK,QAFJ,CAAA;AAGD;;AC9DD,IAAMgE,yBAAyB,GAAG,SAA5BA,yBAA4B,OAEhC/D,OAFgC,EAGhCN,QAHgC,EAI7B;AAAA,EAAA,IAAA,KAAA,GAAA1I,kCAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AAAA,MAHFgN,EAGE,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,MAHEC,EAGF,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,MAHMC,EAGN,GAAA,KAAA,CAAA,CAAA,CAAA;AAAA,MAHUC,EAGV,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;AACH,EAAA,IAAMjE,gBAAgB,GAAGR,QAAQ,CAACS,MAAT,CAAgB;AAAErB,IAAAA,OAAO,EAAE,IAAA;AAAX,GAAhB,CAAzB,CAAA;AACA,EAAA,IAAMsF,UAAU,GAAGxE,qBAAqB,CAACF,QAAD,CAAxC,CAAA;;AACA,EAAA,IAAIM,OAAO,KAAK,CAAZ,IAAiB,CAACoE,UAAtB,EAAkC;AAChC,IAAA,OAAO,CAAP,CAAA;AACD,GAAA;;AAED,EAAA,IAAMC,gBAAgB,GAAGJ,EAAE,GAAG,EAAL,KAAY,CAArC,CAAA;AACA,EAAA,IAAMK,gBAAgB,GAAGD,gBAAgB,IAAIH,EAAE,KAAK,CAApD,CAAA;EACA,IAAMK,UAAU,GAAGP,EAAE,IAAI,OAAO9D,gBAAP,GAA0B,EAAKkE,GAAAA,UAAnC,CAArB,CAAA;EACA,IAAMI,YAAY,GAAGP,EAAE,GAAG,EAAL,GAAU/D,gBAAV,GAA6B,CAAC+D,EAAE,GAAGlF,IAAI,CAAC0F,IAAL,CAAUR,EAAE,GAAG,EAAf,CAAN,IAA4BG,UAA9E,CAAA;AACA,EAAA,IAAMM,YAAY,GAAGR,EAAE,GAAGhE,gBAAL,IAAyBmE,gBAAgB,IAAIH,EAAE,GAAG,CAAzB,GAA6BE,UAA7B,GAA0C,CAAnE,CAArB,CAAA;;AAEA,EAAA,IAAIE,gBAAgB,IAAIH,EAAE,GAAGC,UAA7B,EAAyC;IACvC,MAAM,IAAI3O,KAAJ,CAAA,2BAAA,CAAA,MAAA,CACwBiK,QAAQ,CAACjB,UAAT,EAAA,IAAyBiB,QAAQ,CAACS,MAAT,EADjD,EAAN,aAAA,CAAA,CAAA,CAAA;AAGD,GAAA;;EAED,IAAMwE,WAAW,GAAGL,gBAAgB,GAAGH,EAAE,GAAGC,UAAR,GAAqBD,EAAzD,CAAA;EAEA,IAAMS,2BAA2B,GAAGL,UAAU,GAAGC,YAAb,GAA4BE,YAA5B,GAA2CC,WAA/E,CAAA;EAEA,OAAO3E,OAAO,GAAG4E,2BAAjB,CAAA;AACD,CA5BD,CAAA;;AA8BO,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,CACjCC,WADiC,EAEjCpF,QAFiC,EAGjCuB,SAHiC,EAI9B;AACH,EAAA,IAAA,YAAA,GAAAjK,kCAAA,CAAyB8N,WAAzB,EAAA,CAAA,CAAA;AAAA,MAAOd,EAAP,GAAA,YAAA,CAAA,CAAA,CAAA;AAAA,MAAWC,EAAX,GAAA,YAAA,CAAA,CAAA,CAAA;AAAA,MAAeC,EAAf,GAAA,YAAA,CAAA,CAAA,CAAA;AAAA,MAAmBC,EAAnB,GAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;AACA,EAAA,IAAMjE,gBAAgB,GAAGR,QAAQ,CAACS,MAAT,CAAgB;AAAErB,IAAAA,OAAO,EAAE,IAAA;AAAX,GAAhB,CAAzB,CAAA;AACA,EAAA,IAAMkB,OAAO,GACXgE,EAAE,GAAG,IAAL,GAAY9D,gBAAZ,GAA+B+D,EAAE,GAAG,EAAL,GAAU/D,gBAAzC,GAA4DgE,EAAE,GAAGhE,gBAAjE,GAAoFiE,EADtF,CAAA;AAEA,EAAA,OAAOnE,OAAO,IAAIiB,SAAS,GAAG8C,yBAAyB,CAACe,WAAD,EAAc9E,OAAd,EAAuBN,QAAvB,CAA5B,GAA+D,CAA5E,CAAd,CAAA;AACD,CAVM;;ACjCA,IAAMqF,UAAU,GAAG,SAAbA,UAAa,CAACC,KAAD,EAAmB;AAC3C,EAAA,IAAA,IAAA,GAAiC,CAAAA,KAAK,KAAL,IAAA,IAAAA,KAAK,KAAA,KAAA,CAAL,GAAAA,KAAAA,CAAAA,GAAAA,KAAK,CAAEC,KAAP,CAAa,YAAb,MAA8B,EAA/D;AAAA,MAAA,KAAA,GAAAjO,kCAAA,CAAA,IAAA,EAAA,CAAA,CAAA;AAAA,MAAOkO,sBAAP,GAAA,KAAA,CAAA,CAAA,CAAA,CAAA;;EAEA,IAAIJ,WAAqB,GAAG,EAA5B,CAAA;;AACA,EAAA,IAAII,sBAAJ,EAA4B;AAC1B,IAAA,IAAA,YAAA,GAAqBF,KAAK,CAAC5M,KAAN,CAAY8M,sBAAZ,CAArB;AAAA,QAAA,aAAA,GAAAlO,kCAAA,CAAA,YAAA,EAAA,CAAA,CAAA;AAAA,QAAOkM,MAAP,GAAA,aAAA,CAAA,CAAA,CAAA;AAAA,QAAeiB,EAAf,GAAA,aAAA,CAAA,CAAA,CAAA,CAAA;;IACAW,WAAW,GAAA,EAAA,CAAA,MAAA,CAAAtO,sCAAA,CAAO0M,MAAM,CAAC9K,KAAP,CAAa,GAAb,CAAP,CAA0B+L,EAAAA,CAAAA,EAA1B,CAAX,CAAA,CAAA;AACD,GAHD,MAGO;AACLW,IAAAA,WAAW,GAAGE,KAAK,CAAC5M,KAAN,CAAY,GAAZ,CAAd,CAAA;AACD,GAAA;;AACD,EAAA,IAAI0M,WAAW,CAAC5P,MAAZ,KAAuB,CAA3B,EAA8B;AAC5B,IAAA,MAAM,IAAIO,KAAJ,CAAU,sCAAV,CAAN,CAAA;AACD,GAAA;;AACD,EAAA,IAAIqP,WAAW,CAACpQ,IAAZ,CAAiB,UAACyQ,CAAD,EAAA;AAAA,IAAA,OAAO5M,MAAM,CAAC+G,KAAP,CAAa6F,CAAb,CAAP,CAAA;AAAA,GAAjB,CAAJ,EAA8C;AAC5C,IAAA,MAAM,IAAI1P,KAAJ,CAAU,wCAAV,CAAN,CAAA;AACD,GAAA;;AACD,EAAA,IAAM2P,mBAAmB,GAAGF,sBAAsB,IAAI,GAAtD,CAAA;EACA,OAAO;AACLJ,IAAAA,WAAW,EAAEA,WAAW,CAAC1Y,GAAZ,CAAgBmM,MAAhB,CADR;AAEL6M,IAAAA,mBAAmB,EAAnBA,mBAAAA;GAFF,CAAA;AAID,CArBM;;;;;;;ACSP,IAAMC,iBAAiB,GAAG,CAAC,OAAD,EAAU,KAAV,EAAiB,QAAjB,CAA1B,CAAA;;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACN,KAAD,EAAgBlM,OAAhB,EAAyD;EAC1F,IAAkEA,IAAAA,GAAAA,OAAO,IAAI,EAA7E;AAAA,MAAA,kBAAA,GAAA,IAAA,CAAQyM,aAAR;MAAQA,aAAR,mCAAwB,OAAxB,GAAA,kBAAA;MAAiC7F,QAAjC,QAAiCA,QAAjC;AAAA,MAA8C+D,eAA9C,GAAAjK,4CAAA,CAAA,IAAA,EAAAlD,WAAA,CAAA,CAAA;;EACA,IAAI,CAAC,IAAD,EAAO5K,SAAP,EAAkByI,QAAlB,CAA2B6Q,KAA3B,CAAJ,EAAuC;IACrC,MAAM,IAAIvP,KAAJ,CAAN,mCAAA,CAAA,CAAA;AACD,GAAA;;AACD,EAAA,IAAI,OAAOuP,KAAP,KAAiB,QAArB,EAA+B;IAC7B,MAAM,IAAIvP,KAAJ,CAAwC8J,6BAAAA,CAAAA,MAAAA,CAAAA,IAAI,CAACC,SAAL,CAAewF,KAAf,CAAxC,CAAN,CAAA,CAAA;AACD,GAAA;;EAED,IAA6CD,WAAAA,GAAAA,UAAU,CAACC,KAAD,CAAvD;MAAQF,WAAR,eAAQA,WAAR;MAAqBM,mBAArB,eAAqBA,mBAArB,CAAA;;AACA,EAAA,IAAMI,gBAAgB,GAAG7F,cAAc,CAACD,QAAD,CAAvC,CAAA;;EAEA,IAAM+F,aAAa,uCACdhC,eADc,CAAA,EAAA,EAAA,EAAA;IAEjBvC,cAAc,EAAE,CAAAuC,eAAe,KAAf,IAAA,IAAAA,eAAe,KAAA,KAAA,CAAf,GAAAA,KAAAA,CAAAA,GAAAA,eAAe,CAAEvC,cAAjB,KAAmCkE,mBAAAA;AAFlC,GAAA,EAGb,CAAA3B,eAAe,KAAf,IAAA,IAAAA,eAAe,KAAA,KAAA,CAAf,GAAAA,KAAAA,CAAAA,GAAAA,eAAe,CAAExC,SAAjB,MAA+BvV,SAA/B,GACA;AACEuV,IAAAA,SAAS,EACPvB,QAAQ,KAAKhU,SAAb,GACImU,mBAAmB,CAAC2F,gBAAD,CADvB,GAEI,CAAC,GAAD,EAAM,GAAN,CAAWrR,CAAAA,QAAX,CAAoBiR,mBAApB,CAAA;GALR,GAOA,EAVa,CAAnB,CAAA;;AAaA,EAAA,IAAMlF,gBAAgB,GAAGsF,gBAAgB,CAACrF,MAAjB,CAAwB;AAAErB,IAAAA,OAAO,EAAE,IAAA;AAAX,GAAxB,CAAzB,CAAA;EACA,IAAM4G,QAAQ,GAAG3G,IAAI,CAAC2B,GAAL,CAAS,CAAT,EAAYR,gBAAgB,GAAG,CAA/B,CAAjB,CAAA;;AAEA,EAAA,IAAI4E,WAAW,CAACpQ,IAAZ,CAAiB,UAACR,CAAD,EAAA;IAAA,OAAOA,CAAC,GAAG,CAAX,CAAA;AAAA,GAAjB,CAAJ,EAAoC;AAClC,IAAA,MAAM,IAAIuB,KAAJ,CAAU,mCAAV,CAAN,CAAA;AACD,GAAA;;AAED,EAAA,IAAIuK,OAAJ,CAAA;;AACA,EAAA,QAAQuF,aAAR;AACE,IAAA,KAAK,OAAL;AAAc,MAAA;AACZ,QAAA,IAAA,YAAA,GAAAvO,kCAAA,CAA0C8N,WAA1C,EAAA,CAAA,CAAA;AAAA,YAAOpD,KAAP,GAAA,YAAA,CAAA,CAAA,CAAA;AAAA,YAAcC,OAAd,GAAA,YAAA,CAAA,CAAA,CAAA;AAAA,YAAuBC,OAAvB,GAAA,YAAA,CAAA,CAAA,CAAA;AAAA,YAAgCC,MAAhC,GAAA,YAAA,CAAA,CAAA,CAAA,CAAA;;QACA,IAAIH,KAAK,IAAI,GAAb,EAAkB;UAChB,MAAMjM,KAAK,CAAC,gCAAD,CAAX,CAAA;AACD,SAAA;;QACD,IAAIkM,OAAO,IAAI,EAAf,EAAmB;UACjB,MAAMlM,KAAK,CAAC,gCAAD,CAAX,CAAA;AACD,SAAA;;QACD,IAAImM,OAAO,IAAI,EAAf,EAAmB;UACjB,MAAMnM,KAAK,CAAC,gCAAD,CAAX,CAAA;AACD,SAAA;;QACD,IAAIoM,MAAM,GAAG6D,QAAb,EAAuB;UACrB,MAAMjQ,KAAK,CAAsCiQ,oCAAAA,CAAAA,MAAAA,CAAAA,QAAtC,CAAX,CAAA,CAAA;AACD,SAAA;;AACD1F,QAAAA,OAAO,GAAG6E,mBAAmB,CAACC,WAAD,EAAcU,gBAAd,EAAgCC,aAAhC,KAAA,IAAA,IAAgCA,aAAhC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAgCA,aAAa,CAAExE,SAA/C,CAA7B,CAAA;AACA,QAAA,MAAA;AACD,OAAA;;AACD,IAAA,KAAK,QAAL;AAAe,MAAA;AACb,QAAA,IAAA,aAAA,GAAAjK,kCAAA,CAA0C8N,WAA1C,EAAA,CAAA,CAAA;AAAA,YAAOpD,MAAP,GAAA,aAAA,CAAA,CAAA,CAAA;AAAA,YAAcC,QAAd,GAAA,aAAA,CAAA,CAAA,CAAA;AAAA,YAAuBC,QAAvB,GAAA,aAAA,CAAA,CAAA,CAAA;AAAA,YAAgCC,OAAhC,GAAA,aAAA,CAAA,CAAA,CAAA,CAAA;;AACA,QAAA,IAAM8D,oBAAsD,GAAG,CAC7D5G,IAAI,CAAC+E,GAAL,CAAS,GAAT,EAAcpC,MAAd,CAD6D,EAE7D3C,IAAI,CAAC+E,GAAL,CAAS,EAAT,EAAanC,QAAb,CAF6D,EAG7D5C,IAAI,CAAC+E,GAAL,CAAS,EAAT,EAAalC,QAAb,CAH6D,EAI7D7C,IAAI,CAAC+E,GAAL,CAAS4B,QAAT,EAAmB7D,OAAnB,CAJ6D,CAA/D,CAAA;AAMA7B,QAAAA,OAAO,GAAG6E,mBAAmB,CAC3Bc,oBAD2B,EAE3BH,gBAF2B,EAG3BC,aAH2B,KAAA,IAAA,IAG3BA,aAH2B,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAG3BA,aAAa,CAAExE,SAHY,CAA7B,CAAA;AAKA,QAAA,MAAA;AACD,OAAA;;AACD,IAAA,KAAK,KAAL;AAAY,MAAA;AACVjB,QAAAA,OAAO,GAAG6E,mBAAmB,CAACC,WAAD,EAAcU,gBAAd,EAAgCC,aAAhC,KAAA,IAAA,IAAgCA,aAAhC,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAgCA,aAAa,CAAExE,SAA/C,CAA7B,CAAA;AACA,QAAA,MAAA;AACD,OAAA;;AACD,IAAA;AAAS,MAAA;QACP,MAAM,IAAIxL,KAAJ,CAAgD8J,qCAAAA,CAAAA,MAAAA,CAAAA,IAAI,CAACC,SAAL,CAAe6F,iBAAf,CAAhD,CAAN,CAAA,CAAA;AACD,OAAA;AAvCH,GAAA;;EA0CA,OAAO,IAAIvE,QAAJ,CAAa;AAAEd,IAAAA,OAAO,EAAPA,OAAF;AAAWN,IAAAA,QAAQ,EAAE8F,gBAAAA;GAAlC,EAAsDC,aAAtD,CAAP,CAAA;AACD;;;;AC3GD;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMG,kBAAkB,GAAG,SAArBA,kBAAqB,CAKhCtE,YALgC,EAOhCxI,OAPgC,EAQnB;AAAA,EAAA,IAAA,eAAA,CAAA;;EACb,IAAyCA,IAAAA,GAAAA,OAAO,IAAI,EAApD;MAAQ4G,QAAR,QAAQA,QAAR;AAAA,MAAqB+D,eAArB,GAAAjK,4CAAA,CAAA,IAAA,EAAAlD,WAAA,CAAA,CAAA;;AACA,EAAA,IAAIuP,cAAJ,CAAA;;EAEA,IAAIvE,YAAY,KAAK5V,SAArB,EAAgC;AAC9Bma,IAAAA,cAAc,GAAG;AAAE7F,MAAAA,OAAO,EAAE,CAAA;KAA5B,CAAA;AACD,GAFD,MAEO,IAAI,OAAOsB,YAAP,KAAwB,QAA5B,EAAsC;AAC3CuE,IAAAA,cAAc,GAAG;AAAE7F,MAAAA,OAAO,EAAEsB,YAAAA;KAA5B,CAAA;GADK,MAEA,IAAIA,YAAY,CAACnN,QAAb,CAAsB,GAAtB,CAAJ,EAAgC;AACrC,IAAA,IAAA,mBAAA,GAAsCmN,YAAY,CAAClJ,KAAb,CAAmB,GAAnB,CAAtC;AAAA,QAAA,oBAAA,GAAApB,kCAAA,CAAA,mBAAA,EAAA,CAAA,CAAA;AAAA,QAAO8O,aAAP,GAAA,oBAAA,CAAA,CAAA,CAAA;AAAA,QAAsBtH,YAAtB,GAAA,oBAAA,CAAA,CAAA,CAAA,CAAA;;AACA,IAAA,IAAMwB,OAAO,GAAGzH,MAAM,CAACuN,aAAD,CAAtB,CAAA;AACAD,IAAAA,cAAc,GAAG;AAAE7F,MAAAA,OAAO,EAAPA,OAAF;MAAWN,QAAQ,EAAEL,kBAAkB,CAACb,YAAD,CAAA;KAAxD,CAAA;AACD,GAJM,MAIA,IAAI8C,YAAY,KAAK,MAArB,EAA6B;AAClCuE,IAAAA,cAAc,GAAG;AAAE7F,MAAAA,OAAO,EAAE,CAACgB,QAAAA;KAA7B,CAAA;AACD,GAFM,MAEA,IAAIM,YAAY,KAAK,MAArB,EAA6B;AAClCuE,IAAAA,cAAc,GAAG;AAAE7F,MAAAA,OAAO,EAAEgB,QAAAA;KAA5B,CAAA;AACD,GAFM,MAEA;AACL6E,IAAAA,cAAc,GAAG;MAAE7F,OAAO,EAAEzH,MAAM,CAAC+I,YAAD,CAAA;KAAlC,CAAA;AACD,GAAA;;EAED,IACE/I,MAAM,CAAC+G,KAAP,CAAA,CAAA,eAAA,GAAauG,cAAb,MAAa,IAAA,IAAA,eAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,eAAA,CAAgB7F,OAA7B,CACC6F,IAAAA,cAAc,CAACnG,QAAf,IAA2B,EAAEmG,cAAc,CAACnG,QAAf,YAAmC3B,QAArC,CAF9B,EAGE;AACA,IAAA,MAAM,IAAItI,KAAJ,CAAmE6L,wDAAAA,CAAAA,MAAAA,CAAAA,YAAnE,CAAN,CAAA,CAAA;AACD,GAAA;;EACD,IAAMvB,QAAQ,GAAG,IAAIe,QAAJ,CAAa+E,cAAb,EAA6BpC,eAA7B,CAAjB,CAAA;AAEA,EAAA,OAAO/D,QAAQ,GAAGK,QAAQ,CAACqB,eAAT,CAAyBzB,cAAc,CAACD,QAAD,CAAvC,CAAH,GAAwDK,QAAvE,CAAA;AACD;;ACpDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMgG,kBAAkB,GAAG,SAArBA,kBAAqB,CAAChG,QAAD,EAA0BjH,OAA1B,EAAA;AAAA,EAAA,OAChC,IAAIgI,QAAJ,CAAaf,QAAb,EAAuBjH,OAAvB,CADgC,CAAA;AAAA;;ACHlC,IAAMkN,cAAc,GAAG,SAAjBA,cAAiB,CAACC,CAAD,EAAA;AAAA,EAAA,OAAe,CAAC,CAACA,CAAC,CAAChB,KAAF,CAAQ,4CAAR,CAAjB,CAAA;AAAA,CAAvB,CAAA;;AACA,IAAMiB,QAAQ,GAAG,SAAXA,QAAW,CAACD,CAAD,EAAA;EAAA,OAAwB,CAAC1N,MAAM,CAAC+G,KAAP,CAAa/G,MAAM,CAAC0N,CAAD,CAAnB,CAAzB,CAAA;AAAA,CAAjB,CAAA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAME,cAAc,GAAG,SAAjBA,cAAiB,CAC5BpG,QAD4B,EAE5BjH,OAF4B,EAGzB;AACH;AACA,EAAA,IAAI,OAAOiH,QAAP,KAAoB,QAApB,IAAgC,OAAOA,QAAP,KAAoB,QAAxD,EACE,OAAOgG,kBAAkB,CAAChG,QAAD,EAAWjH,OAAX,CAAzB,CAHC;;AAKH,EAAA,IAAI,OAAOiH,QAAP,KAAoB,QAApB,IAAgCiG,cAAc,CAACjG,QAAD,CAAlD,EACE,OAAOuF,mBAAmB,CAACvF,QAAD,EAAWjH,OAAX,CAA1B,CAAA;EACF,IAAI,CAAC,QAAD,EAAW,QAAX,EAAqB3E,QAArB,CAAAiS,2BAAA,CAAqCrG,QAArC,CAAkDmG,CAAAA,IAAAA,QAAQ,CAACnG,QAAD,CAA9D,EACE,OAAOwD,qBAAqB,CAACxD,QAAD,EAAWjH,OAAX,CAA5B,CAAA;;AACF,EAAA,IAAI,OAAOiH,QAAP,KAAoB,QAAxB,EAAkC;AAChC,IAAA,OAAO6F,kBAAkB,CAAC7F,QAAD,EAAWjH,OAAX,CAAzB,CAAA;AACD,GAAA;;AACD,EAAA,OAAOpN,SAAP,CAAA;AACD;;;;;;ACtCD,SAAS2a,aAAT,CAAoF,IAAA,EAAA;AAAA,EAAA,IAAA,UAAA,GAAA,IAAA,CAA3D3E,KAA2D;MAA3DA,KAA2D,2BAAnD,CAAmD,GAAA,UAAA;AAAA,MAAA,YAAA,GAAA,IAAA,CAAhDC,OAAgD;MAAhDA,OAAgD,6BAAtC,CAAsC,GAAA,YAAA;AAAA,MAAA,YAAA,GAAA,IAAA,CAAnCC,OAAmC;MAAnCA,OAAmC,6BAAzB,CAAyB,GAAA,YAAA;AAAA,MAAA,mBAAA,GAAA,IAAA,CAAtBK,cAAsB;MAAtBA,cAAsB,oCAAL,CAAK,GAAA,mBAAA,CAAA;EAClF,IAAMqE,OAAO,GAAG5E,KAAK,CAAC5V,OAAN,EAAgB6W,CAAAA,QAAhB,CAAyB,CAAzB,EAA4B,GAA5B,CAAhB,CAAA;EACA,IAAM4D,MAAM,GAAG5E,OAAO,CAAC7V,OAAR,EAAkB6W,CAAAA,QAAlB,CAA2B,CAA3B,EAA8B,GAA9B,CAAf,CAAA;EACA,IAAM6D,UAAU,GAAG5E,OAAO,CAAC9V,OAAR,EAAkB6W,CAAAA,QAAlB,CAA2B,CAA3B,EAA8B,GAA9B,CAAnB,CAAA;AACA,EAAA,IAAM8D,UAAU,GAAG,CAACxE,cAAc,GAAG,EAAlB,EAAsBnW,OAAtB,EAAA,CAAgC6W,QAAhC,CAAyC,CAAzC,EAA4C,GAA5C,CAAnB,CAAA;AACA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAU2D,OAAV,EAAqBC,GAAAA,CAAAA,CAAAA,MAAAA,CAAAA,MAArB,EAA+BC,GAAAA,CAAAA,CAAAA,MAAAA,CAAAA,UAA/B,cAA6CC,UAA7C,CAAA,CAAA;AACD,CAAA;;AASM,IAAM7N,gBAA2C,GAAG;AACzD8N,EAAAA,aAAa,EAAE,cAD0C;AAEzDC,EAAAA,aAAa,EAAE,UAAA;AAF0C,CAApD,CAAA;AAKP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB,CAClC1J,YADkC,EAElCpE,OAFkC,EAG/B;AACH,EAAA,IAAA,eAAA,GAAAvC,eAAA,CAAAA,eAAA,CAAA,EAAA,EAA8CqC,gBAA9C,CAAA,EAAkEE,OAAO,IAAI,EAA7E,CAAA;MAAQ4N,aAAR,mBAAQA,aAAR;MAAuBC,aAAvB,mBAAuBA,aAAvB,CAAA;;EACA,IAAwCzJ,KAAAA,GAAAA,YAAY,IAAI,EAAxD;AAAA,MAAA,cAAA,GAAA,KAAA,CAAQ1F,QAAR;MAAkBgF,YAAlB,+BAAiC,EAAjC,GAAA,cAAA,CAAA;;AACA,EAAA,IAAIA,YAAY,CAACtH,MAAb,KAAwB,CAA5B,EAA+B,OAAO,EAAP,CAAA;AAC/B,EAAA,IAAM2R,eAAe,GAAGtK,iBAAiB,CAACC,YAAD,EAAe;AACtDZ,IAAAA,yBAAyB,EAAE,IAD2B;AAEtDS,IAAAA,YAAY,EAAE,IAFwC;AAGtDF,IAAAA,cAAc,EAAE,IAHsC;AAItDlB,IAAAA,aAAa,EAAE,IAJuC;AAKtD9B,IAAAA,SAAS,EAAE,GAAA;AAL2C,GAAf,CAAzC,CAAA;EAOA,IAAM2N,OAAO,GAAGD,eAAe,CAACza,GAAhB,CAAoB,UAACoL,QAAD,EAAc;AAChD,IAAA,IAAA,KAAA,GAII,CAAChD,KAAK,CAACC,OAAN,CAAc+C,QAAd,CAAA,GAA0BA,QAAQ,CAAC,CAAD,CAAlC,GAAwCA,QAAzC,KAAsD,EAJ1D;QACSuP,SADT,SACEtP,KADF;QAEOuP,OAFP,SAEEtP,GAFF;AAAA,QAAA,mBAAA,GAAA,KAAA,CAGGgP,aAHH,CAAA,CAAA;;AAAA,IAAA,mBAAA,GAAA,mBAAA,KAAA,KAAA,CAAA,GAG+C,EAH/C,GAAA,mBAAA,CAAA;IAAA,IAGsCO,IAHtC,uBAGsBN,aAHtB,CAAA,CAAA;AAKA,IAAA,IAAI,CAACM,IAAL,EAAW,OAAO,EAAP,CAAA;IACX,IAAMxP,KAAK,GAAG4O,aAAa,CAACT,kBAAkB,CAACmB,SAAD,CAAlB,CAA8B5E,MAA9B,EAAD,CAA3B,CAAA;IACA,IAAMzK,GAAG,GAAG2O,aAAa,CAACT,kBAAkB,CAACoB,OAAD,CAAlB,CAA4B7E,MAA5B,EAAD,CAAzB,CAAA;AACA,IAAA,OAAA,EAAA,CAAA,MAAA,CAAU1K,KAAV,EAAA,OAAA,CAAA,CAAA,MAAA,CAAuBC,GAAvB,EAAA,YAAA,CAAA,CAAA,MAAA,CAAuCuP,IAAvC,EAAA,IAAA,CAAA,CAAA;AACD,GAVe,CAAhB,CAAA;AAYA,EAAA,OAAA,cAAA,CAAA,MAAA,CAAsBH,OAAO,CAAC/a,IAAR,CAAa,IAAb,CAAtB,CAAA,CAAA;AACD;;ACxDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACamb,IAAAA,eAAe,GAAG,SAAlBA,eAAkB,GAAA;EAAA,IAC7B/M,SAD6B,uEACS,EADT,CAAA;AAAA,EAAA,IAE7BrB,OAF6B,GAEc,SAAA,CAAA,MAAA,GAAA,CAAA,IAAA,SAAA,CAAA,CAAA,CAAA,KAAA,SAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA;AAAEqO,IAAAA,KAAK,EAAE,IAAA;GAFvB,CAAA;AAAA,EAAA,OAI7BhN,SAAS,CAAC/N,GAAV,CAAc,UAACsK,KAAD,EAAA;IAAA,OAAY;AACxBA,MAAAA,KAAK,EAALA,KADwB;AAExBO,MAAAA,IAAI,EAAEP,KAFkB;AAGxByQ,MAAAA,KAAK,EAAErO,OAAO,CAACqO,KAAR,KAAkBzb,SAAlB,GAA8BoN,OAA9B,KAAA,IAAA,IAA8BA,OAA9B,KAA8BA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,OAAO,CAAEqO,KAAvC,GAA+C,IAH9B;AAIxBC,MAAAA,OAAO,EAAEjN,SAAAA;KAJG,CAAA;AAAA,GAAd,CAJ6B,CAAA;AAAA;;;;;;ACX/B;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACakN,IAAAA,cAAc,GAAG,SAAjBA,cAAiB,GAAkD;EAAA,IAAjDC,SAAiD,uEAAxB,EAAwB,CAAA;EAC9E,IAAMhN,MAAuB,GAAG,EAAhC,CAAA;EACAgN,SAAS,CAACvQ,OAAV,CAAkB,UAA4B,IAAA,EAAA;IAAA,IAAzBE,IAAyB,QAAzBA,IAAyB;QAAnBP,KAAmB,QAAnBA,KAAmB;QAAZyQ,KAAY,QAAZA,KAAY,CAAA;IAC5C7M,MAAM,CAACrD,IAAI,IAAIP,KAAT,CAAN,GAAwByQ,KAAK,CAACI,MAAN,CACtB,UAACC,GAAD,EAAA,KAAA,EAAA;MAAA,IAAQC,UAAR,SAAQA,UAAR;UAAoBnb,KAApB,SAAoBA,KAApB,CAAA;AAAA,MAAA,OAAAiK,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAsCiR,GAAtC,CAAA,EAAA,EAAA,EAAAtQ,mCAAA,CAAA,EAAA,EAA4CuQ,UAA5C,EAAyDnb,KAAzD,CAAA,CAAA,CAAA;KADsB,EAEtB,EAFsB,CAAxB,CAAA;GADF,CAAA,CAAA;AAMA,EAAA,OAAOgO,MAAP,CAAA;AACD;;;;;;ACTM,IAAM1B,gBAA6C,GAAG;AAC3DiD,EAAAA,aAAa,EAAE,IAD4C;AAE3D1C,EAAAA,SAAS,EAAEzN,SAFgD;AAG3DyQ,EAAAA,cAAc,EAAE,KAAA;AAH2C,CAAtD,CAAA;AAMP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,IAAMuL,sBAAsB,GAAG,SAAzBA,sBAAyB,CACpClQ,QADoC,EAEpCsB,OAFoC,EAGR;AAC5B,EAAA,IAAA,eAAA,GAAAvC,eAAA,CAAAA,eAAA,CAAA,EAAA,EAISqC,gBAJT,CAAA,EAI6BE,OAAO,IAAI,EAJxC,CAAA;AAAA,MAAA,qBAAA,GAAA,eAAA,CACE+C,aADF;MACEA,aADF,sCACkB,IADlB,GAAA,qBAAA;AAAA,MAAA,qBAAA,GAAA,eAAA,CAEE1C,SAFF;MAEEA,SAFF,sCAEczN,SAFd,GAAA,qBAAA;AAAA,MAAA,qBAAA,GAAA,eAAA,CAGEyQ,cAHF;MAGEA,cAHF,sCAGmB,KAHnB,GAAA,qBAAA,CAAA;;EAKA,IAAmC3E,IAAAA,GAAAA,QAAQ,IAAI,EAA/C;AAAA,MAAA,UAAA,GAAA,IAAA,CAAQd,KAAR;MAAQA,KAAR,2BAAgB,EAAhB,GAAA,UAAA;MAAoBe,KAApB,QAAoBA,KAApB;MAA2BC,GAA3B,QAA2BA,GAA3B,CAAA;;EACA,IAAMiQ,YAAY,GAAGxL,cAAc,GAAG;AAAE1E,IAAAA,KAAK,EAALA,KAAF;AAASC,IAAAA,GAAG,EAAHA,GAAAA;AAAT,GAAH,GAAoB,EAAvD,CAAA;EACA,IAAMyC,SAAS,GAAGzD,KAAK,CAAC6Q,MAAN,CAAa,UAACC,GAAD,EAAMI,IAAN,EAAe;AAC5C,IAAA,IAAQ3Q,IAAR,GAAwC2Q,IAAxC,CAAQ3Q,IAAR;QAAwC2Q,WAAAA,GAAAA,IAAxC,CAActb,KAAd;QAAqBgN,SAArB,4BAAiC,EAAjC,GAAA,WAAA,CAAA;AACA,IAAA,IAAIA,SAAS,CAACpE,MAAV,KAAqB,CAAzB,EAA4B,OAAOsS,GAAP,CAAA;AAC5B,IAAA,IAAIC,UAAJ,CAAA;;IACA,IAAI5L,aAAa,KAAK,KAAlB,IAA2BvC,SAAS,CAACpE,MAAV,KAAqB,CAApD,EAAA;AAAA,MAAA,IAAA,UAAA,GAAA8B,kCAAA,CAAsEsC,SAAtE,EAAA,CAAA,CAAA,CAAA;;MAAwDmO,UAAxD,GAAA,UAAA,CAAA,CAAA,CAAA,CAAA;AAAA,KAAA,MACK,IAAItO,SAAJ,EAAesO,UAAU,GAAGnO,SAAS,CAACvN,IAAV,CAAeoN,SAAf,CAAb,CAAf,KACAsO,UAAU,GAAGnO,SAAb,CAAA;;AACL,IAAA,OAAA/C,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAYiR,GAAZ,CAAA,EAAA,EAAA,EAAAtQ,mCAAA,CAAA,EAAA,EAAkBD,IAAlB,EAAyBwQ,UAAzB,CAAA,CAAA,CAAA;GAPgB,EAQfE,YARe,CAAlB,CAAA;AASA,EAAA,OAAOxN,SAAP,CAAA;AACD;;;;;;;AChCM,IAAMvB,cAAiD,GAAArC,eAAA,CAAAA,eAAA,CAAA,EAAA,EACzDsR,gBADyD,CAAA,EAAA,EAAA,EAAA;AAE5D1L,EAAAA,cAAc,EAAE,KAF4C;AAG5DC,EAAAA,YAAY,EAAE,GAH8C;AAI5D1B,EAAAA,IAAI,EAAE,KAJsD;AAK5D4B,EAAAA,YAAY,EAAE,KAAA;AAL8C,CAAvD,CAAA,CAAA;AAQP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACawL,IAAAA,0BAA0B,GAAG,SAA7BA,0BAA6B,GAGgB;EAAA,IAFxDC,qBAEwD,uEAFC,EAED,CAAA;AAAA,EAAA,IADxDjP,OACwD,GAAA,SAAA,CAAA,MAAA,GAAA,CAAA,GAAA,SAAA,CAAA,CAAA,CAAA,GAAA,SAAA,CAAA;;AACxD,EAAA,IAAA,eAAA,GAAAvC,eAAA,CAAAA,eAAA,CAAA,EAAA,EAMSqC,cANT,CAAA,EAM6BE,OAAO,IAAI,EANxC,CAAA;MACEqD,cADF,mBACEA,cADF;AAAA,MAAA,qBAAA,GAAA,eAAA,CAEEC,YAFF;MAEEA,YAFF,sCAEiB,GAFjB,GAAA,qBAAA;MAGE1B,IAHF,mBAGEA,IAHF;MAIE4B,YAJF,mBAIEA,YAJF;AAAA,MAKK0L,6BALL,GAAAxO,4CAAA,CAAA,eAAA,EAAAlD,WAAA,CAAA,CAAA;;EAOA,IAAI6F,cAAc,KAAK,IAAvB,EACE,OAAO4L,qBAAqB,CAAC3b,GAAtB,CAA0B,UAACoL,QAAD,EAAA;AAAA,IAAA,OAC/BkQ,sBAAsB,CAAClQ,QAAD,EAAAjB,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAgByR,6BAAhB,CAAA,EAAA,EAAA,EAAA;AAA+C7L,MAAAA,cAAc,EAAdA,cAAAA;KADtC,CAAA,CAAA,CAAA;AAAA,GAA1B,CAAP,CAAA;AAGF,EAAA,IAAIzB,IAAI,KAAK,IAAT,IAAiB4B,YAAY,KAAK,IAAtC,EACE,OAAOyL,qBAAqB,CAACR,MAAtB,CACL,UAACnc,CAAD,EAAIoM,QAAJ,EAAA;AAAA,IAAA,OAAAjB,eAAA,CAAAA,eAAA,CAAA,EAAA,EAAuBnL,CAAvB,CAA6Bsc,EAAAA,sBAAsB,CAAClQ,QAAD,EAAWsB,OAAX,CAAnD,CAAA,CAAA;GADK,EAEL,EAFK,CAAP,CAAA;AAIF,EAAA,OAAOiP,qBAAqB,CAACR,MAAtB,CACL,UAACnc,CAAD,EAAIoM,QAAJ,EAAA;IAAA,OACKpM,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,CADL,+CAEG,CAACoM,QAAQ,CAACC,KAAV,EAAiBD,QAAQ,CAACE,GAA1B,EAA+B3L,IAA/B,CAAoCqQ,YAApC,CAFH,EAEuDsL,sBAAsB,CACzElQ,QADyE,EAEzEsB,OAFyE,CAF7E,CAAA,CAAA,CAAA;GADK,EAQL,EARK,CAAP,CAAA;AAUD;;ACnEYmP,IAAAA,YAAY,GAAG,SAAfA,YAAe,GAAmB;EAAA,IAAlB3b,KAAkB,uEAAV,KAAU,CAAA;;AAC7C,EAAA,IAAIA,KAAK,CAAC4b,UAAN,CAAiB,KAAjB,CAAJ,EAA6B;AAC3B,IAAA,IAAI5b,KAAK,KAAK,KAAd,EAAqB,OAAO,IAAI6b,IAAJ,EAAP,CAAA;AACrB,IAAA,IAAMC,IAAI,GAAG9b,KAAK,CAAC,CAAD,CAAlB,CAAA;AACA,IAAA,IAAM+b,MAAM,GAAG9P,MAAM,CAACjM,KAAK,CAAC2Y,KAAN,CAAY,OAAZ,CAAA,CAAqB,CAArB,CAAD,CAArB,CAAA;AACA,IAAA,IAAM3C,IAAI,GAAGhW,KAAK,CAAC2Y,KAAN,CAAY,QAAZ,CAAsB,CAAA,CAAtB,EAAyBtB,OAAzB,CAAiC,KAAjC,EAAwC,EAAxC,CAAb,CAAA;AACA,IAAA,IAAM2E,OAAO,GAAG,IAAIH,IAAJ,EAAhB,CAAA;;AACA,IAAA,QAAQ7F,IAAR;AACE,MAAA,KAAK,MAAL,CAAA;AACA,MAAA,KAAK,OAAL;AACE,QAAA,IAAI8F,IAAI,KAAK,GAAb,EAAkBE,OAAO,CAACC,QAAR,CAAiBD,OAAO,CAACE,QAAR,EAAA,GAAqBH,MAAtC,CAAA,CAAA;AAClB,QAAA,IAAID,IAAI,KAAK,GAAb,EAAkBE,OAAO,CAACC,QAAR,CAAiBD,OAAO,CAACE,QAAR,EAAA,GAAqBH,MAAtC,CAAA,CAAA;AAClB,QAAA,MAAA;;AACF,MAAA,KAAK,KAAL,CAAA;AACA,MAAA,KAAK,MAAL;AACE,QAAA,IAAID,IAAI,KAAK,GAAb,EAAkBE,OAAO,CAACG,OAAR,CAAgBH,OAAO,CAACI,OAAR,EAAA,GAAoBL,MAApC,CAAA,CAAA;AAClB,QAAA,IAAID,IAAI,KAAK,GAAb,EAAkBE,OAAO,CAACG,OAAR,CAAgBH,OAAO,CAACI,OAAR,EAAA,GAAoBL,MAApC,CAAA,CAAA;AAClB,QAAA,MAAA;;AACF,MAAA,KAAK,OAAL,CAAA;AACA,MAAA,KAAK,QAAL;AACE,QAAA,IAAID,IAAI,KAAK,GAAb,EAAkBE,OAAO,CAACK,QAAR,CAAiBL,OAAO,CAACM,QAAR,EAAA,GAAqBP,MAAtC,CAAA,CAAA;AAClB,QAAA,IAAID,IAAI,KAAK,GAAb,EAAkBE,OAAO,CAACK,QAAR,CAAiBL,OAAO,CAACM,QAAR,EAAA,GAAqBP,MAAtC,CAAA,CAAA;AAClB,QAAA,MAAA;;AACF,MAAA,KAAK,MAAL,CAAA;AACA,MAAA,KAAK,OAAL;AACE,QAAA,IAAID,IAAI,KAAK,GAAb,EAAkBE,OAAO,CAACO,WAAR,CAAoBP,OAAO,CAACQ,WAAR,EAAA,GAAwBT,MAA5C,CAAA,CAAA;AAClB,QAAA,IAAID,IAAI,KAAK,GAAb,EAAkBE,OAAO,CAACO,WAAR,CAAoBP,OAAO,CAACQ,WAAR,EAAA,GAAwBT,MAA5C,CAAA,CAAA;AAClB,QAAA,MAAA;AApBJ,KAAA;;AAwBA,IAAA,OAAOC,OAAP,CAAA;AACD,GAAA;;AACD,EAAA,OAAO,IAAIH,IAAJ,CAAS7b,KAAT,CAAP,CAAA;AACD;;;;;;;ACjBM,IAAMyc,sBAAsB,GAAG,SAAzBA,sBAAyB,CAIpCC,iBAJoC,EAKxB;EACZ,IAAuDA,IAAAA,GAAAA,iBAAiB,IAAK,EAA7E;AAAA,MAAA,aAAA,GAAA,IAAA,CAAQC,QAAR;MAAkBhd,iBAAlB,8BAAsC,EAAtC,GAAA,aAAA;AAAA,MAA6Cid,KAA7C,GAAA1P,4CAAA,CAAA,IAAA,EAAAlD,WAAA,CAAA,CAAA;;AACA,EAAA,IAAM6S,sBAAsB,GAAGnd,sBAAsB,CAACC,iBAAD,CAArD,CAAA;EACA,OAAYkd,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,sBAAZ,GAAuCD,KAAvC,CAAA,CAAA;AACD,CATM,CAAA;AAWA,IAAME,uBAAuB,GAAG,SAA1BA,uBAA0B,CACrCC,aADqC,EAAA;EAAA,OAERN,sBAAsB,CAACM,aAAD,CAFd,CAAA;AAAA,CAAhC,CAAA;AAIA,IAAMC,uBAAuB,GAAG,SAA1BA,uBAA0B,CACrCD,aADqC,EAAA;EAAA,OAERN,sBAAsB,CAACM,aAAD,CAFd,CAAA;AAAA,CAAhC;;AC1BP,IAAME,iBAAiB,GAAG;AAAEC,EAAAA,EAAE,EAAE,KAAN;AAAaC,EAAAA,CAAC,EAAE,IAAhB;AAAsBC,EAAAA,EAAE,EAAE,KAAA;AAA1B,CAA1B,CAAA;AACA,IAAMC,cAAc,GAAG;AAAEH,EAAAA,EAAE,EAAE,MAAN;AAAcC,EAAAA,CAAC,EAAE,KAAjB;AAAwBG,EAAAA,EAAE,EAAE,MAAA;AAA5B,CAAvB,CAAA;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;IACaC,mBAAmB,GAAG,SAAtBA,mBAAsB,CACjCC,kBADiC,EAEJ;AAC7B,EAAA,IACEpK,QADF,GAOIoK,kBAPJ,CACEpK,QADF;AAAA,MAEgBqK,aAFhB,GAOID,kBAPJ,CAEEE,YAFF;AAAA,MAGSC,UAHT,GAOIH,kBAPJ,CAGEI,KAHF;AAAA,MAIEC,SAJF,GAOIL,kBAPJ,CAIEK,SAJF;AAAA,MAKEC,OALF,GAOIN,kBAPJ,CAKEM,OALF;AAAA,MAMEC,QANF,GAOIP,kBAPJ,CAMEO,QANF,CAAA;AAQA,EAAA,IAAMC,cAAc,GAAGlB,uBAAuB,CAACe,SAAD,CAA9C,CAAA;AACA,EAAA,IACUI,WADV,GAIID,cAJJ,CACEE,MADF;AAAA,MAEcC,aAFd,GAIIH,cAJJ,CAEEI,UAFF;AAAA,MAGiBC,gBAHjB,GAIIL,cAJJ,CAGEM,aAHF,CAAA;AAKA,EAAA,IAAMC,aAAa,GAAG7e,sBAAsB,CAACqe,QAAQ,IAAI,EAAb,CAA5C,CAAA;AACA,EAAA,IAAMS,sBAAsB,GAAGpL,QAAQ,SAAR,IAAAA,QAAQ,WAAR,IAAAA,QAAQ,CAAE/T,WAAV,GAC3B,CAAC,CAAA+T,QAAQ,KAAR,IAAA,IAAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,QAAQ,CAAE/T,WAAV,KAAyB,CAA1B,KAAgC,CAAA+T,QAAQ,SAAR,IAAAA,QAAQ,KAAR,KAAA,CAAA,GAAA,KAAA,CAAA,GAAAA,QAAQ,CAAE/B,SAAV,KAAuB,CAAvD,CAD2B,GAE3BjS,SAFJ,CAAA;EAGA,IAAMqf,eAAe,GACnBD,sBAAsB,KAAKpf,SAA3B,GACIsf,iCAAa,CAACF,sBAAD,EAAyB;AAAEnT,IAAAA,IAAI,EAAE,EAAR;AAAYqH,IAAAA,KAAK,EAAE,CAAnB;AAAsBiM,IAAAA,OAAO,EAAE1B,iBAAAA;GAAxD,CADjB,GAEI7d,SAHN,CAAA;EAIA,IAAMwf,YAAY,GAChBd,OAAO,KAAK1e,SAAZ,GACIsf,iCAAa,CAACZ,OAAD,EAAU;AAAEzS,IAAAA,IAAI,EAAE,EAAR;AAAYqH,IAAAA,KAAK,EAAE,CAAnB;AAAsBiM,IAAAA,OAAO,EAAEtB,cAAAA;GAAzC,CADjB,GAEIje,SAHN,CAAA;EAKA,OAAO;AACL6e,IAAAA,WAAW,EAAXA,WADK;AAELN,IAAAA,UAAU,EAAVA,UAFK;AAGLc,IAAAA,eAAe,EAAfA,eAHK;AAILD,IAAAA,sBAAsB,EAAtBA,sBAJK;AAKLL,IAAAA,aAAa,EAAbA,aALK;AAMLS,IAAAA,YAAY,EAAZA,YANK;AAOLP,IAAAA,gBAAgB,EAAhBA,gBAPK;AAQLZ,IAAAA,aAAa,EAAbA,aARK;AASLO,IAAAA,cAAc,EAAdA,cATK;AAULO,IAAAA,aAAa,EAAbA,aAAAA;GAVF,CAAA;AAYD;;AC5DD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaM,aAAa,GAAG,SAAhBA,aAAgB,CAACC,QAAD,EAAwC;EACnE,IAA2EA,aAAAA,GAAAA,QAA3E,CAAQC,GAAR;MAAaC,OAAb,8BAAuB,EAAvB,GAAA,aAAA;AAAA,MAAiCC,aAAjC,GAA2EH,QAA3E,CAA2BI,IAA3B;AAAA,MAAgDC,IAAhD,GAA2EL,QAA3E,CAAgDK,IAAhD;AAAA,MAAsDC,IAAtD,GAA2EN,QAA3E,CAAsDM,IAAtD;AAAA,MAAgEC,MAAhE,GAA2EP,QAA3E,CAA4DQ,EAA5D,CAAA;;AACA,EAAA,IAAA,QAAA,GAAA5U,kCAAA,CAAcsU,OAAd,EAAA,CAAA,CAAA;AAAA,MAAOD,GAAP,GAAA,QAAA,CAAA,CAAA,CAAA,CAAA;;EACA,IAAMQ,QAAQ,GAAGN,aAAa,KAAK7f,SAAlB,GAA8Bsf,iCAAa,CAACO,aAAD,CAA3C,GAA6D,EAA9E,CAAA;AACA,EAAA,IAAMO,QAAQ,GAAGJ,IAAI,GAAGA,IAAI,CAACtT,KAAL,CAAW,GAAX,CAAA,CAAgBM,GAAhB,EAAH,GAA2BhN,SAAhD,CAAA;EACA,OAAO;AACL2f,IAAAA,GAAG,EAAHA,GADK;AAELI,IAAAA,IAAI,EAAJA,IAFK;AAGLI,IAAAA,QAAQ,EAARA,QAHK;AAILN,IAAAA,aAAa,EAAbA,aAJK;AAKLG,IAAAA,IAAI,EAAJA,IALK;AAMLI,IAAAA,QAAQ,EAARA,QANK;AAOLH,IAAAA,MAAM,EAANA,MAAAA;GAPF,CAAA;AASD;;;;;;ACtBD;AACA;AACA;AACA;AACA;AACA;AACA;AACaI,IAAAA,oBAAoB,GAAG,SAAvBA,oBAAuB,GAEJ;EAAA,IAD9BC,mBAC8B,uEADa,EACb,CAAA;AAC9B,EAAA,IAAcC,QAAd,GAAqDD,mBAArD,CAAQE,IAAR;AAAA,MAAwB/B,SAAxB,GAAqD6B,mBAArD,CAAwB7B,SAAxB;MAAqD6B,qBAAAA,GAAAA,mBAArD,CAAmC3B,QAAnC;MAAmCA,QAAnC,sCAA8C,EAA9C,GAAA,qBAAA,CAAA;AACA,EAAA,IAAM8B,cAAc,GAAGngB,sBAAsB,CAACqe,QAAD,CAA7C,CAAA;AACA,EAAA,IAAM+B,eAAe,GAAGrD,sBAAsB,CAACoB,SAAD,CAA9C,CAAA;AAEA,EAAA,IAAIkC,qBAAqB,GAAG;AAAEF,IAAAA,cAAc,EAAdA,cAAF;AAAkBC,IAAAA,eAAe,EAAfA,eAAAA;GAA9C,CAAA;;AACA,EAAA,IAAIH,QAAJ,EAAc;AACZ,IAAA,IAAA,SAAA,GAAAjV,kCAAA,CAAmBiV,QAAnB,EAAA,CAAA,CAAA;AAAA,QAAOb,QAAP,GAAA,SAAA,CAAA,CAAA,CAAA,CAAA;;AACA,IAAA,IAAMkB,cAAc,GAAGnB,aAAa,CAACC,QAAD,CAApC,CAAA;AACAiB,IAAAA,qBAAqB,GAChBA,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,qBADgB,CAEhBC,EAAAA,cAFgB,CAArB,CAAA;AAID,GAAA;;AACD,EAAA,OAAOD,qBAAP,CAAA;AACD;;;;;AC7BD;AACA;AACA;;AAiBA;AACA;AACA;AACA;AACA;AACA;AACA;AACaE,IAAAA,uBAAuB,GAAG,SAA1BA,uBAA0B,GAAyD;EAAA,IAAxDC,sBAAwD,uEAAP,EAAO,CAAA;AAC9F,EAAA,IACErC,SADF,GAQIqC,sBARJ,CACErC,SADF;AAAA,MAEEE,QAFF,GAQImC,sBARJ,CAEEnC,QAFF;AAAA,MAGQ4B,QAHR,GAQIO,sBARJ,CAGEN,IAHF;AAAA,MAIYO,gBAJZ,GAQID,sBARJ,CAIEE,QAJF;AAAA,MAKEC,cALF,GAQIH,sBARJ,CAKEG,cALF;AAAA,MAMEC,aANF,GAQIJ,sBARJ,CAMEI,aANF;AAAA,MAOEC,gBAPF,GAQIL,sBARJ,CAOEK,gBAPF,CAAA;AASA,EAAA,IAAMC,iBAAiB,GAAG9gB,sBAAsB,CAACqe,QAAQ,IAAI,EAAb,CAAhD,CAAA;AACA,EAAA,IAAM0C,kBAAkB,GAAGhE,sBAAsB,CAACoB,SAAD,CAAjD,CAAA;AACA,EAAA,IAAc6C,eAAd,GAAkCD,kBAAlC,CAAMvC,MAAN,CAAA;AACA,EAAA,IACqByC,WADrB,GAIIF,kBAJJ,CACEG,iBADF;AAAA,MAEqB3C,WAFrB,GAIIwC,kBAJJ,CAEEI,iBAFF;AAAA,MAGoBC,UAHpB,GAIIL,kBAJJ,CAGEM,gBAHF,CAAA;;EAKA,IAAIL,eAAe,KAAKthB,SAAxB,EAAmC;AACjC,IAAA,IAAQwW,MAAR,GAAmBsK,sBAAnB,CAAQtK,MAAR,CAAA;AACA8K,IAAAA,eAAe,GAAG9K,MAAlB,CAAA;;IACA,IAAIA,MAAM,IAAIA,MAAM,CAAC/N,QAAP,CAAgB,GAAhB,CAAd,EAAoC;AAClC,MAAA,IAAMmZ,UAAU,GAAGpL,MAAM,CAAC9J,KAAP,CAAa,GAAb,CAAnB,CAAA;;AADkC,MAAA,IAAA,WAAA,GAAApB,kCAAA,CAEdsW,UAFc,EAAA,CAAA,CAAA,CAAA;;MAEjCN,eAFiC,GAAA,WAAA,CAAA,CAAA,CAAA,CAAA;AAGnC,KAAA;AACF,GAAA;;AACD,EAAA,IAAIO,4BAA0D,GAAG;AAC/DP,IAAAA,eAAe,EAAfA,eAD+D;AAE/DC,IAAAA,WAAW,EAAXA,WAF+D;AAG/D1C,IAAAA,WAAW,EAAXA,WAH+D;AAI/D6C,IAAAA,UAAU,EAAVA,UAJ+D;AAK/DN,IAAAA,iBAAiB,EAAjBA,iBAL+D;AAM/DC,IAAAA,kBAAkB,EAAlBA,kBAAAA;GANF,CAAA;;EAQA,IAAID,iBAAiB,CAACU,yBAAtB,EAAiD;AAC/CD,IAAAA,4BAA4B,CAACE,gBAA7B,GAAgDX,iBAAiB,CAACU,yBAAlE,CAAA;AACD,GAAA;;EACD,IAAIf,gBAAgB,KAAK/gB,SAArB,IAAkC+gB,gBAAgB,CAACzM,OAAjB,KAA6B,CAAnE,EAAsE;AACpE,IAAA,IAAMD,QAAQ,GAAGgG,kBAAkB,CAAC0G,gBAAD,CAAnC,CAAA;AACAc,IAAAA,4BAA4B,CAACd,gBAA7B,GAAgD1M,QAAQ,CAACX,QAAT,EAAhD,CAAA;AACAmO,IAAAA,4BAA4B,CAACb,QAA7B,GAAwC3M,QAAQ,CAAC2N,UAAT,EAAxC,CAAA;AACD,GAAA;;AACD,EAAA,IAAIf,cAAJ,EAAoB;IAClBY,4BAA4B,CAACZ,cAA7B,GAA8C5G,kBAAkB,CAAC4G,cAAD,CAAlB,CAAmCvN,QAAnC,EAA9C,CAAA;AACD,GAAA;;AACD,EAAA,IAAIwN,aAAa,KAAKlhB,SAAlB,IAA+BmhB,gBAAnC,EAAqD;AACnDU,IAAAA,4BAA4B,CAACX,aAA7B,GAA6C7G,kBAAkB,CAAC;AAC9D/F,MAAAA,OAAO,EAAE4M,aADqD;AAE9DlN,MAAAA,QAAQ,EAAEmN,gBAAAA;AAFoD,KAAD,CAA/D,CAAA;AAID,GAAA;;AACD,EAAA,IAAIZ,QAAJ,EAAc;AACZ,IAAA,IAAA,SAAA,GAAAjV,kCAAA,CAAmBiV,QAAnB,EAAA,CAAA,CAAA;AAAA,QAAOb,QAAP,GAAA,SAAA,CAAA,CAAA,CAAA,CAAA;;AACA,IAAA,IAAMkB,cAAc,GAAGnB,aAAa,CAACC,QAAD,CAApC,CAAA;AACAmC,IAAAA,4BAA4B,GACvBA,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,4BADuB,CAEvBjB,EAAAA,cAFuB,CAA5B,CAAA;AAID,GAAA;;AACD,EAAA,OAAOiB,4BAAP,CAAA;AACD;;AC3DD;AACA;AACA;AACA;AACA;AACA;AACA;AACaI,IAAAA,mBAAmB,GAAG,SAAtBA,mBAAsB,GAEJ;EAAA,IAD7BC,kBAC6B,uEADY,EACZ,CAAA;AAC7B,EAAA,IACSC,UADT,GAOID,kBAPJ,CACE1D,KADF;AAAA,MAEEE,OAFF,GAOIwD,kBAPJ,CAEExD,OAFF;AAAA,MAGE0D,UAHF,GAOIF,kBAPJ,CAGEE,UAHF;AAAA,MAIEC,UAJF,GAOIH,kBAPJ,CAIEG,UAJF;AAAA,MAKE5D,SALF,GAOIyD,kBAPJ,CAKEzD,SALF;MAOIyD,qBAAAA,GAAAA,kBAPJ,CAMEvD,QANF;MAMEA,QANF,sCAMa,EANb,GAAA,qBAAA,CAAA;AAQA,EAAA,IAAM2D,cAAc,GAAG1E,uBAAuB,CAACa,SAAD,CAA9C,CAAA;AACA,EAAA,IAAM8D,aAAa,GAAGjiB,sBAAsB,CAACqe,QAAD,CAA5C,CAAA;AACA,EAAA,IACU4C,WADV,GAMIe,cANJ,CACExD,MADF;AAAA,MAEgBhM,YAFhB,GAMIwP,cANJ,CAEE,YAFF,CAAA;AAAA,MAGiBE,UAHjB,GAMIF,cANJ,CAGE,aAHF,CAAA;AAAA,MAIqBG,cAJrB,GAMIH,cANJ,CAIE,iBAJF,CAAA;AAAA,MAKeI,iBALf,GAMIJ,cANJ,CAKEK,WALF,CAAA;AAOA,EAAA,IAAI3O,QAAJ,CAAA;AACA,EAAA,IAAQ4O,gBAAR,GAAgDV,kBAAhD,CAAQU,gBAAR;AAAA,MAA0BC,iBAA1B,GAAgDX,kBAAhD,CAA0BW,iBAA1B,CAAA;;EACA,IAAIA,iBAAiB,KAAK7iB,SAA1B,EAAqC;IACnCgU,QAAQ,GAAGD,kBAAkB,CAAC;MAC5B9B,SAAS,EAAE4Q,iBAAiB,CAAC5iB,WADD;MAE5BA,WAAW,EAAE4iB,iBAAiB,CAAC5Q,SAAAA;AAFH,KAAD,CAA7B,CAAA;AAID,GALD,MAKO,IAAIa,YAAY,KAAK9S,SAArB,EAAgC;AACrCgU,IAAAA,QAAQ,GAAGL,kBAAkB,CAACb,YAAD,CAA7B,CAAA;AACD,GAFM,MAEA,IAAI8P,gBAAgB,KAAK5iB,SAAzB,EAAoC;IACzCgU,QAAQ,GAAGD,kBAAkB,CAAC;MAC5B9B,SAAS,EAAE2Q,gBAAgB,CAAC3iB,WADA;MAE5BA,WAAW,EAAE2iB,gBAAgB,CAAC3Q,SAAAA;AAFF,KAAD,CAA7B,CAAA;AAID,GAAA;;AACD,EAAA,IAAqBqC,OAArB,GAAiCgO,cAAjC,CAAM,aAAN,CAAA,CAAA;;EACA,IAAIhO,OAAO,KAAKtU,SAAhB,EAA2B;AACzB,IAAA,IAAQ8iB,eAAR,GAA4BZ,kBAA5B,CAAQY,eAAR,CAAA;IACA,IAAIA,eAAe,KAAK9iB,SAAxB,EAAmCsU,OAAO,GAAGwO,eAAe,CAACza,QAAhB,EAAV,CAAA;AACpC,GAAA;;AACD,EAAA,IAAIgM,QAAJ,CAAA;AACA,EAAA,IAAI0O,SAAJ,CAAA;AACA,EAAA,IAAIzJ,KAAJ,CAAA;;EACA,IAAIhF,OAAO,IAAIN,QAAf,EAAyB;IACvBK,QAAQ,GAAGgG,kBAAkB,CAAC;AAAE/F,MAAAA,OAAO,EAAPA,OAAF;AAAWN,MAAAA,QAAQ,EAARA,QAAAA;AAAX,KAAD,CAA7B,CAAA;AACA+O,IAAAA,SAAS,GAAG1O,QAAQ,CAACL,QAAT,CAAkBjB,UAAlB,EAAkCsB,IAAAA,QAAQ,CAACL,QAAT,CAAkBS,MAAlB,EAA9C,CAAA;AACA6E,IAAAA,KAAK,GAAGjF,QAAQ,CAAC2O,OAAT,EAAR,CAAA;AACD,GAAA;;EACD,IAA0BX,IAAAA,GAAAA,UAAU,IAAI,EAAxC;MAAQtiB,MAAR,QAAQA,MAAR;MAAgBD,KAAhB,QAAgBA,KAAhB,CAAA;;AACA,EAAA,IAAMD,WAAW,GAAGD,gBAAgB,CAACyiB,UAAD,CAApC,CAAA;AACA,EAAA,IAAMY,SAAS,GAAA,EAAA,CAAA,MAAA,CAAMnjB,KAAN,EAAA,GAAA,CAAA,CAAA,MAAA,CAAeC,MAAf,CAAf,CAAA;AACA,EAAA,IAAMmjB,YAAY,GAAGxE,OAAO,GAAGY,iCAAa,CAACZ,OAAD,EAAU;AAAEyE,IAAAA,IAAI,EAAE,IAAA;GAAlB,CAAhB,GAA4CnjB,SAAxE,CAAA;EACA,OAAO;AACLuhB,IAAAA,WAAW,EAAXA,WADK;AAEL0B,IAAAA,SAAS,EAATA,SAFK;AAGLF,IAAAA,SAAS,EAATA,SAHK;AAILhjB,IAAAA,MAAM,EAANA,MAJK;AAKLD,IAAAA,KAAK,EAALA,KALK;AAMLkU,IAAAA,QAAQ,EAARA,QANK;AAOLK,IAAAA,QAAQ,EAARA,QAPK;AAQL8N,IAAAA,UAAU,EAAVA,UARK;AASL7I,IAAAA,KAAK,EAALA,KATK;AAUL4J,IAAAA,YAAY,EAAZA,YAVK;AAWLd,IAAAA,UAAU,EAAVA,UAXK;AAYLI,IAAAA,UAAU,EAAVA,UAZK;AAaLE,IAAAA,iBAAiB,EAAjBA,iBAbK;AAcL7iB,IAAAA,WAAW,EAAXA,WAdK;AAeL4iB,IAAAA,cAAc,EAAdA,cAfK;AAgBLF,IAAAA,aAAa,EAAbA,aAhBK;AAiBLD,IAAAA,cAAc,EAAdA,cAAAA;GAjBF,CAAA;AAmBD;;;;;;AC5FD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACac,IAAAA,cAAc,GAAG,SAAjBA,cAAiB,GAAgD;EAAA,IAA/CC,SAA+C,uEAAxB,EAAwB,CAAA;EAC5E,IAAIC,WAA4B,GAAG,EAAnC,CAAA;AACA,EAAA,IACEC,kBADF,GAOIF,SAPJ,CACEE,kBADF;AAAA,MAEkBC,kBAFlB,GAOIH,SAPJ,CAEEI,cAFF;AAAA,MAGkBC,kBAHlB,GAOIL,SAPJ,CAGEM,cAHF;AAAA,MAImBC,mBAJnB,GAOIP,SAPJ,CAIEQ,eAJF;MAOIR,mBAAAA,GAAAA,SAPJ,CAKES,QALF;MAKYC,YALZ,oCAK2B,EAL3B,GAAA,mBAAA;MAOIV,cAAAA,GAAAA,SAPJ,CAMEW,GANF;MAMOC,OANP,+BAMiB,EANjB,GAAA,cAAA,CAAA;;AAF4E,EAAA,IAAA,QAAA,GAAA3Y,kCAAA,CAUxD2Y,OAVwD,EAAA,CAAA,CAAA,CAAA;;AAU3EX,EAAAA,WAAW,CAACU,GAV+D,GAAA,QAAA,CAAA,CAAA,CAAA,CAAA;;AAAA,EAAA,IAAA,aAAA,GAAA1Y,kCAAA,CAWnDyY,YAXmD,EAAA,CAAA,CAAA,CAAA;;AAW3ET,EAAAA,WAAW,CAACQ,QAX+D,GAAA,aAAA,CAAA,CAAA,CAAA,CAAA;;AAY5E,EAAA,IAAIP,kBAAJ,EAAwB;AACtB,IAAA,IAAMW,wBAAwB,GAAGrD,uBAAuB,CAAC0C,kBAAD,CAAxD,CAAA;AACAD,IAAAA,WAAW,GACNA,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,WADM,CAENY,EAAAA,wBAFM,CAAX,CAAA;AAID,GAAA;;AACD,EAAA,IAAIV,kBAAJ,EAAwB;AACtB,IAAA,IAAA,mBAAA,GAAAlY,kCAAA,CAAyBkY,kBAAzB,EAAA,CAAA,CAAA;AAAA,QAAOC,cAAP,GAAA,mBAAA,CAAA,CAAA,CAAA,CAAA;;AACA,IAAA,IAAMU,oBAAoB,GAAGlC,mBAAmB,CAACwB,cAAD,CAAhD,CAAA;AACAH,IAAAA,WAAW,GACNA,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,WADM,CAENa,EAAAA,oBAFM,CAAX,CAAA;AAID,GAAA;;AACD,EAAA,IAAIT,kBAAJ,EAAwB;AACtB,IAAA,IAAA,mBAAA,GAAApY,kCAAA,CAAyBoY,kBAAzB,EAAA,CAAA,CAAA;AAAA,QAAOC,cAAP,GAAA,mBAAA,CAAA,CAAA,CAAA,CAAA;;AACA,IAAA,IAAMS,oBAAoB,GAAGjG,mBAAmB,CAACwF,cAAD,CAAhD,CAAA;AACAL,IAAAA,WAAW,GACNA,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,WADM,CAENc,EAAAA,oBAFM,CAAX,CAAA;AAID,GAAA;;AACD,EAAA,IAAIR,mBAAJ,EAAyB;AACvB,IAAA,IAAA,oBAAA,GAAAtY,kCAAA,CAA0BsY,mBAA1B,EAAA,CAAA,CAAA;AAAA,QAAOC,eAAP,GAAA,oBAAA,CAAA,CAAA,CAAA,CAAA;;AACA,IAAA,IAAMlD,qBAAqB,GAAGN,oBAAoB,CAACwD,eAAD,CAAlD,CAAA;AACAP,IAAAA,WAAW,GACNA,eAAAA,CAAAA,eAAAA,CAAAA,EAAAA,EAAAA,WADM,CAEN3C,EAAAA,qBAFM,CAAX,CAAA;AAID,GAAA;;AACD,EAAA,OAAO2C,WAAP,CAAA;AACD;;AC/ED;AAGA,IAAMe,cAAc,GAAG;AACrBC,EAAAA,GAAG,EAAE,KADgB;AAErBC,EAAAA,IAAI,EAAE,MAFe;AAGrBC,EAAAA,MAAM,EAAE,QAHa;AAIrB3Q,EAAAA,IAAI,EAAE,MAJe;AAKrB4Q,EAAAA,GAAG,EAAE,KAAA;AALgB,CAAvB,CAAA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACaC,IAAAA,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAyC;EAAA,IAAxCC,KAAwC,uEAArB,EAAqB,CAAA;AAC3E;AACA;AACA,EAAA,IAAkBC,qBAAlB,GAA4CD,KAA5C,CAAQb,QAAR,CAAA;AAEA,EAAA,IAAMA,QAAQ,GAAGhb,KAAK,CAACC,OAAN,CAAc6b,qBAAd,CAAA,GACbA,qBAAqB,CAAC,CAAD,CADR,GAEbA,qBAFJ,CAAA;AAIA,EAAA,IAAI,CAACd,QAAL,EAAe,OAAO9jB,SAAP,CAAA;EACf,IAAI8jB,QAAQ,CAACe,QAAT,CAAkB,MAAlB,CAAJ,EAA+B,OAAOR,cAAc,CAACC,GAAtB,CAAA;EAC/B,IAAIR,QAAQ,CAACtH,UAAT,CAAoB,OAApB,CAAJ,EAAkC,OAAO6H,cAAc,CAACE,IAAtB,CAAA;EAClC,IAAIT,QAAQ,CAACe,QAAT,CAAkB,SAAlB,CAAJ,EAAkC,OAAOR,cAAc,CAACG,MAAtB,CAAA;EAClC,IAAIV,QAAQ,CAACe,QAAT,CAAkB,OAAlB,CAAJ,EAAgC,OAAOR,cAAc,CAACxQ,IAAtB,CAAA;EAChC,IAAIiQ,QAAQ,CAACe,QAAT,CAAkB,MAAlB,CAAJ,EAA+B,OAAOR,cAAc,CAACI,GAAtB,CAAA;AAE/B,EAAA,OAAOzkB,SAAP,CAAA;AACD;;AClCD,IAAM8kB,gBAAgB,GAAG,CACvB,YADuB,EAEvB,WAFuB,EAGvB,WAHuB,EAIvB,YAJuB,EAKvB,cALuB,EAMvB,WANuB,EAOvB,eAPuB,CAAzB,CAAA;AAUA,IAAMC,gBAAgB,GAAG,CAAC,WAAD,CAAzB,CAAA;AAEA,IAAMC,gBAAgB,GAAG,CACvB,WADuB,EAEvB,YAFuB,EAGvB,aAHuB,EAIvB,WAJuB,EAKvB,aALuB,EAMvB,WANuB,EAOvB,YAPuB,EAQvB,WARuB,EASvB,YATuB,EAUvB,cAVuB,CAAzB,CAAA;AAaA,IAAMC,0BAA0B,GAAOF,EAAAA,CAAAA,MAAAA,CAAAA,gBAAP,EAA4BD,gBAA5B,EAAiDE,gBAAjD,CAAhC,CAAA;AAEA,IAAME,uBAAuB,GAAG,CAAC,MAAD,EAAS,OAAT,CAAhC,CAAA;AAEA,IAAMC,YAAY,GAAG,WAArB,CAAA;AACA,IAAMC,kBAAkB,GAAG,iBAA3B,CAAA;AACA,IAAMC,YAAY,GAAG,aAArB,CAAA;AACA,IAAMC,aAAa,GAAG,QAAtB,CAAA;AACA,IAAMC,aAAa,GAAG,KAAtB,CAAA;AACA,IAAMC,UAAU,GAAG,MAAnB;AAGA;;AACA,IAAMC,mBAAmB,GAAG,CAC1B,OAD0B,EAE1B,YAF0B,EAG1B,OAH0B,EAI1B,QAJ0B,EAK1B,OAL0B,EAM1B,UAN0B,CAAA,CAO1BC,OAP0B,EAA5B,CAAA;;AA2BA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAGvB,IAAA,EAAA,KAAA,EAAA;AAAA,EAAA,IAFmBC,OAEnB,GAAA,IAAA,CAFDtC,WAEC,CAFcU,GAEd,CAAA;AAAA,EAAA,IADmB6B,QACnB,GAAA,KAAA,CADDvC,WACC,CADcU,GACd,CAAA;;AACH,EAAA,IAAIyB,mBAAmB,CAAChd,QAApB,CAA6Bmd,OAA7B,CAAA,IAAyCH,mBAAmB,CAAChd,QAApB,CAA6Bod,QAA7B,CAA7C,EAAqF;IACnF,OAAOJ,mBAAmB,CAACzO,OAApB,CAA4B6O,QAA5B,CAAwCJ,GAAAA,mBAAmB,CAACzO,OAApB,CAA4B4O,OAA5B,CAA/C,CAAA;AACD,GAAA;;EACD,OAAOA,OAAO,CAACE,WAAR,EAAsBC,CAAAA,aAAtB,CAAoCF,QAAQ,CAACC,WAAT,EAApC,CAAP,CAAA;AACD,CARD,CAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACO,IAAME,iBAAiB,GAAG,SAApBA,iBAAoB,CAC/BC,QAD+B,EAE/B7Y,OAF+B,EAGD;EAC9B,IAQIA,KAAAA,GAAAA,OAAO,IAAI,EARf;AAAA,MAAA,qBAAA,GAAA,KAAA,CACE8Y,gBADF;MACEA,gBADF,sCACqBjB,0BADrB,GAAA,qBAAA;AAAA,MAAA,oBAAA,GAAA,KAAA,CAEEkB,cAFF;MAEEA,cAFF,qCAEmBjB,uBAFnB,GAAA,oBAAA;AAAA,MAAA,kBAAA,GAAA,KAAA,CAGEkB,YAHF;MAGEA,YAHF,mCAGiBT,mBAHjB,GAAA,kBAAA;AAAA,MAAA,eAAA,GAAA,KAAA,CAIEU,SAJF;MAIEA,SAJF,gCAIc,KAJd,GAAA,eAAA;AAAA,MAAA,iBAAA,GAAA,KAAA,CAKEC,WALF;MAKEA,WALF,kCAKgB,MALhB,GAAA,iBAAA;AAAA,MAAA,cAAA,GAAA,KAAA,CAMEC,QANF;MAMEA,QANF,+BAMa,OANb,GAAA,cAAA;AAAA,MAAA,oBAAA,GAAA,KAAA,CAOEC,cAPF;MAOEA,cAPF,qCAOmB,aAPnB,GAAA,oBAAA,CAAA;;EASA,IAAkCP,KAAAA,GAAAA,QAAQ,IAAI,EAA9C;AAAA,MAAA,WAAA,GAAA,KAAA,CAAQtB,KAAR;MAAe8B,SAAf,4BAA2B,EAA3B,GAAA,WAAA,CAAA;;EACA,IAAMC,iBAA4C,GAAGD,SAAS,CAAC5K,MAAV,CAAiB,UAACC,GAAD,EAAMuH,SAAN,EAAoB;AACxF,IAAA,IAAIsD,IAAJ,CAAA;AACA,IAAA,IAAIC,GAAJ,CAAA;AACA,IAAA,IAAMtD,WAAW,GAAGF,cAAc,CAACC,SAAD,CAAlC,CAAA;AACA,IAAA,IAAQ1D,GAAR,GAAuD2D,WAAvD,CAAQ3D,GAAR;AAAA,QAAamE,QAAb,GAAuDR,WAAvD,CAAaQ,QAAb;AAAA,QAAuBxC,eAAvB,GAAuDgC,WAAvD,CAAuBhC,eAAvB;AAAA,QAAwCa,UAAxC,GAAuDmB,WAAvD,CAAwCnB,UAAxC,CAAA;;AACA,IAAA,IAAI2B,QAAJ,EAAc;AACZ6C,MAAAA,IAAI,GAAG7C,QAAP,CAAA;MACA,IACE,CAACA,QAAQ,KAAKsB,kBAAb,IAAmCtB,QAAQ,KAAKuB,YAAjD,MACC/D,eAAe,KAAKgE,aAApB,IAAqChE,eAAe,KAAKiE,aAD1D,CAEApD,IAAAA,UAAU,KAAKqD,UAHjB,EAKEmB,IAAI,GAAGxB,YAAP,CAAA;AACH,KAAA;;AACD,IAAA,IAAIxF,GAAJ,EAAS;AACP,MAAA,IAAIwG,cAAJ,EAAoB;AAClB,QAAA,IAAA,UAAA,GAAqBxG,GAAG,CAACjT,KAAJ,CAAU,KAAV,CAArB;AAAA,YAAA,WAAA,GAAApB,kCAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAA,YAAOub,UAAP,GAAA,WAAA,CAAA,CAAA,CAAA,CAAA;;QACA,IAAIV,cAAc,CAAC1d,QAAf,CAAwBoe,UAAxB,CAAJ,EAAyCD,GAAG,GAAGjH,GAAN,CAAA;AAC1C,OAHD,MAGO;AACLiH,QAAAA,GAAG,GAAGjH,GAAN,CAAA;AACD,OAAA;AACF,KAAA;;IACD,IAAIiH,GAAG,IAAIV,gBAAgB,CAACzd,QAAjB,CAA0Bke,IAA1B,CAAX,EAA4C;AAAA,MAAA,IAAA,SAAA,CAAA;;AAC1C7K,MAAAA,GAAG,CAACrQ,IAAJ,EAAA,SAAA,GAAA,EAAA,EAAAD,mCAAA,CAAA,SAAA,EACG6a,SADH,EACeO,GADf,CAEGN,EAAAA,mCAAAA,CAAAA,SAAAA,EAAAA,WAFH,EAEiBK,IAFjB,kDAGGJ,QAHH,EAGclD,SAHd,CAIGmD,EAAAA,mCAAAA,CAAAA,SAAAA,EAAAA,cAJH,EAIoBlD,WAJpB,CAAA,EAAA,SAAA,EAAA,CAAA;AAMD,KAAA;;AACD,IAAA,OAAOxH,GAAP,CAAA;GA9BmD,EA+BlD,EA/BkD,CAArD,CAAA;EAgCA,IAAI,OAAOsK,YAAP,KAAwB,UAA5B,EAAwCM,iBAAiB,CAACzV,IAAlB,CAAuB0U,mBAAvB,CAAA,CAAA;AACxC,EAAA,OAAOe,iBAAP,CAAA;AACD;;AClID,IAAMI,iBAAiB,GAAG;AACxBC,EAAAA,KAAK,EAAE,OADiB;AAExBC,EAAAA,KAAK,EAAE,OAFiB;AAGxBC,EAAAA,KAAK,EAAE,OAHiB;AAIxBC,EAAAA,QAAQ,EAAE,UAJc;AAKxBC,EAAAA,MAAM,EAAE,QAAA;AALgB,CAA1B,CAAA;;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACzC,KAAD,EAAsC;AACrE,EAAA,IAAMrB,WAAW,GAAGF,cAAc,CAACuB,KAAD,CAAlC,CAAA;AACA,EAAA,IAAQb,QAAR,GAA6CR,WAA7C,CAAQQ,QAAR;AAAA,MAAkB3B,UAAlB,GAA6CmB,WAA7C,CAAkBnB,UAAlB;AAAA,MAA8B5D,UAA9B,GAA6C+E,WAA7C,CAA8B/E,UAA9B,CAAA;AACA,EAAA,IAAI,CAACuF,QAAL,EAAe,OAAO9jB,SAAP,CAAA;;AACf,EAAA,IAAI8jB,QAAQ,CAACtH,UAAT,CAAoB,QAApB,CAAJ,EAAmC;AACjC,IAAA,IAAI+B,UAAU,KAAKve,SAAnB,EAA8B,OAAO8mB,iBAAiB,CAACE,KAAzB,CAAA;AAC/B,GAAA;;AACD,EAAA,IAAIlD,QAAQ,CAACtH,UAAT,CAAoB,QAApB,CAAJ,EAAmC;AACjC,IAAA,IAAI2F,UAAU,KAAKniB,SAAnB,EAA8B,OAAO8mB,iBAAiB,CAACG,KAAzB,CAAA;AAC9B,IAAA,IAAI1I,UAAU,KAAKve,SAAnB,EAA8B,OAAO8mB,iBAAiB,CAACE,KAAzB,CAAA;AAC/B,GAAA;;EACD,IAAIlD,QAAQ,CAACtH,UAAT,CAAoB,QAApB,CAAJ,EAAmC,OAAOsK,iBAAiB,CAACC,KAAzB,CAAA;EACnC,IAAIjD,QAAQ,CAACe,QAAT,CAAkB,MAAlB,CAAJ,EAA+B,OAAOiC,iBAAiB,CAACI,QAAzB,CAAA;EAC/B,IAAIpD,QAAQ,CAACtH,UAAT,CAAoB,OAApB,CAAJ,EAAkC,OAAOsK,iBAAiB,CAACI,QAAzB,CAAA;EAClC,IAAIpD,QAAQ,CAACe,QAAT,CAAkB,SAAlB,CAAJ,EAAkC,OAAOiC,iBAAiB,CAACI,QAAzB,CAAA;EAClC,IAAIpD,QAAQ,CAACe,QAAT,CAAkB,OAAlB,CAAJ,EAAgC,OAAOiC,iBAAiB,CAACI,QAAzB,CAAA;EAChC,IAAIpD,QAAQ,CAACe,QAAT,CAAkB,MAAlB,CAAJ,EAA+B,OAAOiC,iBAAiB,CAACI,QAAzB,CAAA;EAC/B,IAAIpD,QAAQ,CAACe,QAAT,CAAkB,eAAlB,CAAJ,EAAwC,OAAOiC,iBAAiB,CAACK,MAAzB,CAAA;AACxC,EAAA,OAAOnnB,SAAP,CAAA;AACD;;ACtCD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMqnB,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACpB,QAAD,EAAqB5R,QAArB,EAA4D;EAC9F,IAAMiT,SAAS,GAAG7M,cAAc,CAACpG,QAAD,CAAd,CAAyBkT,SAAzB,EAAlB,CAAA;;EACA,IAA4BtB,IAAAA,GAAAA,QAAQ,IAAI,EAAxC;AAAA,MAAA,eAAA,GAAA,IAAA,CAAQuB,UAAR;MAAQA,UAAR,gCAAqB,EAArB,GAAA,eAAA,CAAA;;EACA,IAA8BA,eAAAA,GAAAA,UAA9B,CAAQ7H,GAAR;MAAa8H,OAAb,gCAAuB,EAAvB,GAAA,eAAA,CAAA;EACA,IAAMC,YAAY,GAAGD,OAAO,CAAC/mB,GAAR,CAAY,UAACinB,GAAD,EAAiB;AAChD,IAAA,IAAMC,EAAE,GAAG,IAAIC,GAAJ,CAAQF,GAAR,CAAA,CAAaG,QAAb,CAAsBpb,KAAtB,CAA4B,GAA5B,CAAA,CAAiCM,GAAjC,EAAX,CAAA;AACA,IAAA,OAAOkN,kBAAkB,CAAC0N,EAAD,CAAlB,CAAuBL,SAAvB,EAAP,CAAA;AACD,GAHoB,CAArB,CAAA;EAKA,IAAMQ,eAAe,GAAGL,YAAY,CAAC7L,MAAb,CACtB,UAACmM,YAAD,EAAuB9L,IAAvB,EAA6B+L,SAA7B,EAAA;IAAA,OACE5U,IAAI,CAACuE,GAAL,CAASsE,IAAI,GAAGoL,SAAhB,CAA6BjU,GAAAA,IAAI,CAACuE,GAAL,CAAS8P,YAAY,CAACM,YAAD,CAAZ,GAA6BV,SAAtC,CAA7B,GACIW,SADJ,GAEID,YAHN,CAAA;GADsB,EAKtB,CALsB,CAAxB,CAAA;EAOA,OAAOP,OAAO,CAACM,eAAD,CAAd,CAAA;AACD;;;;AC7BD;AACA;AACA;;AAmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACaG,uBAAuB,GAAG,SAA1BA,uBAA0B,CACrCC,YADqC,EAEC;EACtC,IAAMvZ,MAAyC,GAAG,EAAlD,CAAA;;EACA,IAA+BuZ,IAAAA,GAAAA,YAAY,IAAI,EAA/C;AAAA,MAAA,kBAAA,GAAA,IAAA,CAAQC,aAAR;MAAQA,aAAR,mCAAwB,EAAxB,GAAA,kBAAA,CAAA;;AACA,EAAA,IAAIA,aAAa,CAAC5e,MAAd,KAAyB,CAA7B,EAAgC,OAAOoF,MAAP,CAAA;EAChC,IAAMyZ,EAML,GAAGxU,IAAI,CAACyU,KAAL,CAAWF,aAAa,CAAC,CAAD,CAAxB,CANJ,CAAA;EAOA,IAAsFC,YAAAA,GAAAA,EAAtF,CAAQE,QAAR,CAAA;AAAA,EAAA,YAAA,GAAA,YAAA,KAAA,KAAA,CAAA,GAA+E,EAA/E,GAAA,YAAA,CAAA;EAAA,IAAoBC,iBAApB,gBAAoBA,iBAApB;MAAuCC,gBAAvC,gBAAuCA,gBAAvC;MAAyDC,iBAAzD,gBAAyDA,iBAAzD,CAAA;;AACA,EAAA,IAAIF,iBAAJ,EAAuB;AACrB5Z,IAAAA,MAAM,CAAC0S,eAAP,GAAyBkH,iBAAiB,CAACG,SAA3C,CAAA;AACD,GAAA;;AACD,EAAA,IAAIF,gBAAJ,EAAsB;IACpB,IAA+BA,qBAAAA,GAAAA,gBAA/B,CAAQG,aAAR;QAAQA,aAAR,sCAAwB,EAAxB,GAAA,qBAAA,CAAA;;AACA,IAAA,IAAQC,KAAR,GAAoCD,aAApC,CAAQC,KAAR;QAAkBC,aAAlB,gDAAoCF,aAApC,EAAA,SAAA,CAAA,CAAA;;IACAha,MAAM,CAAC2S,WAAP,GAAqBsH,KAArB,CAAA;AACA,IAAA,IAAgB9oB,MAAhB,GAAyC0oB,gBAAzC,CAAQM,MAAR;AAAA,QAA+BjpB,KAA/B,GAAyC2oB,gBAAzC,CAAwBO,KAAxB,CAAA;IACApa,MAAM,CAAC7O,MAAP,GAAgBA,MAAhB,CAAA;IACA6O,MAAM,CAAC9O,KAAP,GAAeA,KAAf,CAAA;;IACA,IAAIC,MAAM,IAAID,KAAd,EAAqB;AACnB8O,MAAAA,MAAM,CAACqU,SAAP,GAAsBnjB,EAAAA,CAAAA,MAAAA,CAAAA,KAAtB,cAA+BC,MAA/B,CAAA,CAAA;AACA6O,MAAAA,MAAM,CAAC/O,WAAP,GAAqBD,gBAAgB,CAAC;AAAEG,QAAAA,MAAM,EAANA,MAAF;AAAUD,QAAAA,KAAK,EAALA,KAAAA;AAAV,OAAD,CAArC,CAAA;AACD,KAAA;;AACD,IAAA,IAAA,cAAA,GAA4BU,MAAM,CAACyO,MAAP,CAAc6Z,aAAd,CAA5B;AAAA,QAAA,eAAA,GAAAxd,kCAAA,CAAA,cAAA,EAAA,CAAA,CAAA;AAAA,QAAO2d,UAAP,GAAA,eAAA,CAAA,CAAA,CAAA,CAAA;;AACA,IAAA,IAAIA,UAAJ,EAAgB;AACdra,MAAAA,MAAM,CAACwT,UAAP,GAAoB6G,UAAU,CAACC,aAA/B,CAAA;AACA,MAAA,IAAIta,MAAM,CAACwT,UAAP,IAAqBxT,MAAM,CAACwT,UAAP,CAAkB3Z,QAAlB,CAA2B,KAA3B,CAAzB,EAA4DmG,MAAM,CAACwT,UAAP,GAAoB,YAApB,CAAA;AAC5DxT,MAAAA,MAAM,CAACsU,YAAP,GAAsB+F,UAAU,CAACE,OAAjC,CAAA;AACA,MAAA,IAAMlX,SAAS,GAAGgX,UAAU,CAACG,oBAA7B,CAJc;;AAKd,MAAA,IAAMnpB,WAAW,GAAGgpB,UAAU,CAACI,kBAA/B,CAAA;MACA,IAAMrV,QAAQ,GAAGD,kBAAkB,CAAC;AAAE9T,QAAAA,WAAW,EAAXA,WAAF;AAAegS,QAAAA,SAAS,EAATA,SAAAA;AAAf,OAAD,CAAnC,CAAA;MACArD,MAAM,CAACoF,QAAP,GAAkBA,QAAlB,CAAA;MACApF,MAAM,CAACmU,SAAP,GAAmB/O,QAAQ,CAACjB,UAAT,EAAyBiB,IAAAA,QAAQ,CAACS,MAAT,EAA5C,CAAA;AACD,KAAA;AACF,GAAA;;AACD,EAAA,IAAIiU,iBAAiB,IAAIA,iBAAiB,CAAClf,MAAlB,GAA2B,CAApD,EAAuD;AACrD,IAAA,IAAA,qBAAA,GAA+Bkf,iBAAiB,CAAC,CAAD,CAAhD,CAAQE,aAAR;QAAQA,cAAR,sCAAwB,EAAxB,GAAA,qBAAA,CAAA;;AACA,IAAA,IAAQC,MAAR,GAAoCD,cAApC,CAAQC,KAAR;QAAkBC,cAAlB,gDAAoCF,cAApC,EAAA,UAAA,CAAA,CAAA;;IACAha,MAAM,CAACiQ,WAAP,GAAqBgK,MAArB,CAAA;;AACA,IAAA,IAAA,eAAA,GAA4BroB,MAAM,CAACyO,MAAP,CAAc6Z,cAAd,CAA5B;AAAA,QAAA,eAAA,GAAAxd,kCAAA,CAAA,eAAA,EAAA,CAAA,CAAA;AAAA,QAAO2d,WAAP,GAAA,eAAA,CAAA,CAAA,CAAA,CAAA;;AACA,IAAA,IAAIA,WAAJ,EAAgB;AACdra,MAAAA,MAAM,CAACyQ,eAAP,GAAyB4J,WAAU,CAACK,UAApC,CAAA;AACA1a,MAAAA,MAAM,CAAC4Q,YAAP,GAAsByJ,WAAU,CAACE,OAAjC,CAAA;AACAva,MAAAA,MAAM,CAACqQ,gBAAP,GAA0BgK,WAAU,CAACM,eAArC,CAAA;AACD,KAAA;AACF,GAAA;;AACD,EAAA,OAAO3a,MAAP,CAAA;AACD;;;;;AChFD;AACA;AACA;;AAoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACa4a,oBAAoB,GAAG,SAAvBA,oBAAuB,CAClCC,mBADkC,EAER;EAC1B,IAAM7a,MAA6B,GAAG,EAAtC,CAAA;;EACA,IAA4D6a,IAAAA,GAAAA,mBAAmB,IAAI,EAAnF;MAAQC,WAAR,QAAQA,WAAR;MAAqBlT,MAArB,QAAqBA,MAArB;MAA6BmT,KAA7B,QAA6BA,KAA7B;MAAoCC,KAApC,QAAoCA,KAApC;MAA2CzB,YAA3C,QAA2CA,YAA3C,CAAA;;AACA,EAAA,IAAIA,YAAJ,EAAkB,OAAA,aAAA,CAAA;AAASuB,IAAAA,WAAW,EAAXA,WAAAA;GAAgBxB,EAAAA,uBAAuB,CAACC,YAAD,CAAhD,CAAA,CAAA;EAClBvZ,MAAM,CAAC8a,WAAP,GAAqBA,WAArB,CAAA;EACA9a,MAAM,CAAC0S,eAAP,GAAyB9K,MAAzB,CAAA;;AACA,EAAA,IAAIoT,KAAJ,EAAW;AACThb,IAAAA,MAAM,CAAC2S,WAAP,GAAqBqI,KAAK,CAACpL,KAA3B,CAAA;AACA5P,IAAAA,MAAM,CAACsU,YAAP,GAAsB0G,KAAK,CAAClL,OAA5B,CAAA;;IACA,IAAIkL,KAAK,CAACC,SAAV,EAAqB;AACnB,MAAA,IAAM7V,QAAQ,GAAGD,kBAAkB,CAAC6V,KAAK,CAACC,SAAP,CAAnC,CAAA;MACAjb,MAAM,CAACoF,QAAP,GAAkBA,QAAlB,CAAA;MACApF,MAAM,CAACmU,SAAP,GAAmB/O,QAAQ,CAACjB,UAAT,EAAyBiB,IAAAA,QAAQ,CAACS,MAAT,EAA5C,CAAA;AACD,KAAA;;IACD,IAAImV,KAAK,CAACE,OAAV,EAAmB;MACjB,IAA0BF,cAAAA,GAAAA,KAAK,CAACE,OAAhC;UAAQ/pB,MAAR,kBAAQA,MAAR;UAAgBD,KAAhB,kBAAgBA,KAAhB,CAAA;MACA8O,MAAM,CAAC7O,MAAP,GAAgBA,MAAhB,CAAA;MACA6O,MAAM,CAAC9O,KAAP,GAAeA,KAAf,CAAA;;MACA,IAAIC,MAAM,IAAID,KAAd,EAAqB;AACnB8O,QAAAA,MAAM,CAACqU,SAAP,GAAsBnjB,EAAAA,CAAAA,MAAAA,CAAAA,KAAtB,cAA+BC,MAA/B,CAAA,CAAA;AACA6O,QAAAA,MAAM,CAAC/O,WAAP,GAAqBD,gBAAgB,CAAC;AAAEG,UAAAA,MAAM,EAANA,MAAF;AAAUD,UAAAA,KAAK,EAALA,KAAAA;AAAV,SAAD,CAArC,CAAA;AACD,OAAA;AACF,KAAA;AACF,GAAA;;AACD,EAAA,IAAI6pB,KAAJ,EAAW;AACT,IAAA,IAAe9K,WAAf,GAAwC8K,KAAxC,CAAQnL,KAAR;AAAA,QAA4BuL,OAA5B,GAAwCJ,KAAxC,CAA4BI,OAA5B,CAAA;IACAnb,MAAM,CAACiQ,WAAP,GAAqBA,WAArB,CAAA;IACA,IAAIkL,OAAJ,EAAanb,MAAM,CAACyP,aAAP,GAAuB0L,OAAO,CAACvgB,MAA/B,CAAA;AACd,GAAA;;AACD,EAAA,OAAOoF,MAAP,CAAA;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../src/_utils/parseAspectRatio.ts","../src/_utils/parseKeyValuePairTypes.ts","../src/auth/consts/roleNames.ts","../src/metadata/consts/attributeKeys.ts","../src/metadata/consts/systemKeys.ts","../src/metadata/createMetadataType/createMetadataType.ts","../src/metadata/_utils/sortTimespanList.ts","../src/metadata/_utils/index.ts","../src/metadata/_internal/parseValue.ts","../src/metadata/_internal/parseValueList.ts","../src/metadata/_internal/parseField.ts","../src/metadata/parseFieldList/parseFieldList.ts","../src/metadata/parseGroupList/parseGroupList.ts","../src/metadata/parseTimespan/parseTimespan.ts","../src/metadata/parseTimespanList/parseTimespanList.ts","../src/metadata/parseMetadataType/parseMetadataType.ts","../src/metadata/parseSimpleMetadataType/parseSimpleMetadataType.ts","../src/time/_consts/index.ts","../src/time/TimeBase/TimeBase.ts","../src/time/formatTimeBaseText/formatTimeBaseText.ts","../src/time/formatTimeBaseType/formatTimeBaseType.ts","../src/time/createTimeBase/createTimeBase.ts","../src/time/_utils/getAmountOfFrameDrops.ts","../src/time/_utils/isDropFrameTimeBase.ts","../src/time/TimeCode/TimeCode.ts","../src/time/_utils/getGreatestCommonDivisor.ts","../src/time/formatTimeCodeSeconds/formatTimeCodeSeconds.ts","../src/time/formatTimeCodeSmpte/_utils/getSamplesFromSmpte.ts","../src/time/formatTimeCodeSmpte/_utils/splitSmpte.ts","../src/time/formatTimeCodeSmpte/formatTimeCodeSmpte.ts","../src/time/formatTimeCodeText/formatTimeCodeText.ts","../src/time/formatTimeCodeType/formatTimeCodeType.ts","../src/time/createTimeCode/createTimeCode.ts","../src/metadata/metadataTypeToWebVtt/metadataTypeToWebVtt.ts","../src/search/createFacetType/createFacetType.ts","../src/search/parseFacetType/parseFacetType.ts","../src/search/parseHighlightTimespan/parseHighlightTimespan.ts","../src/search/parseHighlightTimespanList/parseHighlightTimespanList.ts","../src/search/parseNowDate/parseNowDate.ts","../src/shape/_utils/parseMediaInfoTypes.ts","../src/shape/parseAudioComponent/parseAudioComponent.ts","../src/file/parseFileType/parseFileType.ts","../src/shape/parseBinaryComponent/parseBinaryComponent.ts","../src/shape/parseContainerComponent/parseContainerComponent.ts","../src/shape/parseVideoComponent/parseVideoComponent.ts","../src/shape/parseShapeType/parseShapeType.ts","../src/shape/getShapeDocumentType/getShapeDocumentType.ts","../src/shape/filterShapeSource/filterShapeSource.ts","../src/shape/getShapeMediaType/getShapeMediaType.ts","../src/thumbnail/findNearestThumbnail/findNearestThumbnail.ts","../src/transcode/parseMediaConvertPreset/parseMediaConvertPreset.ts","../src/transcode/parseTranscodePreset/parseTranscodePreset.ts"],"sourcesContent":["const gcd = (a: number, b: number): number => (b ? gcd(b, a % b) : a);\n\nexport type AspectRatio = { width: number; height: number };\n\nexport const parseAspectRatio = (aspectRatio: AspectRatio) => {\n const { width, height } = aspectRatio || {};\n if (width === undefined || height === undefined) {\n return undefined;\n }\n const denominator = gcd(width, height);\n let widthRatio: string | number = width / denominator;\n let heightRatio = height / denominator;\n if (widthRatio > 21) {\n heightRatio = 1;\n widthRatio = (width / height).toFixed(2);\n }\n return [widthRatio, heightRatio].join(':');\n};\n","import { KeyValuePairType } from '@vidispine/types';\n\n/**\n *\n * @param keyValuePairTypes\n * @returns\n *\n * @category Other\n */\nexport const parseKeyValuePairTypes = (keyValuePairTypes: KeyValuePairType[]) => {\n return Object.fromEntries(\n keyValuePairTypes.map(({ key, value }) => {\n return [key, value];\n }),\n );\n};\n","/**\n * Object with all name of roles in VidiCore\n *\n * @category Auth\n */\nexport const ROLE_NAMES = {\n ACCESSCONTROL_READ: '_accesscontrol_read',\n ACCESSCONTROL_WRITE: '_accesscontrol_write',\n ADMINISTRATOR: '_administrator',\n AUTO_PROJECTION_READ: '_auto_projection_read',\n AUTO_PROJECTION_WRITE: '_auto_projection_write',\n COLLECTION_NOTIFICATION_READ: '_collection_notification_read',\n COLLECTION_NOTIFICATION_WRITE: '_collection_notification_write',\n COLLECTION_READ: '_collection_read',\n COLLECTION_WRITE: '_collection_write',\n CONFIGURATION_READ: '_configuration_read',\n DELETION_LOCK_NOTIFICATION_READ: '_deletion_lock_notification_read',\n DELETION_LOCK_NOTIFICATION_WRITE: '_deletion_lock_notification_write',\n DELETION_LOCK_READ: '_deletion_lock_read',\n DELETION_LOCK_WRITE: '_deletion_lock_write',\n DOCUMENT_NOTIFICATION_READ: '_document_notification_read',\n DOCUMENT_NOTIFICATION_WRITE: '_document_notification_write',\n DOCUMENT_READ: '_document_read',\n DOCUMENT_WRITE: '_document_write',\n ERROR_READ: '_error_read',\n ERROR_WRITE: '_error_write',\n EXPORT: '_export',\n EXPORT_TEMPLATE_READ: '_export_template_read',\n EXPORT_TEMPLATE_WRITE: '_export_template_write',\n EXTERNAL_ID_READ: '_external_id_read',\n EXTERNAL_ID_WRITE: '_external_id_write',\n FILE_NOTIFICATION_READ: '_file_notification_read',\n FILE_NOTIFICATION_WRITE: '_file_notification_write',\n FILE_READ: '_file_read',\n FILE_WRITE: '_file_write',\n GROUP_READ: '_group_read',\n GROUP_WRITE: '_group_write',\n IMPORT_WRITE: '_import',\n ITEM_ID_READ: '_item_id_read',\n ITEM_ID_WRITE: '_item_id_write',\n ITEM_NOTIFICATION_READ: '_item_notification_read',\n ITEM_NOTIFICATION_WRITE: '_item_notification_write',\n ITEM_WRITE: '_item_write',\n ITEM_SEARCH: '_item_search',\n ITEM_SHAPE_READ: '_item_shape_read',\n ITEM_SHAPE_WRITE: '_item_shape_write',\n ITEM_TIMELINE_READ: '_item_timeline_read',\n ITEM_TIMELINE_WRITE: '_item_timeline_write',\n ITEM_URI: '_item_uri',\n JOB_NOTIFICATION_READ: '_job_notification_read',\n JOB_NOTIFICATION_WRITE: '_job_notification_write',\n JOB_READ: '_job_read',\n JOB_WRITE: '_job_write',\n LIBRARY_READ: '_library_read',\n LIBRARY_WRITE: '_library_write',\n LOCK_READ: '_lock_read',\n LOCK_WRITE: '_lock_write',\n LOG_READ: '_log_read',\n METADATA_DATASET_READ: '_metadata_dataset_read',\n METADATA_DATASET_WRITE: '_metadata_dataset_write',\n METADATA_FIELD_GROUP_READ: '_metadata_field_group_read',\n METADATA_FIELD_GROUP_WRITE: '_metadata_field_group_write',\n METADATA_FIELD_READ: '_metadata_field_read',\n METADATA_FIELD_WRITE: '_metadata_field_write',\n METADATA_GLOBAL_READ: '_metadata_global_read',\n METADATA_GLOBAL_WRITE: '_metadata_global_write',\n METADATA_LOCK_READ: '_metadata_lock_read',\n METADATA_LOCK_WRITE: '_metadata_lock_write',\n METADATA_READ: '_metadata_read',\n METADATA_SCHEMA_READ: '_metadata_schema_read',\n METADATA_SCHEMA_WRITE: '_metadata_schema_write',\n METADATA_WRITE: '_metadata_write',\n OTIF_ANALYZE: '_otif_analyze',\n OTIF_READ: '_otif_read',\n OTIF_WRITE: '_otif_write',\n PLACEHOLDER_NOTIFICATION_READ: '_placeholder_notification_read',\n PLACEHOLDER_NOTIFICATION_WRITE: '_placeholder_notification_write',\n PROJECTION_READ: '_projection_read',\n PROJECTION_WRITE: '_projection_write',\n QUOTA_NOTIFICATION_READ: '_quota_notification_read',\n QUOTA_NOTIFICATION_WRITE: '_quota_notification_write',\n QUOTA_READ: '_quota_read',\n QUOTA_WRITE: '_quota_write',\n RELATION_READ: '_relation_read',\n RELATION_WRITE: '_relation_write',\n RESOURCE_READ: '_resource_read',\n RESOURCE_WRITE: '_resource_write',\n RUN_AS: '_run_as',\n SEARCH: '_search',\n SEQUENCE_READ: '_sequence_read',\n SEQUENCE_WRITE: '_sequence_write',\n SHAPE_TAG_READ: '_shape_tag_read',\n SHAPE_TAG_WRITE: '_shape_tag_write',\n SITE_MANAGER: '_site_manager',\n SITE_RULE_READ: '_site_rule_read',\n SITE_RULE_WRITE: '_site_rule_write',\n STORAGE_GROUP_READ: '_storage_group_read',\n STORAGE_GROUP_WRITE: '_storage_group_write',\n STORAGE_NOTIFICATION_READ: '_storage_notification_read',\n STORAGE_NOTIFICATION_WRITE: '_storage_notification_write',\n STORAGE_READ: '_storage_read',\n STORAGE_RULE_READ: '_storage_rule_read',\n STORAGE_RULE_WRITE: '_storage_rule_write',\n STORAGE_WRITE: '_storage_write',\n SUPER_ACCESS_USER: '_super_access_user',\n TASKDEFINITION_READ: '_taskdefinition_read',\n TASKDEFINITION_WRITE: '_taskdefinition_write',\n THUMBNAIL_READ: '_thumbnail_read',\n THUMBNAIL_WRITE: '_thumbnail_write',\n TRANSCODER: '_transcoder',\n TRANSFER_READ: '_transfer_read',\n TRANSFER_WRITE: '_transfer_write',\n USER: '_user',\n VXA: '_vxa',\n VXA_READ: '_vxa_read',\n} as const;\n","import {\n MetadataFieldValueType,\n MetadataGroupValueType,\n MetadataValueAttributes,\n MetadataValueType,\n} from '@vidispine/types';\n\nconst SHARED_ATTRIBUTE_KEYS: (keyof MetadataValueAttributes)[] = [\n 'uuid',\n 'user',\n 'timestamp',\n 'change',\n 'conflict',\n 'mode',\n];\n\nconst SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS = [\n 'name',\n 'id',\n 'referenced',\n 'data',\n 'inheritance',\n] as const;\n\n/**\n * Array with all available metadata group attributes\n *\n * @category Metadata\n */\nexport const GROUP_ATTRIBUTE_KEYS: (keyof MetadataGroupValueType)[] = [\n ...SHARED_ATTRIBUTE_KEYS,\n ...SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS,\n 'cycle',\n 'field',\n 'group',\n];\n\n/**\n * Array with all available metadata group attributes\n *\n * @category Metadata\n */\nexport const FIELD_ATTRIBUTE_KEYS: (keyof MetadataFieldValueType)[] = [\n ...SHARED_ATTRIBUTE_KEYS,\n ...SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS,\n 'value',\n 'reference',\n 'type',\n 'track',\n];\n\n/**\n * Array with all available metadata field value attributes\n *\n * @category Metadata\n */\nexport const FIELD_VALUE_ATTRIBUTE_KEYS: (keyof MetadataValueType)[] = [\n ...SHARED_ATTRIBUTE_KEYS,\n 'value',\n 'lang',\n];\n","/**\n * Array with all available VidiCore system/default field group names\n *\n * @category Metadata\n */\nexport const SYSTEM_FIELDGROUPS = [\n 'stl_subtitle',\n 'stl_tti',\n 'stl_gsi',\n 'mrk_marker',\n 'pho_validation',\n 'pho_resource',\n 'pho_error',\n 'facedetect_rect',\n 'facedetect_face',\n 'originalTrackFilename',\n 'stl_gsiHeader',\n] as const;\n\n/**\n * Array with all available VidiCore system/default field group names\n *\n * @category Metadata\n */\nexport const SYSTEM_FIELDS = [\n 'title',\n 'user',\n 'shapeTag',\n 'representativeThumbnail',\n 'representativeThumbnailNoAuth',\n 'representativeItems',\n 'itemId',\n 'collectionId',\n 'mediaType',\n 'mimeType',\n 'created',\n 'startTimeCode',\n 'startSeconds',\n 'fieldValidationError',\n 'schemaValidationError',\n 'originalFilename',\n 'originalUri',\n 'originalAudioCodec',\n 'originalVideoCodec',\n 'originalHeight',\n 'originalWidth',\n 'originalFormat',\n 'durationSeconds',\n 'durationTimeCode',\n 'solr-index',\n '__user',\n '__collection',\n '__collection_size',\n '__ancestor_collection',\n '__ancestor_collection_size',\n '__shape',\n '__shape_size',\n '__shape_last_added',\n '__placeholder_shape_size',\n '__version',\n '__version_count',\n '__storage',\n '__storage_size',\n '__shapetag_{tag}_hash_{hash}',\n '__storage_{tag}',\n '__storage_{tag}_size',\n '__storagegroup',\n '__storagegroup_size',\n '__sequence',\n '__sequence_size',\n '__metadata_last_modified',\n '__external_id',\n '__deletion_lock_id',\n '__deletion_lock_expiry',\n '__child_collection',\n '__child_collection_size',\n '__parent_collection',\n '__parent_collection_size',\n '__items_size',\n 'stl_text',\n 'stl_justification',\n 'stl_xrelative',\n 'stl_yrelative',\n 'stl_vertical',\n 'stl_verticalbase',\n 'stl_horizontalbase',\n 'stl_sizerelative',\n 'stl_color',\n 'stl_outline',\n 'stl_outlinecolor',\n 'stl_outlinesize',\n 'stl_font',\n 'stl_service',\n 'stl_tti',\n 'stl_gsi',\n 'cct',\n 'tcd',\n 'tcf',\n 'oet',\n 'cd',\n 'mnc',\n 'cpn',\n 'dfc',\n 'tcp',\n 'tcs',\n 'tet',\n 'tnb',\n 'tnd',\n 'en',\n 'co',\n 'tng',\n 'rd',\n 'mnr',\n 'dsc',\n 'opt',\n 'lc',\n 'tpt',\n 'tn',\n 'slr',\n 'tns',\n 'rn',\n 'pub',\n 'dsn',\n 'ecd',\n 'mrk_zerolength',\n 'mrk_text',\n 'mrk_color',\n 'pho_resource_name',\n 'pho_error_level',\n 'pho_error_code',\n 'pho_error_description',\n 'facedetect_rect_width',\n 'facedetect_rect_height',\n 'facedetect_rect_y',\n 'facedetect_rect_x',\n 'facedetect_pid',\n 'facedetect_rect',\n 'trackId',\n 'eidr_actor',\n 'eidr_alternateId',\n 'eidr_countryOfOrigin',\n 'eidr_director',\n 'eidr_id',\n 'eidr_referentType',\n 'eidr_releaseDate',\n 'eidr_resourceName',\n 'eidr_status',\n 'eidr_sync',\n 'ttml_div',\n 'ttml_root',\n 'vxa_collection_id',\n 'vxaId',\n 'vxaLocalPath',\n 'tco',\n 'cs',\n 'ebn',\n 'tf',\n 'cf',\n 'sgn',\n 'tci',\n 'jc',\n 'vp',\n 'sn',\n] as const;\n","import {\n MetadataType,\n MetadataGroupValueType,\n MetadataFieldValueType,\n MetadataValueType,\n} from '@vidispine/types';\n\nimport { FIELD_ATTRIBUTE_KEYS, FIELD_VALUE_ATTRIBUTE_KEYS, GROUP_ATTRIBUTE_KEYS } from '../consts';\n\nexport type InputValueTypes = string | boolean | number | Date;\n\n/** Possible input values for the field value */\nexport type InputValue = InputValueTypes | InputValueTypes[];\n\n/** Input value object for the field value */\nexport type InputValueObject = { value: string | InputValue } & Omit<MetadataValueType, 'value'>;\n\nexport type InputFieldValue = InputValueObject | InputValue | InputValueObject[] | InputValue[];\n\n/** Input object to create field of */\nexport type InputFieldObject = {\n value: InputFieldValue;\n} & MetadataFieldValueType;\n\n/** Input to create a field of */\nexport type InputField = InputFieldValue | InputFieldObject;\n\n/** Input to create one or multiple groups and/or fields of */\nexport type InputGroupsOrFields = InputGroup | InputGroup[] | InputField | InputField[];\n\n/** Input object to create group of */\nexport type InputGroup = {\n [groupOrFieldName: string]: InputGroupsOrFields;\n} & Partial<MetadataGroupValueType>;\n\n/** Input to create a timespan of */\nexport type InputTimespan = {\n // Start for timespan\n start?: string | number;\n // End for timespan\n end?: string | number;\n // Base for timespan (typically undefined)\n base?: string;\n // Group or field metadata\n [groupOrFieldName: string]: InputGroupsOrFields;\n};\n\nconst isValueObject = (o: any): o is InputValueObject =>\n Object.prototype.toString.call(o) === '[object Object]' && o.value !== undefined;\n\nconst isFieldType = (v: any): v is string | boolean | number =>\n ['string', 'boolean', 'number'].includes(typeof v);\n\nconst isFieldObject = (o: any): o is InputFieldObject =>\n isValueObject(o) && (o?.value === null || isValueObject(o.value) || isFieldType(o.value));\n\nconst isObject = (o: any): o is { value?: any } =>\n Object.prototype.toString.call(o) === '[object Object]';\n\nconst isDate = (o: any): o is Date => Object.prototype.toString.call(o) === '[object Date]';\nconst isField = (value: any): value is InputField => {\n if (value === null) {\n return true;\n }\n if (Array.isArray(value)) {\n return value.some(isField);\n }\n return isFieldType(value) || isFieldObject(value) || isDate(value);\n};\n\nconst isGroup = (value: any): value is InputGroup | InputGroup[] => {\n const isGroupObject = (v: any) => isObject(v) && v.value === undefined && !!Object.entries(value);\n if (Array.isArray(value)) {\n return value.every(isGroup);\n }\n return isGroupObject(value);\n};\n\nconst tryPluralize = (str: string, arr: any[]) => str + (arr.length > 1 ? 's' : '');\n\nconst ensureKeysAreValid = (keysToCheck: string[], keysToMatch: string[]) => {\n const unsupportedKeys = keysToCheck.filter((k) => !keysToMatch.includes(k));\n if (unsupportedKeys.length) {\n throw Error(\n `Unsupported ${tryPluralize('key', unsupportedKeys)} (${unsupportedKeys.join(', ')})`,\n );\n }\n};\n\nconst parseValue = (value: InputValue): { value?: MetadataValueType['value'] } => {\n if (Array.isArray(value)) {\n throw Error('Invalid value inside value object, cannot be array');\n }\n if ([undefined, null].includes(value)) return {};\n if (isDate(value)) return { value: value.toISOString() };\n return { value: value.toString() };\n};\n\nconst parseValueObject = (valueObject: InputValueObject): MetadataValueType => {\n ensureKeysAreValid(Object.keys(valueObject), FIELD_VALUE_ATTRIBUTE_KEYS);\n if (Object.keys(valueObject).length === 0) {\n throw Error('Invalid value object, cannot be empty object');\n }\n if (typeof valueObject?.value === 'string') {\n return valueObject as MetadataValueType;\n }\n const parsedValue = parseValue(valueObject?.value);\n return { ...valueObject, ...(parsedValue !== undefined ? parsedValue : {}) } as MetadataValueType;\n};\n\nconst parseFieldValue = (value: InputFieldValue): MetadataValueType | MetadataValueType[] => {\n if ([undefined, null].includes(value)) return undefined;\n if (Array.isArray(value)) return value.flatMap(parseFieldValue);\n if (isValueObject(value)) return parseValueObject(value);\n return parseValue(value);\n};\n\nconst parseFieldObject = (fieldObject: InputFieldObject): MetadataFieldValueType => {\n ensureKeysAreValid(Object.keys(fieldObject), FIELD_ATTRIBUTE_KEYS);\n const parsedFieldValue = parseFieldValue(fieldObject?.value);\n if (parsedFieldValue === undefined) {\n const { value, ...fieldObjectWithoutValue } = fieldObject;\n return fieldObjectWithoutValue;\n }\n return {\n ...fieldObject,\n value: [...(Array.isArray(parsedFieldValue) ? parsedFieldValue : [parsedFieldValue])],\n };\n};\n\nconst parseField = (field: InputField): MetadataFieldValueType => {\n if (isFieldObject(field)) {\n return parseFieldObject(field);\n }\n const parsedFieldValue = parseFieldValue(field);\n if (parsedFieldValue === undefined) {\n return undefined;\n }\n return { value: [...(Array.isArray(parsedFieldValue) ? parsedFieldValue : [parsedFieldValue])] };\n};\n\nconst parseGroupsAndFields = (\n groupOrField: InputGroupsOrFields,\n): {\n group?: MetadataGroupValueType[];\n field?: MetadataFieldValueType[];\n} & MetadataGroupValueType => {\n const group: MetadataGroupValueType[] = [];\n const field: MetadataFieldValueType[] = [];\n let groupAttributes: MetadataGroupValueType = {};\n Object.entries(groupOrField || {}).forEach(([name, value]) => {\n if (GROUP_ATTRIBUTE_KEYS.includes(name as keyof MetadataGroupValueType)) {\n groupAttributes = { ...groupAttributes, [name]: value };\n } else if (isField(value)) {\n try {\n field.push({ name, ...parseField(value) });\n } catch (error) {\n throw Error(error.message + (name ? ` for field \"${name}\"` : ''));\n }\n } else if (isGroup(value)) {\n (Array.isArray(value) ? value : [value]).forEach((childGroup) => {\n group.push({ name, ...parseGroupsAndFields(childGroup) });\n });\n } else {\n throw Error(`Unhandled value for \"${name}\"`);\n }\n });\n return {\n ...groupAttributes,\n ...(group.length > 0 ? { group } : {}),\n ...(field.length > 0 ? { field } : {}),\n };\n};\n\nconst parseTimespan = (timespan: InputTimespan): MetadataType['timespan'][number] => {\n const { start = '-INF', end = '+INF', base = undefined, ...groupsAndFields } = timespan;\n const { group, field } = parseGroupsAndFields(groupsAndFields);\n return {\n ...(group ? { group } : {}),\n ...(field ? { field } : {}),\n start: start.toString(),\n end: end.toString(),\n ...(base ? { base } : {}),\n };\n};\n\nexport type CreateMetadataTypeInput = InputTimespan | InputTimespan[];\n\n/**\n * Create a VidiCore metadata object from a more dense/simplified structure\n *\n * @param input To create VidiCore metadata object of\n * @returns A VidiCore metadata object\n *\n * @category Metadata\n */\nexport const createMetadataType = (input: CreateMetadataTypeInput): MetadataType => {\n return {\n timespan: (Array.isArray(input) ? input : [input || {}]).map((t) => parseTimespan(t)),\n };\n};\n","import { MetadataType } from '@vidispine/types';\n\n/**\n * @private\n *\n * Function to sort timespan lists with\n *\n * TODO:\n * - Take different time bases in account\n * - Also compare end if start is same (lowest end first)\n *\n * @param timespan1 first timespan to compare\n * @param timespan2 second timespan to compare\n * @returns -1 if first is before second, 1 if first is after second, 0 if same start\n */\nexport const sortTimespanList = (\n timespan1: MetadataType['timespan'][number],\n timespan2: MetadataType['timespan'][number],\n) => {\n const [firstStart] = timespan1?.start?.split('@') || [];\n const [secondStart] = timespan2?.start?.split('@') || [];\n if (Number(firstStart) < Number(secondStart)) {\n return -1;\n }\n if (Number(firstStart) > Number(secondStart)) {\n return 1;\n }\n return 0;\n};\n\nexport default sortTimespanList;\n","export * from './findTimespan';\nexport * from './sortTimespanList';\n\n/**\n * @private\n *\n * Wrap in array if not already an array, and return empty array if v is undefined\n *\n * @param v value to return as array\n * @returns input value wrapped as array\n */\nexport const asArray = <T>(v: T | T[]) => (Array.isArray(v) ? v : (v && [v]) || []);\n\n/**\n * @private\n *\n * Wrap in array if not already an array, and return empty array if v is undefined\n *\n * @param v value to return as array\n * @returns input value wrapped as array\n */\nexport const asSingle = <T>(v: T | T[]) => (Array.isArray(v) ? v.pop() : v);\n\n/**\n * @private\n * Check if array is string array (+ type guard)\n *\n * @param arr Array to check if string array\n * @returns true if string array\n */\nexport const isStringArray = (arr: any[]): arr is string[] =>\n arr?.every((v) => typeof v === 'string') || false;\n","import { MetadataValueType } from '@vidispine/types';\n\nexport type ParsedValueAttributes = Partial<Omit<MetadataValueType, 'value'>>;\n\nexport type ParsedValue<TOptions> = TOptions extends { includeValueAttributes?: false }\n ? string\n : { value: string } & ParsedValueAttributes;\n\nexport type ParseValueOptions = {\n // Include attributes on value\n includeValueAttributes?: boolean | (keyof ParsedValueAttributes)[];\n};\n\nexport const defaultOptions = {\n includeValueAttributes: false,\n};\n\n/**\n * @internal\n * Parse the value object inside a field value list\n *\n * @param value The Vidicore metadata value type\n * @param options For how to parse the value object\n * @returns The parsed value\n */\nexport function parseValue<TOptions extends ParseValueOptions = ParseValueOptions>(\n value: MetadataValueType,\n options?: TOptions,\n): ParsedValue<TOptions> {\n const { includeValueAttributes } = {\n ...defaultOptions,\n ...(options || {}),\n };\n if (includeValueAttributes === false) {\n return value?.value as ParsedValue<TOptions>;\n }\n const { value: stringValue, ...attributes } = value;\n const valueAttributes: ParsedValueAttributes =\n (includeValueAttributes === true && attributes) ||\n (Array.isArray(includeValueAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeValueAttributes.includes(key as keyof ParsedValueAttributes),\n ),\n )) ||\n {};\n\n return { ...valueAttributes, value: stringValue } as ParsedValue<TOptions>;\n}\n","import { MetadataValueType } from '@vidispine/types';\n\nimport { isStringArray } from '../_utils';\n\nimport {\n defaultOptions as defaultParseValueOptions,\n ParsedValue,\n parseValue,\n ParseValueOptions,\n} from './parseValue';\n\nexport type ParsedValueList<TOptions> = TOptions extends {\n joinValue?: string;\n includeValueAttributes?: false;\n}\n ? string\n : TOptions extends { arrayOnSingleValue?: true }\n ? ParsedValue<TOptions>[]\n : ParsedValue<TOptions> | ParsedValue<TOptions>[];\n\nexport type ParseValueListOptions = {\n // String to join the values, eg ','.\n joinValue?: string;\n // Return values as array even if single value\n arrayOnSingleValue?: boolean;\n} & ParseValueOptions;\n\nexport const defaultOptions = {\n ...defaultParseValueOptions,\n joinValue: undefined as string,\n arrayOnSingleValue: true,\n};\n\n/**\n * @internal\n *\n * @param valueList\n * @param options\n * @returns\n */\nexport function parseValueList<TOptions extends ParseValueListOptions = ParseValueListOptions>(\n valueList: MetadataValueType[],\n options?: TOptions,\n): ParsedValueList<TOptions> {\n const { joinValue, arrayOnSingleValue, ...parseValueOptions } = {\n ...defaultOptions,\n ...(options || {}),\n };\n\n const parsedValueList = valueList?.map((v) => parseValue(v, parseValueOptions));\n\n if (isStringArray(parsedValueList) && joinValue)\n return parsedValueList?.join(joinValue) as ParsedValueList<TOptions>;\n if (arrayOnSingleValue !== true && parsedValueList?.length <= 1)\n return parsedValueList?.[0] as ParsedValueList<TOptions>;\n return parsedValueList as ParsedValueList<TOptions>;\n}\n","import { MetadataFieldValueType } from '@vidispine/types';\n\nimport {\n defaultOptions as defaultParseValueListOptions,\n ParsedValueList,\n parseValueList,\n ParseValueListOptions,\n} from './parseValueList';\n\nexport type ParsedFieldAttributes = Partial<Omit<MetadataFieldValueType, 'value'>>;\n\nexport type ParsedFieldObject<TOptions> = {\n value: ParsedValueList<TOptions>;\n} & ParsedFieldAttributes;\n\nexport type ParsedField<TOptions> = TOptions extends {\n includeFieldAttributes?: false;\n}\n ? ParsedValueList<TOptions>\n : ParsedFieldObject<TOptions>;\n\nexport type ParseFieldOptions = {\n // Include attributes on field\n includeFieldAttributes?: boolean | (keyof ParsedFieldAttributes)[];\n} & ParseValueListOptions;\n\nexport const defaultOptions = {\n includeFieldAttributes: false,\n ...defaultParseValueListOptions,\n};\n\n/**\n * @internal\n *\n * @param field\n * @param options\n * @returns\n */\nexport const parseField = <TOptions extends ParseFieldOptions = ParseFieldOptions>(\n field: MetadataFieldValueType,\n options?: TOptions,\n): ParsedField<TOptions> => {\n const { includeFieldAttributes, ...parseValueListOptions } = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { value, ...attributes } = field;\n const parsedValueList = parseValueList(value, parseValueListOptions);\n\n const fieldAttributes: ParsedFieldAttributes =\n (includeFieldAttributes === true && attributes) ||\n (Array.isArray(includeFieldAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeFieldAttributes.includes(key as keyof ParsedFieldAttributes),\n ),\n )) ||\n {};\n\n return (\n includeFieldAttributes ? { ...fieldAttributes, value: parsedValueList } : parsedValueList\n ) as ParsedField<TOptions>;\n};\n","import { MetadataFieldValueType } from '@vidispine/types';\n\nimport {\n ParsedField,\n ParseFieldOptions,\n defaultOptions as defaultParseFieldOptions,\n parseField,\n} from '../_internal/parseField';\nimport { asArray } from '../_utils';\n\nexport type ParseFieldListOptions = {\n // Return fields as list\n fieldAsList?: boolean;\n // Return fields as array even if only one field\n arrayOnSingleField?: boolean;\n // Return all fields flattened (Note: keys might be overridden)\n overrideField?: boolean;\n} & ParseFieldOptions;\n\nexport const defaultOptions: ParseFieldListOptions = {\n ...defaultParseFieldOptions,\n fieldAsList: false,\n arrayOnSingleField: false,\n overrideField: undefined,\n};\n\nexport type ParsedFieldList<TOptions> = TOptions extends { fieldAsList?: true }\n ? ParsedField<TOptions>[]\n : TOptions extends\n | { arrayOnSingle?: true; arrayOnSingleField?: undefined | true }\n | { arrayOnSingleField?: true }\n ? {\n [name: string]: ParsedField<TOptions>[];\n }\n : TOptions extends { flat?: true; overrideField?: true | undefined } | { overrideField?: true }\n ? {\n [name: string]: ParsedField<TOptions>;\n }\n : {\n [name: string]: ParsedField<TOptions> | ParsedField<TOptions>[];\n };\n\n/**\n * Parse a metadata field list according to selected options\n *\n * @remarks\n * When parsing duplicate fields (same field name in the same field list) it will:\n * - with default options: combine field values to one array within the same field name key\n * - with `joinValue` enabled: join values within each field (returns array with string for each field value)\n * - with `fieldAsList` enabled: separate fields in the list/array (as usual, even if not duplicate)\n * - with `includeFieldAttributes` enabled: return an array of field objects\n * - with `overrideField` enabled: return the latest duplicated field it parses\n *\n * @param fieldList Field list to parse\n * @param [options=defaultOptions] Options for how to parse the field list\n * @returns A parsed field list\n *\n * @category Metadata\n */\nexport const parseFieldList = <TOptions extends ParseFieldListOptions = ParseFieldListOptions>(\n fieldList: MetadataFieldValueType[],\n options?: TOptions,\n): ParsedFieldList<TOptions> => {\n const parseFieldListOptions: ParseFieldListOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n\n const { fieldAsList, arrayOnSingleField, overrideField } = parseFieldListOptions;\n const shouldOverride = overrideField === true && fieldAsList === false;\n\n const output: {\n [name: string]: ParsedField<TOptions> | ParsedField<TOptions>[];\n } = {};\n fieldList?.forEach((field) => {\n const { name } = field;\n const parsedField = parseField<TOptions>(field, parseFieldListOptions as TOptions);\n const parsedFieldOutput = arrayOnSingleField === true ? asArray(parsedField) : parsedField;\n const existingParsedFields = output[name];\n if (!existingParsedFields) output[name] = parsedFieldOutput;\n else if (shouldOverride) output[name] = parsedField;\n else output[name] = [asArray(existingParsedFields), asArray(parsedField)].flat();\n });\n\n return (\n fieldAsList === true ? Object.values(output).flat() : output\n ) as ParsedFieldList<TOptions>;\n};\n","import { MetadataGroupValueType } from '@vidispine/types';\n\nimport { asArray } from '../_utils';\nimport {\n ParsedFieldList,\n defaultOptions as defaultParseFieldListOptions,\n parseFieldList,\n ParseFieldListOptions,\n} from '../parseFieldList/parseFieldList';\n\nexport type ParsedGroupAttributes = Omit<MetadataGroupValueType, 'field' | 'group'>;\n\n/*\n * _groupAsList_:\n * Return child groups as list (in array)\n *\n * __includeGroupAttributes__:\n * Include attributes on group\n * (Set `true` or \"array of attribute keys\" to include specific attributes)\n *\n * __arrayOnSingleGroup__:\n * Return single group in array\n *\n * @defaultValue `{ groupAsList: false, includeGroupAttributes: false, arrayOnSingleGroup: true, overrideGroup: undefined }`\n */\nexport type ParseGroupOptions = {\n includeGroupAttributes?: boolean | (keyof ParsedGroupAttributes)[];\n groupAsList?: boolean;\n arrayOnSingleGroup?: boolean;\n overrideGroup?: boolean;\n} & ParseFieldListOptions;\n\nconst defaultParseGroupOptions: ParseGroupOptions = {\n ...defaultParseFieldListOptions,\n includeGroupAttributes: false,\n groupAsList: false,\n arrayOnSingleGroup: false,\n overrideGroup: undefined,\n};\n\nexport type ParsedGroup<TOptions> = ((TOptions extends { groupAsList?: true }\n ? { group?: ParsedGroupList<TOptions> }\n : { [name: string]: ParsedGroupList<TOptions> }) &\n (TOptions extends { fieldAsList?: true }\n ? { field?: ParsedFieldList<TOptions> }\n : { [name: string]: ParsedFieldList<TOptions> })) &\n ParsedGroupAttributes;\n\n/**\n * @internal\n *\n * (Kept here due to circular dependency otherwise)\n *\n * @param group\n * @param options\n * @returns\n */\nconst parseGroup = <TOptions extends ParseGroupOptions = ParseGroupOptions>(\n group: MetadataGroupValueType,\n options?: TOptions,\n): ParsedGroup<TOptions> => {\n const parseGroupOptions = {\n ...defaultParseGroupOptions,\n ...(options || {}),\n };\n const { includeGroupAttributes } = parseGroupOptions;\n\n const parseFieldListOptions: ParseFieldListOptions = Object.fromEntries(\n Object.entries(parseGroupOptions).filter(([key]) =>\n Object.keys(defaultParseFieldListOptions).includes(key),\n ),\n );\n\n const { field: fieldList, group: groupList, ...attributes } = group;\n const parsedFieldList = fieldList && parseFieldList(fieldList, parseFieldListOptions);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const parsedGroupList = groupList && parseGroupList(groupList, parseGroupOptions);\n\n const groupAttributes: ParsedGroupAttributes =\n (includeGroupAttributes === true && attributes) ||\n (Array.isArray(includeGroupAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeGroupAttributes.includes(key as keyof ParsedGroupAttributes),\n ),\n )) ||\n {};\n\n return {\n ...groupAttributes,\n ...(parseFieldListOptions?.fieldAsList\n ? (parsedFieldList && { field: parsedFieldList }) || {}\n : parsedFieldList),\n ...(parseGroupOptions?.groupAsList\n ? (parsedGroupList && { group: parsedGroupList }) || {}\n : parsedGroupList),\n } as ParsedGroup<TOptions>;\n};\n\nexport type ParseGroupListOptions = ParseGroupOptions;\n\nexport type ParsedGroupList<TOptions> = TOptions extends { groupAsList?: true }\n ? ParsedGroup<TOptions>[]\n : TOptions extends\n | { arrayOnSingle?: true; arrayOnSingleGroup?: true | undefined }\n | { arrayOnSingleGroup?: true }\n ? {\n [groupName: string]: ParsedGroup<TOptions>[];\n }\n : TOptions extends { flat?: true; overrideGroup?: true | undefined } | { overrideGroup?: true }\n ? {\n [groupName: string]: ParsedGroup<TOptions>;\n }\n : {\n [groupName: string]: ParsedGroup<TOptions> | ParsedGroup<TOptions>[];\n };\n\nexport const defaultOptions: ParseGroupListOptions = defaultParseGroupOptions;\n\n/**\n * Parse a metadata group list according to selected options\n *\n * @remarks\n * Parsing duplicate groups (same group name in the same group list) it will:\n * - with default options: combine group objects to one array within the same group name key\n * - with `groupAsList` enabled: return separate group objects in a list/array (as usual, even if not duplicate)\n * - with `overrideGroup` enabled: return the latest duplicated group it parses\n *\n * @param groupList Group list to parse\n * @param options options for how to parse list\n * @returns A parsed group list\n *\n * @category Metadata\n */\nexport const parseGroupList = <TOptions extends ParseGroupOptions = ParseGroupOptions>(\n groupList: MetadataGroupValueType[],\n options?: TOptions,\n): ParsedGroupList<TOptions> => {\n const parseGroupOptions: ParseGroupListOptions = { ...defaultOptions, ...(options || {}) };\n\n const { groupAsList, arrayOnSingleGroup, overrideGroup } = parseGroupOptions;\n\n const shouldOverride = overrideGroup === true && groupAsList === false;\n\n const output: {\n [groupName: string]: ParsedGroup<TOptions> | ParsedGroup<TOptions>[];\n } = {};\n groupList?.forEach((group) => {\n const { name } = group;\n const parsedGroup = parseGroup<TOptions>(group, parseGroupOptions as TOptions);\n const parsedGroupOutput =\n arrayOnSingleGroup === true ? asArray<ParsedGroup<TOptions>>(parsedGroup) : parsedGroup;\n const existingParsedGroups = output[name];\n if (!existingParsedGroups) output[name] = parsedGroupOutput;\n else if (shouldOverride) output[name] = parsedGroup;\n else\n output[name] = [\n asArray(existingParsedGroups),\n asArray<ParsedGroup<TOptions>>(parsedGroup),\n ].flat();\n });\n\n if (groupAsList) {\n return Object.values(output).flat() as ParsedGroupList<TOptions>;\n }\n\n return output as ParsedGroupList<TOptions>;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport {\n ParsedFieldList,\n parseFieldList,\n ParseFieldListOptions,\n defaultOptions as defaultParseFieldListOptions,\n} from '../parseFieldList/parseFieldList';\nimport {\n ParsedGroupList,\n parseGroupList,\n ParseGroupListOptions,\n defaultOptions as defaultParseGroupListOptions,\n} from '../parseGroupList/parseGroupList';\n\nexport type ParsedTimespanAttributes = Omit<MetadataType['timespan'][number], 'field' | 'group'>;\n\n/**\n * __includeTimespanAttributes__:\n * Include attributes on timespan\n * (Set `true` or \"array of attribute keys\" to include specific attributes)\n *\n * __arrayOnSingle__:\n * Return groups, fields and values as array if single\n *\n * __flat__:\n * Return a flat (no array) representation of the timespan (Note: fields/groups might be overridden)\n *\n * @defaultValue `{ includeTimespanAttributes: false, arrayOnSingle: true, flat: false }`\n */\nexport type ParseTimespanOptions = {\n includeTimespanAttributes?: boolean | (keyof ParsedTimespanAttributes)[];\n arrayOnSingle?: boolean;\n flat?: boolean;\n} & ParseGroupListOptions;\n\nexport type ParsedTimespan<TOptions> = ((TOptions extends { groupAsList?: true }\n ? { group?: ParsedGroupList<TOptions> }\n : { [name: string]: ParsedGroupList<TOptions> }) &\n (TOptions extends { fieldAsList?: true }\n ? { field?: ParsedFieldList<TOptions> }\n : { [name: string]: ParsedFieldList<TOptions> })) &\n ParsedTimespanAttributes;\n\nexport const defaultOptions: ParseTimespanOptions = {\n ...defaultParseGroupListOptions,\n includeTimespanAttributes: false,\n flat: false,\n arrayOnSingle: false,\n arrayOnSingleValue: true,\n arrayOnSingleGroup: undefined,\n arrayOnSingleField: undefined,\n};\n\n/**\n *\n * Parses timespan according to specified options\n *\n * @remarks\n * To ensure a flat (no array) representation when using `flat: true`, the parser will also set `overrideGroup` and `overrideField` to true (unless those are explicitly set false)\n *\n * @param timespan - A VidiCore metadata timespan\n * @param options - Options to change how it is parsed\n * @returns Timespan parsed according to options\n *\n * @see {@link parseGroupList} and {@link parseFieldList} for more info\n *\n * @category Metadata\n */\nexport const parseTimespan = <TOptions extends ParseTimespanOptions = ParseTimespanOptions>(\n timespan: MetadataType['timespan'][number],\n options?: TOptions,\n): ParsedTimespan<TOptions> => {\n const parseTimespanOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { includeTimespanAttributes, arrayOnSingle, flat } = parseTimespanOptions;\n const parseGroupListOptions: ParseGroupListOptions = Object.fromEntries(\n Object.entries(options)\n .map(([key, value]) => {\n if (Object.keys(defaultParseGroupListOptions).includes(key)) {\n if (\n ['arrayOnSingleGroup', 'arrayOnSingleField', 'arrayOnSingleValue'].includes(key) &&\n (value !== undefined ? value : arrayOnSingle === true)\n ) {\n return [key, true];\n }\n if (\n ['overrideGroup', 'overrideField'].includes(key) &&\n (value !== undefined ? value : flat === true)\n ) {\n return [key, true];\n }\n return [key, value];\n }\n return undefined;\n })\n .filter((e) => !!e),\n );\n const parseFieldListOptions: ParseFieldListOptions = Object.fromEntries(\n Object.entries(options)\n .map(([key, value]) => {\n if (Object.keys(defaultParseFieldListOptions).includes(key)) {\n if (\n ['arrayOnSingleField', 'arrayOnSingleValue'].includes(key) &&\n (value !== undefined ? value : arrayOnSingle === true)\n ) {\n return [key, true];\n }\n if (['overrideField'].includes(key) && (value !== undefined ? value : flat === true)) {\n return [key, true];\n }\n return [key, value];\n }\n return undefined;\n })\n .filter((e) => !!e),\n );\n\n const { field: fieldList, group: groupList, ...attributes } = timespan || {};\n const parsedFieldList = fieldList && parseFieldList(fieldList, parseFieldListOptions);\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n const parsedGroupList = groupList && parseGroupList(groupList, parseGroupListOptions);\n\n const timespanAttributes: ParsedTimespanAttributes =\n (includeTimespanAttributes === true && attributes) ||\n (Array.isArray(includeTimespanAttributes) &&\n Object.fromEntries(\n Object.entries(attributes).filter(([key]) =>\n includeTimespanAttributes.includes(key as keyof ParsedTimespanAttributes),\n ),\n )) ||\n {};\n\n return {\n ...timespanAttributes,\n ...(parseFieldListOptions?.fieldAsList ? { field: parsedFieldList } : parsedFieldList),\n ...(parseGroupListOptions?.groupAsList ? { group: parsedGroupList } : parsedGroupList),\n } as ParsedTimespan<TOptions>;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport { asArray, asSingle, sortTimespanList } from '../_utils';\nimport { parseTimespan } from '../parseTimespan';\nimport {\n ParsedTimespan,\n ParseTimespanOptions,\n defaultOptions as defaultParseTimespanOptions,\n} from '../parseTimespan/parseTimespan';\n\nexport type ParsedTimespanList<TOptions> = TOptions extends { timespanAsList?: true }\n ? ParsedTimespan<TOptions>[]\n : TOptions extends { flat?: true; onlyGeneric?: true | undefined } | { onlyGeneric?: true }\n ? ParsedTimespan<TOptions>\n : {\n [timespanKey: string]: ParsedTimespan<TOptions>[];\n };\n\nexport type ParseTimespanListOptions = {\n // Return timespans as list\n timespanAsList?: boolean;\n // String to join timespans with (defaults to '_')\n joinTimespan?: string;\n // Sort timespanList by ascending start then end time\n sortTimespan?: boolean;\n // Return a flat representation - only one timespan with groups/fields named the same as single - of the timespan list (Note: timespans/fields/groups can be overridden)\n flat?: boolean;\n // Flatten timespans to one object with generic timespan having highest priority (Note: fields/groups might be overridden)\n flatTimespan?: boolean;\n} & ParseTimespanOptions;\n\nexport const defaultOptions: ParseTimespanListOptions = {\n ...defaultParseTimespanOptions,\n timespanAsList: false,\n joinTimespan: '_',\n sortTimespan: false,\n flat: false,\n flatTimespan: undefined,\n};\n/**\n * Parses timespanList according to specified options.\n * The attributes can be targeted for each sub-type.\n *\n * @param timespanList - A Vidicore metadata timespan list\n * @param options - Options which change how the metadataType is parsed.\n * @returns Timespan list parsed according to options\n *\n * @see {@link parseTimespan} for more info\n *\n * @category Metadata\n */\nexport const parseTimespanList = <\n TOptions extends ParseTimespanListOptions = ParseTimespanListOptions,\n>(\n timespanList: MetadataType['timespan'],\n options?: TOptions,\n): ParsedTimespanList<TOptions> => {\n const parseTimespanListOptions: ParseTimespanListOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { timespanAsList, joinTimespan, sortTimespan, flat, flatTimespan, ...otherOptions } =\n parseTimespanListOptions;\n\n const parseTimespanOptions = { flat, ...otherOptions };\n\n if (sortTimespan) timespanList.sort(sortTimespanList);\n\n const shouldFlatten =\n (flatTimespan !== undefined ? flatTimespan === true : flat === true) &&\n timespanAsList === false;\n\n const output: {\n [name: string]: ParsedTimespan<TOptions> | ParsedTimespan<TOptions>[];\n } = {};\n timespanList?.forEach((timespan) => {\n const { start, end } = timespan;\n const key = shouldFlatten ? 'flat' : [start, end].join(joinTimespan);\n const parsedTimespan = parseTimespan<TOptions>(timespan, parseTimespanOptions as TOptions);\n const existingParsedTimespans = output[key];\n if (!existingParsedTimespans) output[key] = parsedTimespan;\n else if (shouldFlatten) {\n if (start === '-INF' && end === '+INF') {\n output[key] = { ...asSingle(existingParsedTimespans), ...parsedTimespan };\n } else {\n output[key] = { ...parsedTimespan, ...asSingle(existingParsedTimespans) };\n }\n } else output[key] = [...asArray(existingParsedTimespans), parsedTimespan];\n });\n\n if (timespanAsList === true) {\n return Object.values(output) as ParsedTimespanList<TOptions>;\n }\n\n if (shouldFlatten) {\n return Object.values(output).pop() as ParsedTimespanList<TOptions>;\n }\n\n return output as ParsedTimespanList<TOptions>;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport { parseTimespanList } from '../parseTimespanList';\nimport {\n ParsedTimespanList,\n ParseTimespanListOptions,\n defaultOptions as defaultParseTimespanListOptions,\n} from '../parseTimespanList/parseTimespanList';\n\nexport type ParsedMetadataAttributes = Partial<\n Omit<MetadataType, 'timespan' | 'revision'> & {\n revision?: string[];\n }\n>;\n\nexport type ParsedMetadataType<TOptions> = (TOptions extends { timespanAsList?: true }\n ? {\n timespan: ParsedTimespanList<TOptions>;\n }\n : TOptions extends { flat?: true }\n ? ParsedTimespanList<TOptions>\n : {\n [timespanKey: string]: ParsedTimespanList<TOptions>;\n }) &\n (TOptions extends { includeMetadataAttributes?: true | string[] }\n ? ParsedMetadataAttributes\n : {});\n\nexport type ParseMetadataTypeOptions = {\n // Include metadata attributes\n includeMetadataAttributes?: boolean | (keyof ParsedMetadataAttributes)[];\n flat?: boolean;\n} & ParseTimespanListOptions;\n\nexport const defaultOptions: ParseMetadataTypeOptions = {\n ...defaultParseTimespanListOptions,\n includeMetadataAttributes: false,\n flat: false,\n};\n\n/**\n * Parses MetadataType according to specified options\n *\n * @remarks\n * Be aware that you need to take into account that the returned groups and fields can be an array if it has multiple values or groups/fields with same name.\n * If you are certain your metadata type won't return multiple groups/fields/values with same name or don't mind that they _might_ be overridden:\n * you can use the option `flat` along with `joinValue` or `arrayOnSingleValue: false`.\n *\n * @param metadataType - A MetadataType from VidiCore\n * @param options - Options which change how the metadataType is parsed\n * @returns Metadata object parsed according to options\n *\n * @see {@link parseTimespanList} for more info\n *\n * @category Metadata\n */\nfunction parseMetadataType<TOptions extends ParseMetadataTypeOptions = ParseMetadataTypeOptions>(\n metadataType: MetadataType,\n options?: TOptions,\n): ParsedMetadataType<TOptions> {\n const parseMetadataTypeOptions: ParseMetadataTypeOptions = {\n ...defaultOptions,\n ...(options || {}),\n };\n const { includeMetadataAttributes, flat } = parseMetadataTypeOptions;\n const { timespan: timespanList = [], ...attributes } = metadataType || {};\n\n const parseTimespanListOptions: ParseTimespanListOptions = Object.fromEntries(\n Object.entries(options)\n .map(([key, value]) => {\n if (Object.keys(defaultParseTimespanListOptions).includes(key)) {\n if (\n ['onlyGeneric', 'overrideGroup', 'overrideField'].includes(key) &&\n (value !== undefined ? value : flat === true)\n ) {\n return [key, true];\n }\n return [key, value];\n }\n return undefined;\n })\n .filter((e) => !!e),\n );\n\n const parsedTimespanList = parseTimespanList<TOptions>(\n timespanList,\n parseTimespanListOptions as TOptions,\n );\n\n const metadataAttributes: ParsedMetadataAttributes =\n (includeMetadataAttributes === true && {\n ...attributes,\n ...(attributes.revision ? { revision: attributes.revision.split(',') } : {}),\n }) ||\n (Array.isArray(includeMetadataAttributes) &&\n Object.fromEntries(\n Object.entries(attributes)\n .map(([key, value]) => {\n if (includeMetadataAttributes.includes(key as keyof ParsedMetadataAttributes)) {\n return [\n key,\n key === 'revision' && typeof value === 'string' ? value.split(',') : value,\n ];\n }\n return undefined;\n })\n .filter((o) => !!o),\n )) ||\n {};\n\n return {\n ...metadataAttributes,\n ...(parseTimespanListOptions?.timespanAsList\n ? { timespan: parsedTimespanList }\n : parsedTimespanList),\n } as ParsedMetadataType<TOptions>;\n}\n\nexport { parseMetadataType };\n","import { SimpleMetadataType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\n\n/**\n * Parse simple (key/value) metadata\n *\n * Not indexed metadata, available on almost all entities (storages, library, user, group, etc...)\n *\n * @param simpleMetadataType A VidiCore simple metadata object\n * @returns A parsed simple metadata object\n *\n * @category Metadata\n */\nexport const parseSimpleMetadataType = (\n simpleMetadataType: SimpleMetadataType,\n): {\n [key: string]: string;\n} => {\n const { field = [] } = simpleMetadataType || {};\n return parseKeyValuePairTypes(field);\n};\n","export type ConstantTimeBaseKey =\n | 'PAL'\n | 'NTSC'\n | 'NTSC30'\n | '29.97'\n | '59.94'\n | '23.976'\n | '23.98';\n\nexport const MAP_CONSTANT_TO_DEN_NUM: {\n [name in ConstantTimeBaseKey]: { denominator: number; numerator: number };\n} = {\n PAL: { denominator: 25, numerator: 1 },\n NTSC: { denominator: 30000, numerator: 1001 },\n NTSC30: { denominator: 30, numerator: 1 },\n 29.97: { denominator: 30000, numerator: 1001 },\n 59.94: { denominator: 60000, numerator: 1001 },\n 23.976: { denominator: 48000, numerator: 2002 },\n 23.98: { denominator: 48000, numerator: 2002 },\n};\n\nexport const TIME_BASE_CONSTANTS = Object.keys(MAP_CONSTANT_TO_DEN_NUM) as ConstantTimeBaseKey[];\n","import { TimeBaseType } from '@vidispine/types';\n\nimport { MAP_CONSTANT_TO_DEN_NUM } from '../_consts';\n\nexport type TimeBaseInput = {\n // The numerator for the TimeBase\n numerator?: number | string;\n\n // The denominator for the TimeBase\n denominator?: number | string;\n};\n\n/**\n * TimeBase class representing the TimeBaseType in VidiCore\n *\n * For more info, see the [Time bases section in VidiCore API Docs](https://apidoc.vidispine.com/latest/time.html#time-bases)\n *\n * @category Time\n */\nexport class TimeBase {\n // The numerator for the TimeBase\n numerator: number = 1;\n\n // The denominator for the TimeBase\n denominator: number = 1;\n\n /**\n * Constructor for TimeBase\n *\n * @param timeBaseType A TimeBaseType object\n */\n constructor(timeBaseType?: TimeBaseInput) {\n const { numerator = 1, denominator = 1 } = timeBaseType || {};\n this.numerator = Number(numerator);\n this.denominator = Number(denominator);\n }\n\n /**\n * Get TimeBase in a constant representation (e.g. \"PAL\") if possible, otherwise undefined\n * @returns Constant representation of the TimeBase\n */\n toConstant(): string {\n let constant: string;\n // If multiple equal den/num, it selects first in MAP_CONSTANT_TO_DEN_NUM\n Object.entries(MAP_CONSTANT_TO_DEN_NUM).find((timeBaseConstant) => {\n const [thisTimeBaseText, thisTimeBaseType] = timeBaseConstant;\n const { numerator, denominator } = thisTimeBaseType;\n if (numerator === this.numerator && denominator === this.denominator) {\n constant = thisTimeBaseText;\n return true;\n }\n return false;\n });\n return constant;\n }\n\n /**\n * Get TimeBase as a VidiCore TimeBaseType string\n *\n * @remarks\n * Default format: denominator(:numerator if > 1)\n * `constant` has precedence over `fraction` if both are true (e.g. NTSC > 30000:1001)\n *\n * @param options For how to display it as text\n * @returns Text representation of the TimeBase\n */\n toText(options?: {\n // Show time base as constant (e.g. PAL)\n constant?: boolean;\n // Show time base as fraction (25:1) even when numerator is 1\n fraction?: boolean;\n }): string {\n if (options?.constant) {\n const timeBaseText = this.toConstant();\n if (timeBaseText) return timeBaseText;\n }\n if (options?.fraction || this.numerator > 1) {\n const timeBaseText = [this.denominator, this.numerator].join(':');\n return timeBaseText;\n }\n const timeBaseText = String(this.denominator);\n return timeBaseText;\n }\n\n /**\n * Output TimeBase as frame rate (by default max 16 decimal places)\n *\n * @remarks\n * For `options.fixed`:\n * - `true` gives two decimal places\n * - `false` gives max amount of decimal places\n * - `number` gives that amount of decimal places\n *\n * Default format: rate with two decimals if needed (i.e. decimals are > 0)\n * Option precedence (when all true): `constant` > `rounded` > `fixed`\n *\n * @param options For how to display it as rate\n *\n * @return Rate of the TimeBase\n *\n * @category Time\n */\n toRate(options?: {\n // Amount of decimal places (true gives 2 decimal places)\n fixed?: boolean | number;\n // Rounded to nearest integer\n rounded?: boolean;\n }) {\n const rate = this.denominator / this.numerator;\n if (Number.isInteger(rate)) {\n return rate;\n }\n if (options?.rounded) {\n return Math.round(rate);\n }\n const { fixed = true } = options || {};\n if (fixed === true || typeof fixed === 'number') {\n return Number(rate.toFixed(typeof fixed === 'boolean' ? 2 : fixed));\n }\n\n return rate;\n }\n\n /**\n * Get TimeBase in a object representation\n *\n * @returns TimeBase as `{denominator, numerator}` object\n */\n toObject(): TimeBaseType {\n return {\n denominator: this.denominator,\n numerator: this.numerator,\n };\n }\n\n /**\n * @deprecated Use {@link TimeBase#toObject | toObject} instead\n *\n * @returns TimeBase as `{denominator, numerator}` object\n */\n toJson(): TimeBaseType {\n // eslint-disable-next-line no-console\n console.warn('Deprecated - use toObject instead');\n return this.toObject();\n }\n}\n","import { ConstantTimeBaseKey, MAP_CONSTANT_TO_DEN_NUM, TIME_BASE_CONSTANTS } from '../_consts';\nimport { TimeBase } from '../TimeBase';\n\n/**\n * Format a string representation of a time base to a TimeBase Instance\n *\n * @param timeBaseText The string to format to a TimeBase instance\n * @returns A TimeBase Instance\n *\n * @category Time\n */\nexport const formatTimeBaseText = (timeBaseText?: string | number) => {\n if (timeBaseText === undefined) {\n return new TimeBase();\n }\n if (typeof timeBaseText === 'number') {\n return new TimeBase({ denominator: timeBaseText });\n }\n if (typeof timeBaseText === 'string' && timeBaseText.includes(':')) {\n const [denominator, numerator] = timeBaseText.split(':');\n return new TimeBase({ denominator, numerator });\n }\n if (TIME_BASE_CONSTANTS.includes(timeBaseText as ConstantTimeBaseKey)) {\n return new TimeBase(MAP_CONSTANT_TO_DEN_NUM[timeBaseText as ConstantTimeBaseKey]);\n }\n if (!['string', 'number'].includes(typeof timeBaseText) || Number.isNaN(Number(timeBaseText))) {\n throw new Error(\n `timeBaseText must be a number or ${TIME_BASE_CONSTANTS.join(',')} - is ${JSON.stringify(\n timeBaseText,\n )}`,\n );\n }\n return new TimeBase({ denominator: Number(timeBaseText) });\n};\n","import { TimeBase } from '../TimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\n\n/**\n * Create a TimeBase instance of an object\n *\n * @param timeBase A TimeBase object\n * @returns A TimeBase instance\n *\n * @category Time\n */\nexport const formatTimeBaseType = (timeBase: TimeBaseInput) => new TimeBase(timeBase);\n","import { formatTimeBaseText } from '../formatTimeBaseText';\nimport { formatTimeBaseType } from '../formatTimeBaseType';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\n\n/**\n * Create a TimeBase Instance from a number, string or object representation of a time base\n *\n * @param timeBase Input to create time base from\n * @returns A TimeBase instance\n *\n * @category Time\n */\nexport const createTimeBase = (timeBase: TimeBaseInput | string | number) => {\n if (typeof timeBase === 'string' || typeof timeBase === 'number') {\n return formatTimeBaseText(timeBase);\n }\n return formatTimeBaseType(timeBase);\n};\n","import { TimeBase } from '../TimeBase';\n\n/**\n * @private\n *\n * Drops 4 frames (0-3) for 59.97 and 2 frames (0-1) for 29.97/NTSC\n *\n * @param timeBase Time base to get amount of frames to drop for\n * @returns Amount of frame drops for specified time base, false if no frame drops\n */\nexport const getAmountOfFrameDrops = (timeBase: TimeBase): number | false => {\n const timeBaseConstant = timeBase.toConstant();\n return (\n (timeBaseConstant === '59.94' && 4) ||\n (['NTSC', '29.97'].includes(timeBaseConstant) && 2) ||\n false\n );\n};\n","import { TimeBase } from '../TimeBase';\n\nimport { getAmountOfFrameDrops } from './getAmountOfFrameDrops';\n\n/**\n * @private\n *\n * Check if TimeBase drops frames\n *\n * @param timeBase TimeBase Instance to check\n * @returns true if time base drops frames, false otherwise\n */\nexport const isDropFrameTimeBase = (timeBase: TimeBase) => getAmountOfFrameDrops(timeBase) > 0;\n","import { getAmountOfFrameDrops } from '../_utils/getAmountOfFrameDrops';\nimport { isDropFrameTimeBase } from '../_utils/isDropFrameTimeBase';\nimport { createTimeBase } from '../createTimeBase';\nimport { TimeBase } from '../TimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\n\nconst getDroppedFramesFromSamples = (timeCode: TimeCode) => {\n const { samples, timeBase } = timeCode;\n const amountOfFrameDrops = getAmountOfFrameDrops(timeBase);\n if (!amountOfFrameDrops) return 0;\n\n const roundedFrameRate = timeBase.toRate({ rounded: true });\n const oneMinuteNotDroppedFrames = 60 * roundedFrameRate;\n const amountOfFramesToDropPerMinute = 60 * roundedFrameRate - amountOfFrameDrops;\n const tenMinuteFrames =\n 10 * (oneMinuteNotDroppedFrames - amountOfFrameDrops) + amountOfFrameDrops;\n const amountOfTenMinuteChunks = Math.floor((samples + 1) / tenMinuteFrames);\n const minuteRemainder = Math.max(\n 0,\n ((samples + 1) % tenMinuteFrames) - oneMinuteNotDroppedFrames,\n );\n const amountOfOneMinuteReminderChunks = Math.floor(\n minuteRemainder / amountOfFramesToDropPerMinute,\n );\n const frameRemainder = minuteRemainder % amountOfFramesToDropPerMinute;\n const amountOfFrameRemainderChunks = frameRemainder > 0 ? amountOfFrameDrops : 0;\n\n return (\n amountOfTenMinuteChunks * 9 * amountOfFrameDrops +\n amountOfOneMinuteReminderChunks * amountOfFrameDrops +\n amountOfFrameRemainderChunks\n );\n};\n\nexport type TimeCodeInput = {\n // Amount of samples for the time code\n samples?: number | string;\n // The time base it should have\n timeBase?: string | TimeBaseInput | TimeBase;\n};\n\nexport type TimeCodeInputOptions = {\n // If time code should be dropFrame or not (by default checks timeBase)\n dropFrame?: boolean;\n // Separator to use for frame smpte output (default \":\" for non-drop-frame and \";\" for dropFrame)\n frameSeparator?: string;\n};\n\n/**\n * TimeCode class representing the TimeCodeType in VidiCore\n *\n * For more info, see the [Time Codes section of VidiCore API Docs](https://apidoc.vidispine.com/latest/time.html#time-codes)\n *\n * @category Time\n */\nexport class TimeCode {\n // Amount of samples for the time code\n samples: number = 0;\n\n // The time base for the time code\n timeBase: TimeBase = new TimeBase();\n\n // If time code is dropFrame or not (by default checks timeBase)\n dropFrame?: boolean;\n\n // Separator for frame in smpte output (default \":\" for non-drop-frame and \";\" for dropFrame)\n frameSeparator?: string;\n\n /**\n * Constructor for TimeCode\n *\n * @param timeCodeType Object to create TimeCode of\n * @param options Options for the timeCode\n */\n constructor(timeCodeType: TimeCodeInput, options?: TimeCodeInputOptions) {\n const { samples, timeBase } = timeCodeType || {};\n\n if (samples !== undefined) {\n if (typeof samples === 'number') {\n this.samples = samples;\n } else if (typeof samples === 'string') {\n if (samples === '-INF') {\n this.samples = -Infinity;\n } else if (samples === '+INF') {\n this.samples = Infinity;\n } else {\n this.samples = Number(samples);\n }\n } else {\n throw new Error(`samples is not number/string/-Inf/+Inf is: ${samples}`);\n }\n }\n if (timeBase !== undefined) {\n if (timeBase instanceof TimeBase) {\n this.timeBase = timeBase;\n } else {\n this.timeBase = createTimeBase(timeBase);\n }\n }\n this.dropFrame = options?.dropFrame ?? isDropFrameTimeBase(this.timeBase);\n this.frameSeparator = options?.frameSeparator ?? (this.dropFrame ? ';' : ':');\n }\n\n /**\n * Return this TimeCode added with the supplied timeCodeType\n * If time bases differ, it will retain the time base of this TimeCode instance\n * If supplied time code has a more granular time base - it will round down exceeding samples (hasn't reached that sample yet)\n *\n * Note: This might make you \"lose\" frames depending on granularity of time bases, e.g.\n * \"51@50\".add(\"25@25\") => \"101@50\"\n * while \"25@25\".add(\"51@50\") => \"50@25\" (not \"101@50\")\n *\n * @param timeCode A TimeCode instance you want to add with\n * @returns A new TimeCode instance with the addition applied\n */\n add(timeCode: TimeCode) {\n if (!timeCode?.timeBase || timeCode?.samples === undefined) {\n throw Error('Invalid timeCodeType, cannot be added');\n }\n const { numerator, denominator } = timeCode?.timeBase || {};\n\n let conformedTimeCode = timeCode;\n if (numerator !== this.timeBase.numerator || denominator !== this.timeBase.denominator) {\n conformedTimeCode = timeCode.conformTimeBase(this.timeBase);\n }\n const { samples } = conformedTimeCode;\n return new TimeCode({ samples: this.samples + samples, timeBase: this.timeBase });\n }\n\n /**\n * Return this TimeCode subtracted with the supplied timeCodeType\n * If time bases differ, it will retain the time base of the instance time code\n * If supplied time code has a more granular time base - it will round down exceeding samples (hasn't reached that sample yet)\n *\n * Note: This might make you \"lose\" frames depending on granularity of time bases, e.g.\n * \"101@50\".subtract(\"25@25\") => \"51@50\"\n * while \"50@25\".subtract(\"51@50\") => \"25@25\" (not \"49@50\")\n *\n * @param timeCode A TimeCode instance you want to subtract with\n * @returns A new TimeCode instance with the subtraction applied\n */\n subtract(timeCode: TimeCode) {\n if (!timeCode?.timeBase || timeCode?.samples === undefined) {\n throw Error('Invalid timeCodeType, cannot be subtracted');\n }\n const { timeBase: { numerator, denominator } = {} } = timeCode;\n let conformedTimeCode = timeCode;\n if (numerator !== this.timeBase.numerator || denominator !== this.timeBase.denominator) {\n conformedTimeCode = timeCode.conformTimeBase(this.timeBase);\n }\n const { samples } = conformedTimeCode;\n return new TimeCode({ samples: this.samples - samples, timeBase: this.timeBase });\n }\n\n /**\n * Creates a new TimeCode instance with specified timeBase and samples adjusted to that.\n *\n * If it conforms to a less granular time base - it will floor samples (hasn't reached that sample yet)\n * - e.g. \"51@50\".conformTo(\"PAL\") => \"25@PAL\" (not \"26@PAL\")\n *\n * @param timeBase The TimeBase it should conform the TimeCode to\n * @returns A new TimeCode instance with the conformTo timeBase applied\n */\n conformTimeBase(timeBase: TimeCodeInput['timeBase']) {\n const conformToTimeBase = timeBase instanceof TimeBase ? timeBase : createTimeBase(timeBase);\n\n const samples = Math.floor(\n this.samples /\n (this.timeBase.toRate({ fixed: false }) / conformToTimeBase.toRate({ fixed: false })),\n );\n const timeCode = { samples, timeBase: conformToTimeBase };\n return new TimeCode(timeCode);\n }\n\n /**\n * Get TimeCode as a text representation\n *\n * @remarks\n * Default format: samples@denominator(:numerator if > 1)\n * `constant` has precedence over `fraction` if both are true\n *\n * @param options Options for how to format text\n * @returns Text representation of TimeCode\n *\n * @category Time\n */\n toText(options?: {\n // Include time base even if seconds\n includeTimeBaseForSeconds?: boolean;\n // show as constant (e.g. @PAL)\n constant?: boolean;\n // show as fraction (@25:1)\n fraction?: boolean;\n }) {\n let timeCodeText = `${this.samples}`;\n const timeBaseText = this.timeBase.toText(options);\n if (options?.includeTimeBaseForSeconds || !['1', '1:1'].includes(timeBaseText)) {\n timeCodeText = [this.samples, timeBaseText].join('@');\n }\n return timeCodeText;\n }\n\n /**\n * Get TimeCode in a units object representation\n *\n * @returns Units (time and frames) for the time code\n */\n toUnits(): {\n hours: number;\n minutes: number;\n seconds: number;\n frames: number;\n } {\n const totalSamples = this.samples + (this.dropFrame ? getDroppedFramesFromSamples(this) : 0);\n let roundedFrameRate = this.timeBase.toRate({ rounded: true });\n\n // Calculated without drop-frame but with 2 decimal places\n if (['23.976', '23.98'].includes(this.timeBase.toConstant())) {\n roundedFrameRate = this.timeBase.toRate({ fixed: true });\n }\n\n const hours = Math.floor(totalSamples / (3600 * roundedFrameRate));\n const minutes = Math.floor(totalSamples / (60 * roundedFrameRate)) % 60;\n const seconds = Math.floor(totalSamples / roundedFrameRate) % 60;\n const frames = Math.floor(totalSamples % roundedFrameRate);\n return {\n hours,\n minutes,\n seconds,\n frames,\n };\n }\n\n /**\n * Get TimeCode in a time object representation\n * \"milliseconds\" is rounded down, if you want another representation use \"partialSeconds\"\n *\n * @returns Time for the time code\n */\n toTime(): {\n hours: number;\n minutes: number;\n seconds: number;\n milliseconds: number;\n partialSeconds: number;\n } {\n const totalSamples = this.samples + getDroppedFramesFromSamples(this);\n const { hours, minutes, seconds } = this.toUnits();\n const roundedFrameRate = this.timeBase.toRate({ rounded: true }) as number;\n const framesPrecise = totalSamples % roundedFrameRate;\n const milliseconds = Math.floor((1000 * framesPrecise) / roundedFrameRate);\n const partialSeconds = framesPrecise / roundedFrameRate;\n return {\n hours,\n minutes,\n seconds,\n milliseconds,\n partialSeconds,\n };\n }\n\n /**\n * Get TimeCode in a seconds representation\n *\n * @returns Total seconds for the time code\n */\n toSeconds() {\n const { numerator, denominator } = this.timeBase;\n return Math.round(1000 * +((this.samples * numerator) / denominator)) / 1000;\n }\n\n /**\n * Get TimeCode in a duration representation\n * The time unit char keys for the format string are:\n * - \"h\" for hour\n * - \"m\" for minute\n * - \"s\" for seconds\n * - \"S\" for milliseconds\n * Any other char will be kept in the duration output string.\n *\n * Add consecutive chars for zero padding.\n *\n * By default it:\n * - uses colon delimiter (e.g. for format \"hhmmss\")\n * - shows \"m:ss\" or \"h:mm:ss\" if format is undefined\n *\n * @param options Options for how to display duration\n * @returns Duration representation of the TimeCode\n */\n toDuration(options?: {\n // Specify format of duration string, e.g. hh:mm:ss.S for 01:23:04.5\n format?: string;\n }) {\n const { format } = options || {};\n const { hours, ...rest } = this.toTime();\n let { minutes, seconds, milliseconds } = rest;\n if (!!format && typeof format !== 'string') {\n throw Error('format has to be a string');\n }\n\n const isBefore = (unit: string, units: string[]) =>\n !format.includes(unit) ||\n !units.some((u) => format.includes(u) && format.lastIndexOf(unit) > format.indexOf(u));\n if (\n !!format &&\n !(isBefore('h', ['m', 's', 'S']) && isBefore('m', ['s', 'S']) && isBefore('s', ['S']))\n ) {\n throw Error('format order is unsupported (has to be h, m, s then S)');\n }\n\n if (!format) {\n return `${\n hours > 0 ? `${hours}:${`${minutes}`.padStart(2, '0')}` : minutes\n }:${`${seconds}`.padStart(2, '0')}`;\n }\n\n const countConsecutiveChars = (i: number, arr: string[]) => {\n let j = i;\n while (arr[j] === arr[j + 1]) {\n j += 1;\n }\n return j - i + 1;\n };\n\n const timeUnitKeys = ['h', 'm', 's', 'S'];\n\n const output: string[] = [];\n [...format].forEach((c, i, arr) => {\n switch (c) {\n case 'h': {\n if (arr[i - 1] === 'h') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n output.push(`${hours}`.padStart(amount, '0'));\n if (timeUnitKeys.includes(arr[i + amount])) {\n output.push(':');\n }\n break;\n }\n case 'm': {\n if (arr[i - 1] === 'm') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n if (!format.includes('h')) {\n minutes += hours * 60;\n }\n output.push(`${minutes}`.padStart(amount, '0'));\n if (timeUnitKeys.includes(arr[i + amount])) {\n output.push(':');\n }\n break;\n }\n case 's': {\n if (arr[i - 1] === 's') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n if (!format.includes('m')) {\n seconds += minutes * 60;\n }\n output.push(`${seconds}`.padStart(amount, '0'));\n if (timeUnitKeys.includes(arr[i + amount])) {\n output.push('.');\n }\n break;\n }\n case 'S': {\n if (arr[i - 1] === 'S') {\n break;\n }\n const amount = countConsecutiveChars(i, arr);\n if (!format.includes('s')) {\n milliseconds += seconds * 1000;\n }\n output.push(`${Math.round(milliseconds / 10 ** (3 - amount))}`.padStart(amount, '0'));\n break;\n }\n default:\n output.push(c);\n }\n });\n return output.join('');\n }\n\n /**\n * Get TimeCode in a smpte representation\n *\n * @returns Smpte representation of the TimeCode\n */\n toSmpte() {\n if (this.samples === -Infinity) return '00:00:00:00';\n const { hours, minutes, seconds, frames } = this.toUnits();\n const hhmmss = [\n hours.toFixed().padStart(2, '0'),\n minutes.toFixed().padStart(2, '0'),\n seconds.toFixed().padStart(2, '0'),\n ].join(':');\n return [hhmmss, `${frames}`.padStart(2, '0')].join(this.frameSeparator);\n }\n\n /**\n * Get TimeCode as a VidiCore TimeCodeType object\n *\n * @returns TimeCode as `{ samples, timeBase }`\n */\n toObject() {\n return {\n samples: this.samples,\n timeBase: this.timeBase.toObject(),\n };\n }\n\n /**\n * @deprecated Use {@link TimeCode#toObject | toObject} instead\n *\n * @returns TimeCode as `{ samples, timeBase }`\n */\n toJson() {\n // eslint-disable-next-line no-console\n console.warn('Deprecated - use toObject instead');\n return this.toObject();\n }\n}\n","/* eslint-disable no-self-assign */\n\n/**\n * @private\n *\n * Using Euclid's algorithm\n *\n * @param num1 a number\n * @param num2 another number\n * @returns The greatest common divisor of num1 and num2\n */\nexport const getGreatestCommonDivisor = (num1: number, num2: number) => {\n let a = Math.abs(num1);\n let b = Math.abs(num2);\n while (a && b && a !== b) {\n if (a > b) {\n [a, b] = [a - b, b];\n } else {\n [a, b] = [a, b - a];\n }\n }\n return a || b;\n};\n","import { getGreatestCommonDivisor } from '../_utils/getGreatestCommonDivisor';\nimport { createTimeBase } from '../createTimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\nimport { TimeCode } from '../TimeCode';\nimport { TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nexport type FormatTimeCodeSecondsOptions = {\n /* The TimeBase the output TimeCode should have\n *\n * (if unset and useGCD=false, denominator will be 10^<amount-of-decimals>)\n */\n timeBase?: number | string | TimeBaseInput;\n /*\n * Samples and denominator are divided with GCD, e.g. 1.04 => 104@100 => 26@25\n * (ignored if timeBase is set)\n */\n useGCD?: boolean;\n} & TimeCodeInputOptions;\n\n/**\n * Format seconds to TimeCode object\n * Input time base is always 1:1 since it expects seconds as input\n *\n * Note: Max 15 digits accuracy (double precision float64), e.g.\n * - 10^6 seconds can have 10^9 decimals (nanosecond) precision\n * - 10^9 seconds can have 10^6 decimals (microsecond) precision\n * - 10^12 seconds can have 10^3 decimals (millisecond) precision\n *\n * @param seconds With or without decimals (\".\" and \",\" are both interpreted as decimal)\n * @param options Options for how to format the seconds to a TimeCode\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const formatTimeCodeSeconds = (\n seconds: string | number,\n options?: FormatTimeCodeSecondsOptions,\n) => {\n const { timeBase, useGCD = false, ...timeCodeOptions } = options || {};\n const secondsWithDot = `${seconds}`.replace(/,/g, '.');\n if (Number.isNaN(+secondsWithDot)) {\n throw new Error(`seconds must be digits, is ${seconds}`);\n }\n let denominator = 1;\n let samples;\n if (Number.isInteger(+secondsWithDot)) {\n samples = +secondsWithDot * denominator;\n } else {\n const [, ms] = secondsWithDot.split('.');\n const decimalPlaces = Math.min(ms?.length ?? 0, 16);\n denominator *= 10 ** decimalPlaces;\n samples = Math.round(Number(secondsWithDot) * denominator);\n }\n if (timeBase === undefined && useGCD) {\n const gcd = getGreatestCommonDivisor(denominator, samples);\n samples /= gcd;\n denominator /= gcd;\n }\n const timeCode = new TimeCode(\n { samples, timeBase: { denominator, numerator: 1 } },\n timeCodeOptions,\n );\n return timeBase !== undefined ? timeCode.conformTimeBase(createTimeBase(timeBase)) : timeCode;\n};\n","import { getAmountOfFrameDrops } from '../../_utils/getAmountOfFrameDrops';\nimport { TimeBase } from '../../TimeBase';\n\nconst getDroppedFramesFromSmpte = (\n [hh, mm, ss, ff]: [number, number, number, number],\n samples: number,\n timeBase: TimeBase,\n) => {\n const roundedFrameRate = timeBase.toRate({ rounded: true });\n const dropFrames = getAmountOfFrameDrops(timeBase);\n if (samples === 0 || !dropFrames) {\n return 0;\n }\n\n const shouldDropMinute = mm % 10 !== 0;\n const shouldDropSecond = shouldDropMinute && ss === 0;\n const hourFrames = hh * (3600 * roundedFrameRate - 54 * dropFrames);\n const minuteFrames = mm * 60 * roundedFrameRate - (mm - Math.ceil(mm / 10)) * dropFrames;\n const secondFrames = ss * roundedFrameRate - (shouldDropMinute && ss > 1 ? dropFrames : 0);\n\n if (shouldDropSecond && ff < dropFrames) {\n throw new Error(\n `Frame does not exist for ${timeBase.toConstant() || timeBase.toRate()} drop-frame`,\n );\n }\n\n const frameFrames = shouldDropSecond ? ff - dropFrames : ff;\n\n const samplesWithoutDroppedFrames = hourFrames + minuteFrames + secondFrames + frameFrames;\n\n return samples - samplesWithoutDroppedFrames;\n};\n\nexport const getSamplesFromSmpte = (\n smpteValues: [number, number, number, number],\n timeBase: TimeBase,\n dropFrame: boolean,\n) => {\n const [hh, mm, ss, ff] = smpteValues;\n const roundedFrameRate = timeBase.toRate({ rounded: true });\n const samples =\n hh * 3600 * roundedFrameRate + mm * 60 * roundedFrameRate + ss * roundedFrameRate + ff;\n return samples - (dropFrame ? getDroppedFramesFromSmpte(smpteValues, samples, timeBase) : 0);\n};\n","export const splitSmpte = (smpte: string) => {\n const [nonColonFrameSeparator] = smpte?.match(/[^0-9:\\-_]/) || [];\n\n let smpteValues: string[] = [];\n if (nonColonFrameSeparator) {\n const [hhmmss, ff] = smpte.split(nonColonFrameSeparator);\n smpteValues = [...hhmmss.split(':'), ff];\n } else {\n smpteValues = smpte.split(':');\n }\n if (smpteValues.length !== 4) {\n throw new Error('Invalid format, must be \"##:##:##:##');\n }\n if (smpteValues.some((n) => Number.isNaN(n))) {\n throw new Error('Invalid format, values must be numbers');\n }\n const smpteFrameSeparator = nonColonFrameSeparator || ':';\n return {\n smpteValues: smpteValues.map(Number) as [number, number, number, number],\n smpteFrameSeparator,\n };\n};\n","import { isDropFrameTimeBase } from '../_utils/isDropFrameTimeBase';\nimport { createTimeBase } from '../createTimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\nimport { TimeCode } from '../TimeCode';\nimport { TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nimport { getSamplesFromSmpte } from './_utils/getSamplesFromSmpte';\nimport { splitSmpte } from './_utils/splitSmpte';\n\nconst EXCEEDING_OPTIONS = ['error', 'add', 'ignore'];\n\nexport type FormatTimeCodeSmpteOptions = {\n // TimeBase of smpte (and consequently TimeBase of output TimeCode)\n timeBase?: number | string | TimeBaseInput;\n // How to handle exceeding values (default `error`)\n exceedingMode?: 'add' | 'ignore' | 'error';\n /* Set it should parse and create time code with dropFrame\n *\n * Defaults to check timeBase (if supplied), otherwise true if smpte frame separator is ';' or ','\n */\n dropFrame?: boolean;\n /* The frame separator the TimeCode should store\n *\n * Defaults to the frame separator supplied smpte has)\n */\n frameSeparator?: string;\n} & Omit<TimeCodeInputOptions, 'dropFrame' | ' frameSeparator'>;\n\n/**\n * Format smpte text to a TimeCode Instance\n *\n * exceedingMode:\n * - \"overflow\" exceeding values will be kept (e.g. PAL and 00:00:00:25 => 00:00:01:00)\n * - \"truncate\" exceeding values will be truncated (e.g. PAL and 00:00:00:25 => 00:00:00:24)\n * - \"error\" exceeding values will throw error (e.g. PAL and 00:00:00:25 => Error)\n *\n * @param smpte String representation of smpte\n * @param options Options for creating the time code from smpte\n * @returns TimeCode instance created from smpte string\n *\n * @category Time\n */\nexport const formatTimeCodeSmpte = (smpte: string, options?: FormatTimeCodeSmpteOptions) => {\n const { exceedingMode = 'error', timeBase, ...timeCodeOptions } = options || {};\n if ([null, undefined].includes(smpte)) {\n throw new Error(`smpte cannot be undefined or null`);\n }\n if (typeof smpte !== 'string') {\n throw new Error(`smpte must be a string, is ${JSON.stringify(smpte)}`);\n }\n\n const { smpteValues, smpteFrameSeparator } = splitSmpte(smpte);\n const timeBaseInstance = createTimeBase(timeBase);\n\n const mergedOptions = {\n ...timeCodeOptions,\n frameSeparator: timeCodeOptions?.frameSeparator || smpteFrameSeparator,\n ...(timeCodeOptions?.dropFrame === undefined\n ? {\n dropFrame:\n timeBase !== undefined\n ? isDropFrameTimeBase(timeBaseInstance)\n : [';', ','].includes(smpteFrameSeparator),\n }\n : {}),\n };\n\n const roundedFrameRate = timeBaseInstance.toRate({ rounded: true });\n const maxFrame = Math.max(0, roundedFrameRate - 1);\n\n if (smpteValues.some((v) => v < 0)) {\n throw new Error('Negative values are not supported');\n }\n\n let samples;\n switch (exceedingMode) {\n case 'error': {\n const [hours, minutes, seconds, frames] = smpteValues;\n if (hours >= 100) {\n throw Error('Minutes has to be less than 60');\n }\n if (minutes >= 60) {\n throw Error('Minutes has to be less than 60');\n }\n if (seconds >= 60) {\n throw Error('Seconds has to be less than 60');\n }\n if (frames > maxFrame) {\n throw Error(`Frames has to be less or equal to ${maxFrame}`);\n }\n samples = getSamplesFromSmpte(smpteValues, timeBaseInstance, mergedOptions?.dropFrame);\n break;\n }\n case 'ignore': {\n const [hours, minutes, seconds, frames] = smpteValues;\n const truncatedSmpteValues: [number, number, number, number] = [\n Math.min(100, hours),\n Math.min(59, minutes),\n Math.min(59, seconds),\n Math.min(maxFrame, frames),\n ];\n samples = getSamplesFromSmpte(\n truncatedSmpteValues,\n timeBaseInstance,\n mergedOptions?.dropFrame,\n );\n break;\n }\n case 'add': {\n samples = getSamplesFromSmpte(smpteValues, timeBaseInstance, mergedOptions?.dropFrame);\n break;\n }\n default: {\n throw new Error(`Invalid exceedingMode, options are ${JSON.stringify(EXCEEDING_OPTIONS)}`);\n }\n }\n\n return new TimeCode({ samples, timeBase: timeBaseInstance }, mergedOptions);\n};\n","import { createTimeBase } from '../createTimeBase';\nimport { formatTimeBaseText } from '../formatTimeBaseText';\nimport { TimeBase } from '../TimeBase';\nimport { TimeBaseInput } from '../TimeBase/TimeBase';\nimport { TimeCode } from '../TimeCode';\nimport { TimeCodeInput, TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nexport type FormatTimeCodeTextOptions = {\n // The time base the returned TimeCode should have\n timeBase?: number | string | TimeBaseInput;\n} & TimeCodeInputOptions;\n/**\n * Format text to a TimeCode instance\n *\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const formatTimeCodeText = (\n /* A time code text (e.g. \"25@PAL\")\n *\n * Defaults to \"seconds\" (i.e. \"<seconds>@1:1\") if supplied as number or string without time base\n */\n timeCodeText?: number | string,\n // Options for how to format\n options?: FormatTimeCodeTextOptions,\n): TimeCode => {\n const { timeBase, ...timeCodeOptions } = options || {};\n let timeCodeObject: TimeCodeInput;\n\n if (timeCodeText === undefined) {\n timeCodeObject = { samples: 0 };\n } else if (typeof timeCodeText === 'number') {\n timeCodeObject = { samples: timeCodeText };\n } else if (timeCodeText.includes('@')) {\n const [samplesString, timeBaseText] = timeCodeText.split('@');\n const samples = Number(samplesString);\n timeCodeObject = { samples, timeBase: formatTimeBaseText(timeBaseText) };\n } else if (timeCodeText === '-INF') {\n timeCodeObject = { samples: -Infinity };\n } else if (timeCodeText === '+INF') {\n timeCodeObject = { samples: Infinity };\n } else {\n timeCodeObject = { samples: Number(timeCodeText) };\n }\n\n if (\n Number.isNaN(timeCodeObject?.samples) ||\n (timeCodeObject.timeBase && !(timeCodeObject.timeBase instanceof TimeBase))\n ) {\n throw new Error(`timeCodeText must be a number or sample@timeBase - is ${timeCodeText}`);\n }\n const timeCode = new TimeCode(timeCodeObject, timeCodeOptions);\n\n return timeBase ? timeCode.conformTimeBase(createTimeBase(timeBase)) : timeCode;\n};\n","import { TimeCode } from '../TimeCode';\nimport { TimeCodeInput, TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\n/**\n * Format an object to a TimeCode instance\n *\n * @param timeCode To create TimeCode instance of\n * @param options For the TimeCode constructor\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const formatTimeCodeType = (timeCode: TimeCodeInput, options?: TimeCodeInputOptions) =>\n new TimeCode(timeCode, options);\n","import { formatTimeCodeSeconds } from '../formatTimeCodeSeconds';\nimport { FormatTimeCodeSecondsOptions } from '../formatTimeCodeSeconds/formatTimeCodeSeconds';\nimport { formatTimeCodeSmpte } from '../formatTimeCodeSmpte';\nimport { FormatTimeCodeSmpteOptions } from '../formatTimeCodeSmpte/formatTimeCodeSmpte';\nimport { formatTimeCodeText } from '../formatTimeCodeText';\nimport { FormatTimeCodeTextOptions } from '../formatTimeCodeText/formatTimeCodeText';\nimport { formatTimeCodeType } from '../formatTimeCodeType';\nimport { TimeCodeInput, TimeCodeInputOptions } from '../TimeCode/TimeCode';\n\nconst hasSmpteFormat = (s: string) => !!s.match(/^(\\d\\d+):(\\d\\d+):(\\d\\d+)(:|;|\\.|,)(\\d\\d+)$/);\nconst isNumber = (s: string | number) => !Number.isNaN(Number(s));\n\nexport type CreateTimeCodeOptions =\n | TimeCodeInputOptions\n | FormatTimeCodeSmpteOptions\n | FormatTimeCodeSecondsOptions\n | FormatTimeCodeTextOptions;\n\n/**\n * Create a TimeCode instance from smpte, seconds/samples, timeCode object or string\n *\n * @param timeCode Smpte, seconds/samples, timeCode object or string\n * @param options For the format functions\n * @returns A TimeCode instance\n *\n * @category Time\n */\nexport const createTimeCode = (\n timeCode: TimeCodeInput | string | number,\n options?: CreateTimeCodeOptions,\n) => {\n // TimeCode\n if (typeof timeCode !== 'string' && typeof timeCode !== 'number')\n return formatTimeCodeType(timeCode, options);\n // SMPTE\n if (typeof timeCode === 'string' && hasSmpteFormat(timeCode))\n return formatTimeCodeSmpte(timeCode, options as FormatTimeCodeSmpteOptions);\n if (['string', 'number'].includes(typeof timeCode) && isNumber(timeCode))\n return formatTimeCodeSeconds(timeCode, options as FormatTimeCodeSecondsOptions);\n if (typeof timeCode === 'string') {\n return formatTimeCodeText(timeCode, options as FormatTimeCodeTextOptions);\n }\n return undefined;\n};\n","import { MetadataType } from '@vidispine/types';\n\nimport { formatTimeCodeText } from '../../time';\nimport { parseTimespanList } from '../parseTimespanList';\n\nfunction timeToCueTime({ hours = 0, minutes = 0, seconds = 0, partialSeconds = 0 }) {\n const hourStr = hours.toFixed().padStart(2, '0');\n const minStr = minutes.toFixed().padStart(2, '0');\n const secondsStr = seconds.toFixed().padStart(2, '0');\n const partialStr = (partialSeconds * 10).toFixed().padStart(3, '0');\n return `${hourStr}:${minStr}:${secondsStr}.${partialStr}`;\n}\n\nexport type MetadataTypeToWebVttOptions = {\n // Name of group containing subtitle field/text\n subtitleGroup?: string;\n // Name of field (text) to use for the subtitles\n subtitleField?: string;\n};\n\nexport const defaultOptions: MetadataTypeToWebVttOptions = {\n subtitleGroup: 'stl_subtitle',\n subtitleField: 'stl_text',\n};\n\n/**\n * Convert metadata subtitle groups to WebVtt subtitles\n *\n * @param metadataType - Vidicore metadata object (should include subtitleGroup and subtitleField)\n * @param options - options for how to map subtitle group\n * @returns WebVtt subtitles\n *\n * @category Metadata\n */\nexport const metadataTypeToWebVtt = (\n metadataType: MetadataType,\n options?: MetadataTypeToWebVttOptions,\n) => {\n const { subtitleGroup, subtitleField } = { ...defaultOptions, ...(options || {}) };\n const { timespan: timespanList = [] } = metadataType || {};\n if (timespanList.length === 0) return '';\n const parsedTimespans = parseTimespanList(timespanList, {\n includeTimespanAttributes: true,\n sortTimespan: true,\n timespanAsList: true,\n overrideGroup: true,\n joinValue: ',',\n });\n const vttCues = parsedTimespans.map((timespan) => {\n const {\n start: startText,\n end: endText,\n [subtitleGroup]: { [subtitleField]: text } = {},\n } = (Array.isArray(timespan) ? timespan[0] : timespan) || {};\n if (!text) return '';\n const start = timeToCueTime(formatTimeCodeText(startText).toTime());\n const end = timeToCueTime(formatTimeCodeText(endText).toTime());\n return `${start} --> ${end} line:0%\\r${text}\\r`;\n });\n\n return `WEBVTT\\n\\n\\n${vttCues.join('\\n')}`;\n};\n","export type CreateFacetTypeFieldList = string[];\nexport type CreateFacetTypeOptions = {\n count: boolean;\n};\n\n/**\n * Create a Vidicore facet list\n *\n * @param fieldList Input to create facet of\n * @param options Options for creating the facet\n * @returns A VidiCore facet list\n *\n * @category Search\n */\nexport const createFacetType = (\n fieldList: CreateFacetTypeFieldList = [],\n options: Partial<CreateFacetTypeOptions> = { count: true },\n) =>\n fieldList.map((field) => ({\n field,\n name: field,\n count: options.count !== undefined ? options?.count : true,\n exclude: fieldList,\n }));\n","import { FacetType } from '@vidispine/types';\n\nexport type ParsedFacetTypeCount = { [fieldValue: string]: number };\n/** Parsed facet type */\nexport type ParsedFacetType = {\n // A key value object\n [fieldName: string]: ParsedFacetTypeCount;\n};\n\n/**\n * Parse a VidiCore facet type list\n *\n * @param facetType A facet type list to parse\n * @returns A parsed facet type list\n *\n * @category Search\n */\nexport const parseFacetType = (facetType: FacetType[] = []): ParsedFacetType => {\n const output: ParsedFacetType = {};\n facetType.forEach(({ name, field, count }) => {\n output[name || field] = count.reduce(\n (acc, { fieldValue, value }) => ({ ...acc, [fieldValue]: value }),\n {},\n );\n });\n return output;\n};\n","import { SearchResultEntryTimespanType } from '@vidispine/types';\n\nexport type ParseHighlightTimespanOptions = {\n // Return an array if there is a single value.\n arrayOnSingle?: boolean;\n // Return timespans as list.\n timespanAsList?: boolean;\n // String to join the values, eg ','.\n joinValue?: string;\n};\n\nexport type ParsedHighlightTimespan = {\n start?: string;\n end?: string;\n [key: string]: string | string[];\n};\n\nexport const defaultOptions: ParseHighlightTimespanOptions = {\n arrayOnSingle: true,\n joinValue: undefined as string,\n timespanAsList: false,\n};\n\n/**\n * Parses highlight timespan in VidiCore into key/value object.\n * The attributes can be targeted for each sub-type.\n * @param timespan - A VidiCore search timespan\n * @param options - Options which change how the timespans are parsed\n *\n * @category Search\n */\nexport const parseHighlightTimespan = (\n timespan: SearchResultEntryTimespanType,\n options: ParseHighlightTimespanOptions,\n): ParsedHighlightTimespan => {\n const {\n arrayOnSingle = true,\n joinValue = undefined,\n timespanAsList = false,\n } = { ...defaultOptions, ...(options || {}) };\n const { field = [], start, end } = timespan || {};\n const initialValue = timespanAsList ? { start, end } : {};\n const fieldList = field.reduce((acc, curr) => {\n const { name, value: valueList = [] } = curr;\n if (valueList.length === 0) return acc;\n let fieldValue;\n if (arrayOnSingle === false && valueList.length === 1) [fieldValue] = valueList;\n else if (joinValue) fieldValue = valueList.join(joinValue);\n else fieldValue = valueList;\n return { ...acc, [name]: fieldValue };\n }, initialValue);\n return fieldList;\n};\n","import { SearchResultEntryTimespanType } from '@vidispine/types';\n\nimport { parseHighlightTimespan } from '../parseHighlightTimespan';\nimport {\n ParsedHighlightTimespan,\n ParseHighlightTimespanOptions,\n defaultOptions as defaultParseHighlightTimespanOptions,\n} from '../parseHighlightTimespan/parseHighlightTimespan';\n\nexport type ParseHighlightTimespanListOptions = {\n // Return parsed timespan as list (in an array)\n timespanAsList?: boolean;\n // Character to join the start/end time codes with\n joinTimespan?: string;\n // Flatten to field-name/field-value (Note: field-values may be overwritten).\n flat?: boolean;\n // Flatten timespan to object with start/end as key.\n flatTimespan?: boolean;\n} & ParseHighlightTimespanOptions;\n\nexport const defaultOptions: ParseHighlightTimespanListOptions = {\n ...defaultParseHighlightTimespanOptions,\n timespanAsList: false,\n joinTimespan: '_',\n flat: false,\n flatTimespan: false,\n};\n\n/**\n * Parses highlight timespans from VidiCore into key/value object.\n * The attributes can be targeted for each sub-type.\n *\n * @param highlightTimespanList - A list of timespans from VidiCore.\n * @param options - Options to change how the timespans are parsed\n *\n * @category Search\n */\nexport const parseHighlightTimespanList = (\n highlightTimespanList: SearchResultEntryTimespanType[] = [],\n options?: ParseHighlightTimespanListOptions,\n): ParsedHighlightTimespan | ParsedHighlightTimespan[] => {\n const {\n timespanAsList,\n joinTimespan = '_',\n flat,\n flatTimespan,\n ...parseHighlightTimespanOptions\n } = { ...defaultOptions, ...(options || {}) };\n if (timespanAsList === true)\n return highlightTimespanList.map((timespan) =>\n parseHighlightTimespan(timespan, { ...parseHighlightTimespanOptions, timespanAsList }),\n );\n if (flat === true || flatTimespan === true)\n return highlightTimespanList.reduce(\n (a, timespan) => ({ ...a, ...parseHighlightTimespan(timespan, options) }),\n {} as ParsedHighlightTimespan,\n );\n return highlightTimespanList.reduce(\n (a, timespan) => ({\n ...a,\n [[timespan.start, timespan.end].join(joinTimespan)]: parseHighlightTimespan(\n timespan,\n options,\n ),\n }),\n {},\n );\n};\n","export const parseNowDate = (value = 'NOW') => {\n if (value.startsWith('NOW')) {\n if (value === 'NOW') return new Date();\n const sign = value[3];\n const number = Number(value.match(/(\\d+)/)[0]);\n const unit = value.match(/(\\d.*)/)[0].replace(/\\d/g, '');\n const nowDiff = new Date();\n switch (unit) {\n case 'HOUR':\n case 'HOURS':\n if (sign === '+') nowDiff.setHours(nowDiff.getHours() + number);\n if (sign === '-') nowDiff.setHours(nowDiff.getHours() - number);\n break;\n case 'DAY':\n case 'DAYS':\n if (sign === '+') nowDiff.setDate(nowDiff.getDate() + number);\n if (sign === '-') nowDiff.setDate(nowDiff.getDate() - number);\n break;\n case 'MONTH':\n case 'MONTHS':\n if (sign === '+') nowDiff.setMonth(nowDiff.getMonth() + number);\n if (sign === '-') nowDiff.setMonth(nowDiff.getMonth() - number);\n break;\n case 'YEAR':\n case 'YEARS':\n if (sign === '+') nowDiff.setFullYear(nowDiff.getFullYear() + number);\n if (sign === '-') nowDiff.setFullYear(nowDiff.getFullYear() - number);\n break;\n default:\n break;\n }\n return nowDiff;\n }\n return new Date(value);\n};\n\nexport default parseNowDate;\n","import { AudioMediaInfoType, BaseMediaInfoType, VideoMediaInfoType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\n\nexport type ParsedBaseMediaInfoType = { Bit_rate_mode?: string; Source?: string } & {\n [key: string]: string;\n};\n\nexport type ParsedAudioMediaInfoType = ParsedBaseMediaInfoType;\n\nexport type ParsedBinaryMediaInfoType = ParsedBaseMediaInfoType;\n\nexport type ParsedVideoMediaInfoType = ParsedBaseMediaInfoType & {\n Format_Settings_GOP?: string;\n intra_dc_precision?: string;\n};\n\nexport const parseBaseMediaInfoType = <\n T extends BaseMediaInfoType,\n TReturn extends ParsedBaseMediaInfoType,\n>(\n baseMediaInfoType: T,\n): TReturn => {\n const { property: keyValuePairTypes = [], ...props } = baseMediaInfoType || ({} as T);\n const parsedKeyValuePairType = parseKeyValuePairTypes(keyValuePairTypes);\n return { ...parsedKeyValuePairType, ...props } as unknown as TReturn;\n};\n\nexport const parseAudioMediaInfoType = (\n mediaInfoType: AudioMediaInfoType,\n): ParsedAudioMediaInfoType => parseBaseMediaInfoType(mediaInfoType);\n\nexport const parseVideoMediaInfoType = (\n mediaInfoType: VideoMediaInfoType,\n): ParsedVideoMediaInfoType => parseBaseMediaInfoType(mediaInfoType);\n\nexport const parseBinaryMediaInfoType = (\n mediaInfoType: BaseMediaInfoType,\n): ParsedBinaryMediaInfoType => parseBaseMediaInfoType(mediaInfoType);\n","import { AudioComponentType } from '@vidispine/types';\nimport parseFileSize from 'filesize';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\nimport { parseAudioMediaInfoType, ParsedAudioMediaInfoType } from '../_utils';\n\nconst sampleRateSymbols = { kB: 'kHz', B: 'Hz', mB: 'mHz' };\nconst bitRateSymbols = { kB: 'kbps', B: 'bps', MB: 'mbps' };\n\nexport type ParsedAudioComponentType = {\n audioFormat?: string;\n audioCodec?: string;\n audioSamplerate?: string;\n audioSamplerateSamples?: number;\n audioBitDepth?: string;\n audioBitrate?: string;\n audioBitRateMode?: string;\n audioChannels?: number;\n audioMetadata?: {\n [key: string]: string;\n };\n audioMediaInfo?: ParsedAudioMediaInfoType;\n};\n\n/**\n * Parses the technical information of a AudioComponentType.\n * @param audioComponentType - A AudioComponentType from VidiCore.\n * @returns Parsed component object.\n *\n * @category Shape\n */\nexport const parseAudioComponent = (\n audioComponentType: AudioComponentType,\n): ParsedAudioComponentType => {\n const {\n timeBase,\n channelCount: audioChannels,\n codec: audioCodec,\n mediaInfo,\n bitrate,\n metadata,\n } = audioComponentType;\n const audioMediaInfo = parseAudioMediaInfoType(mediaInfo);\n const {\n Format: audioFormat,\n Resolution: audioBitDepth,\n Bit_rate_mode: audioBitRateMode,\n } = audioMediaInfo;\n const audioMetadata = parseKeyValuePairTypes(metadata || []);\n const audioSamplerateSamples = timeBase?.denominator\n ? (timeBase?.denominator || 1) / (timeBase?.numerator || 1)\n : undefined;\n const audioSamplerate =\n audioSamplerateSamples !== undefined\n ? parseFileSize(audioSamplerateSamples, { base: 10, round: 1, symbols: sampleRateSymbols })\n : undefined;\n const audioBitrate =\n bitrate !== undefined\n ? parseFileSize(bitrate, { base: 10, round: 2, symbols: bitRateSymbols })\n : undefined;\n\n return {\n audioFormat,\n audioCodec,\n audioSamplerate,\n audioSamplerateSamples,\n audioBitDepth,\n audioBitrate,\n audioBitRateMode,\n audioChannels,\n audioMediaInfo,\n audioMetadata,\n };\n};\n","import { FileType } from '@vidispine/types';\nimport parseFileSize from 'filesize';\n\nexport type ParsedFileType = {\n uri?: string;\n hash?: string;\n fileSize?: string;\n fileSizeBytes?: number;\n path?: string;\n fileName?: string;\n fileId?: string;\n};\n\n/**\n * Parses a VidiCore file object\n *\n * @param fileType VidiCore file object\n * @returns A parsed file object\n *\n * @category File\n */\nexport const parseFileType = (fileType: FileType): ParsedFileType => {\n const { uri: uriList = [], size: fileSizeBytes, hash, path, id: fileId } = fileType;\n const [uri] = uriList;\n const fileSize = fileSizeBytes !== undefined ? parseFileSize(fileSizeBytes) : '';\n const fileName = path ? path.split('/').pop() : undefined;\n return {\n uri,\n hash,\n fileSize,\n fileSizeBytes,\n path,\n fileName,\n fileId,\n };\n};\n","import { BinaryComponentType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\nimport { parseFileType } from '../../file';\nimport { parseBaseMediaInfoType, ParsedBinaryMediaInfoType } from '../_utils';\n\nexport type ParsedBinaryComponentType = {\n binaryMetadata?: {\n [key: string]: string;\n };\n binaryMediaInfo?: ParsedBinaryMediaInfoType;\n};\n\n/**\n * Parses the technical information of a BinaryComponentType.\n * @param binaryComponentType - A BinaryComponentType from VidiCore.\n * @returns Parsed component object.\n *\n * @category Shape\n */\nexport const parseBinaryComponent = (\n binaryComponentType: BinaryComponentType = {},\n): ParsedBinaryComponentType => {\n const { file: fileList, mediaInfo, metadata = [] } = binaryComponentType;\n const binaryMetadata = parseKeyValuePairTypes(metadata);\n const binaryMediaInfo = parseBaseMediaInfoType(mediaInfo);\n\n let parsedBinaryComponent = { binaryMetadata, binaryMediaInfo };\n if (fileList) {\n const [fileType] = fileList;\n const parsedFileType = parseFileType(fileType);\n parsedBinaryComponent = {\n ...parsedBinaryComponent,\n ...parsedFileType,\n };\n }\n return parsedBinaryComponent;\n};\n","import { ContainerComponentType, TimeCodeType } from '@vidispine/types';\n\nimport { parseKeyValuePairTypes } from '../../_utils';\nimport { parseFileType } from '../../file';\nimport { ParsedFileType } from '../../file/parseFileType';\nimport { formatTimeCodeType } from '../../time';\nimport { parseBaseMediaInfoType, ParsedBaseMediaInfoType } from '../_utils';\n\n/**\n * Parsed container component\n */\nexport type ParsedContainerComponentType = {\n containerFormat?: string;\n videoFormat?: string;\n audioFormat?: string;\n textFormat?: string;\n originalFilename?: string;\n durationTimeCode?: TimeCodeType;\n duration?: string;\n startTimestamp?: TimeCodeType;\n startTimecode?: TimeCodeType;\n containerMetadata?: {\n [key: string]: string;\n };\n containerMediaInfo?: ParsedBaseMediaInfoType;\n} & ParsedFileType;\n\n/**\n * Parses the technical information of a ContainerComponentType.\n * @param containerComponentType - A ContainerComponentType from VidiCore.\n * @returns Parsed component object.\n *\n * @category Shape\n */\nexport const parseContainerComponent = (containerComponentType: ContainerComponentType = {}) => {\n const {\n mediaInfo,\n metadata,\n file: fileList,\n duration: durationTimeCode,\n startTimestamp,\n startTimecode,\n timeCodeTimeBase,\n } = containerComponentType;\n const containerMetadata = parseKeyValuePairTypes(metadata || []);\n const containerMediaInfo = parseBaseMediaInfoType(mediaInfo);\n let { Format: containerFormat } = containerMediaInfo;\n const {\n Video_Format_List: videoFormat,\n Audio_Format_List: audioFormat,\n Text_Format_List: textFormat,\n } = containerMediaInfo;\n if (containerFormat === undefined) {\n const { format } = containerComponentType;\n containerFormat = format;\n if (format && format.includes(',')) {\n const formatList = format.split(',');\n [containerFormat] = formatList;\n }\n }\n let parsedContainerComponentType: ParsedContainerComponentType = {\n containerFormat,\n videoFormat,\n audioFormat,\n textFormat,\n containerMetadata,\n containerMediaInfo,\n };\n if (containerMetadata.componentOriginalFilename) {\n parsedContainerComponentType.originalFilename = containerMetadata.componentOriginalFilename;\n }\n if (durationTimeCode !== undefined && durationTimeCode.samples !== 0) {\n const timeCode = formatTimeCodeType(durationTimeCode);\n parsedContainerComponentType.durationTimeCode = timeCode.toObject();\n parsedContainerComponentType.duration = timeCode.toDuration();\n }\n if (startTimestamp) {\n parsedContainerComponentType.startTimestamp = formatTimeCodeType(startTimestamp).toObject();\n }\n if (startTimecode !== undefined && timeCodeTimeBase) {\n parsedContainerComponentType.startTimecode = formatTimeCodeType({\n samples: startTimecode,\n timeBase: timeCodeTimeBase,\n });\n }\n if (fileList) {\n const [fileType] = fileList;\n const parsedFileType = parseFileType(fileType);\n parsedContainerComponentType = {\n ...parsedContainerComponentType,\n ...parsedFileType,\n };\n }\n return parsedContainerComponentType;\n};\n","import { VideoComponentType } from '@vidispine/types';\nimport parseFileSize from 'filesize';\n\nimport { parseKeyValuePairTypes, parseAspectRatio } from '../../_utils';\nimport {\n formatTimeBaseText,\n formatTimeBaseType,\n formatTimeCodeType,\n TimeBase,\n TimeCode,\n} from '../../time';\nimport { ParsedVideoMediaInfoType, parseVideoMediaInfoType } from '../_utils';\n\nexport type ParsedVideoComponentType = {\n videoFormat?: string;\n dimension?: string;\n frameRate?: string | number;\n height?: number;\n width?: number;\n timeBase?: TimeBase;\n timeCode?: TimeCode;\n videoCodec?: string;\n smpte?: string;\n videoBitrate?: string;\n fieldOrder?: string;\n colorSpace?: string;\n chromaSubsampling?: string;\n aspectRatio?: string;\n colorPrimaries?: string;\n videoMetadata?: {\n [key: string]: string;\n };\n videoMediaInfo?: ParsedVideoMediaInfoType;\n};\n\n/**\n * Parses the technical information of a VideoComponentType.\n * @param {Object} videoComponentType - A VideoComponentType from VidiCore.\n * @returns {Object} Parsed component object.\n *\n * @category Shape\n */\nexport const parseVideoComponent = (\n videoComponentType: VideoComponentType = {},\n): ParsedVideoComponentType => {\n const {\n codec: videoCodec,\n bitrate,\n fieldOrder,\n resolution,\n mediaInfo,\n metadata = [],\n } = videoComponentType;\n const videoMediaInfo = parseVideoMediaInfoType(mediaInfo);\n const videoMetadata = parseKeyValuePairTypes(metadata);\n const {\n Format: videoFormat,\n 'Frame rate': timeBaseText,\n 'Color space': colorSpace,\n 'Color primaries': colorPrimaries,\n Colorimetry: chromaSubsampling,\n } = videoMediaInfo;\n let timeBase;\n const { averageFrameRate, realBaseFrameRate } = videoComponentType;\n if (realBaseFrameRate !== undefined) {\n timeBase = formatTimeBaseType({\n numerator: realBaseFrameRate.denominator,\n denominator: realBaseFrameRate.numerator,\n });\n } else if (timeBaseText !== undefined) {\n timeBase = formatTimeBaseText(timeBaseText);\n } else if (averageFrameRate !== undefined) {\n timeBase = formatTimeBaseType({\n numerator: averageFrameRate.denominator,\n denominator: averageFrameRate.numerator,\n });\n }\n let { 'Frame count': samples } = videoMediaInfo;\n if (samples === undefined) {\n const { numberOfPackets } = videoComponentType;\n if (numberOfPackets !== undefined) samples = numberOfPackets.toString();\n }\n let timeCode: TimeCode;\n let frameRate: string | number;\n let smpte: string;\n if (samples && timeBase) {\n timeCode = formatTimeCodeType({ samples, timeBase });\n frameRate = timeCode.timeBase.toConstant() || timeCode.timeBase.toRate();\n smpte = timeCode.toSmpte();\n }\n const { height, width } = resolution || {};\n const aspectRatio = parseAspectRatio(resolution);\n const dimension = `${width}x${height}`;\n const videoBitrate = bitrate ? parseFileSize(bitrate, { bits: true }) : undefined;\n return {\n videoFormat,\n dimension,\n frameRate,\n height,\n width,\n timeBase,\n timeCode,\n videoCodec,\n smpte,\n videoBitrate,\n fieldOrder,\n colorSpace,\n chromaSubsampling,\n aspectRatio,\n colorPrimaries,\n videoMetadata,\n videoMediaInfo,\n };\n};\n","// eslint-disable-next-line import/no-cycle\nimport { ShapeType } from '@vidispine/types';\n\nimport { parseAudioComponent } from '../parseAudioComponent';\nimport { ParsedAudioComponentType } from '../parseAudioComponent/parseAudioComponent';\nimport { parseBinaryComponent } from '../parseBinaryComponent';\nimport { ParsedBinaryComponentType } from '../parseBinaryComponent/parseBinaryComponent';\nimport { parseContainerComponent } from '../parseContainerComponent';\nimport { ParsedContainerComponentType } from '../parseContainerComponent/parseContainerComponent';\nimport { parseVideoComponent } from '../parseVideoComponent';\nimport { ParsedVideoComponentType } from '../parseVideoComponent/parseVideoComponent';\n\nexport type ParsedShapeType = {\n uri?: string;\n tag?: string;\n mimeType?: string;\n} & ParsedContainerComponentType &\n ParsedBinaryComponentType &\n ParsedAudioComponentType &\n ParsedVideoComponentType;\n\n/**\n * Parses the technical information of a ShapeType and its various components.\n *\n * Will only parse the first videoComponent, audioComponent, binaryComponent in the corresponding array.\n * To parse a selected component see:\n * - {@link parseContainerComponent}\n * - {@link parseVideoComponent}\n * - {@link parseAudioComponent}\n * - {@link parseBinaryComponent}\n * @param shapeType - A ShapeType from VidiCore.\n * @returns Parsed shape object.\n *\n * @category Shape\n */\nexport const parseShapeType = (shapeType: ShapeType = {}): ParsedShapeType => {\n let parsedShape: ParsedShapeType = {};\n const {\n containerComponent,\n videoComponent: videoComponentList,\n audioComponent: audioComponentList,\n binaryComponent: binaryComponentList,\n mimeType: mimeTypeList = [],\n tag: tagList = [],\n } = shapeType;\n [parsedShape.tag] = tagList;\n [parsedShape.mimeType] = mimeTypeList;\n if (containerComponent) {\n const parsedContainerComponent = parseContainerComponent(containerComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedContainerComponent,\n };\n }\n if (videoComponentList) {\n const [videoComponent] = videoComponentList;\n const parsedVideoComponent = parseVideoComponent(videoComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedVideoComponent,\n };\n }\n if (audioComponentList) {\n const [audioComponent] = audioComponentList;\n const parsedAudioComponent = parseAudioComponent(audioComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedAudioComponent,\n };\n }\n if (binaryComponentList) {\n const [binaryComponent] = binaryComponentList;\n const parsedBinaryComponent = parseBinaryComponent(binaryComponent);\n parsedShape = {\n ...parsedShape,\n ...parsedBinaryComponent,\n };\n }\n return parsedShape;\n};\n","// eslint-disable-next-line import/no-cycle\nimport { ShapeType } from '@vidispine/types';\n\nconst DOCUMENT_TYPES = {\n PDF: 'PDF',\n TEXT: 'TEXT',\n MSWORD: 'MSWORD',\n JSON: 'JSON',\n XML: 'XML',\n} as const;\n\nexport type DocumentType = keyof typeof DOCUMENT_TYPES;\n\n/**\n * Return a const for the document type of a shape (looks at mimeType)\n *\n * @param shape A VidiCore shape\n * @returns The document type for a shape\n *\n * @category Shape\n */\nexport const getShapeDocumentType = (shape: ShapeType = {}): DocumentType => {\n // shapeType.mimeType is always a string array,\n // but accepts passing in { mimeType: string } for backwards compatibility\n const { mimeType: mimeTypeArrayOrString } = shape;\n\n const mimeType = Array.isArray(mimeTypeArrayOrString)\n ? mimeTypeArrayOrString[0]\n : mimeTypeArrayOrString;\n\n if (!mimeType) return undefined;\n if (mimeType.endsWith('/pdf')) return DOCUMENT_TYPES.PDF;\n if (mimeType.startsWith('text/')) return DOCUMENT_TYPES.TEXT;\n if (mimeType.endsWith('/msword')) return DOCUMENT_TYPES.MSWORD;\n if (mimeType.endsWith('/json')) return DOCUMENT_TYPES.JSON;\n if (mimeType.endsWith('/xml')) return DOCUMENT_TYPES.XML;\n\n return undefined;\n};\n\nexport default getShapeDocumentType;\n","import { ItemType, ShapeType } from '@vidispine/types';\n\nimport { parseShapeType, ParsedShapeType } from '../parseShapeType';\n\nconst IMAGE_MIME_TYPES = [\n 'image/apng',\n 'image/bmp',\n 'image/gif',\n 'image/jpeg',\n 'image/x-icon',\n 'image/png',\n 'image/svg+xml',\n];\n\nconst VIDEO_MIME_TYPES = ['video/mp4'];\n\nconst AUDIO_MIME_TYPES = [\n 'audio/mp4',\n 'audio/mpeg',\n 'audio/x-aac',\n 'audio/aac',\n 'audio/x-wav',\n 'audio/wav',\n 'audio/accp',\n 'audio/ogg',\n 'audio/webm',\n 'audio/x-flac',\n];\n\nconst DEFAULT_ALLOWED_MIME_TYPES = [...VIDEO_MIME_TYPES, ...IMAGE_MIME_TYPES, ...AUDIO_MIME_TYPES];\n\nconst DEFAULT_ALLOWED_METHODS = ['http', 'https'];\n\nconst MP4_MIMETYPE = 'video/mp4';\nconst QUICKTIME_MIMETYPE = 'video/quicktime';\nconst M4V_MIMETYPE = 'video/x-m4v';\nconst MP4_CONTAINER = 'MPEG-4';\nconst MOV_CONTAINER = 'mov';\nconst H264_CODEC = 'h264';\n\n// Sort by tags in the order of previewShapeOrder, secondary alphabetical.\n// using reverse() so the first has highest index\nconst PREVIEW_SHAPE_ORDER = [\n '__mp4',\n '__mp3_160k',\n '__png',\n '__jpeg',\n '__gif',\n 'original',\n].reverse();\n\nexport type FilteredShapeListObject = {\n src: string;\n type: string;\n shape: ShapeType;\n parsedShape: ParsedShapeType;\n [key: string]: string | ParsedShapeType | ShapeType;\n};\n\nexport type FilterShapeSourceOption = {\n sortPriority?: Function;\n allowedMimeTypes?: string[];\n allowedMethods?: string[];\n sourceKey?: string;\n mimeTypeKey?: string;\n shapeKey?: string;\n parsedShapeKey?: string;\n};\n\nconst defaultSortPriority = (\n { parsedShape: { tag: firstEl } }: FilteredShapeListObject,\n { parsedShape: { tag: secondEl } }: FilteredShapeListObject,\n) => {\n if (PREVIEW_SHAPE_ORDER.includes(firstEl) || PREVIEW_SHAPE_ORDER.includes(secondEl)) {\n return PREVIEW_SHAPE_ORDER.indexOf(secondEl) - PREVIEW_SHAPE_ORDER.indexOf(firstEl);\n }\n return firstEl.toLowerCase().localeCompare(secondEl.toLowerCase());\n};\n\n/**\n * Filter a shape type list to get shapes that are playable in a browser\n *\n * @param itemType\n * @param options\n * @returns\n *\n * @category Shape\n */\nexport const filterShapeSource = (\n itemType: ItemType,\n options: FilterShapeSourceOption,\n): FilteredShapeListObject[] => {\n const {\n allowedMimeTypes = DEFAULT_ALLOWED_MIME_TYPES,\n allowedMethods = DEFAULT_ALLOWED_METHODS,\n sortPriority = defaultSortPriority,\n sourceKey = 'src',\n mimeTypeKey = 'type',\n shapeKey = 'shape',\n parsedShapeKey = 'parsedShape',\n } = options || {};\n const { shape: shapeList = [] } = itemType || {};\n const filteredShapeList: FilteredShapeListObject[] = shapeList.reduce((acc, shapeType) => {\n let type: string;\n let src: string;\n const parsedShape = parseShapeType(shapeType);\n const { uri, mimeType, containerFormat, videoCodec } = parsedShape;\n if (mimeType) {\n type = mimeType;\n if (\n (mimeType === QUICKTIME_MIMETYPE || mimeType === M4V_MIMETYPE) &&\n (containerFormat === MP4_CONTAINER || containerFormat === MOV_CONTAINER) &&\n videoCodec === H264_CODEC\n )\n type = MP4_MIMETYPE;\n }\n if (uri) {\n if (allowedMethods) {\n const [thisMethod] = uri.split('://');\n if (allowedMethods.includes(thisMethod)) src = uri;\n } else {\n src = uri;\n }\n }\n if (src && allowedMimeTypes.includes(type)) {\n acc.push({\n [sourceKey]: src,\n [mimeTypeKey]: type,\n [shapeKey]: shapeType,\n [parsedShapeKey]: parsedShape,\n });\n }\n return acc;\n }, []);\n if (typeof sortPriority === 'function') filteredShapeList.sort(defaultSortPriority);\n return filteredShapeList;\n};\n\nexport default filterShapeSource;\n","import { ShapeType } from '@vidispine/types';\n\nimport { parseShapeType } from '../parseShapeType';\n\n// eslint-disable-next-line import/no-cycle\n\nconst SHAPE_MEDIA_TYPES = {\n IMAGE: 'IMAGE',\n AUDIO: 'AUDIO',\n VIDEO: 'VIDEO',\n DOCUMENT: 'DOCUMENT',\n BINARY: 'BINARY',\n} as const;\n\nexport type ShapeMediaType = keyof typeof SHAPE_MEDIA_TYPES;\n\n/**\n * Returns a const for which media type a shape has\n *\n * @param shape\n * @returns\n *\n * @category Shape\n */\nexport const getShapeMediaType = (shape: ShapeType): ShapeMediaType => {\n const parsedShape = parseShapeType(shape);\n const { mimeType, videoCodec, audioCodec } = parsedShape;\n if (!mimeType) return undefined;\n if (mimeType.startsWith('audio/')) {\n if (audioCodec !== undefined) return SHAPE_MEDIA_TYPES.AUDIO;\n }\n if (mimeType.startsWith('video/')) {\n if (videoCodec !== undefined) return SHAPE_MEDIA_TYPES.VIDEO;\n if (audioCodec !== undefined) return SHAPE_MEDIA_TYPES.AUDIO;\n }\n if (mimeType.startsWith('image/')) return SHAPE_MEDIA_TYPES.IMAGE;\n if (mimeType.endsWith('/pdf')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.startsWith('text/')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/msword')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/json')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/xml')) return SHAPE_MEDIA_TYPES.DOCUMENT;\n if (mimeType.endsWith('/octet-stream')) return SHAPE_MEDIA_TYPES.BINARY;\n return undefined;\n};\n","import { ItemType } from '@vidispine/types';\n\nimport { createTimeCode, formatTimeCodeText } from '../../time';\nimport { TimeCode, TimeCodeInput } from '../../time/TimeCode/TimeCode';\n\n/**\n * Find the thumbnail uri in a VidiCore item object that's nearest a timeCode\n *\n * @remarks\n * Time code is included in path of VidiCore thumbnail uris\n *\n * @param itemType A VidiCore item object\n * @param timeCode A timeCode to find nearest thumbnail to\n * @returns A URI of a thumbnail, `undefined` if item has no thumbnails\n *\n * @category Thumbnail\n */\nexport const findNearestThumbnail = (itemType: ItemType, timeCode: TimeCode | TimeCodeInput) => {\n const tcSeconds = createTimeCode(timeCode).toSeconds();\n const { thumbnails = {} } = itemType || {};\n const { uri: srcList = [] } = thumbnails;\n const srcTcSeconds = srcList.map((url: string) => {\n const tc = new URL(url).pathname.split('/').pop();\n return formatTimeCodeText(tc).toSeconds();\n });\n\n const nearestSrcIndex = srcTcSeconds.reduce(\n (nearestIndex: number, curr, currIndex) =>\n Math.abs(curr - tcSeconds) < Math.abs(srcTcSeconds[nearestIndex] - tcSeconds)\n ? currIndex\n : nearestIndex,\n 0,\n );\n return srcList[nearestSrcIndex];\n};\n","import { TranscodePresetType } from '@vidispine/types';\n\nimport { parseAspectRatio } from '../../_utils';\nimport { formatTimeBaseType, TimeBase } from '../../time';\n\n/**\n * TODO\n */\nexport type ParsedMediaConvertTranscodePreset = {\n description?: string;\n containerFormat?: any;\n videoFormat?: string;\n height?: number;\n width?: number;\n dimension?: string;\n aspectRatio?: string;\n fieldOrder?: string;\n videoBitrate?: number;\n timeBase?: TimeBase;\n frameRate?: string | number;\n audioFormat?: string;\n audioSamplerate?: string;\n audioBitrate?: string;\n audioBitRateMode?: string;\n};\n\n/**\n * TODO\n *\n * @param mediaconvert\n * @returns\n *\n * @category Transcode\n */\nexport const parseMediaConvertPreset = (\n mediaconvert: TranscodePresetType['mediaconvert'],\n): ParsedMediaConvertTranscodePreset => {\n const output: ParsedMediaConvertTranscodePreset = {};\n const { outputSetting = [] } = mediaconvert || {};\n if (outputSetting.length === 0) return output;\n const mc: {\n Settings: {\n ContainerSettings: any;\n VideoDescription: any;\n AudioDescriptions: any;\n };\n } = JSON.parse(outputSetting[0]);\n const { Settings: { ContainerSettings, VideoDescription, AudioDescriptions } = {} } = mc;\n if (ContainerSettings) {\n output.containerFormat = ContainerSettings.Container;\n }\n if (VideoDescription) {\n const { CodecSettings = {} } = VideoDescription;\n const { Codec, ...otherSettings } = CodecSettings;\n output.videoFormat = Codec;\n const { Height: height, Width: width } = VideoDescription;\n output.height = height;\n output.width = width;\n if (height && width) {\n output.dimension = `${width}x${height}`;\n output.aspectRatio = parseAspectRatio({ height, width });\n }\n const [codecSpecs]: any[] = Object.values(otherSettings);\n if (codecSpecs) {\n output.fieldOrder = codecSpecs.InterlaceMode;\n if (output.fieldOrder && output.fieldOrder.includes('TOP')) output.fieldOrder = 'interlaced';\n output.videoBitrate = codecSpecs.Bitrate;\n const numerator = codecSpecs.FramerateDenominator; // other way round to vs ¯\\_(ツ)_/¯\n const denominator = codecSpecs.FramerateNumerator;\n const timeBase = formatTimeBaseType({ denominator, numerator });\n output.timeBase = timeBase;\n output.frameRate = timeBase.toConstant() || timeBase.toRate();\n }\n }\n if (AudioDescriptions && AudioDescriptions.length > 0) {\n const { CodecSettings = {} } = AudioDescriptions[0];\n const { Codec, ...otherSettings } = CodecSettings;\n output.audioFormat = Codec;\n const [codecSpecs]: any[] = Object.values(otherSettings);\n if (codecSpecs) {\n output.audioSamplerate = codecSpecs.SampleRate;\n output.audioBitrate = codecSpecs.Bitrate;\n output.audioBitRateMode = codecSpecs.RateControlMode;\n }\n }\n return output;\n};\n","import { TranscodePresetType } from '@vidispine/types';\n\nimport { parseAspectRatio } from '../../_utils';\nimport { formatTimeBaseType, TimeBase } from '../../time';\nimport { parseMediaConvertPreset } from '../parseMediaConvertPreset';\n\nexport type ParsedTranscodePreset = {\n description?: string;\n containerFormat?: any;\n videoFormat?: string;\n height?: number;\n width?: number;\n dimension?: string;\n aspectRatio?: string;\n fieldOrder?: string;\n videoBitrate?: number;\n timeBase?: TimeBase;\n frameRate?: string | number;\n audioFormat?: string;\n audioSamplerate?: string;\n audioBitrate?: string;\n audioBitRateMode?: string;\n audioChannels?: number;\n};\n\n/**\n * Parse a VidiCore transcode preset\n *\n * @param transcodePresetType a VidiCore transcode preset\n * @returns A parsed transcode preset\n *\n * @category Transcode\n */\nexport const parseTranscodePreset = (\n transcodePresetType: TranscodePresetType,\n): ParsedTranscodePreset => {\n const output: ParsedTranscodePreset = {};\n const { description, format, audio, video, mediaconvert } = transcodePresetType || {};\n if (mediaconvert) return { description, ...parseMediaConvertPreset(mediaconvert) };\n output.description = description;\n output.containerFormat = format;\n if (video) {\n output.videoFormat = video.codec;\n output.videoBitrate = video.bitrate;\n if (video.framerate) {\n const timeBase = formatTimeBaseType(video.framerate);\n output.timeBase = timeBase;\n output.frameRate = timeBase.toConstant() || timeBase.toRate();\n }\n if (video.scaling) {\n const { height, width } = video.scaling;\n output.height = height;\n output.width = width;\n if (height && width) {\n output.dimension = `${width}x${height}`;\n output.aspectRatio = parseAspectRatio({ height, width });\n }\n }\n }\n if (audio) {\n const { codec: audioFormat, channel } = audio;\n output.audioFormat = audioFormat;\n if (channel) output.audioChannels = channel.length;\n }\n return output;\n};\n"],"names":["gcd","a","b","parseAspectRatio","aspectRatio","width","height","undefined","denominator","widthRatio","heightRatio","toFixed","join","parseKeyValuePairTypes","keyValuePairTypes","Object","fromEntries","map","key","value","ROLE_NAMES","ACCESSCONTROL_READ","ACCESSCONTROL_WRITE","ADMINISTRATOR","AUTO_PROJECTION_READ","AUTO_PROJECTION_WRITE","COLLECTION_NOTIFICATION_READ","COLLECTION_NOTIFICATION_WRITE","COLLECTION_READ","COLLECTION_WRITE","CONFIGURATION_READ","DELETION_LOCK_NOTIFICATION_READ","DELETION_LOCK_NOTIFICATION_WRITE","DELETION_LOCK_READ","DELETION_LOCK_WRITE","DOCUMENT_NOTIFICATION_READ","DOCUMENT_NOTIFICATION_WRITE","DOCUMENT_READ","DOCUMENT_WRITE","ERROR_READ","ERROR_WRITE","EXPORT","EXPORT_TEMPLATE_READ","EXPORT_TEMPLATE_WRITE","EXTERNAL_ID_READ","EXTERNAL_ID_WRITE","FILE_NOTIFICATION_READ","FILE_NOTIFICATION_WRITE","FILE_READ","FILE_WRITE","GROUP_READ","GROUP_WRITE","IMPORT_WRITE","ITEM_ID_READ","ITEM_ID_WRITE","ITEM_NOTIFICATION_READ","ITEM_NOTIFICATION_WRITE","ITEM_WRITE","ITEM_SEARCH","ITEM_SHAPE_READ","ITEM_SHAPE_WRITE","ITEM_TIMELINE_READ","ITEM_TIMELINE_WRITE","ITEM_URI","JOB_NOTIFICATION_READ","JOB_NOTIFICATION_WRITE","JOB_READ","JOB_WRITE","LIBRARY_READ","LIBRARY_WRITE","LOCK_READ","LOCK_WRITE","LOG_READ","METADATA_DATASET_READ","METADATA_DATASET_WRITE","METADATA_FIELD_GROUP_READ","METADATA_FIELD_GROUP_WRITE","METADATA_FIELD_READ","METADATA_FIELD_WRITE","METADATA_GLOBAL_READ","METADATA_GLOBAL_WRITE","METADATA_LOCK_READ","METADATA_LOCK_WRITE","METADATA_READ","METADATA_SCHEMA_READ","METADATA_SCHEMA_WRITE","METADATA_WRITE","OTIF_ANALYZE","OTIF_READ","OTIF_WRITE","PLACEHOLDER_NOTIFICATION_READ","PLACEHOLDER_NOTIFICATION_WRITE","PROJECTION_READ","PROJECTION_WRITE","QUOTA_NOTIFICATION_READ","QUOTA_NOTIFICATION_WRITE","QUOTA_READ","QUOTA_WRITE","RELATION_READ","RELATION_WRITE","RESOURCE_READ","RESOURCE_WRITE","RUN_AS","SEARCH","SEQUENCE_READ","SEQUENCE_WRITE","SHAPE_TAG_READ","SHAPE_TAG_WRITE","SITE_MANAGER","SITE_RULE_READ","SITE_RULE_WRITE","STORAGE_GROUP_READ","STORAGE_GROUP_WRITE","STORAGE_NOTIFICATION_READ","STORAGE_NOTIFICATION_WRITE","STORAGE_READ","STORAGE_RULE_READ","STORAGE_RULE_WRITE","STORAGE_WRITE","SUPER_ACCESS_USER","TASKDEFINITION_READ","TASKDEFINITION_WRITE","THUMBNAIL_READ","THUMBNAIL_WRITE","TRANSCODER","TRANSFER_READ","TRANSFER_WRITE","USER","VXA","VXA_READ","SHARED_ATTRIBUTE_KEYS","SHARED_FIELD_AND_GROUP_ATTRIBUTE_KEYS","GROUP_ATTRIBUTE_KEYS","FIELD_ATTRIBUTE_KEYS","FIELD_VALUE_ATTRIBUTE_KEYS","SYSTEM_FIELDGROUPS","SYSTEM_FIELDS","isValueObject","o","prototype","toString","call","isFieldType","v","includes","isFieldObject","isObject","isDate","isField","Array","isArray","some","isGroup","isGroupObject","entries","every","tryPluralize","str","arr","length","ensureKeysAreValid","keysToCheck","keysToMatch","unsupportedKeys","filter","k","Error","parseValue","toISOString","parseValueObject","valueObject","keys","parsedValue","parseFieldValue","flatMap","parseFieldObject","fieldObject","parsedFieldValue","fieldObjectWithoutValue","_excluded","_objectSpread","parseField","field","parseGroupsAndFields","groupOrField","group","groupAttributes","forEach","_slicedToArray","name","_defineProperty","push","error","message","childGroup","parseTimespan","timespan","start","end","base","groupsAndFields","_excluded2","createMetadataType","input","t","sortTimespanList","timespan1","timespan2","split","firstStart","secondStart","Number","asArray","asSingle","pop","isStringArray","defaultOptions","includeValueAttributes","options","stringValue","attributes","valueAttributes","defaultParseValueOptions","joinValue","arrayOnSingleValue","parseValueList","valueList","parseValueOptions","_objectWithoutProperties","parsedValueList","includeFieldAttributes","defaultParseValueListOptions","parseValueListOptions","fieldAttributes","defaultParseFieldOptions","fieldAsList","arrayOnSingleField","overrideField","parseFieldList","fieldList","parseFieldListOptions","shouldOverride","output","parsedField","parsedFieldOutput","existingParsedFields","flat","values","defaultParseGroupOptions","defaultParseFieldListOptions","includeGroupAttributes","groupAsList","arrayOnSingleGroup","overrideGroup","parseGroup","parseGroupOptions","groupList","parsedFieldList","parsedGroupList","parseGroupList","parsedGroup","parsedGroupOutput","existingParsedGroups","defaultParseGroupListOptions","includeTimespanAttributes","arrayOnSingle","parseTimespanOptions","parseGroupListOptions","e","timespanAttributes","defaultParseTimespanOptions","timespanAsList","joinTimespan","sortTimespan","flatTimespan","parseTimespanList","timespanList","parseTimespanListOptions","otherOptions","sort","shouldFlatten","parsedTimespan","existingParsedTimespans","_toConsumableArray","defaultParseTimespanListOptions","includeMetadataAttributes","parseMetadataType","metadataType","parseMetadataTypeOptions","parsedTimespanList","metadataAttributes","revision","parseSimpleMetadataType","simpleMetadataType","MAP_CONSTANT_TO_DEN_NUM","PAL","numerator","NTSC","NTSC30","TIME_BASE_CONSTANTS","TimeBase","timeBaseType","_classCallCheck","_createClass","constant","find","timeBaseConstant","thisTimeBaseText","thisTimeBaseType","timeBaseText","toConstant","fraction","String","rate","isInteger","rounded","Math","round","fixed","console","warn","toObject","formatTimeBaseText","isNaN","JSON","stringify","formatTimeBaseType","timeBase","createTimeBase","getAmountOfFrameDrops","isDropFrameTimeBase","getDroppedFramesFromSamples","timeCode","samples","amountOfFrameDrops","roundedFrameRate","toRate","oneMinuteNotDroppedFrames","amountOfFramesToDropPerMinute","tenMinuteFrames","amountOfTenMinuteChunks","floor","minuteRemainder","max","amountOfOneMinuteReminderChunks","frameRemainder","amountOfFrameRemainderChunks","TimeCode","timeCodeType","Infinity","dropFrame","frameSeparator","conformedTimeCode","conformTimeBase","conformToTimeBase","timeCodeText","toText","includeTimeBaseForSeconds","totalSamples","hours","minutes","seconds","frames","toUnits","framesPrecise","milliseconds","partialSeconds","format","toTime","rest","isBefore","unit","units","u","lastIndexOf","indexOf","padStart","countConsecutiveChars","i","j","timeUnitKeys","c","amount","hhmmss","getGreatestCommonDivisor","num1","num2","abs","formatTimeCodeSeconds","useGCD","timeCodeOptions","secondsWithDot","replace","ms","decimalPlaces","min","getDroppedFramesFromSmpte","hh","mm","ss","ff","dropFrames","shouldDropMinute","shouldDropSecond","hourFrames","minuteFrames","ceil","secondFrames","frameFrames","samplesWithoutDroppedFrames","getSamplesFromSmpte","smpteValues","splitSmpte","smpte","match","nonColonFrameSeparator","n","smpteFrameSeparator","EXCEEDING_OPTIONS","formatTimeCodeSmpte","exceedingMode","timeBaseInstance","mergedOptions","maxFrame","truncatedSmpteValues","formatTimeCodeText","timeCodeObject","samplesString","formatTimeCodeType","hasSmpteFormat","s","isNumber","createTimeCode","timeToCueTime","hourStr","minStr","secondsStr","partialStr","subtitleGroup","subtitleField","metadataTypeToWebVtt","parsedTimespans","vttCues","startText","endText","text","createFacetType","count","exclude","parseFacetType","facetType","reduce","acc","fieldValue","parseHighlightTimespan","initialValue","curr","defaultParseHighlightTimespanOptions","parseHighlightTimespanList","highlightTimespanList","parseHighlightTimespanOptions","parseNowDate","startsWith","Date","sign","number","nowDiff","setHours","getHours","setDate","getDate","setMonth","getMonth","setFullYear","getFullYear","parseBaseMediaInfoType","baseMediaInfoType","property","props","parsedKeyValuePairType","parseAudioMediaInfoType","mediaInfoType","parseVideoMediaInfoType","sampleRateSymbols","kB","B","mB","bitRateSymbols","MB","parseAudioComponent","audioComponentType","audioChannels","channelCount","audioCodec","codec","mediaInfo","bitrate","metadata","audioMediaInfo","audioFormat","Format","audioBitDepth","Resolution","audioBitRateMode","Bit_rate_mode","audioMetadata","audioSamplerateSamples","audioSamplerate","parseFileSize","symbols","audioBitrate","parseFileType","fileType","uri","uriList","fileSizeBytes","size","hash","path","fileId","id","fileSize","fileName","parseBinaryComponent","binaryComponentType","fileList","file","binaryMetadata","binaryMediaInfo","parsedBinaryComponent","parsedFileType","parseContainerComponent","containerComponentType","durationTimeCode","duration","startTimestamp","startTimecode","timeCodeTimeBase","containerMetadata","containerMediaInfo","containerFormat","videoFormat","Video_Format_List","Audio_Format_List","textFormat","Text_Format_List","formatList","parsedContainerComponentType","componentOriginalFilename","originalFilename","toDuration","parseVideoComponent","videoComponentType","videoCodec","fieldOrder","resolution","videoMediaInfo","videoMetadata","colorSpace","colorPrimaries","chromaSubsampling","Colorimetry","averageFrameRate","realBaseFrameRate","numberOfPackets","frameRate","toSmpte","dimension","videoBitrate","bits","parseShapeType","shapeType","parsedShape","containerComponent","videoComponentList","videoComponent","audioComponentList","audioComponent","binaryComponentList","binaryComponent","mimeType","mimeTypeList","tag","tagList","parsedContainerComponent","parsedVideoComponent","parsedAudioComponent","DOCUMENT_TYPES","PDF","TEXT","MSWORD","XML","getShapeDocumentType","shape","mimeTypeArrayOrString","endsWith","IMAGE_MIME_TYPES","VIDEO_MIME_TYPES","AUDIO_MIME_TYPES","DEFAULT_ALLOWED_MIME_TYPES","DEFAULT_ALLOWED_METHODS","MP4_MIMETYPE","QUICKTIME_MIMETYPE","M4V_MIMETYPE","MP4_CONTAINER","MOV_CONTAINER","H264_CODEC","PREVIEW_SHAPE_ORDER","reverse","defaultSortPriority","firstEl","secondEl","toLowerCase","localeCompare","filterShapeSource","itemType","allowedMimeTypes","allowedMethods","sortPriority","sourceKey","mimeTypeKey","shapeKey","parsedShapeKey","shapeList","filteredShapeList","type","src","thisMethod","SHAPE_MEDIA_TYPES","IMAGE","AUDIO","VIDEO","DOCUMENT","BINARY","getShapeMediaType","findNearestThumbnail","tcSeconds","toSeconds","thumbnails","srcList","srcTcSeconds","url","tc","URL","pathname","nearestSrcIndex","nearestIndex","currIndex","parseMediaConvertPreset","mediaconvert","outputSetting","mc","parse","Settings","ContainerSettings","VideoDescription","AudioDescriptions","Container","CodecSettings","Codec","otherSettings","Height","Width","codecSpecs","InterlaceMode","Bitrate","FramerateDenominator","FramerateNumerator","SampleRate","RateControlMode","parseTranscodePreset","transcodePresetType","description","audio","video","framerate","scaling","channel"],"mappings":"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"}