@vendure/admin-ui-plugin 3.3.8 → 3.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.
Files changed (32) hide show
  1. package/lib/admin-ui/browser/{chunk-BQCGUBYQ.js → chunk-BFJXVVLH.js} +2 -2
  2. package/lib/admin-ui/browser/{chunk-AKIY522X.js → chunk-HFRKZGKK.js} +2 -2
  3. package/lib/admin-ui/browser/{chunk-M4Y3WN5G.js → chunk-LDODEWY4.js} +2 -2
  4. package/lib/admin-ui/browser/chunk-LDODEWY4.js.map +7 -0
  5. package/lib/admin-ui/browser/{chunk-RNEM5N27.js → chunk-LFHPWQW3.js} +2 -2
  6. package/lib/admin-ui/browser/{chunk-GX5DLMAK.js → chunk-LMZFWPZV.js} +2 -2
  7. package/lib/admin-ui/browser/{chunk-6RZRZLAP.js → chunk-N2Q23PVP.js} +2 -2
  8. package/lib/admin-ui/browser/{chunk-PQCSPRYF.js → chunk-OUUKHPV7.js} +3 -3
  9. package/lib/admin-ui/browser/{chunk-PQCSPRYF.js.map → chunk-OUUKHPV7.js.map} +1 -1
  10. package/lib/admin-ui/browser/{chunk-2KKV32PY.js → chunk-RMQGCGTR.js} +2 -2
  11. package/lib/admin-ui/browser/{chunk-3AJAMPCI.js → chunk-UC6USPWD.js} +2 -2
  12. package/lib/admin-ui/browser/{chunk-BJWFFFS3.js → chunk-XLOTCFKD.js} +2 -2
  13. package/lib/admin-ui/browser/index.html +1 -1
  14. package/lib/admin-ui/browser/main-AD7GW3KW.js +2 -0
  15. package/lib/src/api/api-extensions.d.ts +2 -1
  16. package/lib/src/api/api-extensions.js +6 -2
  17. package/lib/src/api/api-extensions.js.map +1 -1
  18. package/lib/src/plugin.d.ts +9 -0
  19. package/lib/src/plugin.js +10 -2
  20. package/lib/src/plugin.js.map +1 -1
  21. package/package.json +6 -6
  22. package/lib/admin-ui/browser/chunk-M4Y3WN5G.js.map +0 -7
  23. package/lib/admin-ui/browser/main-SR4AOVI4.js +0 -2
  24. /package/lib/admin-ui/browser/{chunk-BQCGUBYQ.js.map → chunk-BFJXVVLH.js.map} +0 -0
  25. /package/lib/admin-ui/browser/{chunk-AKIY522X.js.map → chunk-HFRKZGKK.js.map} +0 -0
  26. /package/lib/admin-ui/browser/{chunk-RNEM5N27.js.map → chunk-LFHPWQW3.js.map} +0 -0
  27. /package/lib/admin-ui/browser/{chunk-GX5DLMAK.js.map → chunk-LMZFWPZV.js.map} +0 -0
  28. /package/lib/admin-ui/browser/{chunk-6RZRZLAP.js.map → chunk-N2Q23PVP.js.map} +0 -0
  29. /package/lib/admin-ui/browser/{chunk-2KKV32PY.js.map → chunk-RMQGCGTR.js.map} +0 -0
  30. /package/lib/admin-ui/browser/{chunk-3AJAMPCI.js.map → chunk-UC6USPWD.js.map} +0 -0
  31. /package/lib/admin-ui/browser/{chunk-BJWFFFS3.js.map → chunk-XLOTCFKD.js.map} +0 -0
  32. /package/lib/admin-ui/browser/{main-SR4AOVI4.js.map → main-AD7GW3KW.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../common/src/generated-types.ts", "src/lib/catalog/src/catalog.module.ts", "src/lib/catalog/src/providers/product-detail/product-detail.service.ts", "src/lib/catalog/src/providers/product-detail/replace-last.ts", "src/lib/catalog/src/components/product-options-editor/product-options-editor.component.ts", "src/lib/catalog/src/components/product-options-editor/product-options-editor.component.html", "src/lib/catalog/src/components/product-variants-editor/product-variants-editor.component.ts", "src/lib/catalog/src/components/product-variants-editor/product-variants-editor.component.html", "src/lib/catalog/src/components/create-product-option-group-dialog/create-product-option-group-dialog.component.ts", "src/lib/catalog/src/components/create-product-option-group-dialog/create-product-option-group-dialog.component.html", "src/lib/catalog/src/components/create-product-variant-dialog/create-product-variant-dialog.component.ts", "src/lib/catalog/src/components/create-product-variant-dialog/create-product-variant-dialog.component.html", "src/lib/catalog/src/components/option-value-input/option-value-input.component.ts", "src/lib/catalog/src/components/option-value-input/option-value-input.component.html", "src/lib/catalog/src/providers/routing/product-variants-resolver.ts", "src/lib/catalog/src/catalog.routes.ts", "src/lib/catalog/src/components/apply-facet-dialog/apply-facet-dialog.component.ts", "src/lib/catalog/src/components/apply-facet-dialog/apply-facet-dialog.component.html", "src/lib/catalog/src/components/asset-detail/asset-detail.component.ts", "src/lib/catalog/src/components/asset-detail/asset-detail.component.html", "src/lib/catalog/src/components/asset-list/asset-list.component.ts", "src/lib/catalog/src/components/asset-list/asset-list.component.html", "src/lib/catalog/src/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.ts", "src/lib/catalog/src/components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component.html", "src/lib/catalog/src/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.ts", "src/lib/catalog/src/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component.html", "src/lib/catalog/src/components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.graphql.ts", "src/lib/catalog/src/components/collection-contents/collection-contents.component.ts", "src/lib/catalog/src/components/collection-contents/collection-contents.component.html", "src/lib/catalog/src/components/collection-data-table/collection-data-table.component.ts", "src/lib/catalog/src/components/collection-data-table/collection-data-table.component.html", "src/lib/catalog/src/components/collection-detail/collection-detail.component.ts", "src/lib/catalog/src/components/collection-detail/collection-detail.component.html", "src/lib/catalog/src/components/collection-list/collection-breadcrumb.pipe.ts", "src/lib/catalog/src/components/move-collections-dialog/move-collections-dialog.component.ts", "src/lib/catalog/src/components/move-collections-dialog/move-collections-dialog.component.html", "src/lib/catalog/src/components/collection-list/collection-list-bulk-actions.ts", "src/lib/catalog/src/components/collection-list/collection-list.component.ts", "src/lib/catalog/src/components/collection-list/collection-list.component.html", "src/lib/catalog/src/components/collection-tree/collection-tree.service.ts", "src/lib/catalog/src/components/collection-tree/collection-tree-node.component.ts", "src/lib/catalog/src/components/collection-tree/collection-tree-node.component.html", "src/lib/catalog/src/components/collection-tree/array-to-tree.ts", "src/lib/catalog/src/components/collection-tree/collection-tree.component.ts", "src/lib/catalog/src/components/collection-tree/collection-tree.component.html", "src/lib/catalog/src/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.ts", "src/lib/catalog/src/components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component.html", "src/lib/catalog/src/components/create-facet-value-dialog/create-facet-value-dialog.component.ts", "src/lib/catalog/src/components/create-facet-value-dialog/create-facet-value-dialog.component.html", "src/lib/catalog/src/components/facet-detail/facet-detail.component.ts", "src/lib/catalog/src/components/facet-detail/facet-detail.component.html", "src/lib/catalog/src/components/facet-list/facet-list-bulk-actions.ts", "src/lib/catalog/src/components/facet-list/facet-list.component.ts", "src/lib/catalog/src/components/facet-list/facet-list.component.html", "src/lib/catalog/src/components/generate-product-variants/generate-product-variants.component.ts", "src/lib/catalog/src/components/generate-product-variants/generate-product-variants.component.html", "src/lib/catalog/src/components/product-detail/product-detail.component.ts", "src/lib/catalog/src/components/product-detail/product-detail.component.html", "src/lib/catalog/src/components/product-variant-list/product-variant-list.component.ts", "src/lib/catalog/src/components/product-variant-list/product-variant-list.component.html", "src/lib/catalog/src/components/product-list/product-list-bulk-actions.ts", "src/lib/catalog/src/components/product-list/product-list.component.ts", "src/lib/catalog/src/components/product-list/product-list.component.html", "src/lib/catalog/src/components/product-variant-detail/product-variant-detail.component.ts", "src/lib/catalog/src/components/product-variant-detail/product-variant-detail.component.html", "src/lib/catalog/src/components/variant-price-detail/variant-price-detail.component.ts", "src/lib/catalog/src/components/variant-price-detail/variant-price-detail.component.html", "src/lib/catalog/src/components/variant-price-strategy-detail/variant-price-strategy-detail.component.ts", "src/lib/catalog/src/components/variant-price-strategy-detail/variant-price-strategy-detail.component.html", "src/lib/catalog/src/components/product-variant-quick-jump/product-variant-quick-jump.component.ts", "src/lib/catalog/src/components/product-variant-quick-jump/product-variant-quick-jump.component.html", "src/lib/catalog/src/components/product-variant-list/product-variant-list-bulk-actions.ts", "src/lib/catalog/src/components/product-variants-table/product-variants-table.component.ts", "src/lib/catalog/src/components/product-variants-table/product-variants-table.component.html", "src/lib/catalog/src/components/update-product-option-dialog/update-product-option-dialog.component.ts", "src/lib/catalog/src/components/update-product-option-dialog/update-product-option-dialog.component.html", "src/lib/catalog/src/components/product-list/product-list.graphql.ts", "src/lib/catalog/src/components/product-variant-detail/product-variant-detail.graphql.ts", "src/lib/catalog/src/components/product-variant-list/product-variant-list.graphql.ts"],
4
- "sourcesContent": ["/* eslint-disable */\nexport type Maybe<T> = T;\nexport type InputMaybe<T> = T;\nexport type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };\nexport type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };\nexport type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };\nexport type MakeEmpty<T extends { [key: string]: unknown }, K extends keyof T> = { [_ in K]?: never };\nexport type Incremental<T> = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never };\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: { input: string | number; output: string | number; }\n String: { input: string; output: string; }\n Boolean: { input: boolean; output: boolean; }\n Int: { input: number; output: number; }\n Float: { input: number; output: number; }\n DateTime: { input: any; output: any; }\n JSON: { input: any; output: any; }\n Money: { input: number; output: number; }\n Upload: { input: any; output: any; }\n};\n\nexport type AddFulfillmentToOrderResult = CreateFulfillmentError | EmptyOrderLineSelectionError | Fulfillment | FulfillmentStateTransitionError | InsufficientStockOnHandError | InvalidFulfillmentHandlerError | ItemsAlreadyFulfilledError;\n\nexport type AddItemInput = {\n productVariantId: Scalars['ID']['input'];\n quantity: Scalars['Int']['input'];\n};\n\nexport type AddItemToDraftOrderInput = {\n productVariantId: Scalars['ID']['input'];\n quantity: Scalars['Int']['input'];\n};\n\nexport type AddManualPaymentToOrderResult = ManualPaymentStateError | Order;\n\nexport type AddNoteToCustomerInput = {\n id: Scalars['ID']['input'];\n isPublic: Scalars['Boolean']['input'];\n note: Scalars['String']['input'];\n};\n\nexport type AddNoteToOrderInput = {\n id: Scalars['ID']['input'];\n isPublic: Scalars['Boolean']['input'];\n note: Scalars['String']['input'];\n};\n\nexport type Address = Node & {\n __typename?: 'Address';\n city?: Maybe<Scalars['String']['output']>;\n company?: Maybe<Scalars['String']['output']>;\n country: Country;\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n defaultBillingAddress?: Maybe<Scalars['Boolean']['output']>;\n defaultShippingAddress?: Maybe<Scalars['Boolean']['output']>;\n fullName?: Maybe<Scalars['String']['output']>;\n id: Scalars['ID']['output'];\n phoneNumber?: Maybe<Scalars['String']['output']>;\n postalCode?: Maybe<Scalars['String']['output']>;\n province?: Maybe<Scalars['String']['output']>;\n streetLine1: Scalars['String']['output'];\n streetLine2?: Maybe<Scalars['String']['output']>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type AdjustDraftOrderLineInput = {\n orderLineId: Scalars['ID']['input'];\n quantity: Scalars['Int']['input'];\n};\n\nexport type Adjustment = {\n __typename?: 'Adjustment';\n adjustmentSource: Scalars['String']['output'];\n amount: Scalars['Money']['output'];\n data?: Maybe<Scalars['JSON']['output']>;\n description: Scalars['String']['output'];\n type: AdjustmentType;\n};\n\nexport enum AdjustmentType {\n DISTRIBUTED_ORDER_PROMOTION = 'DISTRIBUTED_ORDER_PROMOTION',\n OTHER = 'OTHER',\n PROMOTION = 'PROMOTION'\n}\n\nexport type Administrator = Node & {\n __typename?: 'Administrator';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n emailAddress: Scalars['String']['output'];\n firstName: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n lastName: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n user: User;\n};\n\nexport type AdministratorFilterParameter = {\n _and?: InputMaybe<Array<AdministratorFilterParameter>>;\n _or?: InputMaybe<Array<AdministratorFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n emailAddress?: InputMaybe<StringOperators>;\n firstName?: InputMaybe<StringOperators>;\n id?: InputMaybe<IdOperators>;\n lastName?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type AdministratorList = PaginatedList & {\n __typename?: 'AdministratorList';\n items: Array<Administrator>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type AdministratorListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<AdministratorFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<AdministratorSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type AdministratorPaymentInput = {\n metadata?: InputMaybe<Scalars['JSON']['input']>;\n paymentMethod?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type AdministratorRefundInput = {\n /**\n * The amount to be refunded to this particular Payment. This was introduced in\n * v2.2.0 as the preferred way to specify the refund amount. The `lines`, `shipping` and `adjustment`\n * fields will be removed in a future version.\n */\n amount?: InputMaybe<Scalars['Money']['input']>;\n paymentId: Scalars['ID']['input'];\n reason?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type AdministratorSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n emailAddress?: InputMaybe<SortOrder>;\n firstName?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n lastName?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type Allocation = Node & StockMovement & {\n __typename?: 'Allocation';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n orderLine: OrderLine;\n productVariant: ProductVariant;\n quantity: Scalars['Int']['output'];\n type: StockMovementType;\n updatedAt: Scalars['DateTime']['output'];\n};\n\n/** Returned if an attempting to refund an OrderItem which has already been refunded */\nexport type AlreadyRefundedError = ErrorResult & {\n __typename?: 'AlreadyRefundedError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n refundId: Scalars['ID']['output'];\n};\n\nexport type ApplyCouponCodeResult = CouponCodeExpiredError | CouponCodeInvalidError | CouponCodeLimitError | Order;\n\nexport type Asset = Node & {\n __typename?: 'Asset';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n fileSize: Scalars['Int']['output'];\n focalPoint?: Maybe<Coordinate>;\n height: Scalars['Int']['output'];\n id: Scalars['ID']['output'];\n mimeType: Scalars['String']['output'];\n name: Scalars['String']['output'];\n preview: Scalars['String']['output'];\n source: Scalars['String']['output'];\n tags: Array<Tag>;\n type: AssetType;\n updatedAt: Scalars['DateTime']['output'];\n width: Scalars['Int']['output'];\n};\n\nexport type AssetFilterParameter = {\n _and?: InputMaybe<Array<AssetFilterParameter>>;\n _or?: InputMaybe<Array<AssetFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n fileSize?: InputMaybe<NumberOperators>;\n height?: InputMaybe<NumberOperators>;\n id?: InputMaybe<IdOperators>;\n mimeType?: InputMaybe<StringOperators>;\n name?: InputMaybe<StringOperators>;\n preview?: InputMaybe<StringOperators>;\n source?: InputMaybe<StringOperators>;\n type?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n width?: InputMaybe<NumberOperators>;\n};\n\nexport type AssetList = PaginatedList & {\n __typename?: 'AssetList';\n items: Array<Asset>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type AssetListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<AssetFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<AssetSortParameter>;\n tags?: InputMaybe<Array<Scalars['String']['input']>>;\n tagsOperator?: InputMaybe<LogicalOperator>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type AssetSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n fileSize?: InputMaybe<SortOrder>;\n height?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n mimeType?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n preview?: InputMaybe<SortOrder>;\n source?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n width?: InputMaybe<SortOrder>;\n};\n\nexport enum AssetType {\n BINARY = 'BINARY',\n IMAGE = 'IMAGE',\n VIDEO = 'VIDEO'\n}\n\nexport type AssignAssetsToChannelInput = {\n assetIds: Array<Scalars['ID']['input']>;\n channelId: Scalars['ID']['input'];\n};\n\nexport type AssignCollectionsToChannelInput = {\n channelId: Scalars['ID']['input'];\n collectionIds: Array<Scalars['ID']['input']>;\n};\n\nexport type AssignFacetsToChannelInput = {\n channelId: Scalars['ID']['input'];\n facetIds: Array<Scalars['ID']['input']>;\n};\n\nexport type AssignPaymentMethodsToChannelInput = {\n channelId: Scalars['ID']['input'];\n paymentMethodIds: Array<Scalars['ID']['input']>;\n};\n\nexport type AssignProductVariantsToChannelInput = {\n channelId: Scalars['ID']['input'];\n priceFactor?: InputMaybe<Scalars['Float']['input']>;\n productVariantIds: Array<Scalars['ID']['input']>;\n};\n\nexport type AssignProductsToChannelInput = {\n channelId: Scalars['ID']['input'];\n priceFactor?: InputMaybe<Scalars['Float']['input']>;\n productIds: Array<Scalars['ID']['input']>;\n};\n\nexport type AssignPromotionsToChannelInput = {\n channelId: Scalars['ID']['input'];\n promotionIds: Array<Scalars['ID']['input']>;\n};\n\nexport type AssignShippingMethodsToChannelInput = {\n channelId: Scalars['ID']['input'];\n shippingMethodIds: Array<Scalars['ID']['input']>;\n};\n\nexport type AssignStockLocationsToChannelInput = {\n channelId: Scalars['ID']['input'];\n stockLocationIds: Array<Scalars['ID']['input']>;\n};\n\nexport type AuthenticationInput = {\n native?: InputMaybe<NativeAuthInput>;\n};\n\nexport type AuthenticationMethod = Node & {\n __typename?: 'AuthenticationMethod';\n createdAt: Scalars['DateTime']['output'];\n id: Scalars['ID']['output'];\n strategy: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type AuthenticationResult = CurrentUser | InvalidCredentialsError;\n\nexport type BooleanCustomFieldConfig = CustomField & {\n __typename?: 'BooleanCustomFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n internal?: Maybe<Scalars['Boolean']['output']>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n nullable?: Maybe<Scalars['Boolean']['output']>;\n readonly?: Maybe<Scalars['Boolean']['output']>;\n requiresPermission?: Maybe<Array<Permission>>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\n/** Operators for filtering on a list of Boolean fields */\nexport type BooleanListOperators = {\n inList: Scalars['Boolean']['input'];\n};\n\n/** Operators for filtering on a Boolean field */\nexport type BooleanOperators = {\n eq?: InputMaybe<Scalars['Boolean']['input']>;\n isNull?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type BooleanStructFieldConfig = StructField & {\n __typename?: 'BooleanStructFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\n/** Returned if an attempting to cancel lines from an Order which is still active */\nexport type CancelActiveOrderError = ErrorResult & {\n __typename?: 'CancelActiveOrderError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n orderState: Scalars['String']['output'];\n};\n\nexport type CancelOrderInput = {\n /** Specify whether the shipping charges should also be cancelled. Defaults to false */\n cancelShipping?: InputMaybe<Scalars['Boolean']['input']>;\n /** Optionally specify which OrderLines to cancel. If not provided, all OrderLines will be cancelled */\n lines?: InputMaybe<Array<OrderLineInput>>;\n /** The id of the order to be cancelled */\n orderId: Scalars['ID']['input'];\n reason?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type CancelOrderResult = CancelActiveOrderError | EmptyOrderLineSelectionError | MultipleOrderError | Order | OrderStateTransitionError | QuantityTooGreatError;\n\n/** Returned if the Payment cancellation fails */\nexport type CancelPaymentError = ErrorResult & {\n __typename?: 'CancelPaymentError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n paymentErrorMessage: Scalars['String']['output'];\n};\n\nexport type CancelPaymentResult = CancelPaymentError | Payment | PaymentStateTransitionError;\n\nexport type Cancellation = Node & StockMovement & {\n __typename?: 'Cancellation';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n orderLine: OrderLine;\n productVariant: ProductVariant;\n quantity: Scalars['Int']['output'];\n type: StockMovementType;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type Channel = Node & {\n __typename?: 'Channel';\n availableCurrencyCodes: Array<CurrencyCode>;\n availableLanguageCodes?: Maybe<Array<LanguageCode>>;\n code: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n /** @deprecated Use defaultCurrencyCode instead */\n currencyCode: CurrencyCode;\n customFields?: Maybe<Scalars['JSON']['output']>;\n defaultCurrencyCode: CurrencyCode;\n defaultLanguageCode: LanguageCode;\n defaultShippingZone?: Maybe<Zone>;\n defaultTaxZone?: Maybe<Zone>;\n id: Scalars['ID']['output'];\n /** Not yet used - will be implemented in a future release. */\n outOfStockThreshold?: Maybe<Scalars['Int']['output']>;\n pricesIncludeTax: Scalars['Boolean']['output'];\n seller?: Maybe<Seller>;\n token: Scalars['String']['output'];\n /** Not yet used - will be implemented in a future release. */\n trackInventory?: Maybe<Scalars['Boolean']['output']>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\n/**\n * Returned when the default LanguageCode of a Channel is no longer found in the `availableLanguages`\n * of the GlobalSettings\n */\nexport type ChannelDefaultLanguageError = ErrorResult & {\n __typename?: 'ChannelDefaultLanguageError';\n channelCode: Scalars['String']['output'];\n errorCode: ErrorCode;\n language: Scalars['String']['output'];\n message: Scalars['String']['output'];\n};\n\nexport type ChannelFilterParameter = {\n _and?: InputMaybe<Array<ChannelFilterParameter>>;\n _or?: InputMaybe<Array<ChannelFilterParameter>>;\n code?: InputMaybe<StringOperators>;\n createdAt?: InputMaybe<DateOperators>;\n currencyCode?: InputMaybe<StringOperators>;\n defaultCurrencyCode?: InputMaybe<StringOperators>;\n defaultLanguageCode?: InputMaybe<StringOperators>;\n id?: InputMaybe<IdOperators>;\n outOfStockThreshold?: InputMaybe<NumberOperators>;\n pricesIncludeTax?: InputMaybe<BooleanOperators>;\n token?: InputMaybe<StringOperators>;\n trackInventory?: InputMaybe<BooleanOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type ChannelList = PaginatedList & {\n __typename?: 'ChannelList';\n items: Array<Channel>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type ChannelListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<ChannelFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<ChannelSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type ChannelSortParameter = {\n code?: InputMaybe<SortOrder>;\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n outOfStockThreshold?: InputMaybe<SortOrder>;\n token?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type Collection = Node & {\n __typename?: 'Collection';\n assets: Array<Asset>;\n breadcrumbs: Array<CollectionBreadcrumb>;\n children?: Maybe<Array<Collection>>;\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n description: Scalars['String']['output'];\n featuredAsset?: Maybe<Asset>;\n filters: Array<ConfigurableOperation>;\n id: Scalars['ID']['output'];\n inheritFilters: Scalars['Boolean']['output'];\n isPrivate: Scalars['Boolean']['output'];\n languageCode?: Maybe<LanguageCode>;\n name: Scalars['String']['output'];\n parent?: Maybe<Collection>;\n parentId: Scalars['ID']['output'];\n position: Scalars['Int']['output'];\n productVariants: ProductVariantList;\n slug: Scalars['String']['output'];\n translations: Array<CollectionTranslation>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\n\nexport type CollectionProductVariantsArgs = {\n options?: InputMaybe<ProductVariantListOptions>;\n};\n\nexport type CollectionBreadcrumb = {\n __typename?: 'CollectionBreadcrumb';\n id: Scalars['ID']['output'];\n name: Scalars['String']['output'];\n slug: Scalars['String']['output'];\n};\n\nexport type CollectionFilterParameter = {\n _and?: InputMaybe<Array<CollectionFilterParameter>>;\n _or?: InputMaybe<Array<CollectionFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n description?: InputMaybe<StringOperators>;\n id?: InputMaybe<IdOperators>;\n inheritFilters?: InputMaybe<BooleanOperators>;\n isPrivate?: InputMaybe<BooleanOperators>;\n languageCode?: InputMaybe<StringOperators>;\n name?: InputMaybe<StringOperators>;\n parentId?: InputMaybe<IdOperators>;\n position?: InputMaybe<NumberOperators>;\n slug?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type CollectionList = PaginatedList & {\n __typename?: 'CollectionList';\n items: Array<Collection>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type CollectionListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<CollectionFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<CollectionSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n topLevelOnly?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n/**\n * Which Collections are present in the products returned\n * by the search, and in what quantity.\n */\nexport type CollectionResult = {\n __typename?: 'CollectionResult';\n collection: Collection;\n count: Scalars['Int']['output'];\n};\n\nexport type CollectionSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n description?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n parentId?: InputMaybe<SortOrder>;\n position?: InputMaybe<SortOrder>;\n slug?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type CollectionTranslation = {\n __typename?: 'CollectionTranslation';\n createdAt: Scalars['DateTime']['output'];\n description: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n slug: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ConfigArg = {\n __typename?: 'ConfigArg';\n name: Scalars['String']['output'];\n value: Scalars['String']['output'];\n};\n\nexport type ConfigArgDefinition = {\n __typename?: 'ConfigArgDefinition';\n defaultValue?: Maybe<Scalars['JSON']['output']>;\n description?: Maybe<Scalars['String']['output']>;\n label?: Maybe<Scalars['String']['output']>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n required: Scalars['Boolean']['output'];\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type ConfigArgInput = {\n name: Scalars['String']['input'];\n /** A JSON stringified representation of the actual value */\n value: Scalars['String']['input'];\n};\n\nexport type ConfigurableOperation = {\n __typename?: 'ConfigurableOperation';\n args: Array<ConfigArg>;\n code: Scalars['String']['output'];\n};\n\nexport type ConfigurableOperationDefinition = {\n __typename?: 'ConfigurableOperationDefinition';\n args: Array<ConfigArgDefinition>;\n code: Scalars['String']['output'];\n description: Scalars['String']['output'];\n};\n\nexport type ConfigurableOperationInput = {\n arguments: Array<ConfigArgInput>;\n code: Scalars['String']['input'];\n};\n\nexport type Coordinate = {\n __typename?: 'Coordinate';\n x: Scalars['Float']['output'];\n y: Scalars['Float']['output'];\n};\n\nexport type CoordinateInput = {\n x: Scalars['Float']['input'];\n y: Scalars['Float']['input'];\n};\n\n/**\n * A Country of the world which your shop operates in.\n *\n * The `code` field is typically a 2-character ISO code such as \"GB\", \"US\", \"DE\" etc. This code is used in certain inputs such as\n * `UpdateAddressInput` and `CreateAddressInput` to specify the country.\n */\nexport type Country = Node & Region & {\n __typename?: 'Country';\n code: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n enabled: Scalars['Boolean']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n parent?: Maybe<Region>;\n parentId?: Maybe<Scalars['ID']['output']>;\n translations: Array<RegionTranslation>;\n type: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type CountryFilterParameter = {\n _and?: InputMaybe<Array<CountryFilterParameter>>;\n _or?: InputMaybe<Array<CountryFilterParameter>>;\n code?: InputMaybe<StringOperators>;\n createdAt?: InputMaybe<DateOperators>;\n enabled?: InputMaybe<BooleanOperators>;\n id?: InputMaybe<IdOperators>;\n languageCode?: InputMaybe<StringOperators>;\n name?: InputMaybe<StringOperators>;\n parentId?: InputMaybe<IdOperators>;\n type?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type CountryList = PaginatedList & {\n __typename?: 'CountryList';\n items: Array<Country>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type CountryListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<CountryFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<CountrySortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type CountrySortParameter = {\n code?: InputMaybe<SortOrder>;\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n parentId?: InputMaybe<SortOrder>;\n type?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type CountryTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** Returned if the provided coupon code is invalid */\nexport type CouponCodeExpiredError = ErrorResult & {\n __typename?: 'CouponCodeExpiredError';\n couponCode: Scalars['String']['output'];\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\n/** Returned if the provided coupon code is invalid */\nexport type CouponCodeInvalidError = ErrorResult & {\n __typename?: 'CouponCodeInvalidError';\n couponCode: Scalars['String']['output'];\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\n/** Returned if the provided coupon code is invalid */\nexport type CouponCodeLimitError = ErrorResult & {\n __typename?: 'CouponCodeLimitError';\n couponCode: Scalars['String']['output'];\n errorCode: ErrorCode;\n limit: Scalars['Int']['output'];\n message: Scalars['String']['output'];\n};\n\n/**\n * Input used to create an Address.\n *\n * The countryCode must correspond to a `code` property of a Country that has been defined in the\n * Vendure server. The `code` property is typically a 2-character ISO code such as \"GB\", \"US\", \"DE\" etc.\n * If an invalid code is passed, the mutation will fail.\n */\nexport type CreateAddressInput = {\n city?: InputMaybe<Scalars['String']['input']>;\n company?: InputMaybe<Scalars['String']['input']>;\n countryCode: Scalars['String']['input'];\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n defaultBillingAddress?: InputMaybe<Scalars['Boolean']['input']>;\n defaultShippingAddress?: InputMaybe<Scalars['Boolean']['input']>;\n fullName?: InputMaybe<Scalars['String']['input']>;\n phoneNumber?: InputMaybe<Scalars['String']['input']>;\n postalCode?: InputMaybe<Scalars['String']['input']>;\n province?: InputMaybe<Scalars['String']['input']>;\n streetLine1: Scalars['String']['input'];\n streetLine2?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type CreateAdministratorInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n emailAddress: Scalars['String']['input'];\n firstName: Scalars['String']['input'];\n lastName: Scalars['String']['input'];\n password: Scalars['String']['input'];\n roleIds: Array<Scalars['ID']['input']>;\n};\n\nexport type CreateAssetInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n file: Scalars['Upload']['input'];\n tags?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\nexport type CreateAssetResult = Asset | MimeTypeError;\n\nexport type CreateChannelInput = {\n availableCurrencyCodes?: InputMaybe<Array<CurrencyCode>>;\n availableLanguageCodes?: InputMaybe<Array<LanguageCode>>;\n code: Scalars['String']['input'];\n /** @deprecated Use defaultCurrencyCode instead */\n currencyCode?: InputMaybe<CurrencyCode>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n defaultCurrencyCode?: InputMaybe<CurrencyCode>;\n defaultLanguageCode: LanguageCode;\n defaultShippingZoneId: Scalars['ID']['input'];\n defaultTaxZoneId: Scalars['ID']['input'];\n outOfStockThreshold?: InputMaybe<Scalars['Int']['input']>;\n pricesIncludeTax: Scalars['Boolean']['input'];\n sellerId?: InputMaybe<Scalars['ID']['input']>;\n token: Scalars['String']['input'];\n trackInventory?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type CreateChannelResult = Channel | LanguageNotAvailableError;\n\nexport type CreateCollectionInput = {\n assetIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n featuredAssetId?: InputMaybe<Scalars['ID']['input']>;\n filters: Array<ConfigurableOperationInput>;\n inheritFilters?: InputMaybe<Scalars['Boolean']['input']>;\n isPrivate?: InputMaybe<Scalars['Boolean']['input']>;\n parentId?: InputMaybe<Scalars['ID']['input']>;\n translations: Array<CreateCollectionTranslationInput>;\n};\n\nexport type CreateCollectionTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n description: Scalars['String']['input'];\n languageCode: LanguageCode;\n name: Scalars['String']['input'];\n slug: Scalars['String']['input'];\n};\n\nexport type CreateCountryInput = {\n code: Scalars['String']['input'];\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled: Scalars['Boolean']['input'];\n translations: Array<CountryTranslationInput>;\n};\n\nexport type CreateCustomerGroupInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n customerIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n name: Scalars['String']['input'];\n};\n\nexport type CreateCustomerInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n emailAddress: Scalars['String']['input'];\n firstName: Scalars['String']['input'];\n lastName: Scalars['String']['input'];\n phoneNumber?: InputMaybe<Scalars['String']['input']>;\n title?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type CreateCustomerResult = Customer | EmailAddressConflictError;\n\nexport type CreateFacetInput = {\n code: Scalars['String']['input'];\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n isPrivate: Scalars['Boolean']['input'];\n translations: Array<FacetTranslationInput>;\n values?: InputMaybe<Array<CreateFacetValueWithFacetInput>>;\n};\n\nexport type CreateFacetValueInput = {\n code: Scalars['String']['input'];\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n facetId: Scalars['ID']['input'];\n translations: Array<FacetValueTranslationInput>;\n};\n\nexport type CreateFacetValueWithFacetInput = {\n code: Scalars['String']['input'];\n translations: Array<FacetValueTranslationInput>;\n};\n\n/** Returned if an error is thrown in a FulfillmentHandler's createFulfillment method */\nexport type CreateFulfillmentError = ErrorResult & {\n __typename?: 'CreateFulfillmentError';\n errorCode: ErrorCode;\n fulfillmentHandlerError: Scalars['String']['output'];\n message: Scalars['String']['output'];\n};\n\nexport type CreateGroupOptionInput = {\n code: Scalars['String']['input'];\n translations: Array<ProductOptionGroupTranslationInput>;\n};\n\nexport type CreatePaymentMethodInput = {\n checker?: InputMaybe<ConfigurableOperationInput>;\n code: Scalars['String']['input'];\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled: Scalars['Boolean']['input'];\n handler: ConfigurableOperationInput;\n translations: Array<PaymentMethodTranslationInput>;\n};\n\nexport type CreateProductInput = {\n assetIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n facetValueIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n featuredAssetId?: InputMaybe<Scalars['ID']['input']>;\n translations: Array<ProductTranslationInput>;\n};\n\nexport type CreateProductOptionGroupInput = {\n code: Scalars['String']['input'];\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n options: Array<CreateGroupOptionInput>;\n translations: Array<ProductOptionGroupTranslationInput>;\n};\n\nexport type CreateProductOptionInput = {\n code: Scalars['String']['input'];\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n productOptionGroupId: Scalars['ID']['input'];\n translations: Array<ProductOptionGroupTranslationInput>;\n};\n\nexport type CreateProductVariantInput = {\n assetIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n facetValueIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n featuredAssetId?: InputMaybe<Scalars['ID']['input']>;\n optionIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n outOfStockThreshold?: InputMaybe<Scalars['Int']['input']>;\n price?: InputMaybe<Scalars['Money']['input']>;\n prices?: InputMaybe<Array<InputMaybe<CreateProductVariantPriceInput>>>;\n productId: Scalars['ID']['input'];\n sku: Scalars['String']['input'];\n stockLevels?: InputMaybe<Array<StockLevelInput>>;\n stockOnHand?: InputMaybe<Scalars['Int']['input']>;\n taxCategoryId?: InputMaybe<Scalars['ID']['input']>;\n trackInventory?: InputMaybe<GlobalFlag>;\n translations: Array<ProductVariantTranslationInput>;\n useGlobalOutOfStockThreshold?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type CreateProductVariantOptionInput = {\n code: Scalars['String']['input'];\n optionGroupId: Scalars['ID']['input'];\n translations: Array<ProductOptionTranslationInput>;\n};\n\nexport type CreateProductVariantPriceInput = {\n currencyCode: CurrencyCode;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n price: Scalars['Money']['input'];\n};\n\nexport type CreatePromotionInput = {\n actions: Array<ConfigurableOperationInput>;\n conditions: Array<ConfigurableOperationInput>;\n couponCode?: InputMaybe<Scalars['String']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled: Scalars['Boolean']['input'];\n endsAt?: InputMaybe<Scalars['DateTime']['input']>;\n perCustomerUsageLimit?: InputMaybe<Scalars['Int']['input']>;\n startsAt?: InputMaybe<Scalars['DateTime']['input']>;\n translations: Array<PromotionTranslationInput>;\n usageLimit?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type CreatePromotionResult = MissingConditionsError | Promotion;\n\nexport type CreateProvinceInput = {\n code: Scalars['String']['input'];\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled: Scalars['Boolean']['input'];\n translations: Array<ProvinceTranslationInput>;\n};\n\nexport type CreateRoleInput = {\n channelIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n code: Scalars['String']['input'];\n description: Scalars['String']['input'];\n permissions: Array<Permission>;\n};\n\nexport type CreateSellerInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n name: Scalars['String']['input'];\n};\n\nexport type CreateShippingMethodInput = {\n calculator: ConfigurableOperationInput;\n checker: ConfigurableOperationInput;\n code: Scalars['String']['input'];\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n fulfillmentHandler: Scalars['String']['input'];\n translations: Array<ShippingMethodTranslationInput>;\n};\n\nexport type CreateStockLocationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n description?: InputMaybe<Scalars['String']['input']>;\n name: Scalars['String']['input'];\n};\n\nexport type CreateTagInput = {\n value: Scalars['String']['input'];\n};\n\nexport type CreateTaxCategoryInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n isDefault?: InputMaybe<Scalars['Boolean']['input']>;\n name: Scalars['String']['input'];\n};\n\nexport type CreateTaxRateInput = {\n categoryId: Scalars['ID']['input'];\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n customerGroupId?: InputMaybe<Scalars['ID']['input']>;\n enabled: Scalars['Boolean']['input'];\n name: Scalars['String']['input'];\n value: Scalars['Float']['input'];\n zoneId: Scalars['ID']['input'];\n};\n\nexport type CreateZoneInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n memberIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n name: Scalars['String']['input'];\n};\n\n/**\n * @description\n * ISO 4217 currency code\n *\n * @docsCategory common\n */\nexport enum CurrencyCode {\n /** United Arab Emirates dirham */\n AED = 'AED',\n /** Afghan afghani */\n AFN = 'AFN',\n /** Albanian lek */\n ALL = 'ALL',\n /** Armenian dram */\n AMD = 'AMD',\n /** Netherlands Antillean guilder */\n ANG = 'ANG',\n /** Angolan kwanza */\n AOA = 'AOA',\n /** Argentine peso */\n ARS = 'ARS',\n /** Australian dollar */\n AUD = 'AUD',\n /** Aruban florin */\n AWG = 'AWG',\n /** Azerbaijani manat */\n AZN = 'AZN',\n /** Bosnia and Herzegovina convertible mark */\n BAM = 'BAM',\n /** Barbados dollar */\n BBD = 'BBD',\n /** Bangladeshi taka */\n BDT = 'BDT',\n /** Bulgarian lev */\n BGN = 'BGN',\n /** Bahraini dinar */\n BHD = 'BHD',\n /** Burundian franc */\n BIF = 'BIF',\n /** Bermudian dollar */\n BMD = 'BMD',\n /** Brunei dollar */\n BND = 'BND',\n /** Boliviano */\n BOB = 'BOB',\n /** Brazilian real */\n BRL = 'BRL',\n /** Bahamian dollar */\n BSD = 'BSD',\n /** Bhutanese ngultrum */\n BTN = 'BTN',\n /** Botswana pula */\n BWP = 'BWP',\n /** Belarusian ruble */\n BYN = 'BYN',\n /** Belize dollar */\n BZD = 'BZD',\n /** Canadian dollar */\n CAD = 'CAD',\n /** Congolese franc */\n CDF = 'CDF',\n /** Swiss franc */\n CHF = 'CHF',\n /** Chilean peso */\n CLP = 'CLP',\n /** Renminbi (Chinese) yuan */\n CNY = 'CNY',\n /** Colombian peso */\n COP = 'COP',\n /** Costa Rican colon */\n CRC = 'CRC',\n /** Cuban convertible peso */\n CUC = 'CUC',\n /** Cuban peso */\n CUP = 'CUP',\n /** Cape Verde escudo */\n CVE = 'CVE',\n /** Czech koruna */\n CZK = 'CZK',\n /** Djiboutian franc */\n DJF = 'DJF',\n /** Danish krone */\n DKK = 'DKK',\n /** Dominican peso */\n DOP = 'DOP',\n /** Algerian dinar */\n DZD = 'DZD',\n /** Egyptian pound */\n EGP = 'EGP',\n /** Eritrean nakfa */\n ERN = 'ERN',\n /** Ethiopian birr */\n ETB = 'ETB',\n /** Euro */\n EUR = 'EUR',\n /** Fiji dollar */\n FJD = 'FJD',\n /** Falkland Islands pound */\n FKP = 'FKP',\n /** Pound sterling */\n GBP = 'GBP',\n /** Georgian lari */\n GEL = 'GEL',\n /** Ghanaian cedi */\n GHS = 'GHS',\n /** Gibraltar pound */\n GIP = 'GIP',\n /** Gambian dalasi */\n GMD = 'GMD',\n /** Guinean franc */\n GNF = 'GNF',\n /** Guatemalan quetzal */\n GTQ = 'GTQ',\n /** Guyanese dollar */\n GYD = 'GYD',\n /** Hong Kong dollar */\n HKD = 'HKD',\n /** Honduran lempira */\n HNL = 'HNL',\n /** Croatian kuna */\n HRK = 'HRK',\n /** Haitian gourde */\n HTG = 'HTG',\n /** Hungarian forint */\n HUF = 'HUF',\n /** Indonesian rupiah */\n IDR = 'IDR',\n /** Israeli new shekel */\n ILS = 'ILS',\n /** Indian rupee */\n INR = 'INR',\n /** Iraqi dinar */\n IQD = 'IQD',\n /** Iranian rial */\n IRR = 'IRR',\n /** Icelandic kr\u00F3na */\n ISK = 'ISK',\n /** Jamaican dollar */\n JMD = 'JMD',\n /** Jordanian dinar */\n JOD = 'JOD',\n /** Japanese yen */\n JPY = 'JPY',\n /** Kenyan shilling */\n KES = 'KES',\n /** Kyrgyzstani som */\n KGS = 'KGS',\n /** Cambodian riel */\n KHR = 'KHR',\n /** Comoro franc */\n KMF = 'KMF',\n /** North Korean won */\n KPW = 'KPW',\n /** South Korean won */\n KRW = 'KRW',\n /** Kuwaiti dinar */\n KWD = 'KWD',\n /** Cayman Islands dollar */\n KYD = 'KYD',\n /** Kazakhstani tenge */\n KZT = 'KZT',\n /** Lao kip */\n LAK = 'LAK',\n /** Lebanese pound */\n LBP = 'LBP',\n /** Sri Lankan rupee */\n LKR = 'LKR',\n /** Liberian dollar */\n LRD = 'LRD',\n /** Lesotho loti */\n LSL = 'LSL',\n /** Libyan dinar */\n LYD = 'LYD',\n /** Moroccan dirham */\n MAD = 'MAD',\n /** Moldovan leu */\n MDL = 'MDL',\n /** Malagasy ariary */\n MGA = 'MGA',\n /** Macedonian denar */\n MKD = 'MKD',\n /** Myanmar kyat */\n MMK = 'MMK',\n /** Mongolian t\u00F6gr\u00F6g */\n MNT = 'MNT',\n /** Macanese pataca */\n MOP = 'MOP',\n /** Mauritanian ouguiya */\n MRU = 'MRU',\n /** Mauritian rupee */\n MUR = 'MUR',\n /** Maldivian rufiyaa */\n MVR = 'MVR',\n /** Malawian kwacha */\n MWK = 'MWK',\n /** Mexican peso */\n MXN = 'MXN',\n /** Malaysian ringgit */\n MYR = 'MYR',\n /** Mozambican metical */\n MZN = 'MZN',\n /** Namibian dollar */\n NAD = 'NAD',\n /** Nigerian naira */\n NGN = 'NGN',\n /** Nicaraguan c\u00F3rdoba */\n NIO = 'NIO',\n /** Norwegian krone */\n NOK = 'NOK',\n /** Nepalese rupee */\n NPR = 'NPR',\n /** New Zealand dollar */\n NZD = 'NZD',\n /** Omani rial */\n OMR = 'OMR',\n /** Panamanian balboa */\n PAB = 'PAB',\n /** Peruvian sol */\n PEN = 'PEN',\n /** Papua New Guinean kina */\n PGK = 'PGK',\n /** Philippine peso */\n PHP = 'PHP',\n /** Pakistani rupee */\n PKR = 'PKR',\n /** Polish z\u0142oty */\n PLN = 'PLN',\n /** Paraguayan guaran\u00ED */\n PYG = 'PYG',\n /** Qatari riyal */\n QAR = 'QAR',\n /** Romanian leu */\n RON = 'RON',\n /** Serbian dinar */\n RSD = 'RSD',\n /** Russian ruble */\n RUB = 'RUB',\n /** Rwandan franc */\n RWF = 'RWF',\n /** Saudi riyal */\n SAR = 'SAR',\n /** Solomon Islands dollar */\n SBD = 'SBD',\n /** Seychelles rupee */\n SCR = 'SCR',\n /** Sudanese pound */\n SDG = 'SDG',\n /** Swedish krona/kronor */\n SEK = 'SEK',\n /** Singapore dollar */\n SGD = 'SGD',\n /** Saint Helena pound */\n SHP = 'SHP',\n /** Sierra Leonean leone */\n SLL = 'SLL',\n /** Somali shilling */\n SOS = 'SOS',\n /** Surinamese dollar */\n SRD = 'SRD',\n /** South Sudanese pound */\n SSP = 'SSP',\n /** S\u00E3o Tom\u00E9 and Pr\u00EDncipe dobra */\n STN = 'STN',\n /** Salvadoran col\u00F3n */\n SVC = 'SVC',\n /** Syrian pound */\n SYP = 'SYP',\n /** Swazi lilangeni */\n SZL = 'SZL',\n /** Thai baht */\n THB = 'THB',\n /** Tajikistani somoni */\n TJS = 'TJS',\n /** Turkmenistan manat */\n TMT = 'TMT',\n /** Tunisian dinar */\n TND = 'TND',\n /** Tongan pa\u02BBanga */\n TOP = 'TOP',\n /** Turkish lira */\n TRY = 'TRY',\n /** Trinidad and Tobago dollar */\n TTD = 'TTD',\n /** New Taiwan dollar */\n TWD = 'TWD',\n /** Tanzanian shilling */\n TZS = 'TZS',\n /** Ukrainian hryvnia */\n UAH = 'UAH',\n /** Ugandan shilling */\n UGX = 'UGX',\n /** United States dollar */\n USD = 'USD',\n /** Uruguayan peso */\n UYU = 'UYU',\n /** Uzbekistan som */\n UZS = 'UZS',\n /** Venezuelan bol\u00EDvar soberano */\n VES = 'VES',\n /** Vietnamese \u0111\u1ED3ng */\n VND = 'VND',\n /** Vanuatu vatu */\n VUV = 'VUV',\n /** Samoan tala */\n WST = 'WST',\n /** CFA franc BEAC */\n XAF = 'XAF',\n /** East Caribbean dollar */\n XCD = 'XCD',\n /** CFA franc BCEAO */\n XOF = 'XOF',\n /** CFP franc (franc Pacifique) */\n XPF = 'XPF',\n /** Yemeni rial */\n YER = 'YER',\n /** South African rand */\n ZAR = 'ZAR',\n /** Zambian kwacha */\n ZMW = 'ZMW',\n /** Zimbabwean dollar */\n ZWL = 'ZWL'\n}\n\nexport type CurrentUser = {\n __typename?: 'CurrentUser';\n channels: Array<CurrentUserChannel>;\n id: Scalars['ID']['output'];\n identifier: Scalars['String']['output'];\n};\n\nexport type CurrentUserChannel = {\n __typename?: 'CurrentUserChannel';\n code: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n permissions: Array<Permission>;\n token: Scalars['String']['output'];\n};\n\nexport type CustomField = {\n description?: Maybe<Array<LocalizedString>>;\n internal?: Maybe<Scalars['Boolean']['output']>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n nullable?: Maybe<Scalars['Boolean']['output']>;\n readonly?: Maybe<Scalars['Boolean']['output']>;\n requiresPermission?: Maybe<Array<Permission>>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type CustomFieldConfig = BooleanCustomFieldConfig | DateTimeCustomFieldConfig | FloatCustomFieldConfig | IntCustomFieldConfig | LocaleStringCustomFieldConfig | LocaleTextCustomFieldConfig | RelationCustomFieldConfig | StringCustomFieldConfig | StructCustomFieldConfig | TextCustomFieldConfig;\n\n/**\n * This type is deprecated in v2.2 in favor of the EntityCustomFields type,\n * which allows custom fields to be defined on user-supplied entities.\n */\nexport type CustomFields = {\n __typename?: 'CustomFields';\n Address: Array<CustomFieldConfig>;\n Administrator: Array<CustomFieldConfig>;\n Asset: Array<CustomFieldConfig>;\n Channel: Array<CustomFieldConfig>;\n Collection: Array<CustomFieldConfig>;\n Customer: Array<CustomFieldConfig>;\n CustomerGroup: Array<CustomFieldConfig>;\n Facet: Array<CustomFieldConfig>;\n FacetValue: Array<CustomFieldConfig>;\n Fulfillment: Array<CustomFieldConfig>;\n GlobalSettings: Array<CustomFieldConfig>;\n HistoryEntry: Array<CustomFieldConfig>;\n Order: Array<CustomFieldConfig>;\n OrderLine: Array<CustomFieldConfig>;\n Payment: Array<CustomFieldConfig>;\n PaymentMethod: Array<CustomFieldConfig>;\n Product: Array<CustomFieldConfig>;\n ProductOption: Array<CustomFieldConfig>;\n ProductOptionGroup: Array<CustomFieldConfig>;\n ProductVariant: Array<CustomFieldConfig>;\n ProductVariantPrice: Array<CustomFieldConfig>;\n Promotion: Array<CustomFieldConfig>;\n Refund: Array<CustomFieldConfig>;\n Region: Array<CustomFieldConfig>;\n Seller: Array<CustomFieldConfig>;\n Session: Array<CustomFieldConfig>;\n ShippingLine: Array<CustomFieldConfig>;\n ShippingMethod: Array<CustomFieldConfig>;\n StockLevel: Array<CustomFieldConfig>;\n StockLocation: Array<CustomFieldConfig>;\n StockMovement: Array<CustomFieldConfig>;\n TaxCategory: Array<CustomFieldConfig>;\n TaxRate: Array<CustomFieldConfig>;\n User: Array<CustomFieldConfig>;\n Zone: Array<CustomFieldConfig>;\n};\n\nexport type Customer = Node & {\n __typename?: 'Customer';\n addresses?: Maybe<Array<Address>>;\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n emailAddress: Scalars['String']['output'];\n firstName: Scalars['String']['output'];\n groups: Array<CustomerGroup>;\n history: HistoryEntryList;\n id: Scalars['ID']['output'];\n lastName: Scalars['String']['output'];\n orders: OrderList;\n phoneNumber?: Maybe<Scalars['String']['output']>;\n title?: Maybe<Scalars['String']['output']>;\n updatedAt: Scalars['DateTime']['output'];\n user?: Maybe<User>;\n};\n\n\nexport type CustomerHistoryArgs = {\n options?: InputMaybe<HistoryEntryListOptions>;\n};\n\n\nexport type CustomerOrdersArgs = {\n options?: InputMaybe<OrderListOptions>;\n};\n\nexport type CustomerFilterParameter = {\n _and?: InputMaybe<Array<CustomerFilterParameter>>;\n _or?: InputMaybe<Array<CustomerFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n emailAddress?: InputMaybe<StringOperators>;\n firstName?: InputMaybe<StringOperators>;\n id?: InputMaybe<IdOperators>;\n lastName?: InputMaybe<StringOperators>;\n phoneNumber?: InputMaybe<StringOperators>;\n postalCode?: InputMaybe<StringOperators>;\n title?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type CustomerGroup = Node & {\n __typename?: 'CustomerGroup';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n customers: CustomerList;\n id: Scalars['ID']['output'];\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\n\nexport type CustomerGroupCustomersArgs = {\n options?: InputMaybe<CustomerListOptions>;\n};\n\nexport type CustomerGroupFilterParameter = {\n _and?: InputMaybe<Array<CustomerGroupFilterParameter>>;\n _or?: InputMaybe<Array<CustomerGroupFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n id?: InputMaybe<IdOperators>;\n name?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type CustomerGroupList = PaginatedList & {\n __typename?: 'CustomerGroupList';\n items: Array<CustomerGroup>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type CustomerGroupListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<CustomerGroupFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<CustomerGroupSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type CustomerGroupSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type CustomerList = PaginatedList & {\n __typename?: 'CustomerList';\n items: Array<Customer>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type CustomerListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<CustomerFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<CustomerSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type CustomerSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n emailAddress?: InputMaybe<SortOrder>;\n firstName?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n lastName?: InputMaybe<SortOrder>;\n phoneNumber?: InputMaybe<SortOrder>;\n title?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\n/** Operators for filtering on a list of Date fields */\nexport type DateListOperators = {\n inList: Scalars['DateTime']['input'];\n};\n\n/** Operators for filtering on a DateTime field */\nexport type DateOperators = {\n after?: InputMaybe<Scalars['DateTime']['input']>;\n before?: InputMaybe<Scalars['DateTime']['input']>;\n between?: InputMaybe<DateRange>;\n eq?: InputMaybe<Scalars['DateTime']['input']>;\n isNull?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type DateRange = {\n end: Scalars['DateTime']['input'];\n start: Scalars['DateTime']['input'];\n};\n\n/**\n * Expects the same validation formats as the `<input type=\"datetime-local\">` HTML element.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local#Additional_attributes\n */\nexport type DateTimeCustomFieldConfig = CustomField & {\n __typename?: 'DateTimeCustomFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n internal?: Maybe<Scalars['Boolean']['output']>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n max?: Maybe<Scalars['String']['output']>;\n min?: Maybe<Scalars['String']['output']>;\n name: Scalars['String']['output'];\n nullable?: Maybe<Scalars['Boolean']['output']>;\n readonly?: Maybe<Scalars['Boolean']['output']>;\n requiresPermission?: Maybe<Array<Permission>>;\n step?: Maybe<Scalars['Int']['output']>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\n/**\n * Expects the same validation formats as the `<input type=\"datetime-local\">` HTML element.\n * See https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/datetime-local#Additional_attributes\n */\nexport type DateTimeStructFieldConfig = StructField & {\n __typename?: 'DateTimeStructFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n max?: Maybe<Scalars['String']['output']>;\n min?: Maybe<Scalars['String']['output']>;\n name: Scalars['String']['output'];\n step?: Maybe<Scalars['Int']['output']>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type DeleteAssetInput = {\n assetId: Scalars['ID']['input'];\n deleteFromAllChannels?: InputMaybe<Scalars['Boolean']['input']>;\n force?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type DeleteAssetsInput = {\n assetIds: Array<Scalars['ID']['input']>;\n deleteFromAllChannels?: InputMaybe<Scalars['Boolean']['input']>;\n force?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type DeleteStockLocationInput = {\n id: Scalars['ID']['input'];\n transferToLocationId?: InputMaybe<Scalars['ID']['input']>;\n};\n\nexport type DeletionResponse = {\n __typename?: 'DeletionResponse';\n message?: Maybe<Scalars['String']['output']>;\n result: DeletionResult;\n};\n\nexport enum DeletionResult {\n /** The entity was successfully deleted */\n DELETED = 'DELETED',\n /** Deletion did not take place, reason given in message */\n NOT_DELETED = 'NOT_DELETED'\n}\n\nexport type Discount = {\n __typename?: 'Discount';\n adjustmentSource: Scalars['String']['output'];\n amount: Scalars['Money']['output'];\n amountWithTax: Scalars['Money']['output'];\n description: Scalars['String']['output'];\n type: AdjustmentType;\n};\n\nexport type DuplicateEntityError = ErrorResult & {\n __typename?: 'DuplicateEntityError';\n duplicationError: Scalars['String']['output'];\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type DuplicateEntityInput = {\n duplicatorInput: ConfigurableOperationInput;\n entityId: Scalars['ID']['input'];\n entityName: Scalars['String']['input'];\n};\n\nexport type DuplicateEntityResult = DuplicateEntityError | DuplicateEntitySuccess;\n\nexport type DuplicateEntitySuccess = {\n __typename?: 'DuplicateEntitySuccess';\n newEntityId: Scalars['ID']['output'];\n};\n\n/** Returned when attempting to create a Customer with an email address already registered to an existing User. */\nexport type EmailAddressConflictError = ErrorResult & {\n __typename?: 'EmailAddressConflictError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\n/** Returned if no OrderLines have been specified for the operation */\nexport type EmptyOrderLineSelectionError = ErrorResult & {\n __typename?: 'EmptyOrderLineSelectionError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type EntityCustomFields = {\n __typename?: 'EntityCustomFields';\n customFields: Array<CustomFieldConfig>;\n entityName: Scalars['String']['output'];\n};\n\nexport type EntityDuplicatorDefinition = {\n __typename?: 'EntityDuplicatorDefinition';\n args: Array<ConfigArgDefinition>;\n code: Scalars['String']['output'];\n description: Scalars['String']['output'];\n forEntities: Array<Scalars['String']['output']>;\n requiresPermission: Array<Permission>;\n};\n\nexport enum ErrorCode {\n ALREADY_REFUNDED_ERROR = 'ALREADY_REFUNDED_ERROR',\n CANCEL_ACTIVE_ORDER_ERROR = 'CANCEL_ACTIVE_ORDER_ERROR',\n CANCEL_PAYMENT_ERROR = 'CANCEL_PAYMENT_ERROR',\n CHANNEL_DEFAULT_LANGUAGE_ERROR = 'CHANNEL_DEFAULT_LANGUAGE_ERROR',\n COUPON_CODE_EXPIRED_ERROR = 'COUPON_CODE_EXPIRED_ERROR',\n COUPON_CODE_INVALID_ERROR = 'COUPON_CODE_INVALID_ERROR',\n COUPON_CODE_LIMIT_ERROR = 'COUPON_CODE_LIMIT_ERROR',\n CREATE_FULFILLMENT_ERROR = 'CREATE_FULFILLMENT_ERROR',\n DUPLICATE_ENTITY_ERROR = 'DUPLICATE_ENTITY_ERROR',\n EMAIL_ADDRESS_CONFLICT_ERROR = 'EMAIL_ADDRESS_CONFLICT_ERROR',\n EMPTY_ORDER_LINE_SELECTION_ERROR = 'EMPTY_ORDER_LINE_SELECTION_ERROR',\n FACET_IN_USE_ERROR = 'FACET_IN_USE_ERROR',\n FULFILLMENT_STATE_TRANSITION_ERROR = 'FULFILLMENT_STATE_TRANSITION_ERROR',\n GUEST_CHECKOUT_ERROR = 'GUEST_CHECKOUT_ERROR',\n INELIGIBLE_SHIPPING_METHOD_ERROR = 'INELIGIBLE_SHIPPING_METHOD_ERROR',\n INSUFFICIENT_STOCK_ERROR = 'INSUFFICIENT_STOCK_ERROR',\n INSUFFICIENT_STOCK_ON_HAND_ERROR = 'INSUFFICIENT_STOCK_ON_HAND_ERROR',\n INVALID_CREDENTIALS_ERROR = 'INVALID_CREDENTIALS_ERROR',\n INVALID_FULFILLMENT_HANDLER_ERROR = 'INVALID_FULFILLMENT_HANDLER_ERROR',\n ITEMS_ALREADY_FULFILLED_ERROR = 'ITEMS_ALREADY_FULFILLED_ERROR',\n LANGUAGE_NOT_AVAILABLE_ERROR = 'LANGUAGE_NOT_AVAILABLE_ERROR',\n MANUAL_PAYMENT_STATE_ERROR = 'MANUAL_PAYMENT_STATE_ERROR',\n MIME_TYPE_ERROR = 'MIME_TYPE_ERROR',\n MISSING_CONDITIONS_ERROR = 'MISSING_CONDITIONS_ERROR',\n MULTIPLE_ORDER_ERROR = 'MULTIPLE_ORDER_ERROR',\n NATIVE_AUTH_STRATEGY_ERROR = 'NATIVE_AUTH_STRATEGY_ERROR',\n NEGATIVE_QUANTITY_ERROR = 'NEGATIVE_QUANTITY_ERROR',\n NOTHING_TO_REFUND_ERROR = 'NOTHING_TO_REFUND_ERROR',\n NO_ACTIVE_ORDER_ERROR = 'NO_ACTIVE_ORDER_ERROR',\n NO_CHANGES_SPECIFIED_ERROR = 'NO_CHANGES_SPECIFIED_ERROR',\n ORDER_INTERCEPTOR_ERROR = 'ORDER_INTERCEPTOR_ERROR',\n ORDER_LIMIT_ERROR = 'ORDER_LIMIT_ERROR',\n ORDER_MODIFICATION_ERROR = 'ORDER_MODIFICATION_ERROR',\n ORDER_MODIFICATION_STATE_ERROR = 'ORDER_MODIFICATION_STATE_ERROR',\n ORDER_STATE_TRANSITION_ERROR = 'ORDER_STATE_TRANSITION_ERROR',\n PAYMENT_METHOD_MISSING_ERROR = 'PAYMENT_METHOD_MISSING_ERROR',\n PAYMENT_ORDER_MISMATCH_ERROR = 'PAYMENT_ORDER_MISMATCH_ERROR',\n PAYMENT_STATE_TRANSITION_ERROR = 'PAYMENT_STATE_TRANSITION_ERROR',\n PRODUCT_OPTION_IN_USE_ERROR = 'PRODUCT_OPTION_IN_USE_ERROR',\n QUANTITY_TOO_GREAT_ERROR = 'QUANTITY_TOO_GREAT_ERROR',\n REFUND_AMOUNT_ERROR = 'REFUND_AMOUNT_ERROR',\n REFUND_ORDER_STATE_ERROR = 'REFUND_ORDER_STATE_ERROR',\n REFUND_PAYMENT_ID_MISSING_ERROR = 'REFUND_PAYMENT_ID_MISSING_ERROR',\n REFUND_STATE_TRANSITION_ERROR = 'REFUND_STATE_TRANSITION_ERROR',\n SETTLE_PAYMENT_ERROR = 'SETTLE_PAYMENT_ERROR',\n UNKNOWN_ERROR = 'UNKNOWN_ERROR'\n}\n\nexport type ErrorResult = {\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type Facet = Node & {\n __typename?: 'Facet';\n code: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n isPrivate: Scalars['Boolean']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n translations: Array<FacetTranslation>;\n updatedAt: Scalars['DateTime']['output'];\n /** Returns a paginated, sortable, filterable list of the Facet's values. Added in v2.1.0. */\n valueList: FacetValueList;\n values: Array<FacetValue>;\n};\n\n\nexport type FacetValueListArgs = {\n options?: InputMaybe<FacetValueListOptions>;\n};\n\nexport type FacetFilterParameter = {\n _and?: InputMaybe<Array<FacetFilterParameter>>;\n _or?: InputMaybe<Array<FacetFilterParameter>>;\n code?: InputMaybe<StringOperators>;\n createdAt?: InputMaybe<DateOperators>;\n id?: InputMaybe<IdOperators>;\n isPrivate?: InputMaybe<BooleanOperators>;\n languageCode?: InputMaybe<StringOperators>;\n name?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type FacetInUseError = ErrorResult & {\n __typename?: 'FacetInUseError';\n errorCode: ErrorCode;\n facetCode: Scalars['String']['output'];\n message: Scalars['String']['output'];\n productCount: Scalars['Int']['output'];\n variantCount: Scalars['Int']['output'];\n};\n\nexport type FacetList = PaginatedList & {\n __typename?: 'FacetList';\n items: Array<Facet>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type FacetListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<FacetFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<FacetSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type FacetSortParameter = {\n code?: InputMaybe<SortOrder>;\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type FacetTranslation = {\n __typename?: 'FacetTranslation';\n createdAt: Scalars['DateTime']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type FacetTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type FacetValue = Node & {\n __typename?: 'FacetValue';\n code: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n facet: Facet;\n facetId: Scalars['ID']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n translations: Array<FacetValueTranslation>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\n/**\n * Used to construct boolean expressions for filtering search results\n * by FacetValue ID. Examples:\n *\n * * ID=1 OR ID=2: `{ facetValueFilters: [{ or: [1,2] }] }`\n * * ID=1 AND ID=2: `{ facetValueFilters: [{ and: 1 }, { and: 2 }] }`\n * * ID=1 AND (ID=2 OR ID=3): `{ facetValueFilters: [{ and: 1 }, { or: [2,3] }] }`\n */\nexport type FacetValueFilterInput = {\n and?: InputMaybe<Scalars['ID']['input']>;\n or?: InputMaybe<Array<Scalars['ID']['input']>>;\n};\n\nexport type FacetValueFilterParameter = {\n _and?: InputMaybe<Array<FacetValueFilterParameter>>;\n _or?: InputMaybe<Array<FacetValueFilterParameter>>;\n code?: InputMaybe<StringOperators>;\n createdAt?: InputMaybe<DateOperators>;\n facetId?: InputMaybe<IdOperators>;\n id?: InputMaybe<IdOperators>;\n languageCode?: InputMaybe<StringOperators>;\n name?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type FacetValueList = PaginatedList & {\n __typename?: 'FacetValueList';\n items: Array<FacetValue>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type FacetValueListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<FacetValueFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<FacetValueSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\n/**\n * Which FacetValues are present in the products returned\n * by the search, and in what quantity.\n */\nexport type FacetValueResult = {\n __typename?: 'FacetValueResult';\n count: Scalars['Int']['output'];\n facetValue: FacetValue;\n};\n\nexport type FacetValueSortParameter = {\n code?: InputMaybe<SortOrder>;\n createdAt?: InputMaybe<SortOrder>;\n facetId?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type FacetValueTranslation = {\n __typename?: 'FacetValueTranslation';\n createdAt: Scalars['DateTime']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type FacetValueTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type FloatCustomFieldConfig = CustomField & {\n __typename?: 'FloatCustomFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n internal?: Maybe<Scalars['Boolean']['output']>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n max?: Maybe<Scalars['Float']['output']>;\n min?: Maybe<Scalars['Float']['output']>;\n name: Scalars['String']['output'];\n nullable?: Maybe<Scalars['Boolean']['output']>;\n readonly?: Maybe<Scalars['Boolean']['output']>;\n requiresPermission?: Maybe<Array<Permission>>;\n step?: Maybe<Scalars['Float']['output']>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type FloatStructFieldConfig = StructField & {\n __typename?: 'FloatStructFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n max?: Maybe<Scalars['Float']['output']>;\n min?: Maybe<Scalars['Float']['output']>;\n name: Scalars['String']['output'];\n step?: Maybe<Scalars['Float']['output']>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type FulfillOrderInput = {\n handler: ConfigurableOperationInput;\n lines: Array<OrderLineInput>;\n};\n\nexport type Fulfillment = Node & {\n __typename?: 'Fulfillment';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n lines: Array<FulfillmentLine>;\n method: Scalars['String']['output'];\n nextStates: Array<Scalars['String']['output']>;\n state: Scalars['String']['output'];\n /** @deprecated Use the `lines` field instead */\n summary: Array<FulfillmentLine>;\n trackingCode?: Maybe<Scalars['String']['output']>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type FulfillmentLine = {\n __typename?: 'FulfillmentLine';\n fulfillment: Fulfillment;\n fulfillmentId: Scalars['ID']['output'];\n orderLine: OrderLine;\n orderLineId: Scalars['ID']['output'];\n quantity: Scalars['Int']['output'];\n};\n\n/** Returned when there is an error in transitioning the Fulfillment state */\nexport type FulfillmentStateTransitionError = ErrorResult & {\n __typename?: 'FulfillmentStateTransitionError';\n errorCode: ErrorCode;\n fromState: Scalars['String']['output'];\n message: Scalars['String']['output'];\n toState: Scalars['String']['output'];\n transitionError: Scalars['String']['output'];\n};\n\nexport enum GlobalFlag {\n FALSE = 'FALSE',\n INHERIT = 'INHERIT',\n TRUE = 'TRUE'\n}\n\nexport type GlobalSettings = {\n __typename?: 'GlobalSettings';\n availableLanguages: Array<LanguageCode>;\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n outOfStockThreshold: Scalars['Int']['output'];\n serverConfig: ServerConfig;\n trackInventory: Scalars['Boolean']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\n/** Returned when attempting to set the Customer on a guest checkout when the configured GuestCheckoutStrategy does not allow it. */\nexport type GuestCheckoutError = ErrorResult & {\n __typename?: 'GuestCheckoutError';\n errorCode: ErrorCode;\n errorDetail: Scalars['String']['output'];\n message: Scalars['String']['output'];\n};\n\nexport type HistoryEntry = Node & {\n __typename?: 'HistoryEntry';\n administrator?: Maybe<Administrator>;\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n data: Scalars['JSON']['output'];\n id: Scalars['ID']['output'];\n isPublic: Scalars['Boolean']['output'];\n type: HistoryEntryType;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type HistoryEntryFilterParameter = {\n _and?: InputMaybe<Array<HistoryEntryFilterParameter>>;\n _or?: InputMaybe<Array<HistoryEntryFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n id?: InputMaybe<IdOperators>;\n isPublic?: InputMaybe<BooleanOperators>;\n type?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type HistoryEntryList = PaginatedList & {\n __typename?: 'HistoryEntryList';\n items: Array<HistoryEntry>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type HistoryEntryListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<HistoryEntryFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<HistoryEntrySortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type HistoryEntrySortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport enum HistoryEntryType {\n CUSTOMER_ADDED_TO_GROUP = 'CUSTOMER_ADDED_TO_GROUP',\n CUSTOMER_ADDRESS_CREATED = 'CUSTOMER_ADDRESS_CREATED',\n CUSTOMER_ADDRESS_DELETED = 'CUSTOMER_ADDRESS_DELETED',\n CUSTOMER_ADDRESS_UPDATED = 'CUSTOMER_ADDRESS_UPDATED',\n CUSTOMER_DETAIL_UPDATED = 'CUSTOMER_DETAIL_UPDATED',\n CUSTOMER_EMAIL_UPDATE_REQUESTED = 'CUSTOMER_EMAIL_UPDATE_REQUESTED',\n CUSTOMER_EMAIL_UPDATE_VERIFIED = 'CUSTOMER_EMAIL_UPDATE_VERIFIED',\n CUSTOMER_NOTE = 'CUSTOMER_NOTE',\n CUSTOMER_PASSWORD_RESET_REQUESTED = 'CUSTOMER_PASSWORD_RESET_REQUESTED',\n CUSTOMER_PASSWORD_RESET_VERIFIED = 'CUSTOMER_PASSWORD_RESET_VERIFIED',\n CUSTOMER_PASSWORD_UPDATED = 'CUSTOMER_PASSWORD_UPDATED',\n CUSTOMER_REGISTERED = 'CUSTOMER_REGISTERED',\n CUSTOMER_REMOVED_FROM_GROUP = 'CUSTOMER_REMOVED_FROM_GROUP',\n CUSTOMER_VERIFIED = 'CUSTOMER_VERIFIED',\n ORDER_CANCELLATION = 'ORDER_CANCELLATION',\n ORDER_COUPON_APPLIED = 'ORDER_COUPON_APPLIED',\n ORDER_COUPON_REMOVED = 'ORDER_COUPON_REMOVED',\n ORDER_CUSTOMER_UPDATED = 'ORDER_CUSTOMER_UPDATED',\n ORDER_FULFILLMENT = 'ORDER_FULFILLMENT',\n ORDER_FULFILLMENT_TRANSITION = 'ORDER_FULFILLMENT_TRANSITION',\n ORDER_MODIFIED = 'ORDER_MODIFIED',\n ORDER_NOTE = 'ORDER_NOTE',\n ORDER_PAYMENT_TRANSITION = 'ORDER_PAYMENT_TRANSITION',\n ORDER_REFUND_TRANSITION = 'ORDER_REFUND_TRANSITION',\n ORDER_STATE_TRANSITION = 'ORDER_STATE_TRANSITION'\n}\n\n/** Operators for filtering on a list of ID fields */\nexport type IdListOperators = {\n inList: Scalars['ID']['input'];\n};\n\n/** Operators for filtering on an ID field */\nexport type IdOperators = {\n eq?: InputMaybe<Scalars['String']['input']>;\n in?: InputMaybe<Array<Scalars['String']['input']>>;\n isNull?: InputMaybe<Scalars['Boolean']['input']>;\n notEq?: InputMaybe<Scalars['String']['input']>;\n notIn?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\nexport type ImportInfo = {\n __typename?: 'ImportInfo';\n errors?: Maybe<Array<Scalars['String']['output']>>;\n imported: Scalars['Int']['output'];\n processed: Scalars['Int']['output'];\n};\n\n/** Returned when attempting to set a ShippingMethod for which the Order is not eligible */\nexport type IneligibleShippingMethodError = ErrorResult & {\n __typename?: 'IneligibleShippingMethodError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\n/** Returned when attempting to add more items to the Order than are available */\nexport type InsufficientStockError = ErrorResult & {\n __typename?: 'InsufficientStockError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n order: Order;\n quantityAvailable: Scalars['Int']['output'];\n};\n\n/**\n * Returned if attempting to create a Fulfillment when there is insufficient\n * stockOnHand of a ProductVariant to satisfy the requested quantity.\n */\nexport type InsufficientStockOnHandError = ErrorResult & {\n __typename?: 'InsufficientStockOnHandError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n productVariantId: Scalars['ID']['output'];\n productVariantName: Scalars['String']['output'];\n stockOnHand: Scalars['Int']['output'];\n};\n\nexport type IntCustomFieldConfig = CustomField & {\n __typename?: 'IntCustomFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n internal?: Maybe<Scalars['Boolean']['output']>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n max?: Maybe<Scalars['Int']['output']>;\n min?: Maybe<Scalars['Int']['output']>;\n name: Scalars['String']['output'];\n nullable?: Maybe<Scalars['Boolean']['output']>;\n readonly?: Maybe<Scalars['Boolean']['output']>;\n requiresPermission?: Maybe<Array<Permission>>;\n step?: Maybe<Scalars['Int']['output']>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type IntStructFieldConfig = StructField & {\n __typename?: 'IntStructFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n max?: Maybe<Scalars['Int']['output']>;\n min?: Maybe<Scalars['Int']['output']>;\n name: Scalars['String']['output'];\n step?: Maybe<Scalars['Int']['output']>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\n/** Returned if the user authentication credentials are not valid */\nexport type InvalidCredentialsError = ErrorResult & {\n __typename?: 'InvalidCredentialsError';\n authenticationError: Scalars['String']['output'];\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\n/** Returned if the specified FulfillmentHandler code is not valid */\nexport type InvalidFulfillmentHandlerError = ErrorResult & {\n __typename?: 'InvalidFulfillmentHandlerError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\n/** Returned if the specified items are already part of a Fulfillment */\nexport type ItemsAlreadyFulfilledError = ErrorResult & {\n __typename?: 'ItemsAlreadyFulfilledError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type Job = Node & {\n __typename?: 'Job';\n attempts: Scalars['Int']['output'];\n createdAt: Scalars['DateTime']['output'];\n data?: Maybe<Scalars['JSON']['output']>;\n duration: Scalars['Int']['output'];\n error?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n isSettled: Scalars['Boolean']['output'];\n progress: Scalars['Float']['output'];\n queueName: Scalars['String']['output'];\n result?: Maybe<Scalars['JSON']['output']>;\n retries: Scalars['Int']['output'];\n settledAt?: Maybe<Scalars['DateTime']['output']>;\n startedAt?: Maybe<Scalars['DateTime']['output']>;\n state: JobState;\n};\n\nexport type JobBufferSize = {\n __typename?: 'JobBufferSize';\n bufferId: Scalars['String']['output'];\n size: Scalars['Int']['output'];\n};\n\nexport type JobFilterParameter = {\n _and?: InputMaybe<Array<JobFilterParameter>>;\n _or?: InputMaybe<Array<JobFilterParameter>>;\n attempts?: InputMaybe<NumberOperators>;\n createdAt?: InputMaybe<DateOperators>;\n duration?: InputMaybe<NumberOperators>;\n id?: InputMaybe<IdOperators>;\n isSettled?: InputMaybe<BooleanOperators>;\n progress?: InputMaybe<NumberOperators>;\n queueName?: InputMaybe<StringOperators>;\n retries?: InputMaybe<NumberOperators>;\n settledAt?: InputMaybe<DateOperators>;\n startedAt?: InputMaybe<DateOperators>;\n state?: InputMaybe<StringOperators>;\n};\n\nexport type JobList = PaginatedList & {\n __typename?: 'JobList';\n items: Array<Job>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type JobListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<JobFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<JobSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type JobQueue = {\n __typename?: 'JobQueue';\n name: Scalars['String']['output'];\n running: Scalars['Boolean']['output'];\n};\n\nexport type JobSortParameter = {\n attempts?: InputMaybe<SortOrder>;\n createdAt?: InputMaybe<SortOrder>;\n duration?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n progress?: InputMaybe<SortOrder>;\n queueName?: InputMaybe<SortOrder>;\n retries?: InputMaybe<SortOrder>;\n settledAt?: InputMaybe<SortOrder>;\n startedAt?: InputMaybe<SortOrder>;\n};\n\n/**\n * @description\n * The state of a Job in the JobQueue\n *\n * @docsCategory common\n */\nexport enum JobState {\n CANCELLED = 'CANCELLED',\n COMPLETED = 'COMPLETED',\n FAILED = 'FAILED',\n PENDING = 'PENDING',\n RETRYING = 'RETRYING',\n RUNNING = 'RUNNING'\n}\n\n/**\n * @description\n * Languages in the form of a ISO 639-1 language code with optional\n * region or script modifier (e.g. de_AT). The selection available is based\n * on the [Unicode CLDR summary list](https://unicode-org.github.io/cldr-staging/charts/37/summary/root.html)\n * and includes the major spoken languages of the world and any widely-used variants.\n *\n * @docsCategory common\n */\nexport enum LanguageCode {\n /** Afrikaans */\n af = 'af',\n /** Akan */\n ak = 'ak',\n /** Amharic */\n am = 'am',\n /** Arabic */\n ar = 'ar',\n /** Assamese */\n as = 'as',\n /** Azerbaijani */\n az = 'az',\n /** Belarusian */\n be = 'be',\n /** Bulgarian */\n bg = 'bg',\n /** Bambara */\n bm = 'bm',\n /** Bangla */\n bn = 'bn',\n /** Tibetan */\n bo = 'bo',\n /** Breton */\n br = 'br',\n /** Bosnian */\n bs = 'bs',\n /** Catalan */\n ca = 'ca',\n /** Chechen */\n ce = 'ce',\n /** Corsican */\n co = 'co',\n /** Czech */\n cs = 'cs',\n /** Church Slavic */\n cu = 'cu',\n /** Welsh */\n cy = 'cy',\n /** Danish */\n da = 'da',\n /** German */\n de = 'de',\n /** Austrian German */\n de_AT = 'de_AT',\n /** Swiss High German */\n de_CH = 'de_CH',\n /** Dzongkha */\n dz = 'dz',\n /** Ewe */\n ee = 'ee',\n /** Greek */\n el = 'el',\n /** English */\n en = 'en',\n /** Australian English */\n en_AU = 'en_AU',\n /** Canadian English */\n en_CA = 'en_CA',\n /** British English */\n en_GB = 'en_GB',\n /** American English */\n en_US = 'en_US',\n /** Esperanto */\n eo = 'eo',\n /** Spanish */\n es = 'es',\n /** European Spanish */\n es_ES = 'es_ES',\n /** Mexican Spanish */\n es_MX = 'es_MX',\n /** Estonian */\n et = 'et',\n /** Basque */\n eu = 'eu',\n /** Persian */\n fa = 'fa',\n /** Dari */\n fa_AF = 'fa_AF',\n /** Fulah */\n ff = 'ff',\n /** Finnish */\n fi = 'fi',\n /** Faroese */\n fo = 'fo',\n /** French */\n fr = 'fr',\n /** Canadian French */\n fr_CA = 'fr_CA',\n /** Swiss French */\n fr_CH = 'fr_CH',\n /** Western Frisian */\n fy = 'fy',\n /** Irish */\n ga = 'ga',\n /** Scottish Gaelic */\n gd = 'gd',\n /** Galician */\n gl = 'gl',\n /** Gujarati */\n gu = 'gu',\n /** Manx */\n gv = 'gv',\n /** Hausa */\n ha = 'ha',\n /** Hebrew */\n he = 'he',\n /** Hindi */\n hi = 'hi',\n /** Croatian */\n hr = 'hr',\n /** Haitian Creole */\n ht = 'ht',\n /** Hungarian */\n hu = 'hu',\n /** Armenian */\n hy = 'hy',\n /** Interlingua */\n ia = 'ia',\n /** Indonesian */\n id = 'id',\n /** Igbo */\n ig = 'ig',\n /** Sichuan Yi */\n ii = 'ii',\n /** Icelandic */\n is = 'is',\n /** Italian */\n it = 'it',\n /** Japanese */\n ja = 'ja',\n /** Javanese */\n jv = 'jv',\n /** Georgian */\n ka = 'ka',\n /** Kikuyu */\n ki = 'ki',\n /** Kazakh */\n kk = 'kk',\n /** Kalaallisut */\n kl = 'kl',\n /** Khmer */\n km = 'km',\n /** Kannada */\n kn = 'kn',\n /** Korean */\n ko = 'ko',\n /** Kashmiri */\n ks = 'ks',\n /** Kurdish */\n ku = 'ku',\n /** Cornish */\n kw = 'kw',\n /** Kyrgyz */\n ky = 'ky',\n /** Latin */\n la = 'la',\n /** Luxembourgish */\n lb = 'lb',\n /** Ganda */\n lg = 'lg',\n /** Lingala */\n ln = 'ln',\n /** Lao */\n lo = 'lo',\n /** Lithuanian */\n lt = 'lt',\n /** Luba-Katanga */\n lu = 'lu',\n /** Latvian */\n lv = 'lv',\n /** Malagasy */\n mg = 'mg',\n /** Maori */\n mi = 'mi',\n /** Macedonian */\n mk = 'mk',\n /** Malayalam */\n ml = 'ml',\n /** Mongolian */\n mn = 'mn',\n /** Marathi */\n mr = 'mr',\n /** Malay */\n ms = 'ms',\n /** Maltese */\n mt = 'mt',\n /** Burmese */\n my = 'my',\n /** Norwegian Bokm\u00E5l */\n nb = 'nb',\n /** North Ndebele */\n nd = 'nd',\n /** Nepali */\n ne = 'ne',\n /** Dutch */\n nl = 'nl',\n /** Flemish */\n nl_BE = 'nl_BE',\n /** Norwegian Nynorsk */\n nn = 'nn',\n /** Nyanja */\n ny = 'ny',\n /** Oromo */\n om = 'om',\n /** Odia */\n or = 'or',\n /** Ossetic */\n os = 'os',\n /** Punjabi */\n pa = 'pa',\n /** Polish */\n pl = 'pl',\n /** Pashto */\n ps = 'ps',\n /** Portuguese */\n pt = 'pt',\n /** Brazilian Portuguese */\n pt_BR = 'pt_BR',\n /** European Portuguese */\n pt_PT = 'pt_PT',\n /** Quechua */\n qu = 'qu',\n /** Romansh */\n rm = 'rm',\n /** Rundi */\n rn = 'rn',\n /** Romanian */\n ro = 'ro',\n /** Moldavian */\n ro_MD = 'ro_MD',\n /** Russian */\n ru = 'ru',\n /** Kinyarwanda */\n rw = 'rw',\n /** Sanskrit */\n sa = 'sa',\n /** Sindhi */\n sd = 'sd',\n /** Northern Sami */\n se = 'se',\n /** Sango */\n sg = 'sg',\n /** Sinhala */\n si = 'si',\n /** Slovak */\n sk = 'sk',\n /** Slovenian */\n sl = 'sl',\n /** Samoan */\n sm = 'sm',\n /** Shona */\n sn = 'sn',\n /** Somali */\n so = 'so',\n /** Albanian */\n sq = 'sq',\n /** Serbian */\n sr = 'sr',\n /** Southern Sotho */\n st = 'st',\n /** Sundanese */\n su = 'su',\n /** Swedish */\n sv = 'sv',\n /** Swahili */\n sw = 'sw',\n /** Congo Swahili */\n sw_CD = 'sw_CD',\n /** Tamil */\n ta = 'ta',\n /** Telugu */\n te = 'te',\n /** Tajik */\n tg = 'tg',\n /** Thai */\n th = 'th',\n /** Tigrinya */\n ti = 'ti',\n /** Turkmen */\n tk = 'tk',\n /** Tongan */\n to = 'to',\n /** Turkish */\n tr = 'tr',\n /** Tatar */\n tt = 'tt',\n /** Uyghur */\n ug = 'ug',\n /** Ukrainian */\n uk = 'uk',\n /** Urdu */\n ur = 'ur',\n /** Uzbek */\n uz = 'uz',\n /** Vietnamese */\n vi = 'vi',\n /** Volap\u00FCk */\n vo = 'vo',\n /** Wolof */\n wo = 'wo',\n /** Xhosa */\n xh = 'xh',\n /** Yiddish */\n yi = 'yi',\n /** Yoruba */\n yo = 'yo',\n /** Chinese */\n zh = 'zh',\n /** Simplified Chinese */\n zh_Hans = 'zh_Hans',\n /** Traditional Chinese */\n zh_Hant = 'zh_Hant',\n /** Zulu */\n zu = 'zu'\n}\n\n/** Returned if attempting to set a Channel's defaultLanguageCode to a language which is not enabled in GlobalSettings */\nexport type LanguageNotAvailableError = ErrorResult & {\n __typename?: 'LanguageNotAvailableError';\n errorCode: ErrorCode;\n languageCode: Scalars['String']['output'];\n message: Scalars['String']['output'];\n};\n\nexport type LocaleStringCustomFieldConfig = CustomField & {\n __typename?: 'LocaleStringCustomFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n internal?: Maybe<Scalars['Boolean']['output']>;\n label?: Maybe<Array<LocalizedString>>;\n length?: Maybe<Scalars['Int']['output']>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n nullable?: Maybe<Scalars['Boolean']['output']>;\n pattern?: Maybe<Scalars['String']['output']>;\n readonly?: Maybe<Scalars['Boolean']['output']>;\n requiresPermission?: Maybe<Array<Permission>>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type LocaleTextCustomFieldConfig = CustomField & {\n __typename?: 'LocaleTextCustomFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n internal?: Maybe<Scalars['Boolean']['output']>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n nullable?: Maybe<Scalars['Boolean']['output']>;\n readonly?: Maybe<Scalars['Boolean']['output']>;\n requiresPermission?: Maybe<Array<Permission>>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type LocalizedString = {\n __typename?: 'LocalizedString';\n languageCode: LanguageCode;\n value: Scalars['String']['output'];\n};\n\nexport enum LogicalOperator {\n AND = 'AND',\n OR = 'OR'\n}\n\nexport type ManualPaymentInput = {\n metadata?: InputMaybe<Scalars['JSON']['input']>;\n method: Scalars['String']['input'];\n orderId: Scalars['ID']['input'];\n transactionId?: InputMaybe<Scalars['String']['input']>;\n};\n\n/**\n * Returned when a call to addManualPaymentToOrder is made but the Order\n * is not in the required state.\n */\nexport type ManualPaymentStateError = ErrorResult & {\n __typename?: 'ManualPaymentStateError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport enum MetricInterval {\n Daily = 'Daily'\n}\n\nexport type MetricSummary = {\n __typename?: 'MetricSummary';\n entries: Array<MetricSummaryEntry>;\n interval: MetricInterval;\n title: Scalars['String']['output'];\n type: MetricType;\n};\n\nexport type MetricSummaryEntry = {\n __typename?: 'MetricSummaryEntry';\n label: Scalars['String']['output'];\n value: Scalars['Float']['output'];\n};\n\nexport type MetricSummaryInput = {\n interval: MetricInterval;\n refresh?: InputMaybe<Scalars['Boolean']['input']>;\n types: Array<MetricType>;\n};\n\nexport enum MetricType {\n AverageOrderValue = 'AverageOrderValue',\n OrderCount = 'OrderCount',\n OrderTotal = 'OrderTotal'\n}\n\nexport type MimeTypeError = ErrorResult & {\n __typename?: 'MimeTypeError';\n errorCode: ErrorCode;\n fileName: Scalars['String']['output'];\n message: Scalars['String']['output'];\n mimeType: Scalars['String']['output'];\n};\n\n/** Returned if a PromotionCondition has neither a couponCode nor any conditions set */\nexport type MissingConditionsError = ErrorResult & {\n __typename?: 'MissingConditionsError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type ModifyOrderInput = {\n addItems?: InputMaybe<Array<AddItemInput>>;\n adjustOrderLines?: InputMaybe<Array<OrderLineInput>>;\n couponCodes?: InputMaybe<Array<Scalars['String']['input']>>;\n dryRun: Scalars['Boolean']['input'];\n note?: InputMaybe<Scalars['String']['input']>;\n options?: InputMaybe<ModifyOrderOptions>;\n orderId: Scalars['ID']['input'];\n /**\n * Deprecated in v2.2.0. Use `refunds` instead to allow multiple refunds to be\n * applied in the case that multiple payment methods have been used on the order.\n */\n refund?: InputMaybe<AdministratorRefundInput>;\n refunds?: InputMaybe<Array<AdministratorRefundInput>>;\n /** Added in v2.2 */\n shippingMethodIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n surcharges?: InputMaybe<Array<SurchargeInput>>;\n updateBillingAddress?: InputMaybe<UpdateOrderAddressInput>;\n updateShippingAddress?: InputMaybe<UpdateOrderAddressInput>;\n};\n\nexport type ModifyOrderOptions = {\n freezePromotions?: InputMaybe<Scalars['Boolean']['input']>;\n recalculateShipping?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type ModifyOrderResult = CouponCodeExpiredError | CouponCodeInvalidError | CouponCodeLimitError | IneligibleShippingMethodError | InsufficientStockError | NegativeQuantityError | NoChangesSpecifiedError | Order | OrderLimitError | OrderModificationStateError | PaymentMethodMissingError | RefundPaymentIdMissingError;\n\nexport type MoveCollectionInput = {\n collectionId: Scalars['ID']['input'];\n index: Scalars['Int']['input'];\n parentId: Scalars['ID']['input'];\n};\n\n/** Returned if an operation has specified OrderLines from multiple Orders */\nexport type MultipleOrderError = ErrorResult & {\n __typename?: 'MultipleOrderError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type Mutation = {\n __typename?: 'Mutation';\n /** Add Customers to a CustomerGroup */\n addCustomersToGroup: CustomerGroup;\n addFulfillmentToOrder: AddFulfillmentToOrderResult;\n /** Adds an item to the draft Order. */\n addItemToDraftOrder: UpdateOrderItemsResult;\n /**\n * Used to manually create a new Payment against an Order.\n * This can be used by an Administrator when an Order is in the ArrangingPayment state.\n *\n * It is also used when a completed Order\n * has been modified (using `modifyOrder`) and the price has increased. The extra payment\n * can then be manually arranged by the administrator, and the details used to create a new\n * Payment.\n */\n addManualPaymentToOrder: AddManualPaymentToOrderResult;\n /** Add members to a Zone */\n addMembersToZone: Zone;\n addNoteToCustomer: Customer;\n addNoteToOrder: Order;\n /** Add an OptionGroup to a Product */\n addOptionGroupToProduct: Product;\n /** Adjusts a draft OrderLine. If custom fields are defined on the OrderLine entity, a third argument 'customFields' of type `OrderLineCustomFieldsInput` will be available. */\n adjustDraftOrderLine: UpdateOrderItemsResult;\n /** Applies the given coupon code to the draft Order */\n applyCouponCodeToDraftOrder: ApplyCouponCodeResult;\n /** Assign assets to channel */\n assignAssetsToChannel: Array<Asset>;\n /** Assigns Collections to the specified Channel */\n assignCollectionsToChannel: Array<Collection>;\n /** Assigns Facets to the specified Channel */\n assignFacetsToChannel: Array<Facet>;\n /** Assigns PaymentMethods to the specified Channel */\n assignPaymentMethodsToChannel: Array<PaymentMethod>;\n /** Assigns ProductVariants to the specified Channel */\n assignProductVariantsToChannel: Array<ProductVariant>;\n /** Assigns all ProductVariants of Product to the specified Channel */\n assignProductsToChannel: Array<Product>;\n /** Assigns Promotions to the specified Channel */\n assignPromotionsToChannel: Array<Promotion>;\n /** Assign a Role to an Administrator */\n assignRoleToAdministrator: Administrator;\n /** Assigns ShippingMethods to the specified Channel */\n assignShippingMethodsToChannel: Array<ShippingMethod>;\n /** Assigns StockLocations to the specified Channel */\n assignStockLocationsToChannel: Array<StockLocation>;\n /** Authenticates the user using a named authentication strategy */\n authenticate: AuthenticationResult;\n cancelJob: Job;\n cancelOrder: CancelOrderResult;\n cancelPayment: CancelPaymentResult;\n /** Create a new Administrator */\n createAdministrator: Administrator;\n /** Create a new Asset */\n createAssets: Array<CreateAssetResult>;\n /** Create a new Channel */\n createChannel: CreateChannelResult;\n /** Create a new Collection */\n createCollection: Collection;\n /** Create a new Country */\n createCountry: Country;\n /** Create a new Customer. If a password is provided, a new User will also be created an linked to the Customer. */\n createCustomer: CreateCustomerResult;\n /** Create a new Address and associate it with the Customer specified by customerId */\n createCustomerAddress: Address;\n /** Create a new CustomerGroup */\n createCustomerGroup: CustomerGroup;\n /** Creates a draft Order */\n createDraftOrder: Order;\n /** Create a new Facet */\n createFacet: Facet;\n /** Create one or more FacetValues */\n createFacetValues: Array<FacetValue>;\n /** Create existing PaymentMethod */\n createPaymentMethod: PaymentMethod;\n /** Create a new Product */\n createProduct: Product;\n /** Create a new ProductOption within a ProductOptionGroup */\n createProductOption: ProductOption;\n /** Create a new ProductOptionGroup */\n createProductOptionGroup: ProductOptionGroup;\n /** Create a set of ProductVariants based on the OptionGroups assigned to the given Product */\n createProductVariants: Array<Maybe<ProductVariant>>;\n createPromotion: CreatePromotionResult;\n /** Create a new Province */\n createProvince: Province;\n /** Create a new Role */\n createRole: Role;\n /** Create a new Seller */\n createSeller: Seller;\n /** Create a new ShippingMethod */\n createShippingMethod: ShippingMethod;\n createStockLocation: StockLocation;\n /** Create a new Tag */\n createTag: Tag;\n /** Create a new TaxCategory */\n createTaxCategory: TaxCategory;\n /** Create a new TaxRate */\n createTaxRate: TaxRate;\n /** Create a new Zone */\n createZone: Zone;\n /** Delete an Administrator */\n deleteAdministrator: DeletionResponse;\n /** Delete multiple Administrators */\n deleteAdministrators: Array<DeletionResponse>;\n /** Delete an Asset */\n deleteAsset: DeletionResponse;\n /** Delete multiple Assets */\n deleteAssets: DeletionResponse;\n /** Delete a Channel */\n deleteChannel: DeletionResponse;\n /** Delete multiple Channels */\n deleteChannels: Array<DeletionResponse>;\n /** Delete a Collection and all of its descendants */\n deleteCollection: DeletionResponse;\n /** Delete multiple Collections and all of their descendants */\n deleteCollections: Array<DeletionResponse>;\n /** Delete multiple Countries */\n deleteCountries: Array<DeletionResponse>;\n /** Delete a Country */\n deleteCountry: DeletionResponse;\n /** Delete a Customer */\n deleteCustomer: DeletionResponse;\n /** Update an existing Address */\n deleteCustomerAddress: Success;\n /** Delete a CustomerGroup */\n deleteCustomerGroup: DeletionResponse;\n /** Delete multiple CustomerGroups */\n deleteCustomerGroups: Array<DeletionResponse>;\n deleteCustomerNote: DeletionResponse;\n /** Deletes Customers */\n deleteCustomers: Array<DeletionResponse>;\n /** Deletes a draft Order */\n deleteDraftOrder: DeletionResponse;\n /** Delete an existing Facet */\n deleteFacet: DeletionResponse;\n /** Delete one or more FacetValues */\n deleteFacetValues: Array<DeletionResponse>;\n /** Delete multiple existing Facets */\n deleteFacets: Array<DeletionResponse>;\n deleteOrderNote: DeletionResponse;\n /** Delete a PaymentMethod */\n deletePaymentMethod: DeletionResponse;\n /** Delete multiple PaymentMethods */\n deletePaymentMethods: Array<DeletionResponse>;\n /** Delete a Product */\n deleteProduct: DeletionResponse;\n /** Delete a ProductOption */\n deleteProductOption: DeletionResponse;\n /** Delete a ProductVariant */\n deleteProductVariant: DeletionResponse;\n /** Delete multiple ProductVariants */\n deleteProductVariants: Array<DeletionResponse>;\n /** Delete multiple Products */\n deleteProducts: Array<DeletionResponse>;\n deletePromotion: DeletionResponse;\n deletePromotions: Array<DeletionResponse>;\n /** Delete a Province */\n deleteProvince: DeletionResponse;\n /** Delete an existing Role */\n deleteRole: DeletionResponse;\n /** Delete multiple Roles */\n deleteRoles: Array<DeletionResponse>;\n /** Delete a Seller */\n deleteSeller: DeletionResponse;\n /** Delete multiple Sellers */\n deleteSellers: Array<DeletionResponse>;\n /** Delete a ShippingMethod */\n deleteShippingMethod: DeletionResponse;\n /** Delete multiple ShippingMethods */\n deleteShippingMethods: Array<DeletionResponse>;\n deleteStockLocation: DeletionResponse;\n deleteStockLocations: Array<DeletionResponse>;\n /** Delete an existing Tag */\n deleteTag: DeletionResponse;\n /** Deletes multiple TaxCategories */\n deleteTaxCategories: Array<DeletionResponse>;\n /** Deletes a TaxCategory */\n deleteTaxCategory: DeletionResponse;\n /** Delete a TaxRate */\n deleteTaxRate: DeletionResponse;\n /** Delete multiple TaxRates */\n deleteTaxRates: Array<DeletionResponse>;\n /** Delete a Zone */\n deleteZone: DeletionResponse;\n /** Delete a Zone */\n deleteZones: Array<DeletionResponse>;\n /**\n * Duplicate an existing entity using a specific EntityDuplicator.\n * Since v2.2.0.\n */\n duplicateEntity: DuplicateEntityResult;\n flushBufferedJobs: Success;\n importProducts?: Maybe<ImportInfo>;\n /**\n * Authenticates the user using the native authentication strategy. This mutation is an alias for authenticate({ native: { ... }})\n *\n * The `rememberMe` option applies when using cookie-based sessions, and if `true` it will set the maxAge of the session cookie\n * to 1 year.\n */\n login: NativeAuthenticationResult;\n logout: Success;\n /**\n * Allows an Order to be modified after it has been completed by the Customer. The Order must first\n * be in the `Modifying` state.\n */\n modifyOrder: ModifyOrderResult;\n /** Move a Collection to a different parent or index */\n moveCollection: Collection;\n refundOrder: RefundOrderResult;\n reindex: Job;\n /** Removes Collections from the specified Channel */\n removeCollectionsFromChannel: Array<Collection>;\n /** Removes the given coupon code from the draft Order */\n removeCouponCodeFromDraftOrder?: Maybe<Order>;\n /** Remove Customers from a CustomerGroup */\n removeCustomersFromGroup: CustomerGroup;\n /** Remove an OrderLine from the draft Order */\n removeDraftOrderLine: RemoveOrderItemsResult;\n /** Removes Facets from the specified Channel */\n removeFacetsFromChannel: Array<RemoveFacetFromChannelResult>;\n /** Remove members from a Zone */\n removeMembersFromZone: Zone;\n /**\n * Remove an OptionGroup from a Product. If the OptionGroup is in use by any ProductVariants\n * the mutation will return a ProductOptionInUseError, and the OptionGroup will not be removed.\n * Setting the `force` argument to `true` will override this and remove the OptionGroup anyway,\n * as well as removing any of the group's options from the Product's ProductVariants.\n */\n removeOptionGroupFromProduct: RemoveOptionGroupFromProductResult;\n /** Removes PaymentMethods from the specified Channel */\n removePaymentMethodsFromChannel: Array<PaymentMethod>;\n /** Removes ProductVariants from the specified Channel */\n removeProductVariantsFromChannel: Array<ProductVariant>;\n /** Removes all ProductVariants of Product from the specified Channel */\n removeProductsFromChannel: Array<Product>;\n /** Removes Promotions from the specified Channel */\n removePromotionsFromChannel: Array<Promotion>;\n /** Remove all settled jobs in the given queues older than the given date. Returns the number of jobs deleted. */\n removeSettledJobs: Scalars['Int']['output'];\n /** Removes ShippingMethods from the specified Channel */\n removeShippingMethodsFromChannel: Array<ShippingMethod>;\n /** Removes StockLocations from the specified Channel */\n removeStockLocationsFromChannel: Array<StockLocation>;\n runPendingSearchIndexUpdates: Success;\n runScheduledTask: Success;\n setCustomerForDraftOrder: SetCustomerForDraftOrderResult;\n /** Sets the billing address for a draft Order */\n setDraftOrderBillingAddress: Order;\n /** Allows any custom fields to be set for the active order */\n setDraftOrderCustomFields: Order;\n /** Sets the shipping address for a draft Order */\n setDraftOrderShippingAddress: Order;\n /** Sets the shipping method by id, which can be obtained with the `eligibleShippingMethodsForDraftOrder` query */\n setDraftOrderShippingMethod: SetOrderShippingMethodResult;\n setOrderCustomFields?: Maybe<Order>;\n /** Allows a different Customer to be assigned to an Order. Added in v2.2.0. */\n setOrderCustomer?: Maybe<Order>;\n settlePayment: SettlePaymentResult;\n settleRefund: SettleRefundResult;\n transitionFulfillmentToState: TransitionFulfillmentToStateResult;\n transitionOrderToState?: Maybe<TransitionOrderToStateResult>;\n transitionPaymentToState: TransitionPaymentToStateResult;\n /** Unsets the billing address for a draft Order */\n unsetDraftOrderBillingAddress: Order;\n /** Unsets the shipping address for a draft Order */\n unsetDraftOrderShippingAddress: Order;\n /** Update the active (currently logged-in) Administrator */\n updateActiveAdministrator: Administrator;\n /** Update an existing Administrator */\n updateAdministrator: Administrator;\n /** Update an existing Asset */\n updateAsset: Asset;\n /** Update an existing Channel */\n updateChannel: UpdateChannelResult;\n /** Update an existing Collection */\n updateCollection: Collection;\n /** Update an existing Country */\n updateCountry: Country;\n /** Update an existing Customer */\n updateCustomer: UpdateCustomerResult;\n /** Update an existing Address */\n updateCustomerAddress: Address;\n /** Update an existing CustomerGroup */\n updateCustomerGroup: CustomerGroup;\n updateCustomerNote: HistoryEntry;\n /** Update an existing Facet */\n updateFacet: Facet;\n /** Update one or more FacetValues */\n updateFacetValues: Array<FacetValue>;\n updateGlobalSettings: UpdateGlobalSettingsResult;\n updateOrderNote: HistoryEntry;\n /** Update an existing PaymentMethod */\n updatePaymentMethod: PaymentMethod;\n /** Update an existing Product */\n updateProduct: Product;\n /** Create a new ProductOption within a ProductOptionGroup */\n updateProductOption: ProductOption;\n /** Update an existing ProductOptionGroup */\n updateProductOptionGroup: ProductOptionGroup;\n /** Update an existing ProductVariant */\n updateProductVariant: ProductVariant;\n /** Update existing ProductVariants */\n updateProductVariants: Array<Maybe<ProductVariant>>;\n /** Update multiple existing Products */\n updateProducts: Array<Product>;\n updatePromotion: UpdatePromotionResult;\n /** Update an existing Province */\n updateProvince: Province;\n /** Update an existing Role */\n updateRole: Role;\n updateScheduledTask: ScheduledTask;\n /** Update an existing Seller */\n updateSeller: Seller;\n /** Update an existing ShippingMethod */\n updateShippingMethod: ShippingMethod;\n updateStockLocation: StockLocation;\n /** Update an existing Tag */\n updateTag: Tag;\n /** Update an existing TaxCategory */\n updateTaxCategory: TaxCategory;\n /** Update an existing TaxRate */\n updateTaxRate: TaxRate;\n /** Update an existing Zone */\n updateZone: Zone;\n};\n\n\nexport type MutationAddCustomersToGroupArgs = {\n customerGroupId: Scalars['ID']['input'];\n customerIds: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationAddFulfillmentToOrderArgs = {\n input: FulfillOrderInput;\n};\n\n\nexport type MutationAddItemToDraftOrderArgs = {\n input: AddItemToDraftOrderInput;\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type MutationAddManualPaymentToOrderArgs = {\n input: ManualPaymentInput;\n};\n\n\nexport type MutationAddMembersToZoneArgs = {\n memberIds: Array<Scalars['ID']['input']>;\n zoneId: Scalars['ID']['input'];\n};\n\n\nexport type MutationAddNoteToCustomerArgs = {\n input: AddNoteToCustomerInput;\n};\n\n\nexport type MutationAddNoteToOrderArgs = {\n input: AddNoteToOrderInput;\n};\n\n\nexport type MutationAddOptionGroupToProductArgs = {\n optionGroupId: Scalars['ID']['input'];\n productId: Scalars['ID']['input'];\n};\n\n\nexport type MutationAdjustDraftOrderLineArgs = {\n input: AdjustDraftOrderLineInput;\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type MutationApplyCouponCodeToDraftOrderArgs = {\n couponCode: Scalars['String']['input'];\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type MutationAssignAssetsToChannelArgs = {\n input: AssignAssetsToChannelInput;\n};\n\n\nexport type MutationAssignCollectionsToChannelArgs = {\n input: AssignCollectionsToChannelInput;\n};\n\n\nexport type MutationAssignFacetsToChannelArgs = {\n input: AssignFacetsToChannelInput;\n};\n\n\nexport type MutationAssignPaymentMethodsToChannelArgs = {\n input: AssignPaymentMethodsToChannelInput;\n};\n\n\nexport type MutationAssignProductVariantsToChannelArgs = {\n input: AssignProductVariantsToChannelInput;\n};\n\n\nexport type MutationAssignProductsToChannelArgs = {\n input: AssignProductsToChannelInput;\n};\n\n\nexport type MutationAssignPromotionsToChannelArgs = {\n input: AssignPromotionsToChannelInput;\n};\n\n\nexport type MutationAssignRoleToAdministratorArgs = {\n administratorId: Scalars['ID']['input'];\n roleId: Scalars['ID']['input'];\n};\n\n\nexport type MutationAssignShippingMethodsToChannelArgs = {\n input: AssignShippingMethodsToChannelInput;\n};\n\n\nexport type MutationAssignStockLocationsToChannelArgs = {\n input: AssignStockLocationsToChannelInput;\n};\n\n\nexport type MutationAuthenticateArgs = {\n input: AuthenticationInput;\n rememberMe?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n\nexport type MutationCancelJobArgs = {\n jobId: Scalars['ID']['input'];\n};\n\n\nexport type MutationCancelOrderArgs = {\n input: CancelOrderInput;\n};\n\n\nexport type MutationCancelPaymentArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationCreateAdministratorArgs = {\n input: CreateAdministratorInput;\n};\n\n\nexport type MutationCreateAssetsArgs = {\n input: Array<CreateAssetInput>;\n};\n\n\nexport type MutationCreateChannelArgs = {\n input: CreateChannelInput;\n};\n\n\nexport type MutationCreateCollectionArgs = {\n input: CreateCollectionInput;\n};\n\n\nexport type MutationCreateCountryArgs = {\n input: CreateCountryInput;\n};\n\n\nexport type MutationCreateCustomerArgs = {\n input: CreateCustomerInput;\n password?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type MutationCreateCustomerAddressArgs = {\n customerId: Scalars['ID']['input'];\n input: CreateAddressInput;\n};\n\n\nexport type MutationCreateCustomerGroupArgs = {\n input: CreateCustomerGroupInput;\n};\n\n\nexport type MutationCreateFacetArgs = {\n input: CreateFacetInput;\n};\n\n\nexport type MutationCreateFacetValuesArgs = {\n input: Array<CreateFacetValueInput>;\n};\n\n\nexport type MutationCreatePaymentMethodArgs = {\n input: CreatePaymentMethodInput;\n};\n\n\nexport type MutationCreateProductArgs = {\n input: CreateProductInput;\n};\n\n\nexport type MutationCreateProductOptionArgs = {\n input: CreateProductOptionInput;\n};\n\n\nexport type MutationCreateProductOptionGroupArgs = {\n input: CreateProductOptionGroupInput;\n};\n\n\nexport type MutationCreateProductVariantsArgs = {\n input: Array<CreateProductVariantInput>;\n};\n\n\nexport type MutationCreatePromotionArgs = {\n input: CreatePromotionInput;\n};\n\n\nexport type MutationCreateProvinceArgs = {\n input: CreateProvinceInput;\n};\n\n\nexport type MutationCreateRoleArgs = {\n input: CreateRoleInput;\n};\n\n\nexport type MutationCreateSellerArgs = {\n input: CreateSellerInput;\n};\n\n\nexport type MutationCreateShippingMethodArgs = {\n input: CreateShippingMethodInput;\n};\n\n\nexport type MutationCreateStockLocationArgs = {\n input: CreateStockLocationInput;\n};\n\n\nexport type MutationCreateTagArgs = {\n input: CreateTagInput;\n};\n\n\nexport type MutationCreateTaxCategoryArgs = {\n input: CreateTaxCategoryInput;\n};\n\n\nexport type MutationCreateTaxRateArgs = {\n input: CreateTaxRateInput;\n};\n\n\nexport type MutationCreateZoneArgs = {\n input: CreateZoneInput;\n};\n\n\nexport type MutationDeleteAdministratorArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteAdministratorsArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteAssetArgs = {\n input: DeleteAssetInput;\n};\n\n\nexport type MutationDeleteAssetsArgs = {\n input: DeleteAssetsInput;\n};\n\n\nexport type MutationDeleteChannelArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteChannelsArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteCollectionArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteCollectionsArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteCountriesArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteCountryArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteCustomerArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteCustomerAddressArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteCustomerGroupArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteCustomerGroupsArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteCustomerNoteArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteCustomersArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteDraftOrderArgs = {\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteFacetArgs = {\n force?: InputMaybe<Scalars['Boolean']['input']>;\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteFacetValuesArgs = {\n force?: InputMaybe<Scalars['Boolean']['input']>;\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteFacetsArgs = {\n force?: InputMaybe<Scalars['Boolean']['input']>;\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteOrderNoteArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeletePaymentMethodArgs = {\n force?: InputMaybe<Scalars['Boolean']['input']>;\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeletePaymentMethodsArgs = {\n force?: InputMaybe<Scalars['Boolean']['input']>;\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteProductArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteProductOptionArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteProductVariantArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteProductVariantsArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteProductsArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeletePromotionArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeletePromotionsArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteProvinceArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteRoleArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteRolesArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteSellerArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteSellersArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteShippingMethodArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteShippingMethodsArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteStockLocationArgs = {\n input: DeleteStockLocationInput;\n};\n\n\nexport type MutationDeleteStockLocationsArgs = {\n input: Array<DeleteStockLocationInput>;\n};\n\n\nexport type MutationDeleteTagArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteTaxCategoriesArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteTaxCategoryArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteTaxRateArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteTaxRatesArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDeleteZoneArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationDeleteZonesArgs = {\n ids: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationDuplicateEntityArgs = {\n input: DuplicateEntityInput;\n};\n\n\nexport type MutationFlushBufferedJobsArgs = {\n bufferIds?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\n\nexport type MutationImportProductsArgs = {\n csvFile: Scalars['Upload']['input'];\n};\n\n\nexport type MutationLoginArgs = {\n password: Scalars['String']['input'];\n rememberMe?: InputMaybe<Scalars['Boolean']['input']>;\n username: Scalars['String']['input'];\n};\n\n\nexport type MutationModifyOrderArgs = {\n input: ModifyOrderInput;\n};\n\n\nexport type MutationMoveCollectionArgs = {\n input: MoveCollectionInput;\n};\n\n\nexport type MutationRefundOrderArgs = {\n input: RefundOrderInput;\n};\n\n\nexport type MutationRemoveCollectionsFromChannelArgs = {\n input: RemoveCollectionsFromChannelInput;\n};\n\n\nexport type MutationRemoveCouponCodeFromDraftOrderArgs = {\n couponCode: Scalars['String']['input'];\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type MutationRemoveCustomersFromGroupArgs = {\n customerGroupId: Scalars['ID']['input'];\n customerIds: Array<Scalars['ID']['input']>;\n};\n\n\nexport type MutationRemoveDraftOrderLineArgs = {\n orderId: Scalars['ID']['input'];\n orderLineId: Scalars['ID']['input'];\n};\n\n\nexport type MutationRemoveFacetsFromChannelArgs = {\n input: RemoveFacetsFromChannelInput;\n};\n\n\nexport type MutationRemoveMembersFromZoneArgs = {\n memberIds: Array<Scalars['ID']['input']>;\n zoneId: Scalars['ID']['input'];\n};\n\n\nexport type MutationRemoveOptionGroupFromProductArgs = {\n force?: InputMaybe<Scalars['Boolean']['input']>;\n optionGroupId: Scalars['ID']['input'];\n productId: Scalars['ID']['input'];\n};\n\n\nexport type MutationRemovePaymentMethodsFromChannelArgs = {\n input: RemovePaymentMethodsFromChannelInput;\n};\n\n\nexport type MutationRemoveProductVariantsFromChannelArgs = {\n input: RemoveProductVariantsFromChannelInput;\n};\n\n\nexport type MutationRemoveProductsFromChannelArgs = {\n input: RemoveProductsFromChannelInput;\n};\n\n\nexport type MutationRemovePromotionsFromChannelArgs = {\n input: RemovePromotionsFromChannelInput;\n};\n\n\nexport type MutationRemoveSettledJobsArgs = {\n olderThan?: InputMaybe<Scalars['DateTime']['input']>;\n queueNames?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\n\nexport type MutationRemoveShippingMethodsFromChannelArgs = {\n input: RemoveShippingMethodsFromChannelInput;\n};\n\n\nexport type MutationRemoveStockLocationsFromChannelArgs = {\n input: RemoveStockLocationsFromChannelInput;\n};\n\n\nexport type MutationRunScheduledTaskArgs = {\n id: Scalars['String']['input'];\n};\n\n\nexport type MutationSetCustomerForDraftOrderArgs = {\n customerId?: InputMaybe<Scalars['ID']['input']>;\n input?: InputMaybe<CreateCustomerInput>;\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type MutationSetDraftOrderBillingAddressArgs = {\n input: CreateAddressInput;\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type MutationSetDraftOrderCustomFieldsArgs = {\n input: UpdateOrderInput;\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type MutationSetDraftOrderShippingAddressArgs = {\n input: CreateAddressInput;\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type MutationSetDraftOrderShippingMethodArgs = {\n orderId: Scalars['ID']['input'];\n shippingMethodId: Scalars['ID']['input'];\n};\n\n\nexport type MutationSetOrderCustomFieldsArgs = {\n input: UpdateOrderInput;\n};\n\n\nexport type MutationSetOrderCustomerArgs = {\n input: SetOrderCustomerInput;\n};\n\n\nexport type MutationSettlePaymentArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type MutationSettleRefundArgs = {\n input: SettleRefundInput;\n};\n\n\nexport type MutationTransitionFulfillmentToStateArgs = {\n id: Scalars['ID']['input'];\n state: Scalars['String']['input'];\n};\n\n\nexport type MutationTransitionOrderToStateArgs = {\n id: Scalars['ID']['input'];\n state: Scalars['String']['input'];\n};\n\n\nexport type MutationTransitionPaymentToStateArgs = {\n id: Scalars['ID']['input'];\n state: Scalars['String']['input'];\n};\n\n\nexport type MutationUnsetDraftOrderBillingAddressArgs = {\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type MutationUnsetDraftOrderShippingAddressArgs = {\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type MutationUpdateActiveAdministratorArgs = {\n input: UpdateActiveAdministratorInput;\n};\n\n\nexport type MutationUpdateAdministratorArgs = {\n input: UpdateAdministratorInput;\n};\n\n\nexport type MutationUpdateAssetArgs = {\n input: UpdateAssetInput;\n};\n\n\nexport type MutationUpdateChannelArgs = {\n input: UpdateChannelInput;\n};\n\n\nexport type MutationUpdateCollectionArgs = {\n input: UpdateCollectionInput;\n};\n\n\nexport type MutationUpdateCountryArgs = {\n input: UpdateCountryInput;\n};\n\n\nexport type MutationUpdateCustomerArgs = {\n input: UpdateCustomerInput;\n};\n\n\nexport type MutationUpdateCustomerAddressArgs = {\n input: UpdateAddressInput;\n};\n\n\nexport type MutationUpdateCustomerGroupArgs = {\n input: UpdateCustomerGroupInput;\n};\n\n\nexport type MutationUpdateCustomerNoteArgs = {\n input: UpdateCustomerNoteInput;\n};\n\n\nexport type MutationUpdateFacetArgs = {\n input: UpdateFacetInput;\n};\n\n\nexport type MutationUpdateFacetValuesArgs = {\n input: Array<UpdateFacetValueInput>;\n};\n\n\nexport type MutationUpdateGlobalSettingsArgs = {\n input: UpdateGlobalSettingsInput;\n};\n\n\nexport type MutationUpdateOrderNoteArgs = {\n input: UpdateOrderNoteInput;\n};\n\n\nexport type MutationUpdatePaymentMethodArgs = {\n input: UpdatePaymentMethodInput;\n};\n\n\nexport type MutationUpdateProductArgs = {\n input: UpdateProductInput;\n};\n\n\nexport type MutationUpdateProductOptionArgs = {\n input: UpdateProductOptionInput;\n};\n\n\nexport type MutationUpdateProductOptionGroupArgs = {\n input: UpdateProductOptionGroupInput;\n};\n\n\nexport type MutationUpdateProductVariantArgs = {\n input: UpdateProductVariantInput;\n};\n\n\nexport type MutationUpdateProductVariantsArgs = {\n input: Array<UpdateProductVariantInput>;\n};\n\n\nexport type MutationUpdateProductsArgs = {\n input: Array<UpdateProductInput>;\n};\n\n\nexport type MutationUpdatePromotionArgs = {\n input: UpdatePromotionInput;\n};\n\n\nexport type MutationUpdateProvinceArgs = {\n input: UpdateProvinceInput;\n};\n\n\nexport type MutationUpdateRoleArgs = {\n input: UpdateRoleInput;\n};\n\n\nexport type MutationUpdateScheduledTaskArgs = {\n input: UpdateScheduledTaskInput;\n};\n\n\nexport type MutationUpdateSellerArgs = {\n input: UpdateSellerInput;\n};\n\n\nexport type MutationUpdateShippingMethodArgs = {\n input: UpdateShippingMethodInput;\n};\n\n\nexport type MutationUpdateStockLocationArgs = {\n input: UpdateStockLocationInput;\n};\n\n\nexport type MutationUpdateTagArgs = {\n input: UpdateTagInput;\n};\n\n\nexport type MutationUpdateTaxCategoryArgs = {\n input: UpdateTaxCategoryInput;\n};\n\n\nexport type MutationUpdateTaxRateArgs = {\n input: UpdateTaxRateInput;\n};\n\n\nexport type MutationUpdateZoneArgs = {\n input: UpdateZoneInput;\n};\n\nexport type NativeAuthInput = {\n password: Scalars['String']['input'];\n username: Scalars['String']['input'];\n};\n\n/** Returned when attempting an operation that relies on the NativeAuthStrategy, if that strategy is not configured. */\nexport type NativeAuthStrategyError = ErrorResult & {\n __typename?: 'NativeAuthStrategyError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type NativeAuthenticationResult = CurrentUser | InvalidCredentialsError | NativeAuthStrategyError;\n\n/** Returned when attempting to set a negative OrderLine quantity. */\nexport type NegativeQuantityError = ErrorResult & {\n __typename?: 'NegativeQuantityError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\n/**\n * Returned when invoking a mutation which depends on there being an active Order on the\n * current session.\n */\nexport type NoActiveOrderError = ErrorResult & {\n __typename?: 'NoActiveOrderError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\n/** Returned when a call to modifyOrder fails to specify any changes */\nexport type NoChangesSpecifiedError = ErrorResult & {\n __typename?: 'NoChangesSpecifiedError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type Node = {\n id: Scalars['ID']['output'];\n};\n\n/** Returned if an attempting to refund an Order but neither items nor shipping refund was specified */\nexport type NothingToRefundError = ErrorResult & {\n __typename?: 'NothingToRefundError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\n/** Operators for filtering on a list of Number fields */\nexport type NumberListOperators = {\n inList: Scalars['Float']['input'];\n};\n\n/** Operators for filtering on a Int or Float field */\nexport type NumberOperators = {\n between?: InputMaybe<NumberRange>;\n eq?: InputMaybe<Scalars['Float']['input']>;\n gt?: InputMaybe<Scalars['Float']['input']>;\n gte?: InputMaybe<Scalars['Float']['input']>;\n isNull?: InputMaybe<Scalars['Boolean']['input']>;\n lt?: InputMaybe<Scalars['Float']['input']>;\n lte?: InputMaybe<Scalars['Float']['input']>;\n};\n\nexport type NumberRange = {\n end: Scalars['Float']['input'];\n start: Scalars['Float']['input'];\n};\n\nexport type Order = Node & {\n __typename?: 'Order';\n /** An order is active as long as the payment process has not been completed */\n active: Scalars['Boolean']['output'];\n aggregateOrder?: Maybe<Order>;\n aggregateOrderId?: Maybe<Scalars['ID']['output']>;\n billingAddress?: Maybe<OrderAddress>;\n channels: Array<Channel>;\n /** A unique code for the Order */\n code: Scalars['String']['output'];\n /** An array of all coupon codes applied to the Order */\n couponCodes: Array<Scalars['String']['output']>;\n createdAt: Scalars['DateTime']['output'];\n currencyCode: CurrencyCode;\n customFields?: Maybe<Scalars['JSON']['output']>;\n customer?: Maybe<Customer>;\n discounts: Array<Discount>;\n fulfillments?: Maybe<Array<Fulfillment>>;\n history: HistoryEntryList;\n id: Scalars['ID']['output'];\n lines: Array<OrderLine>;\n modifications: Array<OrderModification>;\n nextStates: Array<Scalars['String']['output']>;\n /**\n * The date & time that the Order was placed, i.e. the Customer\n * completed the checkout and the Order is no longer \"active\"\n */\n orderPlacedAt?: Maybe<Scalars['DateTime']['output']>;\n payments?: Maybe<Array<Payment>>;\n /** Promotions applied to the order. Only gets populated after the payment process has completed. */\n promotions: Array<Promotion>;\n sellerOrders?: Maybe<Array<Order>>;\n shipping: Scalars['Money']['output'];\n shippingAddress?: Maybe<OrderAddress>;\n shippingLines: Array<ShippingLine>;\n shippingWithTax: Scalars['Money']['output'];\n state: Scalars['String']['output'];\n /**\n * The subTotal is the total of all OrderLines in the Order. This figure also includes any Order-level\n * discounts which have been prorated (proportionally distributed) amongst the items of each OrderLine.\n * To get a total of all OrderLines which does not account for prorated discounts, use the\n * sum of `OrderLine.discountedLinePrice` values.\n */\n subTotal: Scalars['Money']['output'];\n /** Same as subTotal, but inclusive of tax */\n subTotalWithTax: Scalars['Money']['output'];\n /**\n * Surcharges are arbitrary modifications to the Order total which are neither\n * ProductVariants nor discounts resulting from applied Promotions. For example,\n * one-off discounts based on customer interaction, or surcharges based on payment\n * methods.\n */\n surcharges: Array<Surcharge>;\n /** A summary of the taxes being applied to this Order */\n taxSummary: Array<OrderTaxSummary>;\n /** Equal to subTotal plus shipping */\n total: Scalars['Money']['output'];\n totalQuantity: Scalars['Int']['output'];\n /** The final payable amount. Equal to subTotalWithTax plus shippingWithTax */\n totalWithTax: Scalars['Money']['output'];\n type: OrderType;\n updatedAt: Scalars['DateTime']['output'];\n};\n\n\nexport type OrderHistoryArgs = {\n options?: InputMaybe<HistoryEntryListOptions>;\n};\n\nexport type OrderAddress = {\n __typename?: 'OrderAddress';\n city?: Maybe<Scalars['String']['output']>;\n company?: Maybe<Scalars['String']['output']>;\n country?: Maybe<Scalars['String']['output']>;\n countryCode?: Maybe<Scalars['String']['output']>;\n customFields?: Maybe<Scalars['JSON']['output']>;\n fullName?: Maybe<Scalars['String']['output']>;\n phoneNumber?: Maybe<Scalars['String']['output']>;\n postalCode?: Maybe<Scalars['String']['output']>;\n province?: Maybe<Scalars['String']['output']>;\n streetLine1?: Maybe<Scalars['String']['output']>;\n streetLine2?: Maybe<Scalars['String']['output']>;\n};\n\nexport type OrderFilterParameter = {\n _and?: InputMaybe<Array<OrderFilterParameter>>;\n _or?: InputMaybe<Array<OrderFilterParameter>>;\n active?: InputMaybe<BooleanOperators>;\n aggregateOrderId?: InputMaybe<IdOperators>;\n code?: InputMaybe<StringOperators>;\n createdAt?: InputMaybe<DateOperators>;\n currencyCode?: InputMaybe<StringOperators>;\n customerLastName?: InputMaybe<StringOperators>;\n id?: InputMaybe<IdOperators>;\n orderPlacedAt?: InputMaybe<DateOperators>;\n shipping?: InputMaybe<NumberOperators>;\n shippingWithTax?: InputMaybe<NumberOperators>;\n state?: InputMaybe<StringOperators>;\n subTotal?: InputMaybe<NumberOperators>;\n subTotalWithTax?: InputMaybe<NumberOperators>;\n total?: InputMaybe<NumberOperators>;\n totalQuantity?: InputMaybe<NumberOperators>;\n totalWithTax?: InputMaybe<NumberOperators>;\n transactionId?: InputMaybe<StringOperators>;\n type?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\n/** Returned when an order operation is rejected by an OrderInterceptor method. */\nexport type OrderInterceptorError = ErrorResult & {\n __typename?: 'OrderInterceptorError';\n errorCode: ErrorCode;\n interceptorError: Scalars['String']['output'];\n message: Scalars['String']['output'];\n};\n\n/** Returned when the maximum order size limit has been reached. */\nexport type OrderLimitError = ErrorResult & {\n __typename?: 'OrderLimitError';\n errorCode: ErrorCode;\n maxItems: Scalars['Int']['output'];\n message: Scalars['String']['output'];\n};\n\nexport type OrderLine = Node & {\n __typename?: 'OrderLine';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n /** The price of the line including discounts, excluding tax */\n discountedLinePrice: Scalars['Money']['output'];\n /** The price of the line including discounts and tax */\n discountedLinePriceWithTax: Scalars['Money']['output'];\n /**\n * The price of a single unit including discounts, excluding tax.\n *\n * If Order-level discounts have been applied, this will not be the\n * actual taxable unit price (see `proratedUnitPrice`), but is generally the\n * correct price to display to customers to avoid confusion\n * about the internal handling of distributed Order-level discounts.\n */\n discountedUnitPrice: Scalars['Money']['output'];\n /** The price of a single unit including discounts and tax */\n discountedUnitPriceWithTax: Scalars['Money']['output'];\n discounts: Array<Discount>;\n featuredAsset?: Maybe<Asset>;\n fulfillmentLines?: Maybe<Array<FulfillmentLine>>;\n id: Scalars['ID']['output'];\n /** The total price of the line excluding tax and discounts. */\n linePrice: Scalars['Money']['output'];\n /** The total price of the line including tax but excluding discounts. */\n linePriceWithTax: Scalars['Money']['output'];\n /** The total tax on this line */\n lineTax: Scalars['Money']['output'];\n order: Order;\n /** The quantity at the time the Order was placed */\n orderPlacedQuantity: Scalars['Int']['output'];\n productVariant: ProductVariant;\n /**\n * The actual line price, taking into account both item discounts _and_ prorated (proportionally-distributed)\n * Order-level discounts. This value is the true economic value of the OrderLine, and is used in tax\n * and refund calculations.\n */\n proratedLinePrice: Scalars['Money']['output'];\n /** The proratedLinePrice including tax */\n proratedLinePriceWithTax: Scalars['Money']['output'];\n /**\n * The actual unit price, taking into account both item discounts _and_ prorated (proportionally-distributed)\n * Order-level discounts. This value is the true economic value of the OrderItem, and is used in tax\n * and refund calculations.\n */\n proratedUnitPrice: Scalars['Money']['output'];\n /** The proratedUnitPrice including tax */\n proratedUnitPriceWithTax: Scalars['Money']['output'];\n /** The quantity of items purchased */\n quantity: Scalars['Int']['output'];\n taxLines: Array<TaxLine>;\n taxRate: Scalars['Float']['output'];\n /** The price of a single unit, excluding tax and discounts */\n unitPrice: Scalars['Money']['output'];\n /** Non-zero if the unitPrice has changed since it was initially added to Order */\n unitPriceChangeSinceAdded: Scalars['Money']['output'];\n /** The price of a single unit, including tax but excluding discounts */\n unitPriceWithTax: Scalars['Money']['output'];\n /** Non-zero if the unitPriceWithTax has changed since it was initially added to Order */\n unitPriceWithTaxChangeSinceAdded: Scalars['Money']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type OrderLineInput = {\n orderLineId: Scalars['ID']['input'];\n quantity: Scalars['Int']['input'];\n};\n\nexport type OrderList = PaginatedList & {\n __typename?: 'OrderList';\n items: Array<Order>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type OrderListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<OrderFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<OrderSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type OrderModification = Node & {\n __typename?: 'OrderModification';\n createdAt: Scalars['DateTime']['output'];\n id: Scalars['ID']['output'];\n isSettled: Scalars['Boolean']['output'];\n lines: Array<OrderModificationLine>;\n note: Scalars['String']['output'];\n payment?: Maybe<Payment>;\n priceChange: Scalars['Money']['output'];\n refund?: Maybe<Refund>;\n surcharges?: Maybe<Array<Surcharge>>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\n/** Returned when attempting to modify the contents of an Order that is not in the `AddingItems` state. */\nexport type OrderModificationError = ErrorResult & {\n __typename?: 'OrderModificationError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type OrderModificationLine = {\n __typename?: 'OrderModificationLine';\n modification: OrderModification;\n modificationId: Scalars['ID']['output'];\n orderLine: OrderLine;\n orderLineId: Scalars['ID']['output'];\n quantity: Scalars['Int']['output'];\n};\n\n/** Returned when attempting to modify the contents of an Order that is not in the `Modifying` state. */\nexport type OrderModificationStateError = ErrorResult & {\n __typename?: 'OrderModificationStateError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type OrderProcessState = {\n __typename?: 'OrderProcessState';\n name: Scalars['String']['output'];\n to: Array<Scalars['String']['output']>;\n};\n\nexport type OrderSortParameter = {\n aggregateOrderId?: InputMaybe<SortOrder>;\n code?: InputMaybe<SortOrder>;\n createdAt?: InputMaybe<SortOrder>;\n customerLastName?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n orderPlacedAt?: InputMaybe<SortOrder>;\n shipping?: InputMaybe<SortOrder>;\n shippingWithTax?: InputMaybe<SortOrder>;\n state?: InputMaybe<SortOrder>;\n subTotal?: InputMaybe<SortOrder>;\n subTotalWithTax?: InputMaybe<SortOrder>;\n total?: InputMaybe<SortOrder>;\n totalQuantity?: InputMaybe<SortOrder>;\n totalWithTax?: InputMaybe<SortOrder>;\n transactionId?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\n/** Returned if there is an error in transitioning the Order state */\nexport type OrderStateTransitionError = ErrorResult & {\n __typename?: 'OrderStateTransitionError';\n errorCode: ErrorCode;\n fromState: Scalars['String']['output'];\n message: Scalars['String']['output'];\n toState: Scalars['String']['output'];\n transitionError: Scalars['String']['output'];\n};\n\n/**\n * A summary of the taxes being applied to this order, grouped\n * by taxRate.\n */\nexport type OrderTaxSummary = {\n __typename?: 'OrderTaxSummary';\n /** A description of this tax */\n description: Scalars['String']['output'];\n /** The total net price of OrderLines to which this taxRate applies */\n taxBase: Scalars['Money']['output'];\n /** The taxRate as a percentage */\n taxRate: Scalars['Float']['output'];\n /** The total tax being applied to the Order at this taxRate */\n taxTotal: Scalars['Money']['output'];\n};\n\nexport enum OrderType {\n Aggregate = 'Aggregate',\n Regular = 'Regular',\n Seller = 'Seller'\n}\n\nexport type PaginatedList = {\n items: Array<Node>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type Payment = Node & {\n __typename?: 'Payment';\n amount: Scalars['Money']['output'];\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n errorMessage?: Maybe<Scalars['String']['output']>;\n id: Scalars['ID']['output'];\n metadata?: Maybe<Scalars['JSON']['output']>;\n method: Scalars['String']['output'];\n nextStates: Array<Scalars['String']['output']>;\n refunds: Array<Refund>;\n state: Scalars['String']['output'];\n transactionId?: Maybe<Scalars['String']['output']>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type PaymentMethod = Node & {\n __typename?: 'PaymentMethod';\n checker?: Maybe<ConfigurableOperation>;\n code: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n description: Scalars['String']['output'];\n enabled: Scalars['Boolean']['output'];\n handler: ConfigurableOperation;\n id: Scalars['ID']['output'];\n name: Scalars['String']['output'];\n translations: Array<PaymentMethodTranslation>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type PaymentMethodFilterParameter = {\n _and?: InputMaybe<Array<PaymentMethodFilterParameter>>;\n _or?: InputMaybe<Array<PaymentMethodFilterParameter>>;\n code?: InputMaybe<StringOperators>;\n createdAt?: InputMaybe<DateOperators>;\n description?: InputMaybe<StringOperators>;\n enabled?: InputMaybe<BooleanOperators>;\n id?: InputMaybe<IdOperators>;\n name?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type PaymentMethodList = PaginatedList & {\n __typename?: 'PaymentMethodList';\n items: Array<PaymentMethod>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type PaymentMethodListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<PaymentMethodFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<PaymentMethodSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\n/**\n * Returned when a call to modifyOrder fails to include a paymentMethod even\n * though the price has increased as a result of the changes.\n */\nexport type PaymentMethodMissingError = ErrorResult & {\n __typename?: 'PaymentMethodMissingError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type PaymentMethodQuote = {\n __typename?: 'PaymentMethodQuote';\n code: Scalars['String']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n description: Scalars['String']['output'];\n eligibilityMessage?: Maybe<Scalars['String']['output']>;\n id: Scalars['ID']['output'];\n isEligible: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n};\n\nexport type PaymentMethodSortParameter = {\n code?: InputMaybe<SortOrder>;\n createdAt?: InputMaybe<SortOrder>;\n description?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type PaymentMethodTranslation = {\n __typename?: 'PaymentMethodTranslation';\n createdAt: Scalars['DateTime']['output'];\n description: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type PaymentMethodTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n description?: InputMaybe<Scalars['String']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** Returned if an attempting to refund a Payment against OrderLines from a different Order */\nexport type PaymentOrderMismatchError = ErrorResult & {\n __typename?: 'PaymentOrderMismatchError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\n/** Returned when there is an error in transitioning the Payment state */\nexport type PaymentStateTransitionError = ErrorResult & {\n __typename?: 'PaymentStateTransitionError';\n errorCode: ErrorCode;\n fromState: Scalars['String']['output'];\n message: Scalars['String']['output'];\n toState: Scalars['String']['output'];\n transitionError: Scalars['String']['output'];\n};\n\n/**\n * @description\n * Permissions for administrators and customers. Used to control access to\n * GraphQL resolvers via the {@link Allow} decorator.\n *\n * ## Understanding Permission.Owner\n *\n * `Permission.Owner` is a special permission which is used in some Vendure resolvers to indicate that that resolver should only\n * be accessible to the \"owner\" of that resource.\n *\n * For example, the Shop API `activeCustomer` query resolver should only return the Customer object for the \"owner\" of that Customer, i.e.\n * based on the activeUserId of the current session. As a result, the resolver code looks like this:\n *\n * @example\n * ```TypeScript\n * \\@Query()\n * \\@Allow(Permission.Owner)\n * async activeCustomer(\\@Ctx() ctx: RequestContext): Promise<Customer | undefined> {\n * const userId = ctx.activeUserId;\n * if (userId) {\n * return this.customerService.findOneByUserId(ctx, userId);\n * }\n * }\n * ```\n *\n * Here we can see that the \"ownership\" must be enforced by custom logic inside the resolver. Since \"ownership\" cannot be defined generally\n * nor statically encoded at build-time, any resolvers using `Permission.Owner` **must** include logic to enforce that only the owner\n * of the resource has access. If not, then it is the equivalent of using `Permission.Public`.\n *\n *\n * @docsCategory common\n */\nexport enum Permission {\n /** Authenticated means simply that the user is logged in */\n Authenticated = 'Authenticated',\n /** Grants permission to create Administrator */\n CreateAdministrator = 'CreateAdministrator',\n /** Grants permission to create Asset */\n CreateAsset = 'CreateAsset',\n /** Grants permission to create Products, Facets, Assets, Collections */\n CreateCatalog = 'CreateCatalog',\n /** Grants permission to create Channel */\n CreateChannel = 'CreateChannel',\n /** Grants permission to create Collection */\n CreateCollection = 'CreateCollection',\n /** Grants permission to create Country */\n CreateCountry = 'CreateCountry',\n /** Grants permission to create Customer */\n CreateCustomer = 'CreateCustomer',\n /** Grants permission to create CustomerGroup */\n CreateCustomerGroup = 'CreateCustomerGroup',\n /** Grants permission to create Facet */\n CreateFacet = 'CreateFacet',\n /** Grants permission to create Order */\n CreateOrder = 'CreateOrder',\n /** Grants permission to create PaymentMethod */\n CreatePaymentMethod = 'CreatePaymentMethod',\n /** Grants permission to create Product */\n CreateProduct = 'CreateProduct',\n /** Grants permission to create Promotion */\n CreatePromotion = 'CreatePromotion',\n /** Grants permission to create Seller */\n CreateSeller = 'CreateSeller',\n /** Grants permission to create PaymentMethods, ShippingMethods, TaxCategories, TaxRates, Zones, Countries, System & GlobalSettings */\n CreateSettings = 'CreateSettings',\n /** Grants permission to create ShippingMethod */\n CreateShippingMethod = 'CreateShippingMethod',\n /** Grants permission to create StockLocation */\n CreateStockLocation = 'CreateStockLocation',\n /** Grants permission to create System */\n CreateSystem = 'CreateSystem',\n /** Grants permission to create Tag */\n CreateTag = 'CreateTag',\n /** Grants permission to create TaxCategory */\n CreateTaxCategory = 'CreateTaxCategory',\n /** Grants permission to create TaxRate */\n CreateTaxRate = 'CreateTaxRate',\n /** Grants permission to create Zone */\n CreateZone = 'CreateZone',\n /** Grants permission to delete Administrator */\n DeleteAdministrator = 'DeleteAdministrator',\n /** Grants permission to delete Asset */\n DeleteAsset = 'DeleteAsset',\n /** Grants permission to delete Products, Facets, Assets, Collections */\n DeleteCatalog = 'DeleteCatalog',\n /** Grants permission to delete Channel */\n DeleteChannel = 'DeleteChannel',\n /** Grants permission to delete Collection */\n DeleteCollection = 'DeleteCollection',\n /** Grants permission to delete Country */\n DeleteCountry = 'DeleteCountry',\n /** Grants permission to delete Customer */\n DeleteCustomer = 'DeleteCustomer',\n /** Grants permission to delete CustomerGroup */\n DeleteCustomerGroup = 'DeleteCustomerGroup',\n /** Grants permission to delete Facet */\n DeleteFacet = 'DeleteFacet',\n /** Grants permission to delete Order */\n DeleteOrder = 'DeleteOrder',\n /** Grants permission to delete PaymentMethod */\n DeletePaymentMethod = 'DeletePaymentMethod',\n /** Grants permission to delete Product */\n DeleteProduct = 'DeleteProduct',\n /** Grants permission to delete Promotion */\n DeletePromotion = 'DeletePromotion',\n /** Grants permission to delete Seller */\n DeleteSeller = 'DeleteSeller',\n /** Grants permission to delete PaymentMethods, ShippingMethods, TaxCategories, TaxRates, Zones, Countries, System & GlobalSettings */\n DeleteSettings = 'DeleteSettings',\n /** Grants permission to delete ShippingMethod */\n DeleteShippingMethod = 'DeleteShippingMethod',\n /** Grants permission to delete StockLocation */\n DeleteStockLocation = 'DeleteStockLocation',\n /** Grants permission to delete System */\n DeleteSystem = 'DeleteSystem',\n /** Grants permission to delete Tag */\n DeleteTag = 'DeleteTag',\n /** Grants permission to delete TaxCategory */\n DeleteTaxCategory = 'DeleteTaxCategory',\n /** Grants permission to delete TaxRate */\n DeleteTaxRate = 'DeleteTaxRate',\n /** Grants permission to delete Zone */\n DeleteZone = 'DeleteZone',\n /** Owner means the user owns this entity, e.g. a Customer's own Order */\n Owner = 'Owner',\n /** Public means any unauthenticated user may perform the operation */\n Public = 'Public',\n /** Grants permission to read Administrator */\n ReadAdministrator = 'ReadAdministrator',\n /** Grants permission to read Asset */\n ReadAsset = 'ReadAsset',\n /** Grants permission to read Products, Facets, Assets, Collections */\n ReadCatalog = 'ReadCatalog',\n /** Grants permission to read Channel */\n ReadChannel = 'ReadChannel',\n /** Grants permission to read Collection */\n ReadCollection = 'ReadCollection',\n /** Grants permission to read Country */\n ReadCountry = 'ReadCountry',\n /** Grants permission to read Customer */\n ReadCustomer = 'ReadCustomer',\n /** Grants permission to read CustomerGroup */\n ReadCustomerGroup = 'ReadCustomerGroup',\n /** Grants permission to read Facet */\n ReadFacet = 'ReadFacet',\n /** Grants permission to read Order */\n ReadOrder = 'ReadOrder',\n /** Grants permission to read PaymentMethod */\n ReadPaymentMethod = 'ReadPaymentMethod',\n /** Grants permission to read Product */\n ReadProduct = 'ReadProduct',\n /** Grants permission to read Promotion */\n ReadPromotion = 'ReadPromotion',\n /** Grants permission to read Seller */\n ReadSeller = 'ReadSeller',\n /** Grants permission to read PaymentMethods, ShippingMethods, TaxCategories, TaxRates, Zones, Countries, System & GlobalSettings */\n ReadSettings = 'ReadSettings',\n /** Grants permission to read ShippingMethod */\n ReadShippingMethod = 'ReadShippingMethod',\n /** Grants permission to read StockLocation */\n ReadStockLocation = 'ReadStockLocation',\n /** Grants permission to read System */\n ReadSystem = 'ReadSystem',\n /** Grants permission to read Tag */\n ReadTag = 'ReadTag',\n /** Grants permission to read TaxCategory */\n ReadTaxCategory = 'ReadTaxCategory',\n /** Grants permission to read TaxRate */\n ReadTaxRate = 'ReadTaxRate',\n /** Grants permission to read Zone */\n ReadZone = 'ReadZone',\n /** SuperAdmin has unrestricted access to all operations */\n SuperAdmin = 'SuperAdmin',\n /** Grants permission to update Administrator */\n UpdateAdministrator = 'UpdateAdministrator',\n /** Grants permission to update Asset */\n UpdateAsset = 'UpdateAsset',\n /** Grants permission to update Products, Facets, Assets, Collections */\n UpdateCatalog = 'UpdateCatalog',\n /** Grants permission to update Channel */\n UpdateChannel = 'UpdateChannel',\n /** Grants permission to update Collection */\n UpdateCollection = 'UpdateCollection',\n /** Grants permission to update Country */\n UpdateCountry = 'UpdateCountry',\n /** Grants permission to update Customer */\n UpdateCustomer = 'UpdateCustomer',\n /** Grants permission to update CustomerGroup */\n UpdateCustomerGroup = 'UpdateCustomerGroup',\n /** Grants permission to update Facet */\n UpdateFacet = 'UpdateFacet',\n /** Grants permission to update GlobalSettings */\n UpdateGlobalSettings = 'UpdateGlobalSettings',\n /** Grants permission to update Order */\n UpdateOrder = 'UpdateOrder',\n /** Grants permission to update PaymentMethod */\n UpdatePaymentMethod = 'UpdatePaymentMethod',\n /** Grants permission to update Product */\n UpdateProduct = 'UpdateProduct',\n /** Grants permission to update Promotion */\n UpdatePromotion = 'UpdatePromotion',\n /** Grants permission to update Seller */\n UpdateSeller = 'UpdateSeller',\n /** Grants permission to update PaymentMethods, ShippingMethods, TaxCategories, TaxRates, Zones, Countries, System & GlobalSettings */\n UpdateSettings = 'UpdateSettings',\n /** Grants permission to update ShippingMethod */\n UpdateShippingMethod = 'UpdateShippingMethod',\n /** Grants permission to update StockLocation */\n UpdateStockLocation = 'UpdateStockLocation',\n /** Grants permission to update System */\n UpdateSystem = 'UpdateSystem',\n /** Grants permission to update Tag */\n UpdateTag = 'UpdateTag',\n /** Grants permission to update TaxCategory */\n UpdateTaxCategory = 'UpdateTaxCategory',\n /** Grants permission to update TaxRate */\n UpdateTaxRate = 'UpdateTaxRate',\n /** Grants permission to update Zone */\n UpdateZone = 'UpdateZone'\n}\n\nexport type PermissionDefinition = {\n __typename?: 'PermissionDefinition';\n assignable: Scalars['Boolean']['output'];\n description: Scalars['String']['output'];\n name: Scalars['String']['output'];\n};\n\nexport type PreviewCollectionVariantsInput = {\n filters: Array<ConfigurableOperationInput>;\n inheritFilters: Scalars['Boolean']['input'];\n parentId?: InputMaybe<Scalars['ID']['input']>;\n};\n\n/** The price range where the result has more than one price */\nexport type PriceRange = {\n __typename?: 'PriceRange';\n max: Scalars['Money']['output'];\n min: Scalars['Money']['output'];\n};\n\nexport type Product = Node & {\n __typename?: 'Product';\n assets: Array<Asset>;\n channels: Array<Channel>;\n collections: Array<Collection>;\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n description: Scalars['String']['output'];\n enabled: Scalars['Boolean']['output'];\n facetValues: Array<FacetValue>;\n featuredAsset?: Maybe<Asset>;\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n optionGroups: Array<ProductOptionGroup>;\n slug: Scalars['String']['output'];\n translations: Array<ProductTranslation>;\n updatedAt: Scalars['DateTime']['output'];\n /** Returns a paginated, sortable, filterable list of ProductVariants */\n variantList: ProductVariantList;\n /** Returns all ProductVariants */\n variants: Array<ProductVariant>;\n};\n\n\nexport type ProductVariantListArgs = {\n options?: InputMaybe<ProductVariantListOptions>;\n};\n\nexport type ProductFilterParameter = {\n _and?: InputMaybe<Array<ProductFilterParameter>>;\n _or?: InputMaybe<Array<ProductFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n description?: InputMaybe<StringOperators>;\n enabled?: InputMaybe<BooleanOperators>;\n facetValueId?: InputMaybe<IdOperators>;\n id?: InputMaybe<IdOperators>;\n languageCode?: InputMaybe<StringOperators>;\n name?: InputMaybe<StringOperators>;\n sku?: InputMaybe<StringOperators>;\n slug?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type ProductList = PaginatedList & {\n __typename?: 'ProductList';\n items: Array<Product>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type ProductListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<ProductFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<ProductSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type ProductOption = Node & {\n __typename?: 'ProductOption';\n code: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n group: ProductOptionGroup;\n groupId: Scalars['ID']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n translations: Array<ProductOptionTranslation>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ProductOptionGroup = Node & {\n __typename?: 'ProductOptionGroup';\n code: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n options: Array<ProductOption>;\n translations: Array<ProductOptionGroupTranslation>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ProductOptionGroupTranslation = {\n __typename?: 'ProductOptionGroupTranslation';\n createdAt: Scalars['DateTime']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ProductOptionGroupTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ProductOptionInUseError = ErrorResult & {\n __typename?: 'ProductOptionInUseError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n optionGroupCode: Scalars['String']['output'];\n productVariantCount: Scalars['Int']['output'];\n};\n\nexport type ProductOptionTranslation = {\n __typename?: 'ProductOptionTranslation';\n createdAt: Scalars['DateTime']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ProductOptionTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ProductSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n description?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n slug?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type ProductTranslation = {\n __typename?: 'ProductTranslation';\n createdAt: Scalars['DateTime']['output'];\n description: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n slug: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ProductTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n description?: InputMaybe<Scalars['String']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n slug?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type ProductVariant = Node & {\n __typename?: 'ProductVariant';\n assets: Array<Asset>;\n channels: Array<Channel>;\n createdAt: Scalars['DateTime']['output'];\n currencyCode: CurrencyCode;\n customFields?: Maybe<Scalars['JSON']['output']>;\n enabled: Scalars['Boolean']['output'];\n facetValues: Array<FacetValue>;\n featuredAsset?: Maybe<Asset>;\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n options: Array<ProductOption>;\n outOfStockThreshold: Scalars['Int']['output'];\n price: Scalars['Money']['output'];\n priceWithTax: Scalars['Money']['output'];\n prices: Array<ProductVariantPrice>;\n product: Product;\n productId: Scalars['ID']['output'];\n sku: Scalars['String']['output'];\n /** @deprecated use stockLevels */\n stockAllocated: Scalars['Int']['output'];\n stockLevel: Scalars['String']['output'];\n stockLevels: Array<StockLevel>;\n stockMovements: StockMovementList;\n /** @deprecated use stockLevels */\n stockOnHand: Scalars['Int']['output'];\n taxCategory: TaxCategory;\n taxRateApplied: TaxRate;\n trackInventory: GlobalFlag;\n translations: Array<ProductVariantTranslation>;\n updatedAt: Scalars['DateTime']['output'];\n useGlobalOutOfStockThreshold: Scalars['Boolean']['output'];\n};\n\n\nexport type ProductVariantStockMovementsArgs = {\n options?: InputMaybe<StockMovementListOptions>;\n};\n\nexport type ProductVariantFilterParameter = {\n _and?: InputMaybe<Array<ProductVariantFilterParameter>>;\n _or?: InputMaybe<Array<ProductVariantFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n currencyCode?: InputMaybe<StringOperators>;\n enabled?: InputMaybe<BooleanOperators>;\n facetValueId?: InputMaybe<IdOperators>;\n id?: InputMaybe<IdOperators>;\n languageCode?: InputMaybe<StringOperators>;\n name?: InputMaybe<StringOperators>;\n outOfStockThreshold?: InputMaybe<NumberOperators>;\n price?: InputMaybe<NumberOperators>;\n priceWithTax?: InputMaybe<NumberOperators>;\n productId?: InputMaybe<IdOperators>;\n sku?: InputMaybe<StringOperators>;\n stockAllocated?: InputMaybe<NumberOperators>;\n stockLevel?: InputMaybe<StringOperators>;\n stockOnHand?: InputMaybe<NumberOperators>;\n trackInventory?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n useGlobalOutOfStockThreshold?: InputMaybe<BooleanOperators>;\n};\n\nexport type ProductVariantList = PaginatedList & {\n __typename?: 'ProductVariantList';\n items: Array<ProductVariant>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type ProductVariantListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<ProductVariantFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<ProductVariantSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type ProductVariantPrice = {\n __typename?: 'ProductVariantPrice';\n currencyCode: CurrencyCode;\n customFields?: Maybe<Scalars['JSON']['output']>;\n price: Scalars['Money']['output'];\n};\n\nexport type ProductVariantSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n outOfStockThreshold?: InputMaybe<SortOrder>;\n price?: InputMaybe<SortOrder>;\n priceWithTax?: InputMaybe<SortOrder>;\n productId?: InputMaybe<SortOrder>;\n sku?: InputMaybe<SortOrder>;\n stockAllocated?: InputMaybe<SortOrder>;\n stockLevel?: InputMaybe<SortOrder>;\n stockOnHand?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type ProductVariantTranslation = {\n __typename?: 'ProductVariantTranslation';\n createdAt: Scalars['DateTime']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ProductVariantTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Promotion = Node & {\n __typename?: 'Promotion';\n actions: Array<ConfigurableOperation>;\n conditions: Array<ConfigurableOperation>;\n couponCode?: Maybe<Scalars['String']['output']>;\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n description: Scalars['String']['output'];\n enabled: Scalars['Boolean']['output'];\n endsAt?: Maybe<Scalars['DateTime']['output']>;\n id: Scalars['ID']['output'];\n name: Scalars['String']['output'];\n perCustomerUsageLimit?: Maybe<Scalars['Int']['output']>;\n startsAt?: Maybe<Scalars['DateTime']['output']>;\n translations: Array<PromotionTranslation>;\n updatedAt: Scalars['DateTime']['output'];\n usageLimit?: Maybe<Scalars['Int']['output']>;\n};\n\nexport type PromotionFilterParameter = {\n _and?: InputMaybe<Array<PromotionFilterParameter>>;\n _or?: InputMaybe<Array<PromotionFilterParameter>>;\n couponCode?: InputMaybe<StringOperators>;\n createdAt?: InputMaybe<DateOperators>;\n description?: InputMaybe<StringOperators>;\n enabled?: InputMaybe<BooleanOperators>;\n endsAt?: InputMaybe<DateOperators>;\n id?: InputMaybe<IdOperators>;\n name?: InputMaybe<StringOperators>;\n perCustomerUsageLimit?: InputMaybe<NumberOperators>;\n startsAt?: InputMaybe<DateOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n usageLimit?: InputMaybe<NumberOperators>;\n};\n\nexport type PromotionList = PaginatedList & {\n __typename?: 'PromotionList';\n items: Array<Promotion>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type PromotionListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<PromotionFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<PromotionSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type PromotionSortParameter = {\n couponCode?: InputMaybe<SortOrder>;\n createdAt?: InputMaybe<SortOrder>;\n description?: InputMaybe<SortOrder>;\n endsAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n perCustomerUsageLimit?: InputMaybe<SortOrder>;\n startsAt?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n usageLimit?: InputMaybe<SortOrder>;\n};\n\nexport type PromotionTranslation = {\n __typename?: 'PromotionTranslation';\n createdAt: Scalars['DateTime']['output'];\n description: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type PromotionTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n description?: InputMaybe<Scalars['String']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type Province = Node & Region & {\n __typename?: 'Province';\n code: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n enabled: Scalars['Boolean']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n parent?: Maybe<Region>;\n parentId?: Maybe<Scalars['ID']['output']>;\n translations: Array<RegionTranslation>;\n type: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ProvinceFilterParameter = {\n _and?: InputMaybe<Array<ProvinceFilterParameter>>;\n _or?: InputMaybe<Array<ProvinceFilterParameter>>;\n code?: InputMaybe<StringOperators>;\n createdAt?: InputMaybe<DateOperators>;\n enabled?: InputMaybe<BooleanOperators>;\n id?: InputMaybe<IdOperators>;\n languageCode?: InputMaybe<StringOperators>;\n name?: InputMaybe<StringOperators>;\n parentId?: InputMaybe<IdOperators>;\n type?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type ProvinceList = PaginatedList & {\n __typename?: 'ProvinceList';\n items: Array<Province>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type ProvinceListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<ProvinceFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<ProvinceSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type ProvinceSortParameter = {\n code?: InputMaybe<SortOrder>;\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n parentId?: InputMaybe<SortOrder>;\n type?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type ProvinceTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** Returned if the specified quantity of an OrderLine is greater than the number of items in that line */\nexport type QuantityTooGreatError = ErrorResult & {\n __typename?: 'QuantityTooGreatError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\nexport type Query = {\n __typename?: 'Query';\n activeAdministrator?: Maybe<Administrator>;\n activeChannel: Channel;\n administrator?: Maybe<Administrator>;\n administrators: AdministratorList;\n /** Get a single Asset by id */\n asset?: Maybe<Asset>;\n /** Get a list of Assets */\n assets: AssetList;\n channel?: Maybe<Channel>;\n channels: ChannelList;\n /** Get a Collection either by id or slug. If neither id nor slug is specified, an error will result. */\n collection?: Maybe<Collection>;\n collectionFilters: Array<ConfigurableOperationDefinition>;\n collections: CollectionList;\n countries: CountryList;\n country?: Maybe<Country>;\n customer?: Maybe<Customer>;\n customerGroup?: Maybe<CustomerGroup>;\n customerGroups: CustomerGroupList;\n customers: CustomerList;\n /** Returns a list of eligible shipping methods for the draft Order */\n eligibleShippingMethodsForDraftOrder: Array<ShippingMethodQuote>;\n /** Returns all configured EntityDuplicators. */\n entityDuplicators: Array<EntityDuplicatorDefinition>;\n facet?: Maybe<Facet>;\n facetValues: FacetValueList;\n facets: FacetList;\n fulfillmentHandlers: Array<ConfigurableOperationDefinition>;\n globalSettings: GlobalSettings;\n job?: Maybe<Job>;\n jobBufferSize: Array<JobBufferSize>;\n jobQueues: Array<JobQueue>;\n jobs: JobList;\n jobsById: Array<Job>;\n me?: Maybe<CurrentUser>;\n /** Get metrics for the given interval and metric types. */\n metricSummary: Array<MetricSummary>;\n order?: Maybe<Order>;\n orders: OrderList;\n paymentMethod?: Maybe<PaymentMethod>;\n paymentMethodEligibilityCheckers: Array<ConfigurableOperationDefinition>;\n paymentMethodHandlers: Array<ConfigurableOperationDefinition>;\n paymentMethods: PaymentMethodList;\n pendingSearchIndexUpdates: Scalars['Int']['output'];\n /** Used for real-time previews of the contents of a Collection */\n previewCollectionVariants: ProductVariantList;\n /** Get a Product either by id or slug. If neither id nor slug is specified, an error will result. */\n product?: Maybe<Product>;\n productOptionGroup?: Maybe<ProductOptionGroup>;\n productOptionGroups: Array<ProductOptionGroup>;\n /** Get a ProductVariant by id */\n productVariant?: Maybe<ProductVariant>;\n /** List ProductVariants either all or for the specific product. */\n productVariants: ProductVariantList;\n /** List Products */\n products: ProductList;\n promotion?: Maybe<Promotion>;\n promotionActions: Array<ConfigurableOperationDefinition>;\n promotionConditions: Array<ConfigurableOperationDefinition>;\n promotions: PromotionList;\n province?: Maybe<Province>;\n provinces: ProvinceList;\n role?: Maybe<Role>;\n roles: RoleList;\n scheduledTasks: Array<ScheduledTask>;\n search: SearchResponse;\n seller?: Maybe<Seller>;\n sellers: SellerList;\n shippingCalculators: Array<ConfigurableOperationDefinition>;\n shippingEligibilityCheckers: Array<ConfigurableOperationDefinition>;\n shippingMethod?: Maybe<ShippingMethod>;\n shippingMethods: ShippingMethodList;\n stockLocation?: Maybe<StockLocation>;\n stockLocations: StockLocationList;\n tag: Tag;\n tags: TagList;\n taxCategories: TaxCategoryList;\n taxCategory?: Maybe<TaxCategory>;\n taxRate?: Maybe<TaxRate>;\n taxRates: TaxRateList;\n testEligibleShippingMethods: Array<ShippingMethodQuote>;\n testShippingMethod: TestShippingMethodResult;\n zone?: Maybe<Zone>;\n zones: ZoneList;\n};\n\n\nexport type QueryAdministratorArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryAdministratorsArgs = {\n options?: InputMaybe<AdministratorListOptions>;\n};\n\n\nexport type QueryAssetArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryAssetsArgs = {\n options?: InputMaybe<AssetListOptions>;\n};\n\n\nexport type QueryChannelArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryChannelsArgs = {\n options?: InputMaybe<ChannelListOptions>;\n};\n\n\nexport type QueryCollectionArgs = {\n id?: InputMaybe<Scalars['ID']['input']>;\n slug?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryCollectionsArgs = {\n options?: InputMaybe<CollectionListOptions>;\n};\n\n\nexport type QueryCountriesArgs = {\n options?: InputMaybe<CountryListOptions>;\n};\n\n\nexport type QueryCountryArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryCustomerArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryCustomerGroupArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryCustomerGroupsArgs = {\n options?: InputMaybe<CustomerGroupListOptions>;\n};\n\n\nexport type QueryCustomersArgs = {\n options?: InputMaybe<CustomerListOptions>;\n};\n\n\nexport type QueryEligibleShippingMethodsForDraftOrderArgs = {\n orderId: Scalars['ID']['input'];\n};\n\n\nexport type QueryFacetArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryFacetValuesArgs = {\n options?: InputMaybe<FacetValueListOptions>;\n};\n\n\nexport type QueryFacetsArgs = {\n options?: InputMaybe<FacetListOptions>;\n};\n\n\nexport type QueryJobArgs = {\n jobId: Scalars['ID']['input'];\n};\n\n\nexport type QueryJobBufferSizeArgs = {\n bufferIds?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\n\nexport type QueryJobsArgs = {\n options?: InputMaybe<JobListOptions>;\n};\n\n\nexport type QueryJobsByIdArgs = {\n jobIds: Array<Scalars['ID']['input']>;\n};\n\n\nexport type QueryMetricSummaryArgs = {\n input?: InputMaybe<MetricSummaryInput>;\n};\n\n\nexport type QueryOrderArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryOrdersArgs = {\n options?: InputMaybe<OrderListOptions>;\n};\n\n\nexport type QueryPaymentMethodArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryPaymentMethodsArgs = {\n options?: InputMaybe<PaymentMethodListOptions>;\n};\n\n\nexport type QueryPreviewCollectionVariantsArgs = {\n input: PreviewCollectionVariantsInput;\n options?: InputMaybe<ProductVariantListOptions>;\n};\n\n\nexport type QueryProductArgs = {\n id?: InputMaybe<Scalars['ID']['input']>;\n slug?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryProductOptionGroupArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryProductOptionGroupsArgs = {\n filterTerm?: InputMaybe<Scalars['String']['input']>;\n};\n\n\nexport type QueryProductVariantArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryProductVariantsArgs = {\n options?: InputMaybe<ProductVariantListOptions>;\n productId?: InputMaybe<Scalars['ID']['input']>;\n};\n\n\nexport type QueryProductsArgs = {\n options?: InputMaybe<ProductListOptions>;\n};\n\n\nexport type QueryPromotionArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryPromotionsArgs = {\n options?: InputMaybe<PromotionListOptions>;\n};\n\n\nexport type QueryProvinceArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryProvincesArgs = {\n options?: InputMaybe<ProvinceListOptions>;\n};\n\n\nexport type QueryRoleArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryRolesArgs = {\n options?: InputMaybe<RoleListOptions>;\n};\n\n\nexport type QuerySearchArgs = {\n input: SearchInput;\n};\n\n\nexport type QuerySellerArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QuerySellersArgs = {\n options?: InputMaybe<SellerListOptions>;\n};\n\n\nexport type QueryShippingMethodArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryShippingMethodsArgs = {\n options?: InputMaybe<ShippingMethodListOptions>;\n};\n\n\nexport type QueryStockLocationArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryStockLocationsArgs = {\n options?: InputMaybe<StockLocationListOptions>;\n};\n\n\nexport type QueryTagArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryTagsArgs = {\n options?: InputMaybe<TagListOptions>;\n};\n\n\nexport type QueryTaxCategoriesArgs = {\n options?: InputMaybe<TaxCategoryListOptions>;\n};\n\n\nexport type QueryTaxCategoryArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryTaxRateArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryTaxRatesArgs = {\n options?: InputMaybe<TaxRateListOptions>;\n};\n\n\nexport type QueryTestEligibleShippingMethodsArgs = {\n input: TestEligibleShippingMethodsInput;\n};\n\n\nexport type QueryTestShippingMethodArgs = {\n input: TestShippingMethodInput;\n};\n\n\nexport type QueryZoneArgs = {\n id: Scalars['ID']['input'];\n};\n\n\nexport type QueryZonesArgs = {\n options?: InputMaybe<ZoneListOptions>;\n};\n\nexport type Refund = Node & {\n __typename?: 'Refund';\n adjustment: Scalars['Money']['output'];\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n items: Scalars['Money']['output'];\n lines: Array<RefundLine>;\n metadata?: Maybe<Scalars['JSON']['output']>;\n method?: Maybe<Scalars['String']['output']>;\n paymentId: Scalars['ID']['output'];\n reason?: Maybe<Scalars['String']['output']>;\n shipping: Scalars['Money']['output'];\n state: Scalars['String']['output'];\n total: Scalars['Money']['output'];\n transactionId?: Maybe<Scalars['String']['output']>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\n/** Returned if `amount` is greater than the maximum un-refunded amount of the Payment */\nexport type RefundAmountError = ErrorResult & {\n __typename?: 'RefundAmountError';\n errorCode: ErrorCode;\n maximumRefundable: Scalars['Int']['output'];\n message: Scalars['String']['output'];\n};\n\nexport type RefundLine = {\n __typename?: 'RefundLine';\n orderLine: OrderLine;\n orderLineId: Scalars['ID']['output'];\n quantity: Scalars['Int']['output'];\n refund: Refund;\n refundId: Scalars['ID']['output'];\n};\n\nexport type RefundOrderInput = {\n /** @deprecated Use the `amount` field instead */\n adjustment?: InputMaybe<Scalars['Money']['input']>;\n /**\n * The amount to be refunded to this particular payment. This was introduced in v2.2.0 as the preferred way to specify the refund amount.\n * Can be as much as the total amount of the payment minus the sum of all previous refunds.\n */\n amount?: InputMaybe<Scalars['Money']['input']>;\n /** @deprecated Use the `amount` field instead */\n lines?: InputMaybe<Array<OrderLineInput>>;\n paymentId: Scalars['ID']['input'];\n reason?: InputMaybe<Scalars['String']['input']>;\n /** @deprecated Use the `amount` field instead */\n shipping?: InputMaybe<Scalars['Money']['input']>;\n};\n\nexport type RefundOrderResult = AlreadyRefundedError | MultipleOrderError | NothingToRefundError | OrderStateTransitionError | PaymentOrderMismatchError | QuantityTooGreatError | Refund | RefundAmountError | RefundOrderStateError | RefundStateTransitionError;\n\n/** Returned if an attempting to refund an Order which is not in the expected state */\nexport type RefundOrderStateError = ErrorResult & {\n __typename?: 'RefundOrderStateError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n orderState: Scalars['String']['output'];\n};\n\n/**\n * Returned when a call to modifyOrder fails to include a refundPaymentId even\n * though the price has decreased as a result of the changes.\n */\nexport type RefundPaymentIdMissingError = ErrorResult & {\n __typename?: 'RefundPaymentIdMissingError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n};\n\n/** Returned when there is an error in transitioning the Refund state */\nexport type RefundStateTransitionError = ErrorResult & {\n __typename?: 'RefundStateTransitionError';\n errorCode: ErrorCode;\n fromState: Scalars['String']['output'];\n message: Scalars['String']['output'];\n toState: Scalars['String']['output'];\n transitionError: Scalars['String']['output'];\n};\n\nexport type Region = {\n code: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n enabled: Scalars['Boolean']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n parent?: Maybe<Region>;\n parentId?: Maybe<Scalars['ID']['output']>;\n translations: Array<RegionTranslation>;\n type: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type RegionTranslation = {\n __typename?: 'RegionTranslation';\n createdAt: Scalars['DateTime']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type RelationCustomFieldConfig = CustomField & {\n __typename?: 'RelationCustomFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n entity: Scalars['String']['output'];\n internal?: Maybe<Scalars['Boolean']['output']>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n nullable?: Maybe<Scalars['Boolean']['output']>;\n readonly?: Maybe<Scalars['Boolean']['output']>;\n requiresPermission?: Maybe<Array<Permission>>;\n scalarFields: Array<Scalars['String']['output']>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type Release = Node & StockMovement & {\n __typename?: 'Release';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n productVariant: ProductVariant;\n quantity: Scalars['Int']['output'];\n type: StockMovementType;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type RemoveCollectionsFromChannelInput = {\n channelId: Scalars['ID']['input'];\n collectionIds: Array<Scalars['ID']['input']>;\n};\n\nexport type RemoveFacetFromChannelResult = Facet | FacetInUseError;\n\nexport type RemoveFacetsFromChannelInput = {\n channelId: Scalars['ID']['input'];\n facetIds: Array<Scalars['ID']['input']>;\n force?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type RemoveOptionGroupFromProductResult = Product | ProductOptionInUseError;\n\nexport type RemoveOrderItemsResult = Order | OrderInterceptorError | OrderModificationError;\n\nexport type RemovePaymentMethodsFromChannelInput = {\n channelId: Scalars['ID']['input'];\n paymentMethodIds: Array<Scalars['ID']['input']>;\n};\n\nexport type RemoveProductVariantsFromChannelInput = {\n channelId: Scalars['ID']['input'];\n productVariantIds: Array<Scalars['ID']['input']>;\n};\n\nexport type RemoveProductsFromChannelInput = {\n channelId: Scalars['ID']['input'];\n productIds: Array<Scalars['ID']['input']>;\n};\n\nexport type RemovePromotionsFromChannelInput = {\n channelId: Scalars['ID']['input'];\n promotionIds: Array<Scalars['ID']['input']>;\n};\n\nexport type RemoveShippingMethodsFromChannelInput = {\n channelId: Scalars['ID']['input'];\n shippingMethodIds: Array<Scalars['ID']['input']>;\n};\n\nexport type RemoveStockLocationsFromChannelInput = {\n channelId: Scalars['ID']['input'];\n stockLocationIds: Array<Scalars['ID']['input']>;\n};\n\nexport type Return = Node & StockMovement & {\n __typename?: 'Return';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n productVariant: ProductVariant;\n quantity: Scalars['Int']['output'];\n type: StockMovementType;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type Role = Node & {\n __typename?: 'Role';\n channels: Array<Channel>;\n code: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n description: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n permissions: Array<Permission>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type RoleFilterParameter = {\n _and?: InputMaybe<Array<RoleFilterParameter>>;\n _or?: InputMaybe<Array<RoleFilterParameter>>;\n code?: InputMaybe<StringOperators>;\n createdAt?: InputMaybe<DateOperators>;\n description?: InputMaybe<StringOperators>;\n id?: InputMaybe<IdOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type RoleList = PaginatedList & {\n __typename?: 'RoleList';\n items: Array<Role>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type RoleListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<RoleFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<RoleSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type RoleSortParameter = {\n code?: InputMaybe<SortOrder>;\n createdAt?: InputMaybe<SortOrder>;\n description?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type Sale = Node & StockMovement & {\n __typename?: 'Sale';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n productVariant: ProductVariant;\n quantity: Scalars['Int']['output'];\n type: StockMovementType;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ScheduledTask = {\n __typename?: 'ScheduledTask';\n description: Scalars['String']['output'];\n enabled: Scalars['Boolean']['output'];\n id: Scalars['String']['output'];\n isRunning: Scalars['Boolean']['output'];\n lastExecutedAt?: Maybe<Scalars['DateTime']['output']>;\n lastResult?: Maybe<Scalars['JSON']['output']>;\n nextExecutionAt?: Maybe<Scalars['DateTime']['output']>;\n schedule: Scalars['String']['output'];\n scheduleDescription: Scalars['String']['output'];\n};\n\nexport type SearchInput = {\n collectionId?: InputMaybe<Scalars['ID']['input']>;\n collectionSlug?: InputMaybe<Scalars['String']['input']>;\n facetValueFilters?: InputMaybe<Array<FacetValueFilterInput>>;\n /** @deprecated Use `facetValueFilters` instead */\n facetValueIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n /** @deprecated Use `facetValueFilters` instead */\n facetValueOperator?: InputMaybe<LogicalOperator>;\n groupByProduct?: InputMaybe<Scalars['Boolean']['input']>;\n skip?: InputMaybe<Scalars['Int']['input']>;\n sort?: InputMaybe<SearchResultSortParameter>;\n take?: InputMaybe<Scalars['Int']['input']>;\n term?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type SearchReindexResponse = {\n __typename?: 'SearchReindexResponse';\n success: Scalars['Boolean']['output'];\n};\n\nexport type SearchResponse = {\n __typename?: 'SearchResponse';\n collections: Array<CollectionResult>;\n facetValues: Array<FacetValueResult>;\n items: Array<SearchResult>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type SearchResult = {\n __typename?: 'SearchResult';\n /** An array of ids of the Channels in which this result appears */\n channelIds: Array<Scalars['ID']['output']>;\n /** An array of ids of the Collections in which this result appears */\n collectionIds: Array<Scalars['ID']['output']>;\n currencyCode: CurrencyCode;\n description: Scalars['String']['output'];\n enabled: Scalars['Boolean']['output'];\n facetIds: Array<Scalars['ID']['output']>;\n facetValueIds: Array<Scalars['ID']['output']>;\n price: SearchResultPrice;\n priceWithTax: SearchResultPrice;\n productAsset?: Maybe<SearchResultAsset>;\n productId: Scalars['ID']['output'];\n productName: Scalars['String']['output'];\n productVariantAsset?: Maybe<SearchResultAsset>;\n productVariantId: Scalars['ID']['output'];\n productVariantName: Scalars['String']['output'];\n /** A relevance score for the result. Differs between database implementations */\n score: Scalars['Float']['output'];\n sku: Scalars['String']['output'];\n slug: Scalars['String']['output'];\n};\n\nexport type SearchResultAsset = {\n __typename?: 'SearchResultAsset';\n focalPoint?: Maybe<Coordinate>;\n id: Scalars['ID']['output'];\n preview: Scalars['String']['output'];\n};\n\n/** The price of a search result product, either as a range or as a single price */\nexport type SearchResultPrice = PriceRange | SinglePrice;\n\nexport type SearchResultSortParameter = {\n name?: InputMaybe<SortOrder>;\n price?: InputMaybe<SortOrder>;\n};\n\nexport type Seller = Node & {\n __typename?: 'Seller';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type SellerFilterParameter = {\n _and?: InputMaybe<Array<SellerFilterParameter>>;\n _or?: InputMaybe<Array<SellerFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n id?: InputMaybe<IdOperators>;\n name?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type SellerList = PaginatedList & {\n __typename?: 'SellerList';\n items: Array<Seller>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type SellerListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<SellerFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<SellerSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type SellerSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type ServerConfig = {\n __typename?: 'ServerConfig';\n /**\n * This field is deprecated in v2.2 in favor of the entityCustomFields field,\n * which allows custom fields to be defined on user-supplies entities.\n */\n customFieldConfig: CustomFields;\n entityCustomFields: Array<EntityCustomFields>;\n moneyStrategyPrecision: Scalars['Int']['output'];\n orderProcess: Array<OrderProcessState>;\n permissions: Array<PermissionDefinition>;\n permittedAssetTypes: Array<Scalars['String']['output']>;\n};\n\nexport type SetCustomerForDraftOrderResult = EmailAddressConflictError | Order;\n\nexport type SetOrderCustomerInput = {\n customerId: Scalars['ID']['input'];\n note?: InputMaybe<Scalars['String']['input']>;\n orderId: Scalars['ID']['input'];\n};\n\nexport type SetOrderShippingMethodResult = IneligibleShippingMethodError | NoActiveOrderError | Order | OrderModificationError;\n\n/** Returned if the Payment settlement fails */\nexport type SettlePaymentError = ErrorResult & {\n __typename?: 'SettlePaymentError';\n errorCode: ErrorCode;\n message: Scalars['String']['output'];\n paymentErrorMessage: Scalars['String']['output'];\n};\n\nexport type SettlePaymentResult = OrderStateTransitionError | Payment | PaymentStateTransitionError | SettlePaymentError;\n\nexport type SettleRefundInput = {\n id: Scalars['ID']['input'];\n transactionId: Scalars['String']['input'];\n};\n\nexport type SettleRefundResult = Refund | RefundStateTransitionError;\n\nexport type ShippingLine = {\n __typename?: 'ShippingLine';\n customFields?: Maybe<Scalars['JSON']['output']>;\n discountedPrice: Scalars['Money']['output'];\n discountedPriceWithTax: Scalars['Money']['output'];\n discounts: Array<Discount>;\n id: Scalars['ID']['output'];\n price: Scalars['Money']['output'];\n priceWithTax: Scalars['Money']['output'];\n shippingMethod: ShippingMethod;\n};\n\nexport type ShippingMethod = Node & {\n __typename?: 'ShippingMethod';\n calculator: ConfigurableOperation;\n checker: ConfigurableOperation;\n code: Scalars['String']['output'];\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n description: Scalars['String']['output'];\n fulfillmentHandlerCode: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n translations: Array<ShippingMethodTranslation>;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ShippingMethodFilterParameter = {\n _and?: InputMaybe<Array<ShippingMethodFilterParameter>>;\n _or?: InputMaybe<Array<ShippingMethodFilterParameter>>;\n code?: InputMaybe<StringOperators>;\n createdAt?: InputMaybe<DateOperators>;\n description?: InputMaybe<StringOperators>;\n fulfillmentHandlerCode?: InputMaybe<StringOperators>;\n id?: InputMaybe<IdOperators>;\n languageCode?: InputMaybe<StringOperators>;\n name?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type ShippingMethodList = PaginatedList & {\n __typename?: 'ShippingMethodList';\n items: Array<ShippingMethod>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type ShippingMethodListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<ShippingMethodFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<ShippingMethodSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type ShippingMethodQuote = {\n __typename?: 'ShippingMethodQuote';\n code: Scalars['String']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n description: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n /** Any optional metadata returned by the ShippingCalculator in the ShippingCalculationResult */\n metadata?: Maybe<Scalars['JSON']['output']>;\n name: Scalars['String']['output'];\n price: Scalars['Money']['output'];\n priceWithTax: Scalars['Money']['output'];\n};\n\nexport type ShippingMethodSortParameter = {\n code?: InputMaybe<SortOrder>;\n createdAt?: InputMaybe<SortOrder>;\n description?: InputMaybe<SortOrder>;\n fulfillmentHandlerCode?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type ShippingMethodTranslation = {\n __typename?: 'ShippingMethodTranslation';\n createdAt: Scalars['DateTime']['output'];\n description: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n languageCode: LanguageCode;\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ShippingMethodTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n description?: InputMaybe<Scalars['String']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\n/** The price value where the result has a single price */\nexport type SinglePrice = {\n __typename?: 'SinglePrice';\n value: Scalars['Money']['output'];\n};\n\nexport enum SortOrder {\n ASC = 'ASC',\n DESC = 'DESC'\n}\n\nexport type StockAdjustment = Node & StockMovement & {\n __typename?: 'StockAdjustment';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n productVariant: ProductVariant;\n quantity: Scalars['Int']['output'];\n type: StockMovementType;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type StockLevel = Node & {\n __typename?: 'StockLevel';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n stockAllocated: Scalars['Int']['output'];\n stockLocation: StockLocation;\n stockLocationId: Scalars['ID']['output'];\n stockOnHand: Scalars['Int']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type StockLevelInput = {\n stockLocationId: Scalars['ID']['input'];\n stockOnHand: Scalars['Int']['input'];\n};\n\nexport type StockLocation = Node & {\n __typename?: 'StockLocation';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n description: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type StockLocationFilterParameter = {\n _and?: InputMaybe<Array<StockLocationFilterParameter>>;\n _or?: InputMaybe<Array<StockLocationFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n description?: InputMaybe<StringOperators>;\n id?: InputMaybe<IdOperators>;\n name?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type StockLocationList = PaginatedList & {\n __typename?: 'StockLocationList';\n items: Array<StockLocation>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type StockLocationListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<StockLocationFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<StockLocationSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type StockLocationSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n description?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type StockMovement = {\n createdAt: Scalars['DateTime']['output'];\n id: Scalars['ID']['output'];\n productVariant: ProductVariant;\n quantity: Scalars['Int']['output'];\n type: StockMovementType;\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type StockMovementItem = Allocation | Cancellation | Release | Return | Sale | StockAdjustment;\n\nexport type StockMovementList = {\n __typename?: 'StockMovementList';\n items: Array<StockMovementItem>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type StockMovementListOptions = {\n skip?: InputMaybe<Scalars['Int']['input']>;\n take?: InputMaybe<Scalars['Int']['input']>;\n type?: InputMaybe<StockMovementType>;\n};\n\nexport enum StockMovementType {\n ADJUSTMENT = 'ADJUSTMENT',\n ALLOCATION = 'ALLOCATION',\n CANCELLATION = 'CANCELLATION',\n RELEASE = 'RELEASE',\n RETURN = 'RETURN',\n SALE = 'SALE'\n}\n\nexport type StringCustomFieldConfig = CustomField & {\n __typename?: 'StringCustomFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n internal?: Maybe<Scalars['Boolean']['output']>;\n label?: Maybe<Array<LocalizedString>>;\n length?: Maybe<Scalars['Int']['output']>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n nullable?: Maybe<Scalars['Boolean']['output']>;\n options?: Maybe<Array<StringFieldOption>>;\n pattern?: Maybe<Scalars['String']['output']>;\n readonly?: Maybe<Scalars['Boolean']['output']>;\n requiresPermission?: Maybe<Array<Permission>>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type StringFieldOption = {\n __typename?: 'StringFieldOption';\n label?: Maybe<Array<LocalizedString>>;\n value: Scalars['String']['output'];\n};\n\n/** Operators for filtering on a list of String fields */\nexport type StringListOperators = {\n inList: Scalars['String']['input'];\n};\n\n/** Operators for filtering on a String field */\nexport type StringOperators = {\n contains?: InputMaybe<Scalars['String']['input']>;\n eq?: InputMaybe<Scalars['String']['input']>;\n in?: InputMaybe<Array<Scalars['String']['input']>>;\n isNull?: InputMaybe<Scalars['Boolean']['input']>;\n notContains?: InputMaybe<Scalars['String']['input']>;\n notEq?: InputMaybe<Scalars['String']['input']>;\n notIn?: InputMaybe<Array<Scalars['String']['input']>>;\n regex?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type StringStructFieldConfig = StructField & {\n __typename?: 'StringStructFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n label?: Maybe<Array<LocalizedString>>;\n length?: Maybe<Scalars['Int']['output']>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n options?: Maybe<Array<StringFieldOption>>;\n pattern?: Maybe<Scalars['String']['output']>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type StructCustomFieldConfig = CustomField & {\n __typename?: 'StructCustomFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n fields: Array<StructFieldConfig>;\n internal?: Maybe<Scalars['Boolean']['output']>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n nullable?: Maybe<Scalars['Boolean']['output']>;\n readonly?: Maybe<Scalars['Boolean']['output']>;\n requiresPermission?: Maybe<Array<Permission>>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type StructField = {\n description?: Maybe<Array<LocalizedString>>;\n label?: Maybe<Array<LocalizedString>>;\n list?: Maybe<Scalars['Boolean']['output']>;\n name: Scalars['String']['output'];\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type StructFieldConfig = BooleanStructFieldConfig | DateTimeStructFieldConfig | FloatStructFieldConfig | IntStructFieldConfig | StringStructFieldConfig | TextStructFieldConfig;\n\n/** Indicates that an operation succeeded, where we do not want to return any more specific information. */\nexport type Success = {\n __typename?: 'Success';\n success: Scalars['Boolean']['output'];\n};\n\nexport type Surcharge = Node & {\n __typename?: 'Surcharge';\n createdAt: Scalars['DateTime']['output'];\n description: Scalars['String']['output'];\n id: Scalars['ID']['output'];\n price: Scalars['Money']['output'];\n priceWithTax: Scalars['Money']['output'];\n sku?: Maybe<Scalars['String']['output']>;\n taxLines: Array<TaxLine>;\n taxRate: Scalars['Float']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type SurchargeInput = {\n description: Scalars['String']['input'];\n price: Scalars['Money']['input'];\n priceIncludesTax: Scalars['Boolean']['input'];\n sku?: InputMaybe<Scalars['String']['input']>;\n taxDescription?: InputMaybe<Scalars['String']['input']>;\n taxRate?: InputMaybe<Scalars['Float']['input']>;\n};\n\nexport type Tag = Node & {\n __typename?: 'Tag';\n createdAt: Scalars['DateTime']['output'];\n id: Scalars['ID']['output'];\n updatedAt: Scalars['DateTime']['output'];\n value: Scalars['String']['output'];\n};\n\nexport type TagFilterParameter = {\n _and?: InputMaybe<Array<TagFilterParameter>>;\n _or?: InputMaybe<Array<TagFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n id?: InputMaybe<IdOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n value?: InputMaybe<StringOperators>;\n};\n\nexport type TagList = PaginatedList & {\n __typename?: 'TagList';\n items: Array<Tag>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type TagListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<TagFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<TagSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type TagSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport type TaxCategory = Node & {\n __typename?: 'TaxCategory';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n isDefault: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type TaxCategoryFilterParameter = {\n _and?: InputMaybe<Array<TaxCategoryFilterParameter>>;\n _or?: InputMaybe<Array<TaxCategoryFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n id?: InputMaybe<IdOperators>;\n isDefault?: InputMaybe<BooleanOperators>;\n name?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type TaxCategoryList = PaginatedList & {\n __typename?: 'TaxCategoryList';\n items: Array<TaxCategory>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type TaxCategoryListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<TaxCategoryFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<TaxCategorySortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type TaxCategorySortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n\nexport type TaxLine = {\n __typename?: 'TaxLine';\n description: Scalars['String']['output'];\n taxRate: Scalars['Float']['output'];\n};\n\nexport type TaxRate = Node & {\n __typename?: 'TaxRate';\n category: TaxCategory;\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n customerGroup?: Maybe<CustomerGroup>;\n enabled: Scalars['Boolean']['output'];\n id: Scalars['ID']['output'];\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n value: Scalars['Float']['output'];\n zone: Zone;\n};\n\nexport type TaxRateFilterParameter = {\n _and?: InputMaybe<Array<TaxRateFilterParameter>>;\n _or?: InputMaybe<Array<TaxRateFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n enabled?: InputMaybe<BooleanOperators>;\n id?: InputMaybe<IdOperators>;\n name?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n value?: InputMaybe<NumberOperators>;\n};\n\nexport type TaxRateList = PaginatedList & {\n __typename?: 'TaxRateList';\n items: Array<TaxRate>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type TaxRateListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<TaxRateFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<TaxRateSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type TaxRateSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n value?: InputMaybe<SortOrder>;\n};\n\nexport type TestEligibleShippingMethodsInput = {\n lines: Array<TestShippingMethodOrderLineInput>;\n shippingAddress: CreateAddressInput;\n};\n\nexport type TestShippingMethodInput = {\n calculator: ConfigurableOperationInput;\n checker: ConfigurableOperationInput;\n lines: Array<TestShippingMethodOrderLineInput>;\n shippingAddress: CreateAddressInput;\n};\n\nexport type TestShippingMethodOrderLineInput = {\n productVariantId: Scalars['ID']['input'];\n quantity: Scalars['Int']['input'];\n};\n\nexport type TestShippingMethodQuote = {\n __typename?: 'TestShippingMethodQuote';\n metadata?: Maybe<Scalars['JSON']['output']>;\n price: Scalars['Money']['output'];\n priceWithTax: Scalars['Money']['output'];\n};\n\nexport type TestShippingMethodResult = {\n __typename?: 'TestShippingMethodResult';\n eligible: Scalars['Boolean']['output'];\n quote?: Maybe<TestShippingMethodQuote>;\n};\n\nexport type TextCustomFieldConfig = CustomField & {\n __typename?: 'TextCustomFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n internal?: Maybe<Scalars['Boolean']['output']>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n nullable?: Maybe<Scalars['Boolean']['output']>;\n readonly?: Maybe<Scalars['Boolean']['output']>;\n requiresPermission?: Maybe<Array<Permission>>;\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type TextStructFieldConfig = StructField & {\n __typename?: 'TextStructFieldConfig';\n description?: Maybe<Array<LocalizedString>>;\n label?: Maybe<Array<LocalizedString>>;\n list: Scalars['Boolean']['output'];\n name: Scalars['String']['output'];\n type: Scalars['String']['output'];\n ui?: Maybe<Scalars['JSON']['output']>;\n};\n\nexport type TransitionFulfillmentToStateResult = Fulfillment | FulfillmentStateTransitionError;\n\nexport type TransitionOrderToStateResult = Order | OrderStateTransitionError;\n\nexport type TransitionPaymentToStateResult = Payment | PaymentStateTransitionError;\n\nexport type UpdateActiveAdministratorInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n emailAddress?: InputMaybe<Scalars['String']['input']>;\n firstName?: InputMaybe<Scalars['String']['input']>;\n lastName?: InputMaybe<Scalars['String']['input']>;\n password?: InputMaybe<Scalars['String']['input']>;\n};\n\n/**\n * Input used to update an Address.\n *\n * The countryCode must correspond to a `code` property of a Country that has been defined in the\n * Vendure server. The `code` property is typically a 2-character ISO code such as \"GB\", \"US\", \"DE\" etc.\n * If an invalid code is passed, the mutation will fail.\n */\nexport type UpdateAddressInput = {\n city?: InputMaybe<Scalars['String']['input']>;\n company?: InputMaybe<Scalars['String']['input']>;\n countryCode?: InputMaybe<Scalars['String']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n defaultBillingAddress?: InputMaybe<Scalars['Boolean']['input']>;\n defaultShippingAddress?: InputMaybe<Scalars['Boolean']['input']>;\n fullName?: InputMaybe<Scalars['String']['input']>;\n id: Scalars['ID']['input'];\n phoneNumber?: InputMaybe<Scalars['String']['input']>;\n postalCode?: InputMaybe<Scalars['String']['input']>;\n province?: InputMaybe<Scalars['String']['input']>;\n streetLine1?: InputMaybe<Scalars['String']['input']>;\n streetLine2?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UpdateAdministratorInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n emailAddress?: InputMaybe<Scalars['String']['input']>;\n firstName?: InputMaybe<Scalars['String']['input']>;\n id: Scalars['ID']['input'];\n lastName?: InputMaybe<Scalars['String']['input']>;\n password?: InputMaybe<Scalars['String']['input']>;\n roleIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n};\n\nexport type UpdateAssetInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n focalPoint?: InputMaybe<CoordinateInput>;\n id: Scalars['ID']['input'];\n name?: InputMaybe<Scalars['String']['input']>;\n tags?: InputMaybe<Array<Scalars['String']['input']>>;\n};\n\nexport type UpdateChannelInput = {\n availableCurrencyCodes?: InputMaybe<Array<CurrencyCode>>;\n availableLanguageCodes?: InputMaybe<Array<LanguageCode>>;\n code?: InputMaybe<Scalars['String']['input']>;\n /** @deprecated Use defaultCurrencyCode instead */\n currencyCode?: InputMaybe<CurrencyCode>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n defaultCurrencyCode?: InputMaybe<CurrencyCode>;\n defaultLanguageCode?: InputMaybe<LanguageCode>;\n defaultShippingZoneId?: InputMaybe<Scalars['ID']['input']>;\n defaultTaxZoneId?: InputMaybe<Scalars['ID']['input']>;\n id: Scalars['ID']['input'];\n outOfStockThreshold?: InputMaybe<Scalars['Int']['input']>;\n pricesIncludeTax?: InputMaybe<Scalars['Boolean']['input']>;\n sellerId?: InputMaybe<Scalars['ID']['input']>;\n token?: InputMaybe<Scalars['String']['input']>;\n trackInventory?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type UpdateChannelResult = Channel | LanguageNotAvailableError;\n\nexport type UpdateCollectionInput = {\n assetIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n featuredAssetId?: InputMaybe<Scalars['ID']['input']>;\n filters?: InputMaybe<Array<ConfigurableOperationInput>>;\n id: Scalars['ID']['input'];\n inheritFilters?: InputMaybe<Scalars['Boolean']['input']>;\n isPrivate?: InputMaybe<Scalars['Boolean']['input']>;\n parentId?: InputMaybe<Scalars['ID']['input']>;\n translations?: InputMaybe<Array<UpdateCollectionTranslationInput>>;\n};\n\nexport type UpdateCollectionTranslationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n description?: InputMaybe<Scalars['String']['input']>;\n id?: InputMaybe<Scalars['ID']['input']>;\n languageCode: LanguageCode;\n name?: InputMaybe<Scalars['String']['input']>;\n slug?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UpdateCountryInput = {\n code?: InputMaybe<Scalars['String']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n id: Scalars['ID']['input'];\n translations?: InputMaybe<Array<CountryTranslationInput>>;\n};\n\nexport type UpdateCustomerGroupInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id: Scalars['ID']['input'];\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UpdateCustomerInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n emailAddress?: InputMaybe<Scalars['String']['input']>;\n firstName?: InputMaybe<Scalars['String']['input']>;\n id: Scalars['ID']['input'];\n lastName?: InputMaybe<Scalars['String']['input']>;\n phoneNumber?: InputMaybe<Scalars['String']['input']>;\n title?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UpdateCustomerNoteInput = {\n note: Scalars['String']['input'];\n noteId: Scalars['ID']['input'];\n};\n\nexport type UpdateCustomerResult = Customer | EmailAddressConflictError;\n\nexport type UpdateFacetInput = {\n code?: InputMaybe<Scalars['String']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id: Scalars['ID']['input'];\n isPrivate?: InputMaybe<Scalars['Boolean']['input']>;\n translations?: InputMaybe<Array<FacetTranslationInput>>;\n};\n\nexport type UpdateFacetValueInput = {\n code?: InputMaybe<Scalars['String']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id: Scalars['ID']['input'];\n translations?: InputMaybe<Array<FacetValueTranslationInput>>;\n};\n\nexport type UpdateGlobalSettingsInput = {\n availableLanguages?: InputMaybe<Array<LanguageCode>>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n outOfStockThreshold?: InputMaybe<Scalars['Int']['input']>;\n trackInventory?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\nexport type UpdateGlobalSettingsResult = ChannelDefaultLanguageError | GlobalSettings;\n\nexport type UpdateOrderAddressInput = {\n city?: InputMaybe<Scalars['String']['input']>;\n company?: InputMaybe<Scalars['String']['input']>;\n countryCode?: InputMaybe<Scalars['String']['input']>;\n fullName?: InputMaybe<Scalars['String']['input']>;\n phoneNumber?: InputMaybe<Scalars['String']['input']>;\n postalCode?: InputMaybe<Scalars['String']['input']>;\n province?: InputMaybe<Scalars['String']['input']>;\n streetLine1?: InputMaybe<Scalars['String']['input']>;\n streetLine2?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UpdateOrderInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id: Scalars['ID']['input'];\n};\n\nexport type UpdateOrderItemsResult = InsufficientStockError | NegativeQuantityError | Order | OrderInterceptorError | OrderLimitError | OrderModificationError;\n\nexport type UpdateOrderNoteInput = {\n isPublic?: InputMaybe<Scalars['Boolean']['input']>;\n note?: InputMaybe<Scalars['String']['input']>;\n noteId: Scalars['ID']['input'];\n};\n\nexport type UpdatePaymentMethodInput = {\n checker?: InputMaybe<ConfigurableOperationInput>;\n code?: InputMaybe<Scalars['String']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n handler?: InputMaybe<ConfigurableOperationInput>;\n id: Scalars['ID']['input'];\n translations?: InputMaybe<Array<PaymentMethodTranslationInput>>;\n};\n\nexport type UpdateProductInput = {\n assetIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n facetValueIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n featuredAssetId?: InputMaybe<Scalars['ID']['input']>;\n id: Scalars['ID']['input'];\n translations?: InputMaybe<Array<ProductTranslationInput>>;\n};\n\nexport type UpdateProductOptionGroupInput = {\n code?: InputMaybe<Scalars['String']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id: Scalars['ID']['input'];\n translations?: InputMaybe<Array<ProductOptionGroupTranslationInput>>;\n};\n\nexport type UpdateProductOptionInput = {\n code?: InputMaybe<Scalars['String']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id: Scalars['ID']['input'];\n translations?: InputMaybe<Array<ProductOptionGroupTranslationInput>>;\n};\n\nexport type UpdateProductVariantInput = {\n assetIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n facetValueIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n featuredAssetId?: InputMaybe<Scalars['ID']['input']>;\n id: Scalars['ID']['input'];\n optionIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n outOfStockThreshold?: InputMaybe<Scalars['Int']['input']>;\n /** Sets the price for the ProductVariant in the Channel's default currency */\n price?: InputMaybe<Scalars['Money']['input']>;\n /** Allows multiple prices to be set for the ProductVariant in different currencies. */\n prices?: InputMaybe<Array<UpdateProductVariantPriceInput>>;\n sku?: InputMaybe<Scalars['String']['input']>;\n stockLevels?: InputMaybe<Array<StockLevelInput>>;\n stockOnHand?: InputMaybe<Scalars['Int']['input']>;\n taxCategoryId?: InputMaybe<Scalars['ID']['input']>;\n trackInventory?: InputMaybe<GlobalFlag>;\n translations?: InputMaybe<Array<ProductVariantTranslationInput>>;\n useGlobalOutOfStockThreshold?: InputMaybe<Scalars['Boolean']['input']>;\n};\n\n/**\n * Used to set up update the price of a ProductVariant in a particular Channel.\n * If the `delete` flag is `true`, the price will be deleted for the given Channel.\n */\nexport type UpdateProductVariantPriceInput = {\n currencyCode: CurrencyCode;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n delete?: InputMaybe<Scalars['Boolean']['input']>;\n price: Scalars['Money']['input'];\n};\n\nexport type UpdatePromotionInput = {\n actions?: InputMaybe<Array<ConfigurableOperationInput>>;\n conditions?: InputMaybe<Array<ConfigurableOperationInput>>;\n couponCode?: InputMaybe<Scalars['String']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n endsAt?: InputMaybe<Scalars['DateTime']['input']>;\n id: Scalars['ID']['input'];\n perCustomerUsageLimit?: InputMaybe<Scalars['Int']['input']>;\n startsAt?: InputMaybe<Scalars['DateTime']['input']>;\n translations?: InputMaybe<Array<PromotionTranslationInput>>;\n usageLimit?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type UpdatePromotionResult = MissingConditionsError | Promotion;\n\nexport type UpdateProvinceInput = {\n code?: InputMaybe<Scalars['String']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n id: Scalars['ID']['input'];\n translations?: InputMaybe<Array<ProvinceTranslationInput>>;\n};\n\nexport type UpdateRoleInput = {\n channelIds?: InputMaybe<Array<Scalars['ID']['input']>>;\n code?: InputMaybe<Scalars['String']['input']>;\n description?: InputMaybe<Scalars['String']['input']>;\n id: Scalars['ID']['input'];\n permissions?: InputMaybe<Array<Permission>>;\n};\n\nexport type UpdateScheduledTaskInput = {\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n id: Scalars['String']['input'];\n};\n\nexport type UpdateSellerInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id: Scalars['ID']['input'];\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UpdateShippingMethodInput = {\n calculator?: InputMaybe<ConfigurableOperationInput>;\n checker?: InputMaybe<ConfigurableOperationInput>;\n code?: InputMaybe<Scalars['String']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n fulfillmentHandler?: InputMaybe<Scalars['String']['input']>;\n id: Scalars['ID']['input'];\n translations: Array<ShippingMethodTranslationInput>;\n};\n\nexport type UpdateStockLocationInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n description?: InputMaybe<Scalars['String']['input']>;\n id: Scalars['ID']['input'];\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UpdateTagInput = {\n id: Scalars['ID']['input'];\n value?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UpdateTaxCategoryInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id: Scalars['ID']['input'];\n isDefault?: InputMaybe<Scalars['Boolean']['input']>;\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type UpdateTaxRateInput = {\n categoryId?: InputMaybe<Scalars['ID']['input']>;\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n customerGroupId?: InputMaybe<Scalars['ID']['input']>;\n enabled?: InputMaybe<Scalars['Boolean']['input']>;\n id: Scalars['ID']['input'];\n name?: InputMaybe<Scalars['String']['input']>;\n value?: InputMaybe<Scalars['Float']['input']>;\n zoneId?: InputMaybe<Scalars['ID']['input']>;\n};\n\nexport type UpdateZoneInput = {\n customFields?: InputMaybe<Scalars['JSON']['input']>;\n id: Scalars['ID']['input'];\n name?: InputMaybe<Scalars['String']['input']>;\n};\n\nexport type User = Node & {\n __typename?: 'User';\n authenticationMethods: Array<AuthenticationMethod>;\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n identifier: Scalars['String']['output'];\n lastLogin?: Maybe<Scalars['DateTime']['output']>;\n roles: Array<Role>;\n updatedAt: Scalars['DateTime']['output'];\n verified: Scalars['Boolean']['output'];\n};\n\nexport type Zone = Node & {\n __typename?: 'Zone';\n createdAt: Scalars['DateTime']['output'];\n customFields?: Maybe<Scalars['JSON']['output']>;\n id: Scalars['ID']['output'];\n members: Array<Region>;\n name: Scalars['String']['output'];\n updatedAt: Scalars['DateTime']['output'];\n};\n\nexport type ZoneFilterParameter = {\n _and?: InputMaybe<Array<ZoneFilterParameter>>;\n _or?: InputMaybe<Array<ZoneFilterParameter>>;\n createdAt?: InputMaybe<DateOperators>;\n id?: InputMaybe<IdOperators>;\n name?: InputMaybe<StringOperators>;\n updatedAt?: InputMaybe<DateOperators>;\n};\n\nexport type ZoneList = PaginatedList & {\n __typename?: 'ZoneList';\n items: Array<Zone>;\n totalItems: Scalars['Int']['output'];\n};\n\nexport type ZoneListOptions = {\n /** Allows the results to be filtered */\n filter?: InputMaybe<ZoneFilterParameter>;\n /** Specifies whether multiple top-level \"filter\" fields should be combined with a logical AND or OR operation. Defaults to AND. */\n filterOperator?: InputMaybe<LogicalOperator>;\n /** Skips the first n results, for use in pagination */\n skip?: InputMaybe<Scalars['Int']['input']>;\n /** Specifies which properties to sort the results by */\n sort?: InputMaybe<ZoneSortParameter>;\n /** Takes n results, for use in pagination */\n take?: InputMaybe<Scalars['Int']['input']>;\n};\n\nexport type ZoneSortParameter = {\n createdAt?: InputMaybe<SortOrder>;\n id?: InputMaybe<SortOrder>;\n name?: InputMaybe<SortOrder>;\n updatedAt?: InputMaybe<SortOrder>;\n};\n", "import { NgModule } from '@angular/core';\nimport { RouterModule, ROUTES } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n AssetDetailQueryDocument,\n BulkActionRegistryService,\n CollectionDetailQueryDocument,\n detailComponentWithResolver,\n GetFacetDetailDocument,\n GetProductDetailDocument,\n GetProductVariantDetailDocument,\n PageService,\n SharedModule,\n} from '@vendure/admin-ui/core';\nimport { SortOrder } from '@vendure/common/lib/generated-types';\n\nimport { createRoutes } from './catalog.routes';\nimport { ApplyFacetDialogComponent } from './components/apply-facet-dialog/apply-facet-dialog.component';\nimport { AssetDetailComponent } from './components/asset-detail/asset-detail.component';\nimport { AssetListComponent } from './components/asset-list/asset-list.component';\nimport { AssignProductsToChannelDialogComponent } from './components/assign-products-to-channel-dialog/assign-products-to-channel-dialog.component';\nimport { BulkAddFacetValuesDialogComponent } from './components/bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component';\nimport { CollectionContentsComponent } from './components/collection-contents/collection-contents.component';\nimport { CollectionDataTableComponent } from './components/collection-data-table/collection-data-table.component';\nimport { CollectionDetailComponent } from './components/collection-detail/collection-detail.component';\nimport { CollectionBreadcrumbPipe } from './components/collection-list/collection-breadcrumb.pipe';\nimport {\n assignCollectionsToChannelBulkAction,\n deleteCollectionsBulkAction,\n duplicateCollectionsBulkAction,\n moveCollectionsBulkAction,\n removeCollectionsFromChannelBulkAction,\n} from './components/collection-list/collection-list-bulk-actions';\nimport { CollectionListComponent } from './components/collection-list/collection-list.component';\nimport { CollectionTreeNodeComponent } from './components/collection-tree/collection-tree-node.component';\nimport { CollectionTreeComponent } from './components/collection-tree/collection-tree.component';\nimport { ConfirmVariantDeletionDialogComponent } from './components/confirm-variant-deletion-dialog/confirm-variant-deletion-dialog.component';\nimport { CreateFacetValueDialogComponent } from './components/create-facet-value-dialog/create-facet-value-dialog.component';\nimport { CreateProductOptionGroupDialogComponent } from './components/create-product-option-group-dialog/create-product-option-group-dialog.component';\nimport { CreateProductVariantDialogComponent } from './components/create-product-variant-dialog/create-product-variant-dialog.component';\nimport { FacetDetailComponent } from './components/facet-detail/facet-detail.component';\nimport {\n assignFacetsToChannelBulkAction,\n deleteFacetsBulkAction,\n duplicateFacetsBulkAction,\n removeFacetsFromChannelBulkAction,\n} from './components/facet-list/facet-list-bulk-actions';\nimport { FacetListComponent } from './components/facet-list/facet-list.component';\nimport { GenerateProductVariantsComponent } from './components/generate-product-variants/generate-product-variants.component';\nimport { MoveCollectionsDialogComponent } from './components/move-collections-dialog/move-collections-dialog.component';\nimport { OptionValueInputComponent } from './components/option-value-input/option-value-input.component';\nimport { ProductDetailComponent } from './components/product-detail/product-detail.component';\nimport {\n assignFacetValuesToProductsBulkAction,\n assignProductsToChannelBulkAction,\n deleteProductsBulkAction,\n duplicateProductsBulkAction,\n removeProductsFromChannelBulkAction,\n} from './components/product-list/product-list-bulk-actions';\nimport { ProductListComponent } from './components/product-list/product-list.component';\nimport { ProductOptionsEditorComponent } from './components/product-options-editor/product-options-editor.component';\nimport { ProductVariantDetailComponent } from './components/product-variant-detail/product-variant-detail.component';\nimport {\n assignFacetValuesToProductVariantsBulkAction,\n assignProductVariantsToChannelBulkAction,\n deleteProductVariantsBulkAction,\n removeProductVariantsFromChannelBulkAction,\n} from './components/product-variant-list/product-variant-list-bulk-actions';\nimport { ProductVariantListComponent } from './components/product-variant-list/product-variant-list.component';\nimport { ProductVariantQuickJumpComponent } from './components/product-variant-quick-jump/product-variant-quick-jump.component';\nimport { ProductVariantsEditorComponent } from './components/product-variants-editor/product-variants-editor.component';\nimport { ProductVariantsTableComponent } from './components/product-variants-table/product-variants-table.component';\nimport { UpdateProductOptionDialogComponent } from './components/update-product-option-dialog/update-product-option-dialog.component';\nimport { VariantPriceDetailComponent } from './components/variant-price-detail/variant-price-detail.component';\nimport { VariantPriceStrategyDetailComponent } from './components/variant-price-strategy-detail/variant-price-strategy-detail.component';\n\nconst CATALOG_COMPONENTS = [\n ProductListComponent,\n ProductDetailComponent,\n FacetListComponent,\n FacetDetailComponent,\n GenerateProductVariantsComponent,\n ApplyFacetDialogComponent,\n AssetListComponent,\n VariantPriceDetailComponent,\n VariantPriceStrategyDetailComponent,\n CollectionListComponent,\n CollectionDetailComponent,\n CollectionTreeComponent,\n CollectionTreeNodeComponent,\n CollectionContentsComponent,\n ProductVariantsTableComponent,\n OptionValueInputComponent,\n UpdateProductOptionDialogComponent,\n ProductVariantsEditorComponent,\n AssignProductsToChannelDialogComponent,\n AssetDetailComponent,\n ConfirmVariantDeletionDialogComponent,\n ProductOptionsEditorComponent,\n BulkAddFacetValuesDialogComponent,\n CollectionDataTableComponent,\n CollectionBreadcrumbPipe,\n MoveCollectionsDialogComponent,\n ProductVariantListComponent,\n ProductDetailComponent,\n ProductVariantDetailComponent,\n CreateProductVariantDialogComponent,\n CreateProductOptionGroupDialogComponent,\n ProductVariantQuickJumpComponent,\n CreateFacetValueDialogComponent,\n];\n\n@NgModule({\n imports: [SharedModule, RouterModule.forChild([])],\n exports: [...CATALOG_COMPONENTS],\n declarations: [...CATALOG_COMPONENTS],\n providers: [\n {\n provide: ROUTES,\n useFactory: (pageService: PageService) => createRoutes(pageService),\n multi: true,\n deps: [PageService],\n },\n ],\n})\nexport class CatalogModule {\n private static hasRegisteredTabsAndBulkActions = false;\n\n constructor(bulkActionRegistryService: BulkActionRegistryService, pageService: PageService) {\n if (CatalogModule.hasRegisteredTabsAndBulkActions) {\n return;\n }\n bulkActionRegistryService.registerBulkAction(assignFacetValuesToProductsBulkAction);\n bulkActionRegistryService.registerBulkAction(assignProductsToChannelBulkAction);\n bulkActionRegistryService.registerBulkAction(duplicateProductsBulkAction);\n bulkActionRegistryService.registerBulkAction(removeProductsFromChannelBulkAction);\n bulkActionRegistryService.registerBulkAction(deleteProductsBulkAction);\n\n bulkActionRegistryService.registerBulkAction(assignFacetValuesToProductVariantsBulkAction);\n bulkActionRegistryService.registerBulkAction(assignProductVariantsToChannelBulkAction);\n bulkActionRegistryService.registerBulkAction(removeProductVariantsFromChannelBulkAction);\n bulkActionRegistryService.registerBulkAction(deleteProductVariantsBulkAction);\n\n bulkActionRegistryService.registerBulkAction(assignFacetsToChannelBulkAction);\n bulkActionRegistryService.registerBulkAction(duplicateFacetsBulkAction);\n bulkActionRegistryService.registerBulkAction(removeFacetsFromChannelBulkAction);\n bulkActionRegistryService.registerBulkAction(deleteFacetsBulkAction);\n\n bulkActionRegistryService.registerBulkAction(moveCollectionsBulkAction);\n bulkActionRegistryService.registerBulkAction(assignCollectionsToChannelBulkAction);\n bulkActionRegistryService.registerBulkAction(duplicateCollectionsBulkAction);\n bulkActionRegistryService.registerBulkAction(removeCollectionsFromChannelBulkAction);\n bulkActionRegistryService.registerBulkAction(deleteCollectionsBulkAction);\n\n pageService.registerPageTab({\n priority: 0,\n location: 'product-list',\n tab: _('catalog.products'),\n route: '',\n component: ProductListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'product-detail',\n tab: _('catalog.product'),\n route: '',\n component: detailComponentWithResolver({\n component: ProductDetailComponent,\n query: GetProductDetailDocument,\n entityKey: 'product',\n getBreadcrumbs: entity => [\n {\n label: entity ? entity.name : _('catalog.create-new-product'),\n link: [entity?.id],\n },\n ],\n }),\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'product-list',\n tab: _('catalog.product-variants'),\n route: 'variants',\n component: ProductVariantListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'product-variant-detail',\n tab: _('catalog.product-variants'),\n route: '',\n component: detailComponentWithResolver({\n component: ProductVariantDetailComponent,\n query: GetProductVariantDetailDocument,\n entityKey: 'productVariant',\n getBreadcrumbs: entity => [\n {\n label: `${entity?.product.name}`,\n link: ['/catalog', 'products', entity?.product.id],\n },\n {\n label: `${entity?.name} (${entity?.sku})`,\n link: ['variants', entity?.id],\n },\n ],\n }),\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'facet-list',\n tab: _('catalog.facets'),\n route: '',\n component: FacetListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'facet-detail',\n tab: _('catalog.facet'),\n route: '',\n component: detailComponentWithResolver({\n component: FacetDetailComponent,\n query: GetFacetDetailDocument,\n variables: {\n facetValueListOptions: {\n take: 10,\n skip: 0,\n sort: {\n createdAt: SortOrder.DESC,\n },\n },\n },\n entityKey: 'facet',\n getBreadcrumbs: entity => [\n {\n label: entity ? entity.name : _('catalog.create-new-facet'),\n link: [entity?.id],\n },\n ],\n }),\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'collection-list',\n tab: _('catalog.collections'),\n route: '',\n component: CollectionListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'collection-detail',\n tab: _('catalog.collection'),\n route: '',\n component: detailComponentWithResolver({\n component: CollectionDetailComponent,\n query: CollectionDetailQueryDocument,\n entityKey: 'collection',\n getBreadcrumbs: entity => [\n {\n label: entity ? entity.name : _('catalog.create-new-collection'),\n link: [entity?.id],\n },\n ],\n }),\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'asset-list',\n tab: _('catalog.assets'),\n route: '',\n component: AssetListComponent,\n });\n pageService.registerPageTab({\n priority: 0,\n location: 'asset-detail',\n tab: _('catalog.asset'),\n route: '',\n component: detailComponentWithResolver({\n component: AssetDetailComponent,\n query: AssetDetailQueryDocument,\n entityKey: 'asset',\n getBreadcrumbs: entity => [\n {\n label: `${entity?.name}`,\n link: [entity?.id],\n },\n ],\n }),\n });\n CatalogModule.hasRegisteredTabsAndBulkActions = true;\n }\n}\n", "import { Injectable } from '@angular/core';\nimport {\n CreateProductInput,\n CreateProductVariantInput,\n DataService,\n DeletionResult,\n FacetWithValuesFragment,\n findTranslation,\n GetProductDetailQuery,\n GetProductWithVariantsQuery,\n LanguageCode,\n UpdateProductInput,\n UpdateProductMutation,\n UpdateProductOptionInput,\n UpdateProductVariantInput,\n UpdateProductVariantsMutation,\n} from '@vendure/admin-ui/core';\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\nimport { forkJoin, Observable, of, throwError } from 'rxjs';\nimport { map, mergeMap, shareReplay, switchMap } from 'rxjs/operators';\n\nimport { CreateProductVariantsConfig } from '../../components/generate-product-variants/generate-product-variants.component';\n\nimport { replaceLast } from './replace-last';\n\n/**\n * Handles the logic for making the API calls to perform CRUD operations on a Product and its related\n * entities. This logic was extracted out of the component because it became too large and hard to follow.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductDetailService {\n constructor(private dataService: DataService) {}\n\n getTaxCategories() {\n return this.dataService.settings\n .getTaxCategories()\n .mapSingle(data => data.taxCategories.items)\n .pipe(shareReplay(1));\n }\n\n createProductWithVariants(\n input: CreateProductInput,\n createVariantsConfig: CreateProductVariantsConfig,\n languageCode: LanguageCode,\n ) {\n const createProduct$ = this.dataService.product.createProduct(input);\n const nonEmptyOptionGroups = createVariantsConfig.groups.filter(g => 0 < g.values.length);\n const createOptionGroups$ = this.createProductOptionGroups(nonEmptyOptionGroups, languageCode);\n\n return forkJoin(createProduct$, createOptionGroups$).pipe(\n mergeMap(([{ createProduct }, optionGroups]) => {\n const addOptionsToProduct$ = optionGroups.length\n ? forkJoin(\n optionGroups.map(optionGroup =>\n this.dataService.product.addOptionGroupToProduct({\n productId: createProduct.id,\n optionGroupId: optionGroup.id,\n }),\n ),\n )\n : of([]);\n return addOptionsToProduct$.pipe(map(() => ({ createProduct, optionGroups })));\n }),\n mergeMap(({ createProduct, optionGroups }) => {\n const variants = createVariantsConfig.variants.map(v => {\n const optionIds = optionGroups.length\n ? v.optionValues.map((optionName, index) => {\n const option = optionGroups[index].options.find(o => o.name === optionName);\n if (!option) {\n throw new Error(\n `Could not find a matching ProductOption \"${optionName}\" when creating variant`,\n );\n }\n return option.id;\n })\n : [];\n return {\n ...v,\n optionIds,\n };\n });\n const options = optionGroups.map(og => og.options).reduce((flat, o) => [...flat, ...o], []);\n return this.createProductVariants(\n createProduct,\n variants,\n options,\n languageCode,\n createVariantsConfig.stockLocationId,\n );\n }),\n );\n }\n\n createProductOptionGroups(groups: Array<{ name: string; values: string[] }>, languageCode: LanguageCode) {\n return groups.length\n ? forkJoin(\n groups.map(c =>\n this.dataService.product\n .createProductOptionGroups({\n code: normalizeString(c.name, '-'),\n translations: [{ languageCode, name: c.name }],\n options: c.values.map(v => ({\n code: normalizeString(v, '-'),\n translations: [{ languageCode, name: v }],\n })),\n })\n .pipe(map(data => data.createProductOptionGroup)),\n ),\n )\n : of([]);\n }\n\n createProductVariants(\n product: { name: string; id: string },\n variantData: Array<{ price: number; sku: string; stock: number; optionIds: string[] }>,\n options: Array<{ id: string; name: string }>,\n languageCode: LanguageCode,\n stockLocationId: string,\n ) {\n const variants: CreateProductVariantInput[] = variantData.map(v => {\n const name = options.length\n ? `${product.name} ${v.optionIds\n .map(id => options.find(o => o.id === id))\n .filter(notNullOrUndefined)\n .map(o => o.name)\n .join(' ')}`\n : product.name;\n return {\n productId: product.id,\n price: v.price,\n sku: v.sku,\n translations: [\n {\n languageCode,\n name,\n },\n ],\n stockLevels: [\n {\n stockLocationId,\n stockOnHand: v.stock,\n },\n ],\n optionIds: v.optionIds,\n };\n });\n return this.dataService.product.createProductVariants(variants).pipe(\n map(({ createProductVariants }) => ({\n createProductVariants,\n productId: product.id,\n })),\n );\n }\n\n updateProduct(updateOptions: {\n product: NonNullable<GetProductDetailQuery['product']>;\n languageCode: LanguageCode;\n autoUpdate: boolean;\n productInput?: UpdateProductInput;\n variantsInput?: UpdateProductVariantInput[];\n }) {\n const { product, languageCode, autoUpdate, productInput, variantsInput } = updateOptions;\n const updateOperations: Array<Observable<UpdateProductMutation | UpdateProductVariantsMutation>> = [];\n const updateVariantsInput = variantsInput || [];\n\n const variants$ = autoUpdate\n ? this.dataService.product\n .getProductVariantsForProduct({}, product.id)\n .mapSingle(({ productVariants }) => productVariants.items)\n : of([]);\n\n return variants$.pipe(\n mergeMap(variants => {\n if (productInput) {\n updateOperations.push(this.dataService.product.updateProduct(productInput));\n const productOldName = findTranslation(product, languageCode)?.name ?? '';\n const productNewName = findTranslation(productInput, languageCode)?.name;\n if (productNewName && productOldName !== productNewName && autoUpdate) {\n for (const variant of variants) {\n const currentVariantName = findTranslation(variant, languageCode)?.name || '';\n let variantInput: UpdateProductVariantInput;\n const existingVariantInput = updateVariantsInput.find(i => i.id === variant.id);\n if (existingVariantInput) {\n variantInput = existingVariantInput;\n } else {\n variantInput = {\n id: variant.id,\n translations: [{ languageCode, name: currentVariantName }],\n };\n updateVariantsInput.push(variantInput);\n }\n const variantTranslation = findTranslation(variantInput, languageCode);\n if (variantTranslation) {\n if (variantTranslation.name) {\n variantTranslation.name = replaceLast(\n variantTranslation.name,\n productOldName,\n productNewName,\n );\n } else {\n // The variant translation was falsy, which occurs\n // when defining the product name for a new translation\n // language that had not yet been defined.\n variantTranslation.name = [\n productNewName,\n ...variant.options.map(o => o.name),\n ].join(' ');\n }\n }\n }\n }\n }\n if (updateVariantsInput.length) {\n updateOperations.push(\n this.dataService.product.updateProductVariants(updateVariantsInput),\n );\n }\n return forkJoin(updateOperations);\n }),\n );\n }\n\n updateProductOptions(\n inputs: UpdateProductOptionInput[],\n autoUpdateProductNames: boolean,\n product: NonNullable<GetProductDetailQuery['product']>,\n languageCode: LanguageCode,\n ) {\n const variants$ = autoUpdateProductNames\n ? this.dataService.product\n .getProductVariantsForProduct({}, product.id)\n .mapSingle(({ productVariants }) => productVariants.items)\n : of([]);\n\n return variants$.pipe(\n mergeMap(variants => {\n let updateProductVariantNames$: Observable<any> = of([]);\n if (autoUpdateProductNames) {\n const replacementMap = new Map<string, string>();\n\n for (const input of inputs) {\n const newOptionName = findTranslation(input, languageCode)?.name;\n let oldOptionName: string | undefined;\n for (const variant of variants) {\n if (oldOptionName) {\n continue;\n }\n if (variant.options.map(o => o.id).includes(input.id)) {\n if (!oldOptionName) {\n oldOptionName = findTranslation(\n variant.options.find(o => o.id === input.id),\n languageCode,\n )?.name;\n }\n }\n }\n if (oldOptionName && newOptionName) {\n replacementMap.set(oldOptionName, newOptionName);\n }\n }\n\n const variantsToUpdate: UpdateProductVariantInput[] = [];\n if (replacementMap.size) {\n const oldOptionNames = Array.from(replacementMap.keys());\n for (const variant of variants) {\n const variantName = findTranslation(variant, languageCode)?.name;\n if (!variantName) {\n continue;\n }\n if (!oldOptionNames.some(oldOptionName => variantName.includes(oldOptionName))) {\n continue;\n }\n const updatedVariantName = oldOptionNames.reduce(\n (name, oldOptionName) =>\n replaceLast(name, oldOptionName, replacementMap.get(oldOptionName)!),\n variantName,\n );\n variantsToUpdate.push({\n id: variant.id,\n translations: [\n {\n languageCode,\n name: updatedVariantName,\n },\n ],\n });\n }\n }\n if (variantsToUpdate.length) {\n updateProductVariantNames$ =\n this.dataService.product.updateProductVariants(variantsToUpdate);\n } else {\n updateProductVariantNames$ = of([]);\n }\n }\n return forkJoin(\n inputs.map(input => this.dataService.product.updateProductOption(input)),\n ).pipe(mergeMap(() => updateProductVariantNames$));\n }),\n );\n }\n\n deleteProductVariant(id: string, productId: string) {\n return this.dataService.product.deleteProductVariant(id).pipe(\n switchMap(result => {\n if (result.deleteProductVariant.result === DeletionResult.DELETED) {\n return this.dataService.product.getProduct(productId).single$;\n } else {\n return throwError(result.deleteProductVariant.message);\n }\n }),\n );\n }\n}\n", "/**\n * @description\n * Like String.prototype.replace(), but replaces the last instance\n * rather than the first.\n */\nexport function replaceLast(target: string | undefined | null, search: string, replace: string): string {\n if (!target) {\n return '';\n }\n const lastIndex = target.lastIndexOf(search);\n if (lastIndex === -1) {\n return target;\n }\n const head = target.substr(0, lastIndex);\n const tail = target.substr(lastIndex).replace(search, replace);\n return head + tail;\n}\n", "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { UntypedFormArray, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BaseDetailComponent,\n createUpdatedTranslatable,\n CustomFieldConfig,\n DataService,\n findTranslation,\n GetProductVariantOptionsQuery,\n LanguageCode,\n NotificationService,\n Permission,\n PermissionsService,\n ProductOptionFragment,\n ProductOptionGroupFragment,\n ServerConfigService,\n TranslationOf,\n UpdateProductOptionGroupInput,\n UpdateProductOptionInput,\n} from '@vendure/admin-ui/core';\nimport { combineLatest, forkJoin, Observable } from 'rxjs';\nimport { map, mergeMap, take, tap } from 'rxjs/operators';\n\nimport { ProductDetailService } from '../../providers/product-detail/product-detail.service';\n\ntype ProductWithOptions = NonNullable<GetProductVariantOptionsQuery['product']>;\n\n@Component({\n selector: 'vdr-product-options-editor',\n templateUrl: './product-options-editor.component.html',\n styleUrls: ['./product-options-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class ProductOptionsEditorComponent extends BaseDetailComponent<ProductWithOptions> implements OnInit {\n detailForm: UntypedFormGroup;\n optionGroups$: Observable<ProductWithOptions['optionGroups']>;\n languageCode$: Observable<LanguageCode>;\n availableLanguages$: Observable<LanguageCode[]>;\n optionGroupCustomFields: CustomFieldConfig[];\n optionCustomFields: CustomFieldConfig[];\n autoUpdateVariantNames = true;\n paginationSettings: { [groupId: string]: { currentPage: number; itemsPerPage: number } } = {};\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateProduct];\n\n constructor(\n protected route: ActivatedRoute,\n protected router: Router,\n protected serverConfigService: ServerConfigService,\n protected dataService: DataService,\n protected permissionsService: PermissionsService,\n private productDetailService: ProductDetailService,\n private formBuilder: UntypedFormBuilder,\n private changeDetector: ChangeDetectorRef,\n private notificationService: NotificationService,\n ) {\n super(route, router, serverConfigService, dataService, permissionsService);\n this.optionGroupCustomFields = this.getCustomFieldConfig('ProductOptionGroup');\n this.optionCustomFields = this.getCustomFieldConfig('ProductOption');\n }\n\n ngOnInit(): void {\n this.optionGroups$ = this.route.snapshot.data.entity.pipe(\n map((product: ProductWithOptions) => product.optionGroups),\n tap((optionGroups: ProductWithOptions['optionGroups']) => {\n for (const group of optionGroups) {\n this.paginationSettings[group.id] = {\n currentPage: 1,\n itemsPerPage: 10,\n };\n }\n }),\n );\n this.detailForm = new UntypedFormGroup({\n optionGroups: new UntypedFormArray([]),\n });\n super.init();\n }\n\n getOptionGroups(): UntypedFormGroup[] {\n const optionGroups = this.detailForm.get('optionGroups');\n return (optionGroups as UntypedFormArray).controls as UntypedFormGroup[];\n }\n\n getOptions(optionGroup: UntypedFormGroup): UntypedFormGroup[] {\n const options = optionGroup.get('options');\n return (options as UntypedFormArray).controls as UntypedFormGroup[];\n }\n\n save() {\n if (this.detailForm.invalid || this.detailForm.pristine) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const $product = this.dataService.product.getProduct(this.id).mapSingle(data => data.product!);\n combineLatest(this.entity$, this.languageCode$, $product)\n .pipe(\n take(1),\n mergeMap(([{ optionGroups }, languageCode, product]) => {\n const updateOperations: Array<Observable<any>> = [];\n const updatedProductOptionInputs: UpdateProductOptionInput[] = [];\n for (const optionGroupForm of this.getOptionGroups()) {\n if (optionGroupForm.dirty) {\n const optionGroupEntity = optionGroups.find(\n og => og.id === optionGroupForm.value.id,\n );\n if (optionGroupEntity) {\n const input = this.getUpdatedOptionGroup(\n optionGroupEntity,\n optionGroupForm,\n languageCode,\n );\n updateOperations.push(\n this.dataService.product.updateProductOptionGroup(input),\n );\n }\n }\n\n for (const optionForm of this.getOptions(optionGroupForm)) {\n if (optionForm.dirty) {\n const optionGroup = optionGroups\n .find(og => og.id === optionGroupForm.value.id)\n ?.options.find(o => o.id === optionForm.value.id);\n if (optionGroup) {\n const input = this.getUpdatedOption(\n optionGroup,\n optionForm,\n languageCode,\n );\n updatedProductOptionInputs.push(input);\n }\n }\n }\n }\n if (updatedProductOptionInputs.length) {\n updateOperations.push(\n this.productDetailService.updateProductOptions(\n updatedProductOptionInputs,\n this.autoUpdateVariantNames,\n product,\n languageCode,\n ),\n );\n }\n return forkJoin(updateOperations);\n }),\n )\n .subscribe(\n () => {\n this.detailForm.markAsPristine();\n this.changeDetector.markForCheck();\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'ProductOptionGroup',\n });\n },\n err => {\n this.notificationService.error(_('common.notify-update-error'), {\n entity: 'ProductOptionGroup',\n });\n },\n );\n }\n\n private getUpdatedOptionGroup(\n optionGroup: ProductOptionGroupFragment,\n optionGroupFormGroup: UntypedFormGroup,\n languageCode: LanguageCode,\n ): UpdateProductOptionGroupInput {\n const input = createUpdatedTranslatable({\n translatable: optionGroup,\n updatedFields: optionGroupFormGroup.value,\n customFieldConfig: this.optionGroupCustomFields,\n languageCode,\n defaultTranslation: {\n languageCode,\n name: optionGroup.name || '',\n },\n });\n return input;\n }\n\n private getUpdatedOption(\n option: ProductOptionFragment,\n optionFormGroup: UntypedFormGroup,\n languageCode: LanguageCode,\n ): UpdateProductOptionInput {\n const input = createUpdatedTranslatable({\n translatable: option,\n updatedFields: optionFormGroup.value,\n customFieldConfig: this.optionCustomFields,\n languageCode,\n defaultTranslation: {\n languageCode,\n name: option.name || '',\n },\n });\n return input;\n }\n\n protected setFormValues(entity: ProductWithOptions, languageCode: LanguageCode): void {\n const groupsForm = this.detailForm.get('optionGroups') as UntypedFormArray;\n for (const optionGroup of entity.optionGroups) {\n const groupTranslation = findTranslation(optionGroup, languageCode);\n\n const groupForm = this.setOptionGroupForm(optionGroup, groupsForm, groupTranslation);\n this.setCustomFieldsForm(this.optionGroupCustomFields, groupForm, optionGroup, groupTranslation);\n\n let optionsForm = groupForm.get('options') as UntypedFormArray;\n if (!optionsForm) {\n optionsForm = this.formBuilder.array([]);\n groupForm.addControl('options', optionsForm);\n }\n for (const option of optionGroup.options) {\n const optionTranslation = findTranslation(option, languageCode);\n const optionForm = this.setOptionForm(option, optionsForm, optionTranslation);\n\n this.setCustomFieldsForm(this.optionCustomFields, optionForm, option, optionTranslation);\n }\n }\n }\n\n protected setCustomFieldsForm<\n T extends ProductWithOptions['optionGroups'][0] | ProductWithOptions['optionGroups'][0]['options'][0],\n >(\n customFields: CustomFieldConfig[],\n formGroup: UntypedFormGroup,\n entity: T,\n currentTranslation?: TranslationOf<T>,\n ) {\n if (customFields.length) {\n let customValueFieldsGroup = formGroup.get(['customFields']);\n if (!customValueFieldsGroup) {\n customValueFieldsGroup = this.formBuilder.group(\n customFields.reduce((hash, field) => ({ ...hash, [field.name]: '' }), {}),\n );\n formGroup.addControl('customFields', customValueFieldsGroup);\n }\n this.setCustomFieldFormValues(customFields, customValueFieldsGroup, entity, currentTranslation);\n }\n }\n\n protected setOptionGroupForm(\n entity: ProductWithOptions['optionGroups'][0],\n groupsForm: UntypedFormArray,\n currentTranslation?: TranslationOf<ProductWithOptions['optionGroups'][0]>,\n ) {\n const group = {\n id: entity.id,\n createdAt: entity.createdAt,\n updatedAt: entity.updatedAt,\n code: entity.code,\n name: currentTranslation?.name ?? '',\n };\n let groupForm = groupsForm.controls.find(control => control.value.id === entity.id) as\n | UntypedFormGroup\n | undefined;\n if (groupForm) {\n groupForm.get('id')?.setValue(group.id);\n groupForm.get('code')?.setValue(group.code);\n groupForm.get('name')?.setValue(group.name);\n groupForm.get('createdAt')?.setValue(group.createdAt);\n groupForm.get('updatedAt')?.setValue(group.updatedAt);\n } else {\n groupForm = this.formBuilder.group(group);\n groupsForm.push(groupForm);\n }\n return groupForm;\n }\n\n protected setOptionForm(\n entity: ProductWithOptions['optionGroups'][0]['options'][0],\n optionsForm: UntypedFormArray,\n currentTranslation?: TranslationOf<ProductWithOptions['optionGroups'][0]['options'][0]>,\n ) {\n const group = {\n id: entity.id,\n createdAt: entity.createdAt,\n updatedAt: entity.updatedAt,\n code: entity.code,\n name: currentTranslation?.name ?? '',\n };\n let optionForm = optionsForm.controls.find(control => control.value.id === entity.id) as\n | UntypedFormGroup\n | undefined;\n if (optionForm) {\n optionForm.get('id')?.setValue(group.id);\n optionForm.get('code')?.setValue(group.code);\n optionForm.get('name')?.setValue(group.name);\n optionForm.get('createdAt')?.setValue(group.createdAt);\n optionForm.get('updatedAt')?.setValue(group.updatedAt);\n } else {\n optionForm = this.formBuilder.group(group);\n optionsForm.push(optionForm);\n }\n return optionForm;\n }\n}\n", "<vdr-page-header>\n <vdr-page-title></vdr-page-title>\n <vdr-page-header-description>{{ 'catalog.page-description-options-editor' | translate }}</vdr-page-header-description>\n</vdr-page-header>\n<vdr-page-body>\n <vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left>\n <vdr-language-selector\n [availableLanguageCodes]=\"availableLanguages$ | async\"\n [currentLanguageCode]=\"languageCode$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </vdr-ab-left>\n\n <vdr-ab-right>\n <div class=\"flex center\">\n <div class=\"mr-2\">\n <clr-checkbox-wrapper>\n <input\n clrCheckbox\n type=\"checkbox\"\n id=\"auto-update\"\n [(ngModel)]=\"autoUpdateVariantNames\"\n />\n <label>{{ 'catalog.auto-update-product-variant-name' | translate }}</label>\n </clr-checkbox-wrapper>\n </div>\n <button\n *vdrIfPermissions=\"updatePermission\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"detailForm.pristine || detailForm.invalid\"\n >\n {{ 'common.update' | translate }}\n </button>\n </div>\n </vdr-ab-right>\n </vdr-action-bar>\n </vdr-page-block>\n <vdr-page-block>\n <form class=\"form\" [formGroup]=\"detailForm\" *ngIf=\"optionGroups$ | async as optionGroups\">\n <div formGroupName=\"optionGroups\">\n <vdr-card\n *ngFor=\"let optionGroup of getOptionGroups(); index as i\"\n [formArrayName]=\"i\"\n [title]=\"optionGroup.value.code\"\n >\n <vdr-page-entity-info [entity]=\"optionGroup.value\"></vdr-page-entity-info>\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input\n [id]=\"'name-' + i\"\n type=\"text\"\n formControlName=\"name\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n />\n </vdr-form-field>\n <vdr-form-field [label]=\"'common.code' | translate\" for=\"code\">\n <input\n [id]=\"'code-' + i\"\n type=\"text\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n formControlName=\"code\"\n />\n </vdr-form-field>\n </div>\n <ng-container formGroupName=\"customFields\" *ngIf=\"optionGroupCustomFields.length\">\n <vdr-tabbed-custom-fields\n entityName=\"ProductOptionGroup\"\n [customFields]=\"optionGroupCustomFields\"\n [customFieldsFormGroup]=\"optionGroup.get('customFields')\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n ></vdr-tabbed-custom-fields>\n </ng-container>\n\n <vdr-data-table-2\n id=\"edit-options-list\"\n *ngIf=\"getOptions(optionGroup) as options\"\n [items]=\"options\"\n [trackByPath]=\"'value.id'\"\n [itemsPerPage]=\"paginationSettings[optionGroup.value.id]?.itemsPerPage\"\n [currentPage]=\"paginationSettings[optionGroup.value.id]?.currentPage\"\n (pageChange)=\"paginationSettings[optionGroup.value.id].currentPage = $event\"\n (itemsPerPageChange)=\"paginationSettings[optionGroup.value.id].itemsPerPage = $event\"\n [totalItems]=\"options.length\"\n >\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-optionControl=\"item\">\n {{ optionControl.value.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\n <ng-template let-optionControl=\"item\">\n {{ optionControl.value.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\" [hiddenByDefault]=\"true\">\n <ng-template let-optionControl=\"item\">\n {{ optionControl.value.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\">\n <ng-template let-optionControl=\"item\">\n <input\n type=\"text\"\n [formControl]=\"optionControl.get('name')\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\" [optional]=\"false\">\n <ng-template let-optionControl=\"item\">\n <input type=\"text\" [formControl]=\"optionControl.get('code')\" />\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.custom-fields' | translate\" id=\"custom-fields\"\n [hiddenByDefault]=\"optionCustomFields.length === 0\"\n >\n <ng-template let-optionControl=\"item\">\n <vdr-tabbed-custom-fields\n entityName=\"ProductOption\"\n [customFields]=\"optionCustomFields\"\n [compact]=\"true\"\n [customFieldsFormGroup]=\"optionControl.get('customFields')\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n ></vdr-tabbed-custom-fields>\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n </vdr-card>\n </div>\n </form>\n </vdr-page-block>\n</vdr-page-body>\n", "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CurrencyCode,\n DataService,\n DeactivateAware,\n DeletionResult,\n getDefaultUiLanguage,\n GetProductVariantOptionsQuery,\n LanguageCode,\n ModalService,\n NotificationService,\n SelectionManager,\n} from '@vendure/admin-ui/core';\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\nimport { unique } from '@vendure/common/lib/unique';\nimport { EMPTY, Observable, Subject } from 'rxjs';\nimport { map, startWith, switchMap } from 'rxjs/operators';\n\nimport { ProductDetailService } from '../../providers/product-detail/product-detail.service';\nimport { CreateProductOptionGroupDialogComponent } from '../create-product-option-group-dialog/create-product-option-group-dialog.component';\nimport { CreateProductVariantDialogComponent } from '../create-product-variant-dialog/create-product-variant-dialog.component';\n\nexport class GeneratedVariant {\n isDefault: boolean;\n options: Array<{ name: string; id?: string }>;\n productVariantId?: string;\n enabled: boolean;\n existing: boolean;\n sku: string;\n price: number;\n stock: number;\n\n constructor(config: Partial<GeneratedVariant>) {\n for (const key of Object.keys(config)) {\n this[key] = config[key];\n }\n }\n}\n\ninterface OptionGroupUiModel {\n id?: string;\n isNew: boolean;\n name: string;\n locked: boolean;\n values: Array<{\n id: string;\n name: string;\n locked: boolean;\n }>;\n}\n\n@Component({\n selector: 'vdr-product-variants-editor',\n templateUrl: './product-variants-editor.component.html',\n styleUrls: ['./product-variants-editor.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n standalone: false\n})\nexport class ProductVariantsEditorComponent implements OnInit, DeactivateAware {\n formValueChanged = false;\n optionsChanged = false;\n optionGroups: OptionGroupUiModel[];\n product: NonNullable<GetProductVariantOptionsQuery['product']>;\n variants$: Observable<NonNullable<GetProductVariantOptionsQuery['product']>['variants']>;\n optionGroups$: Observable<NonNullable<GetProductVariantOptionsQuery['product']>['optionGroups']>;\n totalItems$: Observable<number>;\n currencyCode: CurrencyCode;\n itemsPerPage = 100;\n currentPage = 1;\n searchTermControl = new FormControl('');\n selectionManager = new SelectionManager<any>({\n multiSelect: true,\n itemsAreEqual: (a, b) => a.id === b.id,\n additiveMode: true,\n });\n optionsToAddToVariant: {\n [variantId: string]: { [groupId: string]: string };\n } = {};\n private refresh$ = new Subject<void>();\n private languageCode: LanguageCode;\n\n constructor(\n private route: ActivatedRoute,\n private dataService: DataService,\n private productDetailService: ProductDetailService,\n private notificationService: NotificationService,\n private modalService: ModalService,\n private changeDetector: ChangeDetectorRef,\n ) {}\n\n ngOnInit() {\n this.languageCode =\n (this.route.snapshot.paramMap.get('lang') as LanguageCode) || getDefaultUiLanguage();\n this.dataService.settings.getActiveChannel().single$.subscribe(data => {\n this.currencyCode = data.activeChannel.defaultCurrencyCode;\n });\n\n const product$ = this.refresh$.pipe(\n switchMap(() =>\n this.dataService.product\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n .getProductVariantsOptions(this.route.parent?.snapshot.paramMap.get('id')!)\n .mapSingle(data => data.product),\n ),\n startWith(this.route.snapshot.data.product),\n );\n\n this.variants$ = product$.pipe(\n switchMap(product =>\n this.searchTermControl.valueChanges.pipe(\n startWith(''),\n map(term =>\n term\n ? product.variants.filter(v => v.name.toLowerCase().includes(term.toLowerCase()))\n : product.variants,\n ),\n ),\n ),\n );\n this.optionGroups$ = product$.pipe(map(product => product.optionGroups));\n this.totalItems$ = this.variants$.pipe(map(variants => variants.length));\n\n product$.subscribe(p => {\n this.product = p;\n const allUsedOptionIds = p.variants.map(v => v.options.map(option => option.id)).flat();\n const allUsedOptionGroupIds = p.variants.map(v => v.options.map(option => option.groupId)).flat();\n this.optionGroups = p.optionGroups.map(og => ({\n id: og.id,\n isNew: false,\n name: og.name,\n locked: allUsedOptionGroupIds.includes(og.id),\n values: og.options.map(o => ({\n id: o.id,\n name: o.name,\n locked: allUsedOptionIds.includes(o.id),\n })),\n }));\n });\n }\n\n setItemsPerPage(itemsPerPage: number) {\n this.itemsPerPage = itemsPerPage;\n this.currentPage = 1;\n }\n\n setPageNumber(page: number) {\n this.currentPage = page;\n }\n\n onFormChanged(variantInfo: GeneratedVariant) {\n this.formValueChanged = true;\n variantInfo.enabled = true;\n }\n\n canDeactivate(): boolean {\n return !this.formValueChanged;\n }\n\n addOptionGroup() {\n this.modalService\n .fromComponent(CreateProductOptionGroupDialogComponent, {\n locals: {\n languageCode: this.languageCode,\n },\n })\n .pipe(\n switchMap(result => {\n if (result) {\n return this.dataService.product.createProductOptionGroups(result).pipe(\n switchMap(({ createProductOptionGroup }) =>\n this.dataService.product.addOptionGroupToProduct({\n optionGroupId: createProductOptionGroup.id,\n productId: this.product.id,\n }),\n ),\n );\n } else {\n return EMPTY;\n }\n }),\n )\n .subscribe(result => {\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'ProductOptionGroup',\n });\n this.refresh$.next();\n this.changeDetector.markForCheck();\n });\n }\n\n removeOptionGroup(\n optionGroup: NonNullable<GetProductVariantOptionsQuery['product']>['optionGroups'][number],\n ) {\n const id = optionGroup.id;\n const usedByVariantsCount = this.product.variants.filter(v =>\n v.options.map(o => o.groupId).includes(id),\n ).length;\n this.modalService\n .dialog({\n title: _('catalog.confirm-delete-product-option-group'),\n body: usedByVariantsCount ? _('catalog.confirm-delete-product-option-group-body') : '',\n translationVars: { name: optionGroup.name, count: usedByVariantsCount },\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(\n switchMap(val => {\n if (val) {\n return this.dataService.product.removeOptionGroupFromProduct({\n optionGroupId: id,\n productId: this.product.id,\n force: true,\n });\n } else {\n return EMPTY;\n }\n }),\n )\n .subscribe(({ removeOptionGroupFromProduct }) => {\n if (removeOptionGroupFromProduct.__typename === 'Product') {\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'ProductOptionGroup',\n });\n this.refresh$.next();\n } else if (removeOptionGroupFromProduct.__typename === 'ProductOptionInUseError') {\n this.notificationService.error(removeOptionGroupFromProduct.message ?? '');\n }\n });\n }\n\n addOption(index: number, optionName: string) {\n const group = this.optionGroups[index];\n if (group && group.id) {\n this.dataService.product\n .addOptionToGroup({\n productOptionGroupId: group.id,\n code: normalizeString(optionName, '-'),\n translations: [{ name: optionName, languageCode: this.languageCode }],\n })\n .subscribe(({ createProductOption }) => {\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'ProductOption',\n });\n this.refresh$.next();\n });\n }\n }\n\n removeOption(index: number, { id, name }: { id: string; name: string }) {\n const optionGroup = this.optionGroups[index];\n if (optionGroup) {\n this.modalService\n .dialog({\n title: _('catalog.confirm-delete-product-option'),\n translationVars: { name },\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(\n switchMap(val => {\n if (val) {\n return this.dataService.product.deleteProductOption(id);\n } else {\n return EMPTY;\n }\n }),\n )\n .subscribe(({ deleteProductOption }) => {\n if (deleteProductOption.result === DeletionResult.DELETED) {\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'ProductOption',\n });\n optionGroup.values = optionGroup.values.filter(v => v.id !== id);\n this.refresh$.next();\n } else {\n this.notificationService.error(deleteProductOption.message ?? '');\n }\n });\n }\n }\n\n setOptionToAddToVariant(variantId: string, optionGroupId: string, optionId?: string) {\n if (!this.optionsToAddToVariant[variantId]) {\n this.optionsToAddToVariant[variantId] = {};\n }\n if (optionId) {\n this.optionsToAddToVariant[variantId][optionGroupId] = optionId;\n } else {\n delete this.optionsToAddToVariant[variantId][optionGroupId];\n }\n }\n\n addOptionToVariant(variant: NonNullable<GetProductVariantOptionsQuery['product']>['variants'][number]) {\n const optionIds = [\n ...variant.options.map(o => o.id),\n ...Object.values(this.optionsToAddToVariant[variant.id]),\n ];\n this.dataService.product\n .updateProductVariants([\n {\n id: variant.id,\n optionIds: unique(optionIds),\n },\n ])\n .subscribe(({ updateProductVariants }) => {\n this.refresh$.next();\n });\n }\n\n deleteVariant(variant: NonNullable<GetProductVariantOptionsQuery['product']>['variants'][number]) {\n this.modalService\n .dialog({\n title: _('catalog.confirm-delete-product-variant'),\n translationVars: { name: variant.name },\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(\n switchMap(response =>\n response\n ? this.productDetailService.deleteProductVariant(variant.id, this.product.id)\n : EMPTY,\n ),\n )\n .subscribe(\n () => {\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'ProductVariant',\n });\n this.refresh$.next();\n },\n err => {\n this.notificationService.error(_('common.notify-delete-error'), {\n entity: 'ProductVariant',\n });\n },\n );\n }\n\n createNewVariant() {\n this.modalService\n .fromComponent(CreateProductVariantDialogComponent, {\n locals: {\n product: this.product,\n },\n })\n .pipe(\n switchMap(result => {\n if (result) {\n return this.dataService.product.createProductVariants([result]);\n } else {\n return EMPTY;\n }\n }),\n )\n .subscribe(result => {\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'ProductVariant',\n });\n this.refresh$.next();\n });\n }\n\n getOption(\n variant: NonNullable<GetProductVariantOptionsQuery['product']>['variants'][number],\n groupId: string,\n ) {\n return variant.options.find(o => o.groupId === groupId);\n }\n}\n", "<vdr-page-block>\n <vdr-card>\n <div *ngFor=\"let group of optionGroups; index as i\" class=\"option-groups\">\n <vdr-form-field [label]=\"'catalog.option' | translate\">\n <input clrInput [(ngModel)]=\"group.name\" name=\"name\" [readonly]=\"!group.isNew\" />\n </vdr-form-field>\n <vdr-form-field [label]=\"'catalog.option-values' | translate\" class=\"flex-spacer\">\n <vdr-option-value-input\n #optionValueInputComponent\n [options]=\"group.values\"\n [groupName]=\"group.name\"\n [disabled]=\"group.name === ''\"\n (add)=\"addOption(i, $event.name)\"\n (remove)=\"removeOption(i, $event)\"\n ></vdr-option-value-input>\n </vdr-form-field>\n <div>\n <button class=\"button-small mt-4\" (click)=\"removeOptionGroup(group)\">\n <clr-icon shape=\"trash\"></clr-icon>\n </button>\n </div>\n </div>\n <button class=\"button mt-1\" (click)=\"addOptionGroup()\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.create-product-option-group' | translate }}\n </button>\n </vdr-card>\n <vdr-card [paddingX]=\"false\">\n <div class=\"mx-3\">\n <button class=\"button\" (click)=\"createNewVariant()\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.create-product-variant' | translate }}\n </button>\n </div>\n <vdr-data-table-2\n id=\"manage-product-variant-list\"\n [items]=\"variants$ | async\"\n [itemsPerPage]=\"itemsPerPage\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n >\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'catalog.filter-by-name' | translate\"\n />\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-variant=\"item\">\n {{ variant.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\n <ng-template let-variant=\"item\">\n {{ variant.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\" [hiddenByDefault]=\"true\">\n <ng-template let-variant=\"item\">\n {{ variant.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.name' | translate\" id=\"name\" [optional]=\"false\">\n <ng-template let-variant=\"item\">\n {{ variant.name }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.sku' | translate\" id=\"sku\" [optional]=\"false\">\n <ng-template let-variant=\"item\">\n {{ variant.sku }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column *ngFor=\"let optionGroup of optionGroups$ | async\" [heading]=\"optionGroup.name\" [id]=\"optionGroup.code\">\n <ng-template let-variant=\"item\">\n <vdr-chip\n *ngIf=\"getOption(variant, optionGroup.id) as option; else selectOption\"\n [colorFrom]=\"optionGroup.code\"\n >{{ option.name }}</vdr-chip\n >\n <ng-template #selectOption>\n <div class=\"flex center\">\n <ng-select\n [items]=\"optionGroup.options\"\n bindLabel=\"name\"\n bindValue=\"id\"\n appendTo=\"body\"\n (change)=\"setOptionToAddToVariant(variant.id, optionGroup.id, $event?.id)\"\n ></ng-select>\n <button\n class=\"button-small ml-1\"\n [class.primary]=\"!!optionsToAddToVariant[variant.id]?.[optionGroup.id]\"\n (click)=\"addOptionToVariant(variant)\"\n [disabled]=\"!optionsToAddToVariant[variant.id]?.[optionGroup.id]\"\n >\n <clr-icon shape=\"floppy\"></clr-icon>\n </button>\n </div>\n </ng-template>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.price' | translate\" id=\"price\" [hiddenByDefault]=\"true\">\n <ng-template let-variant=\"item\">\n {{ variant.price | localeCurrency : variant.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.price-with-tax' | translate\" id=\"price-with-tax\" [hiddenByDefault]=\"true\">\n <ng-template let-variant=\"item\">\n {{ variant.priceWithTax | localeCurrency : variant.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.delete' | translate\" id=\"delete\" [optional]=\"false\">\n <ng-template let-variant=\"item\">\n <button class=\"button-small\" (click)=\"deleteVariant(variant)\">\n <clr-icon shape=\"trash is-danger\"></clr-icon>\n </button>\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n </vdr-card>\n</vdr-page-block>\n", "import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport {\n CreateProductOptionGroupInput,\n Dialog,\n findTranslation,\n GetProductVariantOptionsQuery,\n LanguageCode,\n ServerConfigService,\n} from '@vendure/admin-ui/core';\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\n\n@Component({\n selector: 'vdr-create-product-option-group-dialog',\n templateUrl: './create-product-option-group-dialog.component.html',\n styleUrls: ['./create-product-option-group-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CreateProductOptionGroupDialogComponent implements Dialog<CreateProductOptionGroupInput> {\n resolveWith: (result?: CreateProductOptionGroupInput) => void;\n languageCode: LanguageCode;\n form = this.formBuilder.group({\n name: ['', Validators.required],\n code: ['', Validators.required],\n });\n constructor(private formBuilder: FormBuilder) {}\n\n updateCode() {\n const nameControl = this.form.get('name');\n const codeControl = this.form.get('code');\n if (nameControl && codeControl && codeControl.pristine) {\n codeControl.setValue(normalizeString(`${nameControl.value}`, '-'));\n }\n }\n\n confirm() {\n const { name, code } = this.form.value;\n if (!name || !code) {\n return;\n }\n this.resolveWith({\n code,\n options: [],\n translations: [{ languageCode: this.languageCode, name }],\n });\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n", "<ng-template vdrDialogTitle>\n {{ 'catalog.create-product-option-group' | translate }}\n</ng-template>\n<div class=\"form-grid\" [formGroup]=\"form\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input id=\"name\" type=\"text\" formControlName=\"name\" (input)=\"updateCode()\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'common.code' | translate\"\n for=\"code\"\n >\n <input\n id=\"code\"\n type=\"text\"\n formControlName=\"code\"\n />\n </vdr-form-field>\n</div>\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"confirm()\" class=\"btn btn-primary\" [disabled]=\"form.invalid\">\n {{ 'common.confirm' | translate }}\n </button>\n</ng-template>\n", "import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormBuilder, FormControl, FormRecord, Validators } from '@angular/forms';\nimport {\n CreateProductVariantInput,\n CurrencyCode,\n Dialog,\n GetProductVariantOptionsQuery,\n} from '@vendure/admin-ui/core';\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\n\n@Component({\n selector: 'vdr-create-product-variant-dialog',\n templateUrl: './create-product-variant-dialog.component.html',\n styleUrls: ['./create-product-variant-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CreateProductVariantDialogComponent implements Dialog<CreateProductVariantInput>, OnInit {\n resolveWith: (result?: CreateProductVariantInput) => void;\n product: NonNullable<GetProductVariantOptionsQuery['product']>;\n form = this.formBuilder.group({\n name: ['', Validators.required],\n sku: [''],\n price: [''],\n options: this.formBuilder.record<string>({}),\n });\n existingVariant: NonNullable<GetProductVariantOptionsQuery['product']>['variants'][number] | undefined;\n currencyCode: CurrencyCode;\n\n constructor(private formBuilder: FormBuilder) {}\n\n ngOnInit() {\n this.currencyCode = this.product.variants[0]?.currencyCode;\n for (const optionGroup of this.product.optionGroups) {\n (this.form.get('options') as FormRecord).addControl(\n optionGroup.code,\n new FormControl('', Validators.required),\n );\n }\n const optionsRecord = this.form.get('options') as FormRecord;\n optionsRecord.valueChanges.subscribe(value => {\n const nameControl = this.form.get('name');\n const allNull = Object.values(value).every(v => v == null);\n if (!allNull && value && nameControl && !nameControl.dirty) {\n const name = Object.entries(value)\n .map(\n ([groupCode, optionId]) =>\n this.product.optionGroups\n .find(og => og.code === groupCode)\n ?.options.find(o => o.id === optionId)?.name,\n )\n .join(' ');\n nameControl.setValue(`${this.product.name} ${name}`);\n }\n const allSelected = Object.values(value).every(v => v != null);\n if (allSelected) {\n this.existingVariant = this.product.variants.find(v =>\n Object.entries(value).every(\n ([groupCode, optionId]) =>\n v.options.find(o => o.groupId === this.getGroupIdFromCode(groupCode))?.id ===\n optionId,\n ),\n );\n }\n });\n }\n\n confirm() {\n const { name, sku, options, price } = this.form.value;\n if (!name || !options || price == null) {\n return;\n }\n\n const optionIds = Object.values(options).filter(notNullOrUndefined);\n this.resolveWith({\n productId: this.product.id,\n sku: sku || '',\n price: Number(price),\n optionIds,\n translations: [\n {\n languageCode: this.product.languageCode,\n name,\n },\n ],\n });\n }\n\n cancel() {\n this.resolveWith();\n }\n\n private getGroupCodeFromId(id: string): string {\n return this.product.optionGroups.find(og => og.id === id)?.code ?? '';\n }\n\n private getGroupIdFromCode(code: string): string {\n return this.product.optionGroups.find(og => og.code === code)?.id ?? '';\n }\n}\n", "<ng-template vdrDialogTitle>\n {{ 'catalog.create-product-variant' | translate }}\n</ng-template>\n<form [formGroup]=\"form\">\n <div formGroupName=\"options\" class=\"form-grid\">\n <vdr-form-field [label]=\"optionGroup.name\" *ngFor=\"let optionGroup of product.optionGroups\">\n <ng-select [items]=\"optionGroup.options\" [formControlName]=\"optionGroup.code\" bindLabel=\"name\"\n bindValue=\"id\" appendTo=\"body\">\n </ng-select>\n </vdr-form-field>\n <clr-alert *ngIf=\"product.optionGroups.length === 0\" clrAlertType=\"warning\" [clrAlertClosable]=\"false\"\n class=\"form-grid-span\">\n <clr-alert-item>\n <span class=\"alert-text\">\n {{ 'catalog.cannot-create-variants-without-options' | translate }}\n </span>\n </clr-alert-item>\n </clr-alert>\n </div>\n <div *ngIf=\"existingVariant\" class=\"mt-2\">\n <clr-alert clrAlertType=\"warning\" [clrAlertClosable]=\"false\" class=\"\">\n <clr-alert-item>\n <span class=\"alert-text\">\n {{ 'catalog.product-variant-exists' | translate }}: {{ existingVariant.name }} ({{\n existingVariant.sku\n }})\n </span>\n </clr-alert-item>\n </clr-alert>\n </div>\n <div class=\"form-grid mt-2\">\n <vdr-form-field [label]=\"'common.name' | translate\">\n <input type=\"text\" formControlName=\"name\" />\n </vdr-form-field>\n <vdr-form-field [label]=\"'catalog.sku' | translate\">\n <input type=\"text\" formControlName=\"sku\" />\n </vdr-form-field>\n <vdr-form-field [label]=\"'catalog.price' | translate\">\n <vdr-currency-input name=\"price\" [currencyCode]=\"currencyCode\" formControlName=\"price\" />\n </vdr-form-field>\n </div>\n</form>\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"confirm()\" class=\"btn btn-primary\"\n [disabled]=\"form.invalid || existingVariant || product.optionGroups.length === 0\">\n {{ 'common.confirm' | translate }}\n </button>\n</ng-template>", "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n forwardRef,\n Input,\n OnChanges,\n OnInit,\n Output,\n Provider,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { unique } from '@vendure/common/lib/unique';\n\nexport const OPTION_VALUE_INPUT_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OptionValueInputComponent),\n multi: true,\n};\n\ninterface Option {\n id?: string;\n name: string;\n locked: boolean;\n}\n\n@Component({\n selector: 'vdr-option-value-input',\n templateUrl: './option-value-input.component.html',\n styleUrls: ['./option-value-input.component.scss'],\n changeDetection: ChangeDetectionStrategy.Default,\n providers: [OPTION_VALUE_INPUT_VALUE_ACCESSOR],\n standalone: false\n})\nexport class OptionValueInputComponent implements ControlValueAccessor {\n @Input() groupName = '';\n @ViewChild('textArea', { static: true }) textArea: ElementRef<HTMLTextAreaElement>;\n @ViewChildren('editNameInput', { read: ElementRef }) nameInputs: QueryList<ElementRef>;\n @Input() options: Option[];\n @Output() add = new EventEmitter<Option>();\n @Output() remove = new EventEmitter<Option>();\n @Output() edit = new EventEmitter<{ index: number; option: Option }>();\n @Input() disabled = false;\n input = '';\n isFocussed = false;\n lastSelected = false;\n formValue: Option[];\n editingIndex = -1;\n onChangeFn: (value: any) => void;\n onTouchFn: (value: any) => void;\n\n get optionValues(): Option[] {\n return this.formValue ?? this.options ?? [];\n }\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n registerOnChange(fn: any): void {\n this.onChangeFn = fn;\n }\n\n registerOnTouched(fn: any): void {\n this.onTouchFn = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n this.changeDetector.markForCheck();\n }\n\n writeValue(obj: any): void {\n this.formValue = obj || [];\n }\n\n focus() {\n this.textArea.nativeElement.focus();\n }\n\n editName(index: number, event: MouseEvent) {\n const optionValue = this.optionValues[index];\n if (!optionValue.locked && !optionValue.id) {\n event.cancelBubble = true;\n this.editingIndex = index;\n const input = this.nameInputs.get(index)?.nativeElement;\n setTimeout(() => input?.focus());\n }\n }\n\n updateOption(index: number, event: InputEvent) {\n const optionValue = this.optionValues[index];\n const newName = (event.target as HTMLInputElement).value;\n if (optionValue) {\n if (newName) {\n optionValue.name = newName;\n this.edit.emit({ index, option: optionValue });\n }\n this.editingIndex = -1;\n }\n }\n\n removeOption(option: Option) {\n if (!option.locked) {\n if (this.formValue) {\n this.formValue = this.formValue?.filter(o => o.name !== option.name);\n this.onChangeFn(this.formValue);\n } else {\n this.remove.emit(option);\n }\n }\n }\n\n handleKey(event: KeyboardEvent) {\n switch (event.key) {\n case ',':\n case 'Enter':\n this.addOptionValue();\n event.preventDefault();\n break;\n case 'Backspace':\n if (this.lastSelected) {\n this.removeLastOption();\n this.lastSelected = false;\n } else if (this.input === '') {\n this.lastSelected = true;\n }\n break;\n default:\n this.lastSelected = false;\n }\n }\n\n handleBlur() {\n this.isFocussed = false;\n this.addOptionValue();\n }\n\n private addOptionValue() {\n const options = this.parseInputIntoOptions(this.input).filter(option => {\n // do not add an option with the same name\n // as an existing option\n const existing = this.options ?? this.formValue;\n return !existing?.find(o => o?.name === option.name);\n });\n if (!this.formValue && this.options) {\n for (const option of options) {\n this.add.emit(option);\n }\n } else {\n this.formValue = unique([...this.formValue, ...options]);\n this.onChangeFn(this.formValue);\n }\n this.input = '';\n }\n\n private parseInputIntoOptions(input: string): Option[] {\n return input\n .split(/[,\\n]/)\n .map(s => s.trim())\n .filter(s => s !== '')\n .map(s => ({ name: s, locked: false }));\n }\n\n private removeLastOption() {\n if (this.optionValues.length) {\n const option = this.optionValues[this.optionValues.length - 1];\n this.removeOption(option);\n }\n }\n}\n", "<div class=\"input-wrapper\" [class.focus]=\"isFocussed\" (click)=\"textArea.focus()\">\n <div class=\"chips\" *ngIf=\"0 < optionValues.length\">\n <vdr-chip\n *ngFor=\"let option of optionValues; last as isLast; index as i\"\n [icon]=\"option.locked ? 'lock' : 'times'\"\n [class.selected]=\"isLast && lastSelected\"\n [class.locked]=\"option.locked\"\n [colorFrom]=\"groupName\"\n (iconClick)=\"removeOption(option)\"\n >\n <span [hidden]=\"editingIndex !== i\">\n <input\n #editNameInput\n type=\"text\"\n [ngModel]=\"option.name\"\n (blur)=\"updateOption(i, $event)\"\n (click)=\"$event.cancelBubble = true\"\n />\n </span>\n <span\n class=\"option-name\"\n [class.editable]=\"!option.locked && !option.id\"\n (click)=\"editName(i, $event)\" [hidden]=\"editingIndex === i\">{{ option.name }}</span>\n </vdr-chip>\n </div>\n <textarea\n #textArea\n (keyup)=\"handleKey($event)\"\n (focus)=\"isFocussed = true\"\n (blur)=\"handleBlur()\"\n [(ngModel)]=\"input\"\n [disabled]=\"disabled\"\n ></textarea>\n</div>\n", "import { Injectable } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { BaseEntityResolver, GetProductVariantOptionsQuery, DataService } from '@vendure/admin-ui/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ProductVariantsResolver extends BaseEntityResolver<GetProductVariantOptionsQuery['product']> {\n constructor(router: Router, dataService: DataService) {\n super(\n router,\n {\n __typename: 'Product' as const,\n id: '',\n createdAt: '',\n updatedAt: '',\n name: '',\n languageCode: '' as any,\n optionGroups: [],\n variants: [],\n },\n id => dataService.product.getProductVariantsOptions(id).mapStream(data => data.product),\n );\n }\n}\n", "import { inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, Route } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CanDeactivateDetailGuard,\n createResolveData,\n DataService,\n PageComponent,\n PageService,\n} from '@vendure/admin-ui/core';\nimport { map } from 'rxjs/operators';\nimport { ProductOptionsEditorComponent } from './components/product-options-editor/product-options-editor.component';\nimport { ProductVariantsEditorComponent } from './components/product-variants-editor/product-variants-editor.component';\nimport { ProductVariantsResolver } from './providers/routing/product-variants-resolver';\n\nexport const createRoutes = (pageService: PageService): Route[] => [\n {\n path: 'products',\n component: PageComponent,\n data: {\n locationId: 'product-list',\n breadcrumb: _('breadcrumb.products'),\n },\n children: pageService.getPageTabRoutes('product-list'),\n },\n {\n path: 'inventory',\n redirectTo: 'products',\n },\n {\n path: 'products/:id',\n component: PageComponent,\n data: {\n locationId: 'product-detail',\n breadcrumb: { label: _('breadcrumb.products'), link: ['../', 'products'] },\n },\n children: [\n {\n path: 'manage-variants',\n component: ProductVariantsEditorComponent,\n canDeactivate: [CanDeactivateDetailGuard],\n data: {\n breadcrumb: ({ product }) => [\n {\n label: `${product.name}`,\n link: ['../'],\n },\n {\n label: _('breadcrumb.manage-variants'),\n link: ['manage-variants'],\n },\n ],\n },\n resolve: {\n product: (route: ActivatedRouteSnapshot) =>\n inject(DataService)\n .product.getProductVariantsOptions(route.parent?.params.id)\n .mapSingle(data => data.product),\n },\n },\n ...pageService.getPageTabRoutes('product-detail'),\n ],\n },\n {\n path: 'products/:productId/variants/:id',\n component: PageComponent,\n data: {\n locationId: 'product-variant-detail',\n breadcrumb: { label: _('breadcrumb.products'), link: ['../', 'products'] },\n },\n children: pageService.getPageTabRoutes('product-variant-detail'),\n },\n {\n path: 'products/:id/options',\n component: ProductOptionsEditorComponent,\n resolve: createResolveData(ProductVariantsResolver),\n canDeactivate: [CanDeactivateDetailGuard],\n data: {\n breadcrumb: productOptionsEditorBreadcrumb,\n },\n },\n {\n path: 'facets',\n component: PageComponent,\n data: {\n locationId: 'facet-list',\n breadcrumb: _('breadcrumb.facets'),\n },\n children: pageService.getPageTabRoutes('facet-list'),\n },\n {\n path: 'facets/:id',\n component: PageComponent,\n data: {\n locationId: 'facet-detail',\n breadcrumb: { label: _('breadcrumb.facets'), link: ['../', 'facets'] },\n },\n children: pageService.getPageTabRoutes('facet-detail'),\n },\n {\n path: 'collections',\n component: PageComponent,\n data: {\n locationId: 'collection-list',\n breadcrumb: _('breadcrumb.collections'),\n },\n children: pageService.getPageTabRoutes('collection-list'),\n },\n {\n path: 'collections/:id',\n component: PageComponent,\n data: {\n locationId: 'collection-detail',\n breadcrumb: { label: _('breadcrumb.collections'), link: ['../', 'collections'] },\n },\n children: pageService.getPageTabRoutes('collection-detail'),\n },\n {\n path: 'assets',\n component: PageComponent,\n data: {\n locationId: 'asset-list',\n breadcrumb: _('breadcrumb.assets'),\n },\n children: pageService.getPageTabRoutes('asset-list'),\n },\n {\n path: 'assets/:id',\n component: PageComponent,\n data: {\n locationId: 'asset-detail',\n breadcrumb: { label: _('breadcrumb.assets'), link: ['../', 'assets'] },\n },\n children: pageService.getPageTabRoutes('asset-detail'),\n },\n];\n\nexport function productOptionsEditorBreadcrumb(data: any, params: any) {\n return data.entity.pipe(\n map((entity: any) => [\n {\n label: _('breadcrumb.products'),\n link: ['../', 'products'],\n },\n {\n label: `${entity.name}`,\n link: ['../', 'products', params.id],\n },\n {\n label: _('breadcrumb.product-options'),\n link: ['options'],\n },\n ]),\n );\n}\n", "import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ViewChild,\n} from '@angular/core';\nimport {\n Dialog,\n FacetValue,\n FacetValueSelectorComponent,\n FacetWithValuesFragment,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-apply-facet-dialog',\n templateUrl: './apply-facet-dialog.component.html',\n styleUrls: ['./apply-facet-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class ApplyFacetDialogComponent implements Dialog<FacetValue[]>, AfterViewInit {\n @ViewChild(FacetValueSelectorComponent) private selector: FacetValueSelectorComponent;\n resolveWith: (result?: FacetValue[]) => void;\n selectedValues: FacetValue[] = [];\n // Provided by caller\n facets: FacetWithValuesFragment[];\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n ngAfterViewInit() {\n setTimeout(() => this.selector.focus(), 0);\n }\n\n selectValues() {\n this.resolveWith(this.selectedValues);\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n", "<ng-template vdrDialogTitle>{{ 'catalog.add-facets' | translate }}</ng-template>\n\n<vdr-facet-value-selector\n (selectedValuesChange)=\"selectedValues = $event\"\n></vdr-facet-value-selector>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"selectValues()\"\n [disabled]=\"selectedValues.length === 0\"\n class=\"btn btn-primary\"\n >\n {{ 'catalog.add-facets' | translate }}\n </button>\n</ng-template>\n", "import { ChangeDetectionStrategy, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormControl, FormGroup, UntypedFormBuilder } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n ASSET_FRAGMENT,\n AssetDetailQueryDocument,\n AssetDetailQueryQuery,\n DataService,\n getCustomFieldsDefaults,\n LanguageCode,\n NotificationService,\n TAG_FRAGMENT,\n TypedBaseDetailComponent,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\n\nexport const ASSET_DETAIL_QUERY = gql`\n query AssetDetailQuery($id: ID!) {\n asset(id: $id) {\n ...Asset\n tags {\n ...Tag\n }\n }\n }\n ${ASSET_FRAGMENT}\n ${TAG_FRAGMENT}\n`;\n\n@Component({\n selector: 'vdr-asset-detail',\n templateUrl: './asset-detail.component.html',\n styleUrls: ['./asset-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class AssetDetailComponent\n extends TypedBaseDetailComponent<typeof AssetDetailQueryDocument, 'asset'>\n implements OnInit, OnDestroy\n{\n readonly customFields = this.getCustomFieldConfig('Asset');\n detailForm = new FormGroup({\n name: new FormControl(''),\n tags: new FormControl([] as string[]),\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n });\n\n constructor(\n private notificationService: NotificationService,\n protected dataService: DataService,\n private formBuilder: UntypedFormBuilder,\n ) {\n super();\n }\n\n ngOnInit() {\n this.init();\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n onAssetChange(event: { id: string; name: string; tags: string[] }) {\n this.detailForm.get('name')?.setValue(event.name);\n this.detailForm.get('tags')?.setValue(event.tags);\n this.detailForm.markAsDirty();\n }\n\n save() {\n this.dataService.product\n .updateAsset({\n id: this.id,\n name: this.detailForm.value.name,\n tags: this.detailForm.value.tags,\n customFields: this.detailForm.value.customFields,\n })\n .subscribe(\n () => {\n this.notificationService.success(_('common.notify-update-success'), { entity: 'Asset' });\n },\n err => {\n this.notificationService.error(_('common.notify-update-error'), {\n entity: 'Asset',\n });\n },\n );\n }\n\n protected setFormValues(\n entity: NonNullable<AssetDetailQueryQuery['asset']>,\n languageCode: LanguageCode,\n ): void {\n this.detailForm.get('name')?.setValue(entity.name);\n this.detailForm.get('tags')?.setValue(entity.tags.map(t => t.id));\n if (this.customFields.length) {\n this.setCustomFieldFormValues(this.customFields, this.detailForm.get(['customFields']), entity);\n }\n }\n}\n", "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left></vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"asset-detail\" />\n <button\n *vdrIfPermissions=\"['UpdateCatalog', 'UpdateAsset']\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\n >\n {{ 'common.update' | translate }}\n </button>\n <vdr-action-bar-dropdown-menu locationId=\"asset-detail\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-page-block>\n <vdr-asset-preview\n [asset]=\"entity$ | async\"\n [editable]=\"true\"\n [customFields]=\"customFields\"\n [customFieldsForm]=\"detailForm.get('customFields')\"\n (assetChange)=\"onAssetChange($event)\"\n />\n</vdr-page-block>\n", "import { Component, OnInit } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n Asset,\n BaseListComponent,\n DataService,\n DeletionResult,\n GetAssetListQuery,\n GetAssetListQueryVariables,\n ItemOf,\n LogicalOperator,\n ModalService,\n NotificationService,\n SortOrder,\n TagFragment,\n} from '@vendure/admin-ui/core';\nimport { PaginationInstance } from 'ngx-pagination';\nimport { BehaviorSubject, combineLatest, EMPTY, Observable } from 'rxjs';\nimport { debounceTime, finalize, map, switchMap, takeUntil } from 'rxjs/operators';\n\n@Component({\n selector: 'vdr-asset-list',\n templateUrl: './asset-list.component.html',\n styleUrls: ['./asset-list.component.scss'],\n standalone: false\n})\nexport class AssetListComponent\n extends BaseListComponent<\n GetAssetListQuery,\n ItemOf<GetAssetListQuery, 'assets'>,\n GetAssetListQueryVariables\n >\n implements OnInit\n{\n searchTerm$ = new BehaviorSubject<string | undefined>(undefined);\n filterByTags$ = new BehaviorSubject<TagFragment[] | undefined>(undefined);\n uploading = false;\n allTags$: Observable<TagFragment[]>;\n paginationConfig$: Observable<PaginationInstance>;\n\n constructor(\n private notificationService: NotificationService,\n private modalService: ModalService,\n private dataService: DataService,\n router: Router,\n route: ActivatedRoute,\n ) {\n super(router, route);\n super.setQueryFn(\n (...args: any[]) => this.dataService.product.getAssetList(...args).refetchOnChannelChange(),\n data => data.assets,\n (skip, take) => {\n const searchTerm = this.searchTerm$.value;\n const tags = this.filterByTags$.value?.map(t => t.value);\n return {\n options: {\n skip,\n take,\n ...(searchTerm\n ? {\n filter: {\n name: { contains: searchTerm },\n },\n }\n : {}),\n sort: {\n createdAt: SortOrder.DESC,\n },\n tags,\n tagsOperator: LogicalOperator.AND,\n },\n };\n },\n { take: 25, skip: 0 },\n );\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.paginationConfig$ = combineLatest(this.itemsPerPage$, this.currentPage$, this.totalItems$).pipe(\n map(([itemsPerPage, currentPage, totalItems]) => ({ itemsPerPage, currentPage, totalItems })),\n );\n this.searchTerm$.pipe(debounceTime(250), takeUntil(this.destroy$)).subscribe(() => this.refresh());\n\n this.filterByTags$.pipe(takeUntil(this.destroy$)).subscribe(() => this.refresh());\n this.allTags$ = this.dataService.product.getTagList().mapStream(data => data.tags.items);\n }\n\n filesSelected(files: File[]) {\n if (files.length) {\n this.uploading = true;\n this.dataService.product\n .createAssets(files)\n .pipe(finalize(() => (this.uploading = false)))\n .subscribe(({ createAssets }) => {\n let successCount = 0;\n for (const result of createAssets) {\n switch (result.__typename) {\n case 'Asset':\n successCount++;\n break;\n case 'MimeTypeError':\n this.notificationService.error(result.message);\n break;\n }\n }\n if (0 < successCount) {\n super.refresh();\n this.notificationService.success(_('asset.notify-create-assets-success'), {\n count: successCount,\n });\n }\n });\n }\n }\n\n deleteAssets(assets: Asset[]) {\n this.showModalAndDelete(assets.map(a => a.id))\n .pipe(\n switchMap(response => {\n if (response.result === DeletionResult.DELETED) {\n return [true];\n } else {\n return this.showModalAndDelete(\n assets.map(a => a.id),\n response.message || '',\n ).pipe(map(r => r.result === DeletionResult.DELETED));\n }\n }),\n )\n .subscribe(\n () => {\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'Assets',\n });\n this.refresh();\n },\n err => {\n this.notificationService.error(_('common.notify-delete-error'), {\n entity: 'Assets',\n });\n },\n );\n }\n\n private showModalAndDelete(assetIds: string[], message?: string) {\n return this.modalService\n .dialog({\n title: _('catalog.confirm-delete-assets'),\n translationVars: {\n count: assetIds.length,\n },\n body: message,\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(\n switchMap(res => (res ? this.dataService.product.deleteAssets(assetIds, !!message) : EMPTY)),\n map(res => res.deleteAssets),\n );\n }\n}\n", "<vdr-page-block>\n <div class=\"my-2\">\n <vdr-asset-search-input\n [tags]=\"allTags$ | async\"\n (searchTermChange)=\"searchTerm$.next($event)\"\n (tagsChange)=\"filterByTags$.next($event)\"\n >\n <vdr-asset-file-input\n (selectFiles)=\"filesSelected($event)\"\n [uploading]=\"uploading\"\n dropZoneTarget=\".content-area\"\n ></vdr-asset-file-input>\n </vdr-asset-search-input>\n </div>\n <vdr-asset-gallery\n [assets]=\"(items$ | async)! | paginate : (paginationConfig$ | async) || {}\"\n [multiSelect]=\"true\"\n [canDelete]=\"['DeleteCatalog', 'DeleteAsset'] | hasPermission\"\n (deleteAssets)=\"deleteAssets($event)\"\n ></vdr-asset-gallery>\n\n <div class=\"paging-controls\">\n <vdr-items-per-page-controls\n [itemsPerPage]=\"itemsPerPage$ | async\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n ></vdr-items-per-page-controls>\n\n <vdr-pagination-controls\n [currentPage]=\"currentPage$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n (pageChange)=\"setPageNumber($event)\"\n ></vdr-pagination-controls>\n </div>\n</vdr-page-block>\n", "import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n DataService,\n Dialog,\n GetChannelsQuery,\n ItemOf,\n LogicalOperator,\n NotificationService,\n} from '@vendure/admin-ui/core';\nimport { combineLatest, from, lastValueFrom, Observable } from 'rxjs';\nimport { map, startWith } from 'rxjs/operators';\n\ntype Channel = ItemOf<GetChannelsQuery, 'channels'>;\n\n@Component({\n selector: 'vdr-assign-products-to-channel-dialog',\n templateUrl: './assign-products-to-channel-dialog.component.html',\n styleUrls: ['./assign-products-to-channel-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class AssignProductsToChannelDialogComponent implements OnInit, Dialog<any> {\n selectedChannel: Channel | null | undefined;\n currentChannel: Channel;\n availableChannels: Channel[];\n resolveWith: (result?: any) => void;\n variantsPreview$: Observable<Array<{ id: string; name: string; price: number; pricePreview: number }>>;\n priceFactorControl = new UntypedFormControl(1);\n selectedChannelIdControl = new UntypedFormControl();\n\n // assigned by ModalService.fromComponent() call\n productIds: string[];\n productVariantIds: string[] | undefined;\n currentChannelIds: string[];\n\n get isProductVariantMode(): boolean {\n return this.productVariantIds != null;\n }\n\n constructor(private dataService: DataService, private notificationService: NotificationService) {}\n\n ngOnInit() {\n const activeChannelId$ = this.dataService.client\n .userStatus()\n .mapSingle(({ userStatus }) => userStatus.activeChannelId);\n const allChannels$ = this.dataService.settings.getChannels().mapSingle(data => data.channels);\n\n combineLatest(activeChannelId$, allChannels$).subscribe(([activeChannelId, channels]) => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n this.currentChannel = channels.items.find(c => c.id === activeChannelId)!;\n this.availableChannels = channels.items;\n });\n\n this.selectedChannelIdControl.valueChanges.subscribe(ids => {\n this.selectChannel(ids);\n });\n\n this.variantsPreview$ = combineLatest(\n from(this.getTopVariants(10)),\n this.priceFactorControl.valueChanges.pipe(startWith(1)),\n ).pipe(\n map(([variants, factor]) =>\n variants.map(v => ({\n id: v.id,\n name: v.name,\n price: v.price,\n pricePreview: v.price * +factor,\n })),\n ),\n );\n }\n\n selectChannel(channelIds: string[]) {\n this.selectedChannel = this.availableChannels.find(c => c.id === channelIds[0]);\n }\n\n assign() {\n const selectedChannel = this.selectedChannel;\n if (selectedChannel) {\n if (!this.isProductVariantMode) {\n this.dataService.product\n .assignProductsToChannel({\n channelId: selectedChannel.id,\n productIds: this.productIds,\n priceFactor: +this.priceFactorControl.value,\n })\n .subscribe(() => {\n this.notificationService.success(_('catalog.assign-product-to-channel-success'), {\n channel: selectedChannel.code,\n count: this.productIds.length,\n });\n this.resolveWith(true);\n });\n } else if (this.productVariantIds) {\n this.dataService.product\n .assignVariantsToChannel({\n channelId: selectedChannel.id,\n productVariantIds: this.productVariantIds,\n priceFactor: +this.priceFactorControl.value,\n })\n .subscribe(() => {\n this.notificationService.success(_('catalog.assign-variant-to-channel-success'), {\n channel: selectedChannel.code,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n count: this.productVariantIds!.length,\n });\n this.resolveWith(true);\n });\n }\n }\n }\n\n cancel() {\n this.resolveWith();\n }\n\n private async getTopVariants(take: number) {\n return (\n await lastValueFrom(\n this.dataService.product.getProductVariants({\n filterOperator: LogicalOperator.OR,\n filter: {\n productId: { in: this.productIds },\n id: { in: this.productVariantIds },\n },\n take,\n }).single$,\n )\n ).productVariants.items;\n }\n}\n", "<ng-template vdrDialogTitle>\n <ng-container *ngIf=\"isProductVariantMode; else productModeTitle\">{{\n 'catalog.assign-variants-to-channel' | translate\n }}</ng-container>\n <ng-template #productModeTitle>{{ 'catalog.assign-products-to-channel' | translate }}</ng-template>\n</ng-template>\n\n<div class=\"flex\">\n <clr-input-container>\n <label>{{ 'common.channel' | translate }}</label>\n <vdr-channel-assignment-control\n clrInput\n [multiple]=\"false\"\n [includeDefaultChannel]=\"false\"\n [disableChannelIds]=\"currentChannelIds\"\n [formControl]=\"selectedChannelIdControl\"\n ></vdr-channel-assignment-control>\n </clr-input-container>\n <div class=\"flex-spacer\"></div>\n <clr-input-container>\n <label>{{ 'catalog.price-conversion-factor' | translate }}</label>\n <input clrInput type=\"number\" min=\"0\" max=\"99999\" [formControl]=\"priceFactorControl\" />\n </clr-input-container>\n</div>\n\n<div class=\"channel-price-preview\">\n <label class=\"clr-control-label\">{{ 'catalog.channel-price-preview' | translate }}</label>\n <table class=\"table\">\n <thead>\n <tr>\n <th>{{ 'common.name' | translate }}</th>\n <th>\n {{\n 'catalog.price-in-channel'\n | translate: { channel: currentChannel?.code | channelCodeToLabel | translate }\n }}\n </th>\n <th>\n <ng-template [ngIf]=\"selectedChannel\" [ngIfElse]=\"noSelection\">\n {{ 'catalog.price-in-channel' | translate: { channel: selectedChannel?.code } }}\n </ng-template>\n <ng-template #noSelection>\n {{ 'catalog.no-channel-selected' | translate }}\n </ng-template>\n </th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let row of variantsPreview$ | async\">\n <td>{{ row.name }}</td>\n <td>{{ row.price | localeCurrency: currentChannel?.defaultCurrencyCode }}</td>\n <td>\n <ng-template [ngIf]=\"selectedChannel\" [ngIfElse]=\"noChannelSelected\">\n {{ row.pricePreview | localeCurrency: selectedChannel?.defaultCurrencyCode }}\n </ng-template>\n <ng-template #noChannelSelected> - </ng-template>\n </td>\n </tr>\n </tbody>\n </table>\n</div>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"assign()\" [disabled]=\"!selectedChannel\" class=\"btn btn-primary\">\n <ng-template [ngIf]=\"selectedChannel\" [ngIfElse]=\"noSelection\">\n {{ 'catalog.assign-to-named-channel' | translate: { channelCode: selectedChannel?.code } }}\n </ng-template>\n <ng-template #noSelection>\n {{ 'catalog.no-channel-selected' | translate }}\n </ng-template>\n </button>\n</ng-template>\n", "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport {\n DataService,\n Dialog,\n FacetValueFragment,\n GetProductsWithFacetValuesByIdsQuery,\n GetProductsWithFacetValuesByIdsQueryVariables,\n GetVariantsWithFacetValuesByIdsQuery,\n UpdateProductsBulkMutation,\n UpdateProductsBulkMutationVariables,\n UpdateVariantsBulkMutation,\n UpdateVariantsBulkMutationVariables,\n} from '@vendure/admin-ui/core';\nimport { unique } from '@vendure/common/lib/unique';\nimport { Observable, Subscription } from 'rxjs';\n\nimport {\n GET_PRODUCTS_WITH_FACET_VALUES_BY_IDS,\n GET_VARIANTS_WITH_FACET_VALUES_BY_IDS,\n UPDATE_PRODUCTS_BULK,\n UPDATE_VARIANTS_BULK,\n} from './bulk-add-facet-values-dialog.graphql';\n\ninterface ProductOrVariant {\n id: string;\n name: string;\n sku?: string;\n facetValues: Array<{\n id: string;\n name: string;\n code: string;\n facet: Array<{\n id: string;\n name: string;\n code: string;\n }>;\n }>;\n}\n\n@Component({\n selector: 'vdr-bulk-add-facet-values-dialog',\n templateUrl: './bulk-add-facet-values-dialog.component.html',\n styleUrls: ['./bulk-add-facet-values-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class BulkAddFacetValuesDialogComponent implements OnInit, OnDestroy, Dialog<FacetValueFragment[]> {\n resolveWith: (result?: FacetValueFragment[]) => void;\n /* provided by call to ModalService */\n mode: 'product' | 'variant' = 'product';\n ids?: string[];\n state: 'loading' | 'ready' | 'saving' = 'loading';\n\n selectedValues: FacetValueFragment[] = [];\n items: ProductOrVariant[] = [];\n facetValuesRemoved = false;\n private subscription: Subscription;\n constructor(\n private dataService: DataService,\n private changeDetectorRef: ChangeDetectorRef,\n ) {}\n\n ngOnInit(): void {\n const fetchData$: Observable<any> =\n this.mode === 'product'\n ? this.dataService\n .query<\n GetProductsWithFacetValuesByIdsQuery,\n GetProductsWithFacetValuesByIdsQueryVariables\n >(GET_PRODUCTS_WITH_FACET_VALUES_BY_IDS, {\n ids: this.ids ?? [],\n })\n .mapSingle(({ products }) =>\n products.items.map(p => ({ ...p, facetValues: [...p.facetValues] })),\n )\n : this.dataService\n .query<\n GetVariantsWithFacetValuesByIdsQuery,\n GetProductsWithFacetValuesByIdsQueryVariables\n >(GET_VARIANTS_WITH_FACET_VALUES_BY_IDS, {\n ids: this.ids ?? [],\n })\n .mapSingle(({ productVariants }) =>\n productVariants.items.map(p => ({ ...p, facetValues: [...p.facetValues] })),\n );\n this.subscription = fetchData$.subscribe({\n next: items => {\n this.items = items;\n this.state = 'ready';\n this.changeDetectorRef.markForCheck();\n },\n });\n }\n\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n cancel() {\n this.resolveWith();\n }\n\n removeFacetValue(item: ProductOrVariant, facetValueId: string) {\n item.facetValues = item.facetValues.filter(fv => fv.id !== facetValueId);\n this.facetValuesRemoved = true;\n }\n\n addFacetValues() {\n const selectedFacetValueIds = this.selectedValues.map(sv => sv.id);\n this.state = 'saving';\n const save$: Observable<any> =\n this.mode === 'product'\n ? this.dataService.mutate<UpdateProductsBulkMutation, UpdateProductsBulkMutationVariables>(\n UPDATE_PRODUCTS_BULK,\n {\n input: this.items?.map(product => ({\n id: product.id,\n facetValueIds: unique([\n ...product.facetValues.map(fv => fv.id),\n ...selectedFacetValueIds,\n ]),\n })),\n },\n )\n : this.dataService.mutate<UpdateVariantsBulkMutation, UpdateVariantsBulkMutationVariables>(\n UPDATE_VARIANTS_BULK,\n {\n input: this.items?.map(product => ({\n id: product.id,\n facetValueIds: unique([\n ...product.facetValues.map(fv => fv.id),\n ...selectedFacetValueIds,\n ]),\n })),\n },\n );\n return save$.subscribe(result => {\n this.resolveWith(this.selectedValues);\n });\n }\n}\n", "<ng-template vdrDialogTitle>\n {{ 'catalog.edit-facet-values' | translate }}\n</ng-template>\n\n<div class=\"flex\">\n <div class=\"flex center\">\n <div class=\"mr2\">\n {{ 'catalog.add-facet-value' | translate }}\n </div>\n <vdr-facet-value-selector\n (selectedValuesChange)=\"selectedValues = $event\"\n ></vdr-facet-value-selector>\n </div>\n</div>\n\n<table class=\"table\" *ngIf=\"state !== 'loading'; else placeholder\">\n <tbody>\n <tr *ngFor=\"let item of items\">\n <td class=\"left align-middle\">\n <div>{{ item.name }}</div>\n <div *ngIf=\"item.sku\" class=\"sku\">{{ item.sku }}</div>\n </td>\n <td class=\"left\">\n <vdr-facet-value-chip\n *ngFor=\"let facetValue of item.facetValues\"\n [facetValue]=\"facetValue\"\n (remove)=\"removeFacetValue(item, facetValue.id)\"\n ></vdr-facet-value-chip>\n </td>\n </tr>\n </tbody>\n</table>\n\n<ng-template #placeholder>\n <div class=\"loading\">\n <clr-spinner></clr-spinner>\n </div>\n</ng-template>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"addFacetValues()\"\n [disabled]=\"selectedValues.length === 0 && facetValuesRemoved === false\"\n class=\"btn btn-primary\"\n >\n {{ 'common.update' | translate }}\n </button>\n</ng-template>\n", "import { gql } from 'apollo-angular';\n\nexport const GET_PRODUCTS_WITH_FACET_VALUES_BY_IDS = gql`\n query GetProductsWithFacetValuesByIds($ids: [String!]!) {\n products(options: { filter: { id: { in: $ids } } }) {\n items {\n id\n name\n facetValues {\n id\n name\n code\n facet {\n id\n name\n code\n }\n }\n }\n }\n }\n`;\n\nexport const GET_VARIANTS_WITH_FACET_VALUES_BY_IDS = gql`\n query GetVariantsWithFacetValuesByIds($ids: [String!]!) {\n productVariants(options: { filter: { id: { in: $ids } } }) {\n items {\n id\n name\n sku\n facetValues {\n id\n name\n code\n facet {\n id\n name\n code\n }\n }\n }\n }\n }\n`;\n\nexport const UPDATE_PRODUCTS_BULK = gql`\n mutation UpdateProductsBulk($input: [UpdateProductInput!]!) {\n updateProducts(input: $input) {\n id\n name\n facetValues {\n id\n name\n code\n }\n }\n }\n`;\n\nexport const UPDATE_VARIANTS_BULK = gql`\n mutation UpdateVariantsBulk($input: [UpdateProductVariantInput!]!) {\n updateProductVariants(input: $input) {\n id\n name\n facetValues {\n id\n name\n code\n }\n }\n }\n`;\n", "import {\n ChangeDetectionStrategy,\n Component,\n ContentChild,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges,\n TemplateRef,\n} from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n CollectionFilterParameter,\n ConfigurableOperationInput,\n DataService,\n GetCollectionContentsQuery,\n} from '@vendure/admin-ui/core';\nimport { BehaviorSubject, combineLatest, Observable, of, Subject } from 'rxjs';\nimport {\n catchError,\n debounceTime,\n distinctUntilChanged,\n filter,\n finalize,\n map,\n startWith,\n switchMap,\n takeUntil,\n tap,\n} from 'rxjs/operators';\n\n@Component({\n selector: 'vdr-collection-contents',\n templateUrl: './collection-contents.component.html',\n styleUrls: ['./collection-contents.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CollectionContentsComponent implements OnInit, OnChanges, OnDestroy {\n @Input() collectionId: string;\n @Input() parentId: string;\n @Input() inheritFilters: boolean;\n @Input() updatedFilters: ConfigurableOperationInput[] | undefined;\n @Input() previewUpdatedFilters = false;\n @ContentChild(TemplateRef, { static: true }) headerTemplate: TemplateRef<any>;\n\n contents$: Observable<NonNullable<GetCollectionContentsQuery['collection']>['productVariants']['items']>;\n contentsTotalItems$: Observable<number>;\n contentsItemsPerPage$: Observable<number>;\n contentsCurrentPage$: Observable<number>;\n filterTermControl = new UntypedFormControl('');\n isLoading = false;\n private collectionIdChange$ = new BehaviorSubject<string>('');\n private parentIdChange$ = new BehaviorSubject<string>('');\n private filterChanges$ = new BehaviorSubject<ConfigurableOperationInput[]>([]);\n private inheritFiltersChanges$ = new BehaviorSubject<boolean>(true);\n private refresh$ = new BehaviorSubject<boolean>(true);\n private destroy$ = new Subject<void>();\n\n constructor(private route: ActivatedRoute, private router: Router, private dataService: DataService) {}\n\n ngOnInit() {\n this.contentsCurrentPage$ = this.route.queryParamMap.pipe(\n map(qpm => qpm.get('contentsPage')),\n map(page => (!page ? 1 : +page)),\n startWith(1),\n distinctUntilChanged(),\n );\n\n this.contentsItemsPerPage$ = this.route.queryParamMap.pipe(\n map(qpm => qpm.get('contentsPerPage')),\n map(perPage => (!perPage ? 10 : +perPage)),\n startWith(10),\n distinctUntilChanged(),\n );\n\n const filterTerm$ = this.filterTermControl.valueChanges.pipe(\n debounceTime(250),\n tap(() => this.setContentsPageNumber(1)),\n startWith(''),\n );\n\n const filterChanges$ = this.filterChanges$.asObservable().pipe(\n filter(() => this.previewUpdatedFilters),\n tap(() => this.setContentsPageNumber(1)),\n startWith([]),\n );\n\n const inheritFiltersChanges$ = this.inheritFiltersChanges$.asObservable().pipe(\n filter(() => this.inheritFilters != null),\n distinctUntilChanged(),\n tap(() => this.setContentsPageNumber(1)),\n startWith(true),\n );\n\n const fetchUpdate$ = combineLatest(\n this.collectionIdChange$,\n this.parentIdChange$,\n this.contentsCurrentPage$,\n this.contentsItemsPerPage$,\n filterTerm$,\n filterChanges$,\n inheritFiltersChanges$,\n this.refresh$,\n );\n\n const collection$ = fetchUpdate$.pipe(\n takeUntil(this.destroy$),\n tap(() => (this.isLoading = true)),\n debounceTime(50),\n switchMap(([id, parentId, currentPage, itemsPerPage, filterTerm, filters, inheritFilters]) => {\n const take = itemsPerPage;\n const skip = (currentPage - 1) * itemsPerPage;\n if (filters.length && this.previewUpdatedFilters) {\n const filterClause = filterTerm\n ? ({ name: { contains: filterTerm } } as CollectionFilterParameter)\n : undefined;\n return this.dataService.collection\n .previewCollectionVariants(\n {\n parentId,\n filters,\n inheritFilters,\n },\n {\n take,\n skip,\n filter: filterClause,\n },\n )\n .mapSingle(data => data.previewCollectionVariants)\n .pipe(catchError(() => of({ items: [], totalItems: 0 })));\n } else if (id) {\n return this.dataService.collection\n .getCollectionContents(id, take, skip, filterTerm)\n .mapSingle(data => data.collection?.productVariants);\n } else {\n return of(null);\n }\n }),\n tap(() => (this.isLoading = false)),\n finalize(() => (this.isLoading = false)),\n );\n\n this.contents$ = collection$.pipe(map(result => (result ? result.items : [])));\n this.contentsTotalItems$ = collection$.pipe(map(result => (result ? result.totalItems : 0)));\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('collectionId' in changes) {\n this.collectionIdChange$.next(changes.collectionId.currentValue);\n }\n if ('parentId' in changes) {\n this.parentIdChange$.next(changes.parentId.currentValue);\n }\n if ('inheritFilters' in changes) {\n this.inheritFiltersChanges$.next(changes.inheritFilters.currentValue);\n }\n if ('updatedFilters' in changes) {\n if (this.updatedFilters) {\n this.filterChanges$.next(this.updatedFilters);\n }\n }\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n setContentsPageNumber(page: number) {\n this.setParam('contentsPage', page);\n }\n\n setContentsItemsPerPage(perPage: number) {\n this.setParam('contentsPerPage', perPage);\n }\n\n refresh() {\n this.refresh$.next(true);\n }\n\n private setParam(key: string, value: any) {\n this.router.navigate(['./'], {\n relativeTo: this.route,\n queryParams: {\n [key]: value,\n },\n queryParamsHandling: 'merge',\n replaceUrl: true,\n });\n }\n}\n", "<div class=\"table-wrapper\">\n <div class=\"progress loop\" [class.visible]=\"isLoading\"></div>\n <div class=\"header-title-row\">\n <ng-container\n *ngTemplateOutlet=\"headerTemplate; context: { $implicit: contentsTotalItems$ | async }\"\n ></ng-container>\n </div>\n <vdr-data-table-2\n id=\"collection-contents\"\n [class.loading]=\"isLoading\"\n [items]=\"contents$ | async\"\n [itemsPerPage]=\"contentsItemsPerPage$ | async\"\n [totalItems]=\"contentsTotalItems$ | async\"\n [currentPage]=\"contentsCurrentPage$ | async\"\n (pageChange)=\"setContentsPageNumber($event)\"\n (itemsPerPageChange)=\"setContentsItemsPerPage($event)\"\n >\n <vdr-dt2-search\n [searchTermControl]=\"filterTermControl\"\n [searchTermPlaceholder]=\"'catalog.filter-by-name' | translate\"\n />\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-variant=\"item\">\n {{ variant.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.created-at' | translate\" id=\"created-at\" [hiddenByDefault]=\"true\">\n <ng-template let-variant=\"item\">\n {{ variant.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.updated-at' | translate\" id=\"updated-at\" [hiddenByDefault]=\"true\">\n <ng-template let-variant=\"item\">\n {{ variant.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\">\n <ng-template let-variant=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['/catalog/products', variant.productId]\"\n ><span>{{ variant.name }}</span\n ><clr-icon shape=\"arrow right\"\n /></a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.sku' | translate\" id=\"sku\" [optional]=\"false\">\n <ng-template let-variant=\"item\">\n {{ variant.sku }}\n </ng-template>\n </vdr-dt2-column>\n </vdr-data-table-2>\n</div>\n", "import { CdkDrag, CdkDragDrop, CdkDropList, DragRef } from '@angular/cdk/drag-drop';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n Output,\n QueryList,\n SimpleChanges,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport { DataService, DataTable2Component, GetCollectionListQuery, ItemOf } from '@vendure/admin-ui/core';\n\nexport type CollectionTableItem = ItemOf<GetCollectionListQuery, 'collections'>;\nexport type CollectionOrderEvent = {\n collectionId: string;\n parentId: string;\n index: number;\n};\n@Component({\n selector: 'vdr-collection-data-table',\n templateUrl: './collection-data-table.component.html',\n styleUrls: [\n '../../../../core/src/shared/components/data-table-2/data-table2.component.scss',\n './collection-data-table.component.scss',\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CollectionDataTableComponent\n extends DataTable2Component<CollectionTableItem>\n implements OnChanges, AfterViewInit\n{\n @Input() subCollections: CollectionTableItem[];\n @Output() changeOrder = new EventEmitter<CollectionOrderEvent>();\n @ViewChild(CdkDropList, { static: true }) dropList: CdkDropList<{\n depth: number;\n collection: CollectionTableItem;\n }>;\n @ViewChildren('collectionRow', { read: CdkDrag }) collectionRowList: QueryList<CdkDrag>;\n dragRefs: DragRef[] = [];\n absoluteIndex: { [id: string]: number } = {};\n constructor(\n protected changeDetectorRef: ChangeDetectorRef,\n protected dataService: DataService,\n ) {\n super(changeDetectorRef, dataService);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n super.ngOnChanges(changes);\n if (changes.subCollections || changes.items) {\n const allCollections: CollectionTableItem[] = [];\n for (const collection of this.items ?? []) {\n allCollections.push(collection);\n const subCollectionMatches = this.getSubcollections(collection);\n allCollections.push(...subCollectionMatches.flat());\n }\n allCollections.forEach((collection, index) => (this.absoluteIndex[collection.id] = index));\n }\n }\n\n ngAfterViewInit() {\n this.collectionRowList.changes.subscribe((val: QueryList<CdkDrag>) => {\n this.dropList.getSortedItems().forEach(item => this.dropList.removeItem(item));\n for (const ref of val.toArray()) {\n ref.dropContainer = this.dropList;\n ref._dragRef._withDropContainer(this.dropList._dropListRef);\n this.dropList.addItem(ref);\n }\n });\n }\n\n getSubcollections(item: CollectionTableItem) {\n return this.subCollections?.filter(c => c.parentId === item.id) ?? [];\n }\n\n sortPredicate = (index: number, item: CdkDrag<{ depth: number; collection: CollectionTableItem }>) => {\n const itemAtIndex = this.dropList.getSortedItems()[index];\n return itemAtIndex?.data.collection.parentId === item.data.collection.parentId;\n };\n\n onDrop(\n event: CdkDragDrop<{\n depth: number;\n collection: CollectionTableItem;\n }>,\n ) {\n const isTopLevel = event.item.data.collection.breadcrumbs.length === 2;\n const pageIndexOffset = isTopLevel ? (this.currentPage - 1) * this.itemsPerPage : 0;\n const parentId = event.item.data.collection.parentId;\n const parentIndex = this.items.findIndex(i => i.id === parentId);\n const adjustedIndex = pageIndexOffset + event.currentIndex - parentIndex - 1;\n this.changeOrder.emit({\n collectionId: event.item.data.collection.id,\n index: adjustedIndex,\n parentId: event.item.data.collection.parentId,\n });\n\n if (isTopLevel) {\n this.items = [...this.items];\n this.items.splice(event.previousIndex, 1);\n this.items.splice(event.currentIndex, 0, event.item.data.collection);\n } else {\n const parent = this.items.find(i => i.id === parentId);\n if (parent) {\n const subCollections = this.getSubcollections(parent);\n const adjustedPreviousIndex = pageIndexOffset + event.previousIndex - parentIndex - 1;\n subCollections.splice(adjustedPreviousIndex, 1);\n subCollections.splice(event.currentIndex, 0, event.item.data.collection);\n }\n }\n this.changeDetectorRef.markForCheck();\n }\n}\n", "<vdr-data-table-filter-presets\n *ngIf=\"filters\"\n [filters]=\"filters\"\n [dataTableId]=\"id\"\n></vdr-data-table-filter-presets>\n<div class=\"table-wrapper\">\n <div class=\"bulk-actions\">\n <ng-content select=\"vdr-bulk-action-menu\"></ng-content>\n </div>\n <table class=\"\" [class.no-select]=\"disableSelect\">\n <thead [class.items-selected]=\"selectionManager?.selection.length\">\n <tr class=\"heading-row\">\n <th *ngIf=\"selectionManager\" class=\"selection-col\">\n <div class=\"flex\">\n <div class=\"drag-handle-spacer\"></div>\n <input\n type=\"checkbox\"\n clrCheckbox\n [checked]=\"selectionManager?.areAllCurrentItemsSelected()\"\n (change)=\"onToggleAllClick()\"\n />\n </div>\n </th>\n <th\n *ngFor=\"let column of visibleSortedColumns; last as isLast\"\n [class.expand]=\"column.expand\"\n >\n <div class=\"cell-content\" [ngClass]=\"column.align\">\n <vdr-ui-extension-point\n [locationId]=\"id\"\n [metadata]=\"column.id\"\n api=\"dataTable\"\n [topPx]=\"-6\"\n [leftPx]=\"-24\"\n display=\"block\"\n >\n <span>{{ column.heading }}</span>\n </vdr-ui-extension-point>\n <div *ngIf=\"column.sort as sort\" class=\"sort-toggle\">\n <button (click)=\"sort.toggleSortOrder()\" [class.active]=\"sort.sortOrder\">\n <clr-icon *ngIf=\"!sort.sortOrder\" shape=\"two-way-arrows left\"></clr-icon>\n <clr-icon *ngIf=\"sort.sortOrder === 'ASC'\" shape=\"arrow up\"></clr-icon>\n <clr-icon *ngIf=\"sort.sortOrder === 'DESC'\" shape=\"arrow down\"></clr-icon>\n </button>\n <div class=\"sort-label\" *ngIf=\"sort.sortOrder\">{{ sort.sortOrder }}</div>\n </div>\n </div>\n </th>\n <th>\n <div class=\"column-picker\">\n <vdr-data-table-colum-picker\n [uiLanguage]=\"uiLanguage$ | async\"\n [columns]=\"sortedColumns\"\n (reorder)=\"onColumnReorder($event)\"\n (resetColumns)=\"onColumnsReset()\"\n ></vdr-data-table-colum-picker>\n </div>\n </th>\n </tr>\n <tr *ngIf=\"searchComponent || customSearchTemplate || filters?.length\">\n <th\n [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\"\n class=\"filter-row\"\n [class.active]=\"showSearchFilterRow\"\n >\n <button\n class=\"button-ghost toggle-search-filter-row\"\n [class.active]=\"showSearchFilterRow\"\n (click)=\"toggleSearchFilterRow()\"\n [title]=\"'common.search-and-filter-list' | translate\"\n >\n <clr-icon shape=\"search\"></clr-icon>\n </button>\n <div class=\"filter-row-wrapper\" [class.hidden]=\"!showSearchFilterRow\">\n <ng-container *ngTemplateOutlet=\"searchComponent?.template\"></ng-container>\n <ng-container *ngTemplateOutlet=\"customSearchTemplate\"></ng-container>\n <ng-container *ngIf=\"filters\">\n <div class=\"filters\">\n <vdr-data-table-filters\n *ngFor=\"let activeFilter of filters.activeFilters\"\n [filterWithValue]=\"activeFilter\"\n [filters]=\"filters\"\n class=\"mt-1\"\n ></vdr-data-table-filters>\n <vdr-data-table-filters\n *ngIf=\"filters.length\"\n [filters]=\"filters\"\n class=\"mt-1\"\n ></vdr-data-table-filters>\n <vdr-add-filter-preset-button\n [filters]=\"filters\"\n [dataTableId]=\"id\"\n ></vdr-add-filter-preset-button>\n </div>\n </ng-container>\n </div>\n </th>\n </tr>\n </thead>\n <tbody\n cdkDropList\n cdkDropListLockAxis=\"y\"\n (cdkDropListDropped)=\"onDrop($event)\"\n [cdkDropListSortPredicate]=\"sortPredicate\"\n >\n <ng-container\n *ngFor=\"\n let item of items\n | paginate\n : {\n itemsPerPage: itemsPerPage,\n currentPage: currentPage,\n totalItems: totalItems,\n id: id,\n };\n index as i;\n trackBy: trackByFn.bind(this)\n \"\n >\n <ng-container\n [ngTemplateOutlet]=\"collectionRowTmp\"\n [ngTemplateOutletContext]=\"{ item: item, i: i, depth: 0 }\"\n ></ng-container>\n </ng-container>\n <ng-container>\n <tr *ngIf=\"!items?.length\">\n <td [attr.colspan]=\"visibleSortedColumns.length + (selectionManager ? 2 : 1)\">\n <vdr-empty-placeholder [emptyStateLabel]=\"emptyStateLabel\"></vdr-empty-placeholder>\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n</div>\n<div class=\"table-footer\">\n <vdr-items-per-page-controls\n *ngIf=\"totalItems\"\n [itemsPerPage]=\"itemsPerPage\"\n (itemsPerPageChange)=\"itemsPerPageChange.emit($event)\"\n ></vdr-items-per-page-controls>\n <div *ngIf=\"totalItems\" class=\"p5 total-items-count\">\n {{ 'common.total-items' | translate : { currentStart, currentEnd, totalItems } }}\n </div>\n\n <vdr-pagination-controls\n *ngIf=\"totalItems\"\n [id]=\"id\"\n [currentPage]=\"currentPage\"\n [itemsPerPage]=\"itemsPerPage\"\n [totalItems]=\"totalItems\"\n (pageChange)=\"pageChange.emit($event)\"\n ></vdr-pagination-controls>\n</div>\n\n<ng-template #collectionRowTmp let-item=\"item\" let-depth=\"depth\">\n <tr #collectionRow cdkDrag [cdkDragData]=\"{ depth: depth, collection: item }\" cdkDragBoundary=\"tbody\">\n <td\n *ngIf=\"selectionManager\"\n [class.active]=\"activeIndex === absoluteIndex[item.id]\"\n class=\"selection-col\"\n >\n <div class=\"flex\">\n <div class=\"drag-handle\" cdkDragHandle [title]=\"'catalog.reorder-collection' | translate\">\n <clr-icon shape=\"drag-handle\"></clr-icon>\n </div>\n <input\n type=\"checkbox\"\n clrCheckbox\n [checked]=\"selectionManager?.isSelected(item)\"\n (click)=\"onRowClick(item, $event)\"\n />\n </div>\n </td>\n <td\n *ngFor=\"let column of visibleSortedColumns\"\n [class.active]=\"activeIndex === absoluteIndex[item.id]\"\n >\n <div class=\"cell-content\" [ngClass]=\"column.align\">\n <ng-container\n *ngIf=\"customComponents.get(column.id) as componentConfig; else defaultComponent\"\n >\n <ng-container\n *ngComponentOutlet=\"\n componentConfig.config.component;\n inputs: { rowItem: item };\n injector: componentConfig.injector\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultComponent>\n <ng-container\n *ngTemplateOutlet=\"column.template; context: { item: item, depth: depth }\"\n ></ng-container>\n </ng-template>\n </div>\n </td>\n <td [class.active]=\"activeIndex === absoluteIndex[item.id]\"><!-- column select --></td>\n </tr>\n <ng-container *ngFor=\"let subCollection of getSubcollections(item)\">\n <ng-container\n *ngTemplateOutlet=\"collectionRowTmp; context: { item: subCollection, depth: depth + 1 }\"\n ></ng-container>\n </ng-container>\n</ng-template>\n", "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n OnDestroy,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport { FormBuilder, UntypedFormArray, UntypedFormControl, Validators } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n Asset,\n COLLECTION_FRAGMENT,\n CollectionDetailQueryDocument,\n CollectionFragment,\n ConfigurableOperation,\n ConfigurableOperationDefinition,\n ConfigurableOperationInput,\n CreateCollectionInput,\n createUpdatedTranslatable,\n DataService,\n encodeConfigArgValue,\n findTranslation,\n getConfigArgValue,\n getCustomFieldsDefaults,\n LanguageCode,\n LocalStorageService,\n ModalService,\n NotificationService,\n Permission,\n TypedBaseDetailComponent,\n unicodePatternValidator,\n UpdateCollectionInput,\n} from '@vendure/admin-ui/core';\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\nimport { gql } from 'apollo-angular';\nimport { combineLatest, merge, Observable, of, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, mergeMap, switchMap, take } from 'rxjs/operators';\n\nimport { CollectionContentsComponent } from '../collection-contents/collection-contents.component';\n\nexport const COLLECTION_DETAIL_QUERY = gql`\n query CollectionDetailQuery($id: ID!) {\n collection(id: $id) {\n ...Collection\n }\n }\n ${COLLECTION_FRAGMENT}\n`;\n\n@Component({\n selector: 'vdr-collection-detail',\n templateUrl: './collection-detail.component.html',\n styleUrls: ['./collection-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class CollectionDetailComponent\n extends TypedBaseDetailComponent<typeof CollectionDetailQueryDocument, 'collection'>\n implements OnInit, OnDestroy\n{\n customFields = this.getCustomFieldConfig('Collection');\n detailForm = this.formBuilder.group({\n name: ['', Validators.required],\n slug: ['', unicodePatternValidator(/^[\\p{Letter}0-9._-]+$/u)],\n description: '',\n visible: false,\n inheritFilters: true,\n filters: this.formBuilder.array([]),\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n });\n assetChanges: { assets?: Asset[]; featuredAsset?: Asset } = {};\n filters: ConfigurableOperation[] = [];\n allFilters: ConfigurableOperationDefinition[] = [];\n updatedFilters$: Observable<ConfigurableOperationInput[]>;\n inheritFilters$: Observable<boolean>;\n livePreview = false;\n parentId$: Observable<string | undefined>;\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateCollection];\n private filterRemoved$ = new Subject<void>();\n @ViewChild('collectionContents') contentsComponent: CollectionContentsComponent;\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n protected dataService: DataService,\n private formBuilder: FormBuilder,\n private notificationService: NotificationService,\n private modalService: ModalService,\n private localStorageService: LocalStorageService,\n ) {\n super();\n this.livePreview = this.localStorageService.get('livePreviewCollectionContents') ?? false;\n }\n\n ngOnInit() {\n this.init();\n this.dataService.collection.getCollectionFilters().single$.subscribe(res => {\n this.allFilters = res.collectionFilters;\n });\n const filtersFormArray = this.detailForm.get('filters') as UntypedFormArray;\n const inheritFiltersControl = this.detailForm.get('inheritFilters') as UntypedFormControl;\n this.inheritFilters$ = inheritFiltersControl.valueChanges.pipe(distinctUntilChanged());\n this.updatedFilters$ = merge(filtersFormArray.statusChanges, this.filterRemoved$).pipe(\n debounceTime(200),\n filter(() => filtersFormArray.touched),\n map(() =>\n this.mapOperationsToInputs(this.filters, filtersFormArray.value).filter(_filter => {\n // ensure all the arguments have valid values. E.g. a newly-added\n // filter will not yet have valid values\n for (const arg of _filter.arguments) {\n if (arg.value === '') {\n return false;\n }\n }\n return true;\n }),\n ),\n );\n this.parentId$ = this.route.paramMap.pipe(\n map(pm => pm.get('parentId') || undefined),\n switchMap(parentId => {\n if (parentId) {\n return of(parentId);\n } else {\n return this.entity$.pipe(map(collection => collection.parent?.id));\n }\n }),\n );\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n getFilterDefinition(_filter: ConfigurableOperation): ConfigurableOperationDefinition | undefined {\n return this.allFilters.find(f => f.code === _filter.code);\n }\n\n assetsChanged(): boolean {\n return !!Object.values(this.assetChanges).length;\n }\n\n /**\n * If creating a new Collection, automatically generate the slug based on the collection name.\n */\n updateSlug(nameValue: string) {\n const slugControl = this.detailForm.get(['slug']);\n const currentTranslation = this.entity ? findTranslation(this.entity, this.languageCode) : undefined;\n const currentSlugIsEmpty = !currentTranslation || !currentTranslation.slug;\n if (slugControl && slugControl.pristine && currentSlugIsEmpty) {\n slugControl.setValue(normalizeString(`${nameValue}`, '-'));\n }\n }\n\n addFilter(collectionFilter: ConfigurableOperation) {\n const filtersArray = this.detailForm.get('filters') as UntypedFormArray;\n const argsHash = collectionFilter.args.reduce(\n (output, arg) => ({\n ...output,\n [arg.name]: getConfigArgValue(arg.value),\n }),\n {},\n );\n filtersArray.push(\n this.formBuilder.control({\n code: collectionFilter.code,\n args: argsHash,\n }),\n );\n this.filters.push({\n code: collectionFilter.code,\n args: collectionFilter.args.map(a => ({ name: a.name, value: getConfigArgValue(a.value) })),\n });\n }\n\n removeFilter(index: number) {\n const filtersArray = this.detailForm.get('filters') as UntypedFormArray;\n if (index !== -1) {\n filtersArray.removeAt(index);\n filtersArray.markAsDirty();\n filtersArray.markAsTouched();\n this.filters.splice(index, 1);\n this.filterRemoved$.next();\n }\n }\n\n create() {\n if (!this.detailForm.dirty) {\n return;\n }\n const input = this.getUpdatedCollection(\n {\n id: '',\n createdAt: '',\n updatedAt: '',\n languageCode: this.languageCode,\n name: '',\n slug: '',\n isPrivate: false,\n breadcrumbs: [],\n description: '',\n featuredAsset: null,\n assets: [],\n translations: [],\n inheritFilters: true,\n filters: [],\n parent: {} as any,\n children: null,\n },\n this.detailForm,\n this.languageCode,\n ) as CreateCollectionInput;\n const parentId = this.route.snapshot.paramMap.get('parentId');\n if (parentId) {\n input.parentId = parentId;\n }\n this.dataService.collection.createCollection(input).subscribe(\n data => {\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'Collection',\n });\n this.assetChanges = {};\n this.detailForm.markAsPristine();\n this.changeDetector.markForCheck();\n this.router.navigate(['../', data.createCollection.id], { relativeTo: this.route });\n },\n err => {\n this.notificationService.error(_('common.notify-create-error'), {\n entity: 'Collection',\n });\n },\n );\n }\n\n save() {\n combineLatest(this.entity$, this.languageCode$)\n .pipe(\n take(1),\n mergeMap(([category, languageCode]) => {\n const input = this.getUpdatedCollection(\n category,\n this.detailForm,\n languageCode,\n ) as UpdateCollectionInput;\n return this.dataService.collection.updateCollection(input);\n }),\n )\n .subscribe(\n () => {\n this.assetChanges = {};\n this.detailForm.markAsPristine();\n this.changeDetector.markForCheck();\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'Collection',\n });\n this.contentsComponent.refresh();\n },\n err => {\n this.notificationService.error(_('common.notify-update-error'), {\n entity: 'Collection',\n });\n },\n );\n }\n\n canDeactivate(): boolean {\n return super.canDeactivate() && !this.assetChanges.assets && !this.assetChanges.featuredAsset;\n }\n\n toggleLivePreview() {\n this.livePreview = !this.livePreview;\n this.localStorageService.set('livePreviewCollectionContents', this.livePreview);\n }\n\n trackByFn(index: number, item: ConfigurableOperation) {\n return JSON.stringify(item);\n }\n\n /**\n * Sets the values of the form on changes to the category or current language.\n */\n protected setFormValues(entity: CollectionFragment, languageCode: LanguageCode) {\n const currentTranslation = findTranslation(entity, languageCode);\n\n this.detailForm.patchValue({\n name: currentTranslation ? currentTranslation.name : '',\n slug: currentTranslation ? currentTranslation.slug : '',\n description: currentTranslation ? currentTranslation.description : '',\n visible: !entity.isPrivate,\n inheritFilters: entity.inheritFilters,\n });\n\n const formArray = this.detailForm.get('filters') as UntypedFormArray;\n if (formArray.length !== entity.filters.length) {\n formArray.clear();\n this.filters = [];\n entity.filters.forEach(f => this.addFilter(f));\n }\n\n if (this.customFields.length) {\n this.setCustomFieldFormValues(\n this.customFields,\n this.detailForm.get(['customFields']),\n entity,\n currentTranslation,\n );\n }\n }\n\n /**\n * Given a category and the value of the form, this method creates an updated copy of the category which\n * can then be persisted to the API.\n */\n private getUpdatedCollection(\n category: CollectionFragment,\n form: typeof this.detailForm,\n languageCode: LanguageCode,\n ): CreateCollectionInput | UpdateCollectionInput {\n const updatedCategory = createUpdatedTranslatable({\n translatable: category,\n updatedFields: form.value,\n customFieldConfig: this.customFields,\n languageCode,\n defaultTranslation: {\n languageCode,\n name: category.name || '',\n slug: category.slug || '',\n description: category.description || '',\n },\n });\n return {\n ...updatedCategory,\n assetIds: this.assetChanges.assets?.map(a => a.id),\n featuredAssetId: this.assetChanges.featuredAsset?.id,\n isPrivate: !form.value.visible,\n filters: this.mapOperationsToInputs(this.filters, this.detailForm.value.filters),\n };\n }\n\n /**\n * Maps an array of conditions or actions to the input format expected by the GraphQL API.\n */\n private mapOperationsToInputs(\n operations: ConfigurableOperation[],\n formValueOperations: any,\n ): ConfigurableOperationInput[] {\n return operations.map((o, i) => ({\n code: o.code,\n arguments: Object.entries(formValueOperations[i].args).map(([name, value], j) => ({\n name,\n value: encodeConfigArgValue(value),\n })),\n }));\n }\n}\n", "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left>\n <vdr-language-selector\n [disabled]=\"isNew$ | async\"\n [availableLanguageCodes]=\"availableLanguages$ | async\"\n [currentLanguageCode]=\"languageCode$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"collection-detail\" />\n <button\n class=\"btn btn-primary\"\n *ngIf=\"isNew$ | async; else updateButton\"\n (click)=\"create()\"\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\n >\n {{ 'common.create' | translate }}\n </button>\n <ng-template #updateButton>\n <button\n *vdrIfPermissions=\"updatePermission\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"(detailForm.invalid || detailForm.pristine) && !assetsChanged()\"\n >\n {{ 'common.update' | translate }}\n </button>\n </ng-template>\n <vdr-action-bar-dropdown-menu locationId=\"collection-detail\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<form class=\"form\" [formGroup]=\"detailForm\">\n <vdr-page-detail-layout>\n <vdr-page-detail-sidebar>\n <vdr-card>\n <vdr-form-field [label]=\"'catalog.visibility' | translate\" for=\"visibility\">\n <clr-toggle-wrapper>\n <input\n type=\"checkbox\"\n clrToggle\n formControlName=\"visible\"\n id=\"visibility\"\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\n />\n <label class=\"visible-toggle\">\n <ng-container *ngIf=\"detailForm.value.visible; else private\">{{\n 'catalog.public' | translate\n }}</ng-container>\n <ng-template #private>{{ 'catalog.private' | translate }}</ng-template>\n </label>\n </clr-toggle-wrapper>\n </vdr-form-field>\n </vdr-card>\n <vdr-card *ngIf=\"entity$ | async as entity\">\n <vdr-page-entity-info [entity]=\"entity\"></vdr-page-entity-info>\n </vdr-card>\n </vdr-page-detail-sidebar>\n\n <vdr-page-block *ngIf=\"entity$ | async as entity\"\n ><nav role=\"navigation\">\n <ul class=\"collection-breadcrumbs\">\n <li *ngFor=\"let breadcrumb of entity.breadcrumbs; let isFirst = first; let isLast = last\">\n <a [routerLink]=\"['/catalog/collections']\" *ngIf=\"isFirst\">{{\n 'catalog.root-collection' | translate\n }}</a>\n <a\n [routerLink]=\"['/catalog/collections', breadcrumb.id]\"\n *ngIf=\"!isFirst && !isLast\"\n >{{ breadcrumb.name | translate }}</a\n >\n <ng-container *ngIf=\"isLast\">{{ breadcrumb.name | translate }}</ng-container>\n </li>\n </ul>\n </nav>\n </vdr-page-block>\n\n <vdr-page-block>\n <vdr-card>\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input\n id=\"name\"\n type=\"text\"\n formControlName=\"name\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n (input)=\"updateSlug($event.target.value)\"\n />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'catalog.slug' | translate\"\n for=\"slug\"\n [errors]=\"{ pattern: ('catalog.slug-pattern-error' | translate) }\"\n >\n <input\n id=\"slug\"\n type=\"text\"\n formControlName=\"slug\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n />\n </vdr-form-field>\n <vdr-form-field\n class=\"form-grid-span\"\n [label]=\"'common.description' | translate\"\n for=\"slug\"\n >\n <vdr-rich-text-editor\n formControlName=\"description\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n ></vdr-rich-text-editor>\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card\n formGroupName=\"customFields\"\n *ngIf=\"customFields.length\"\n [title]=\"'common.custom-fields' | translate\"\n >\n <vdr-tabbed-custom-fields\n entityName=\"Collection\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n ></vdr-tabbed-custom-fields>\n </vdr-card>\n <vdr-custom-detail-component-host\n locationId=\"collection-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n <vdr-card [title]=\"'catalog.assets' | translate\">\n <vdr-assets\n [assets]=\"entity?.assets\"\n [featuredAsset]=\"entity?.featuredAsset\"\n [updatePermissions]=\"updatePermission\"\n (change)=\"assetChanges = $event\"\n ></vdr-assets>\n </vdr-card>\n <vdr-card [title]=\"'catalog.filters' | translate\">\n <vdr-form-field [label]=\"'catalog.filter-inheritance' | translate\" for=\"inheritFilters\">\n <clr-toggle-wrapper>\n <input\n type=\"checkbox\"\n clrToggle\n formControlName=\"inheritFilters\"\n id=\"inheritFilters\"\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\n />\n <label class=\"visible-toggle\">\n <ng-container *ngIf=\"detailForm.value.inheritFilters; else noInherit\">{{\n 'catalog.inherit-filters-from-parent' | translate\n }}</ng-container>\n <ng-template #noInherit>{{\n 'catalog.do-not-inherit-filters' | translate\n }}</ng-template>\n </label>\n </clr-toggle-wrapper>\n </vdr-form-field>\n <div formArrayName=\"filters\">\n <ng-container *ngFor=\"let filter of filters; index as i; trackBy: trackByFn\">\n <vdr-configurable-input\n (remove)=\"removeFilter(i)\"\n [position]=\"i\"\n [operation]=\"filter\"\n [operationDefinition]=\"getFilterDefinition(filter)\"\n [formControlName]=\"i\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n ></vdr-configurable-input>\n </ng-container>\n </div>\n <div *vdrIfPermissions=\"updatePermission\">\n <vdr-dropdown>\n <button class=\"btn btn-outline\" vdrDropdownTrigger>\n <clr-icon shape=\"plus\"></clr-icon>\n <span>{{ 'marketing.add-condition' | translate }}</span>\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-left\">\n <button\n *ngFor=\"let filter of allFilters\"\n type=\"button\"\n vdrDropdownItem\n (click)=\"addFilter(filter)\"\n >\n {{ filter.description }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n </vdr-card>\n\n <vdr-card [title]=\"'common.contents' | translate\" [paddingX]=\"false\">\n <vdr-collection-contents\n [collectionId]=\"id\"\n [parentId]=\"parentId$ | async\"\n [updatedFilters]=\"updatedFilters$ | async\"\n [inheritFilters]=\"inheritFilters$ | async\"\n [previewUpdatedFilters]=\"livePreview\"\n #collectionContents\n >\n <ng-template let-count>\n <div class=\"ml-3\">\n <div class=\"contents-title\">\n {{ 'catalog.collection-contents' | translate }} ({{\n 'common.results-count' | translate : { count: count }\n }})\n </div>\n <clr-checkbox-wrapper [class.disabled]=\"detailForm.get('filters')?.pristine\">\n <input\n type=\"checkbox\"\n clrCheckbox\n [ngModelOptions]=\"{ standalone: true }\"\n [disabled]=\"detailForm.get('filters')?.pristine\"\n [ngModel]=\"livePreview\"\n (ngModelChange)=\"toggleLivePreview()\"\n />\n <label>{{ 'catalog.live-preview-contents' | translate }}</label>\n </clr-checkbox-wrapper>\n </div>\n </ng-template>\n </vdr-collection-contents>\n </vdr-card>\n </vdr-page-block>\n </vdr-page-detail-layout>\n</form>\n", "import { Pipe, PipeTransform } from '@angular/core';\nimport { GetCollectionListQuery, ItemOf } from '@vendure/admin-ui/core';\n\n/**\n * Removes the root collection and self breadcrumb from the collection breadcrumb list.\n */\n@Pipe({\n name: 'collectionBreadcrumb',\n standalone: false\n})\nexport class CollectionBreadcrumbPipe implements PipeTransform {\n transform(value: ItemOf<GetCollectionListQuery, 'collections'>): unknown {\n return value?.breadcrumbs.slice(1, -1);\n }\n}\n", "import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { FormControl } from '@angular/forms';\nimport { DataService, Dialog, GetCollectionListQuery, I18nService, ItemOf } from '@vendure/admin-ui/core';\nimport { BehaviorSubject, combineLatest, Observable, of, Subject } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, startWith, switchMap, tap } from 'rxjs/operators';\n\n@Component({\n selector: 'vdr-move-collections-dialog',\n templateUrl: './move-collections-dialog.component.html',\n styleUrls: ['./move-collections-dialog.component.scss', '../collection-list/collection-list-common.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class MoveCollectionsDialogComponent\n implements OnInit, Dialog<ItemOf<GetCollectionListQuery, 'collections'>>\n{\n resolveWith: (result?: ItemOf<GetCollectionListQuery, 'collections'>) => void;\n searchTermControl = new FormControl('');\n items$: Observable<Array<ItemOf<GetCollectionListQuery, 'collections'>>>;\n totalItems$: Observable<number>;\n currentPage$ = new BehaviorSubject(1);\n itemsPerPage$ = new BehaviorSubject(10);\n expandedIds$ = new Subject<string[]>();\n expandedIds: string[] = [];\n subCollections$: Observable<Array<ItemOf<GetCollectionListQuery, 'collections'>>>;\n\n constructor(private dataService: DataService, private i18nService: I18nService) {}\n\n ngOnInit() {\n const getCollectionsResult = this.dataService.collection.getCollections();\n\n const searchTerm$ = this.searchTermControl.valueChanges.pipe(\n debounceTime(250),\n distinctUntilChanged(),\n startWith(''),\n );\n const currentPage$ = this.currentPage$.pipe(distinctUntilChanged());\n const itemsPerPage$ = this.itemsPerPage$.pipe(distinctUntilChanged());\n combineLatest(searchTerm$, currentPage$, itemsPerPage$).subscribe(\n ([searchTerm, currentPage, itemsPerPage]) => {\n const topLevelOnly = searchTerm === '';\n getCollectionsResult.ref.refetch({\n options: {\n skip: (currentPage - 1) * itemsPerPage,\n take: itemsPerPage,\n filter: {\n name: { contains: searchTerm },\n },\n topLevelOnly,\n },\n });\n },\n );\n\n const rootCollectionId$ = this.dataService.collection\n .getCollections({\n take: 1,\n topLevelOnly: true,\n })\n .mapSingle(data => data.collections.items[0].parentId);\n\n this.items$ = combineLatest(\n getCollectionsResult.mapStream(({ collections }) => collections),\n rootCollectionId$,\n ).pipe(\n map(([collections, rootCollectionId]) => [\n ...(rootCollectionId\n ? [\n {\n id: rootCollectionId,\n name: this.i18nService.translate('catalog.root-collection'),\n slug: '',\n parentId: '__',\n position: 0,\n featuredAsset: null,\n children: [],\n breadcrumbs: [],\n isPrivate: false,\n createdAt: '',\n updatedAt: '',\n } satisfies ItemOf<GetCollectionListQuery, 'collections'>,\n ]\n : []),\n ...collections.items,\n ]),\n );\n this.totalItems$ = getCollectionsResult.mapStream(data => data.collections.totalItems);\n\n this.subCollections$ = this.expandedIds$.pipe(\n tap(val => (this.expandedIds = val)),\n switchMap(ids => {\n if (ids.length) {\n return this.dataService.collection\n .getCollections({\n take: 999,\n filter: {\n parentId: { in: ids },\n },\n })\n .mapStream(data => data.collections.items);\n } else {\n return of([]);\n }\n }),\n );\n }\n\n toggleExpanded(collection: ItemOf<GetCollectionListQuery, 'collections'>) {\n let expandedIds = this.expandedIds;\n if (!expandedIds.includes(collection.id)) {\n expandedIds.push(collection.id);\n } else {\n expandedIds = expandedIds.filter(id => id !== collection.id);\n }\n this.expandedIds$.next(expandedIds);\n }\n}\n", "<ng-template vdrDialogTitle>\n {{ 'catalog.move-collections' | translate }}\n</ng-template>\n<vdr-collection-data-table\n class=\"mt-2\"\n id=\"move-collection-list\"\n [items]=\"items$ | async\"\n [subCollections]=\"subCollections$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n (pageChange)=\"currentPage$.next($event)\"\n (itemsPerPageChange)=\"itemsPerPage$.next($event)\"\n>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'common.search-by-name' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-collection=\"item\">\n {{ collection.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\">\n <ng-template let-collection=\"item\" let-depth=\"depth\">\n <div [ngClass]=\"'indent-' + depth\"></div>\n <clr-icon\n class=\"child-arrow\"\n [class.transparent]=\"depth === 0\"\n shape=\"child-arrow\"\n *ngIf=\"!collection.children?.length && collection.parentId !== '__'\"\n ></clr-icon>\n <button\n class=\"icon-button folder-button\"\n *ngIf=\"collection.children?.length\"\n (click)=\"toggleExpanded(collection)\"\n >\n <clr-icon shape=\"folder\" *ngIf=\"!expandedIds.includes(collection.id)\"></clr-icon>\n <clr-icon shape=\"folder-open\" *ngIf=\"expandedIds.includes(collection.id)\"></clr-icon>\n </button>\n <button class=\"icon-button folder-button\" *ngIf=\"collection.parentId === '__'\" disabled>\n <clr-icon shape=\"folder\" class=\"is-solid\"></clr-icon>\n </button>\n <button class=\"button-ghost\" (click)=\"resolveWith(collection)\">\n <span>{{ 'catalog.move-collection-to' | translate : {name: collection.name} }}</span>\n </button>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.breadcrumb' | translate\" id=\"breadcrumb\">\n <ng-template let-collection=\"item\">\n <div class=\"breadcrumb\">\n <ng-container *ngIf=\"collection | collectionBreadcrumb as breadcrumbs\">\n <ng-container *ngIf=\"breadcrumbs.length\">\n <div *ngFor=\"let item of breadcrumbs\">\n <span class=\"separator\">/</span>{{ item.name }}\n </div>\n </ng-container>\n <span class=\"separator\" *ngIf=\"!breadcrumbs.length\">/</span>\n </ng-container>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.slug' | translate\" id=\"slug\">\n <ng-template let-collection=\"item\">\n {{ collection.slug }}\n </ng-template>\n </vdr-dt2-column>\n</vdr-collection-data-table>\n", "import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BulkAction,\n createBulkAssignToChannelAction,\n createBulkDeleteAction,\n createBulkRemoveFromChannelAction,\n DataService,\n DuplicateEntityDialogComponent,\n GetCollectionListQuery,\n ItemOf,\n ModalService,\n MoveCollectionInput,\n NotificationService,\n Permission,\n} from '@vendure/admin-ui/core';\nimport { EMPTY } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { CollectionPartial } from '../collection-tree/collection-tree.types';\nimport { MoveCollectionsDialogComponent } from '../move-collections-dialog/move-collections-dialog.component';\n\nimport { CollectionListComponent } from './collection-list.component';\n\nexport const deleteCollectionsBulkAction = createBulkDeleteAction<\n ItemOf<GetCollectionListQuery, 'collections'>\n>({\n location: 'collection-list',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.DeleteCollection) ||\n userPermissions.includes(Permission.DeleteCatalog),\n getItemName: item => item.name,\n bulkDelete: (dataService, ids) =>\n dataService.collection.deleteCollections(ids).pipe(map(res => res.deleteCollections)),\n});\n\nexport const moveCollectionsBulkAction: BulkAction<CollectionPartial, CollectionListComponent> = {\n location: 'collection-list',\n label: _('catalog.move-collections'),\n icon: 'drag-handle',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.UpdateCatalog) ||\n userPermissions.includes(Permission.UpdateCollection),\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\n const modalService = injector.get(ModalService);\n const dataService = injector.get(DataService);\n const notificationService = injector.get(NotificationService);\n modalService\n .fromComponent(MoveCollectionsDialogComponent, {\n size: 'xl',\n closable: true,\n })\n .pipe(\n switchMap(result => {\n if (result) {\n const inputs: MoveCollectionInput[] = selection.map(c => ({\n collectionId: c.id,\n parentId: result.id,\n index: 0,\n }));\n return dataService.collection.moveCollection(inputs);\n } else {\n return EMPTY;\n }\n }),\n )\n .subscribe(result => {\n notificationService.success(_('catalog.move-collections-success'), {\n count: selection.length,\n });\n clearSelection();\n hostComponent.refresh();\n });\n },\n};\n\nexport const assignCollectionsToChannelBulkAction = createBulkAssignToChannelAction<\n ItemOf<GetCollectionListQuery, 'collections'>\n>({\n location: 'collection-list',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.UpdateCatalog) ||\n userPermissions.includes(Permission.UpdateCollection),\n getItemName: item => item.name,\n bulkAssignToChannel: (dataService, collectionIds, channelIds) =>\n channelIds.map(channelId =>\n dataService.collection\n .assignCollectionsToChannel({\n collectionIds,\n channelId,\n })\n .pipe(map(res => res.assignCollectionsToChannel)),\n ),\n});\n\nexport const removeCollectionsFromChannelBulkAction = createBulkRemoveFromChannelAction<\n ItemOf<GetCollectionListQuery, 'collections'>\n>({\n location: 'collection-list',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.DeleteCatalog) ||\n userPermissions.includes(Permission.DeleteCollection),\n getItemName: item => item.name,\n bulkRemoveFromChannel: (dataService, collectionIds, channelId) =>\n dataService.collection\n .removeCollectionsFromChannel({\n channelId: channelId,\n collectionIds,\n })\n .pipe(map(res => res.removeCollectionsFromChannel)),\n});\n\nexport const duplicateCollectionsBulkAction: BulkAction<\n ItemOf<GetCollectionListQuery, 'collections'>,\n CollectionListComponent\n> = {\n location: 'collection-list',\n label: _('common.duplicate'),\n icon: 'copy',\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\n const modalService = injector.get(ModalService);\n modalService\n .fromComponent(DuplicateEntityDialogComponent<ItemOf<GetCollectionListQuery, 'collections'>>, {\n locals: {\n entities: selection,\n entityName: 'Collection',\n title: _('catalog.duplicate-collections'),\n getEntityName: entity => entity.name,\n },\n })\n .subscribe(result => {\n if (result) {\n clearSelection();\n hostComponent.refresh();\n }\n });\n },\n};\n", "import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n DataService,\n GetCollectionListDocument,\n GetCollectionListQuery,\n ItemOf,\n LanguageCode,\n NotificationService,\n TypedBaseListComponent,\n} from '@vendure/admin-ui/core';\nimport { combineLatest, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, map, switchMap, takeUntil } from 'rxjs/operators';\nimport { CollectionOrderEvent } from '../collection-data-table/collection-data-table.component';\n\n@Component({\n selector: 'vdr-collection-list',\n templateUrl: './collection-list.component.html',\n styleUrls: ['./collection-list.component.scss', './collection-list-common.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CollectionListComponent\n extends TypedBaseListComponent<typeof GetCollectionListDocument, 'collections'>\n implements OnInit\n{\n activeCollectionId$: Observable<string | null>;\n activeCollectionIndex$: Observable<number>;\n activeCollectionTitle$: Observable<string>;\n subCollections$: Observable<Array<ItemOf<GetCollectionListQuery, 'collections'>>>;\n expandedIds: string[] = [];\n dataTableListId = 'collection-list';\n readonly customFields = this.getCustomFieldConfig('Collection');\n readonly filters = this.createFilterCollection()\n .addIdFilter()\n .addDateFilters()\n .addFilter({\n name: 'slug',\n label: _('common.slug'),\n type: { kind: 'text' },\n filterField: 'slug',\n })\n .addFilter({\n name: 'visibility',\n type: { kind: 'boolean' },\n label: _('common.visibility'),\n toFilterInput: value => ({\n isPrivate: { eq: !value },\n }),\n })\n .addCustomFieldFilters(this.customFields)\n .connectToRoute(this.route);\n readonly sorts = this.createSortCollection()\n .defaultSort('position', 'ASC')\n .addSort({ name: 'createdAt' })\n .addSort({ name: 'updatedAt' })\n .addSort({ name: 'name' })\n .addSort({ name: 'slug' })\n .addSort({ name: 'position' })\n .addCustomFieldSorts(this.customFields)\n .connectToRoute(this.route);\n\n constructor(\n protected dataService: DataService,\n private notificationService: NotificationService,\n ) {\n super();\n super.configure({\n document: GetCollectionListDocument,\n getItems: data => data.collections,\n setVariables: (skip, _take) => {\n const topLevelOnly =\n this.searchTermControl.value === '' && this.filters.activeFilters.length === 0\n ? true\n : undefined;\n return {\n options: {\n skip,\n take: _take,\n filter: {\n name: { contains: this.searchTermControl.value },\n ...this.filters.createFilterInput(),\n },\n topLevelOnly,\n sort: this.sorts.createSortInput(),\n },\n };\n },\n refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],\n });\n }\n\n ngOnInit() {\n super.ngOnInit();\n this.activeCollectionId$ = this.route.paramMap.pipe(\n map(pm => pm.get('contents')),\n distinctUntilChanged(),\n );\n const expandedIds$ = this.route.queryParamMap.pipe(\n map(qpm => qpm.get('expanded')),\n distinctUntilChanged(),\n map(ids => (ids ? ids.split(',') : [])),\n );\n expandedIds$.pipe(takeUntil(this.destroy$)).subscribe(ids => {\n this.expandedIds = ids;\n });\n this.subCollections$ = combineLatest(expandedIds$, this.refresh$).pipe(\n switchMap(([ids]) => {\n if (ids.length) {\n return this.dataService.collection\n .getCollections({\n take: 999,\n filter: {\n parentId: { in: ids },\n },\n })\n .mapStream(data => data.collections.items);\n } else {\n return of([]);\n }\n }),\n );\n\n this.activeCollectionTitle$ = combineLatest(\n this.activeCollectionId$,\n this.items$,\n this.subCollections$,\n ).pipe(\n map(([id, collections, subCollections]) => {\n if (id) {\n const match = [...collections, ...subCollections].find(c => c.id === id);\n return match ? match.name : '';\n }\n return '';\n }),\n );\n this.activeCollectionIndex$ = combineLatest(\n this.activeCollectionId$,\n this.items$,\n this.subCollections$,\n ).pipe(\n map(([id, collections, subCollections]) => {\n if (id) {\n const allCollections: typeof collections = [];\n for (const collection of collections) {\n allCollections.push(collection);\n const subCollectionMatches = subCollections.filter(\n c => c.parentId && c.parentId === collection.id,\n );\n allCollections.push(...subCollectionMatches);\n }\n return allCollections.findIndex(c => c.id === id);\n }\n return -1;\n }),\n );\n }\n\n onRearrange(event: CollectionOrderEvent) {\n this.dataService.collection.moveCollection([event]).subscribe({\n next: () => {\n this.notificationService.success(_('common.notify-saved-changes'));\n this.refresh();\n },\n error: err => {\n this.notificationService.error(_('common.notify-save-changes-error'));\n },\n });\n }\n\n closeContents() {\n const params = { ...this.route.snapshot.params };\n delete params.contents;\n this.router.navigate(['./', params], { relativeTo: this.route, queryParamsHandling: 'preserve' });\n }\n\n setLanguage(code: LanguageCode) {\n this.dataService.client.setContentLanguage(code).subscribe();\n }\n\n toggleExpanded(collection: ItemOf<GetCollectionListQuery, 'collections'>) {\n let expandedIds = this.expandedIds;\n if (!expandedIds.includes(collection.id)) {\n expandedIds.push(collection.id);\n } else {\n expandedIds = expandedIds.filter(id => id !== collection.id);\n }\n this.router.navigate(['./'], {\n queryParams: {\n expanded: expandedIds.filter(id => !!id).join(','),\n },\n queryParamsHandling: 'merge',\n relativeTo: this.route,\n });\n }\n}\n", "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left>\n <vdr-language-selector\n [availableLanguageCodes]=\"availableLanguages$ | async\"\n [currentLanguageCode]=\"contentLanguage$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"collection-list\" />\n <a\n class=\"btn btn-primary\"\n *vdrIfPermissions=\"['CreateCatalog', 'CreateCollection']\"\n [routerLink]=\"['./create']\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.create-new-collection' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"collection-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-split-view [rightPanelOpen]=\"activeCollectionId$ | async\" (closeClicked)=\"closeContents()\">\n <ng-template vdrSplitViewLeft>\n <vdr-collection-data-table\n class=\"mt-2\"\n [id]=\"dataTableListId\"\n [items]=\"items$ | async\"\n [subCollections]=\"subCollections$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n [activeIndex]=\"activeCollectionIndex$ | async\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n (changeOrder)=\"onRearrange($event)\"\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\n >\n <vdr-bulk-action-menu\n locationId=\"collection-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'common.search-by-name' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\">\n <ng-template let-collection=\"item\">\n {{ collection.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('createdAt')\"\n >\n <ng-template let-collection=\"item\">\n {{ collection.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('updatedAt')\"\n >\n <ng-template let-collection=\"item\">\n {{ collection.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.position' | translate\" id=\"position\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('position')\"\n >\n <ng-template let-collection=\"item\">\n {{ collection.position }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.name' | translate\" id=\"name\"\n [optional]=\"false\"\n [sort]=\"sorts.get('name')\"\n >\n <ng-template let-collection=\"item\" let-depth=\"depth\">\n <div [ngClass]=\"'indent-' + depth\"></div>\n <clr-icon\n class=\"child-arrow\"\n [class.transparent]=\"depth === 0\"\n shape=\"child-arrow\"\n *ngIf=\"!collection.children?.length\"\n ></clr-icon>\n <button\n class=\"icon-button folder-button\"\n *ngIf=\"collection.children?.length\"\n (click)=\"toggleExpanded(collection)\"\n >\n <clr-icon shape=\"folder\" *ngIf=\"!expandedIds.includes(collection.id)\"></clr-icon>\n <clr-icon shape=\"folder-open\" *ngIf=\"expandedIds.includes(collection.id)\"></clr-icon>\n </button>\n <a class=\"button-ghost\" [routerLink]=\"['./', collection.id]\"\n ><span>{{ collection.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.breadcrumb' | translate\" id=\"breadcrumb\">\n <ng-template let-collection=\"item\">\n <div class=\"breadcrumb\">\n <ng-container *ngIf=\"collection | collectionBreadcrumb as breadcrumbs\">\n <ng-container *ngIf=\"breadcrumbs.length\">\n <div *ngFor=\"let item of breadcrumbs\">\n <span class=\"separator\">/</span>{{ item.name }}\n </div>\n </ng-container>\n <span class=\"separator\" *ngIf=\"!breadcrumbs.length\">/</span>\n </ng-container>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.slug' | translate\" id=\"slug\" [sort]=\"sorts.get('slug')\">\n <ng-template let-collection=\"item\">\n {{ collection.slug }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.visibility' | translate\" id=\"visibility\">\n <ng-template let-collection=\"item\">\n <vdr-chip *ngIf=\"collection.isPrivate\" colorType=\"warning\">{{\n 'common.private' | translate\n }}</vdr-chip>\n <vdr-chip *ngIf=\"!collection.isPrivate\" colorType=\"success\">{{\n 'common.public' | translate\n }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.view-contents' | translate\" id=\"view-contents\" [optional]=\"false\">\n <ng-template let-collection=\"item\">\n <a\n class=\"button-small bg-weight-150\"\n [routerLink]=\"['./', { contents: collection.id }]\"\n [queryParams]=\"{ contentsPage: 1 }\"\n queryParamsHandling=\"merge\"\n >\n <span>{{ 'common.view-contents' | translate }}</span>\n <clr-icon shape=\"file-group\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column\n *ngFor=\"let customField of customFields\"\n [customField]=\"customField\"\n [sorts]=\"sorts\"\n />\n </vdr-collection-data-table>\n </ng-template>\n <ng-template vdrSplitViewRight [splitViewTitle]=\"activeCollectionTitle$ | async\">\n <ng-container *ngIf=\"activeCollectionId$ | async as activeGroup\">\n <vdr-collection-contents [collectionId]=\"activeCollectionId$ | async\"></vdr-collection-contents>\n </ng-container>\n </ng-template>\n</vdr-split-view>\n", "import { CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { RootNode, TreeNode } from './array-to-tree';\nimport { CollectionPartial, RearrangeEvent } from './collection-tree.types';\n\n/**\n * Facilitates communication between the CollectionTreeComponent and child CollectionTreeNodeComponents\n * without introducing a cyclic dependency.\n */\n@Injectable()\nexport class CollectionTreeService implements OnDestroy {\n private allMoveListItems: Array<{ path: string; id: string; ancestorIdPath: Set<string> }> = [];\n private collectionTree: RootNode<CollectionPartial>;\n private _rearrange$ = new Subject<RearrangeEvent>();\n private _delete$ = new Subject<string>();\n\n public rearrange$: Observable<RearrangeEvent>;\n public delete$: Observable<string>;\n\n constructor() {\n this.rearrange$ = this._rearrange$.asObservable();\n this.delete$ = this._delete$.asObservable();\n }\n\n ngOnDestroy() {\n this._rearrange$.complete();\n this._delete$.complete();\n }\n\n setCollectionTree(tree: RootNode<CollectionPartial>) {\n this.collectionTree = tree;\n }\n\n resetMoveList() {\n this.allMoveListItems = [];\n }\n\n getMoveListItems(collection: CollectionPartial) {\n if (this.allMoveListItems.length === 0) {\n this.allMoveListItems = this.calculateAllMoveListItems();\n }\n return this.allMoveListItems.filter(\n item =>\n item.id !== collection.id &&\n !item.ancestorIdPath.has(collection.id) &&\n item.id !== collection.parent?.id,\n );\n }\n\n onDrop(event: CdkDragDrop<CollectionPartial | RootNode<CollectionPartial>>) {\n const item = event.item.data as CollectionPartial;\n const newParent = event.container.data;\n const newParentId = newParent.id;\n if (newParentId == null) {\n throw new Error(`Could not determine the ID of the root Collection`);\n }\n this._rearrange$.next({\n collectionId: item.id,\n parentId: newParentId,\n index: event.currentIndex,\n });\n }\n\n onMove(event: RearrangeEvent) {\n this._rearrange$.next(event);\n }\n\n onDelete(id: string) {\n this._delete$.next(id);\n }\n\n private calculateAllMoveListItems() {\n const visit = (\n node: TreeNode<any>,\n parentPath: string[],\n ancestorIdPath: Set<string>,\n output: Array<{ path: string; id: string; ancestorIdPath: Set<string> }>,\n ) => {\n const path = parentPath.concat(node.name);\n output.push({ path: path.slice(1).join(' / ') || 'root', id: node.id, ancestorIdPath });\n node.children.forEach(child =>\n visit(child, path, new Set<string>([...ancestorIdPath, node.id]), output),\n );\n return output;\n };\n return visit(this.collectionTree, [], new Set<string>(), []);\n }\n}\n", "import { CdkDragDrop, moveItemInArray } from '@angular/cdk/drag-drop';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n SimpleChanges,\n SkipSelf,\n} from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { DataService, Permission, SelectionManager } from '@vendure/admin-ui/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\n\nimport { RootNode, TreeNode } from './array-to-tree';\nimport { CollectionTreeService } from './collection-tree.service';\nimport { CollectionPartial } from './collection-tree.types';\n\n@Component({\n selector: 'vdr-collection-tree-node',\n templateUrl: './collection-tree-node.component.html',\n styleUrls: ['./collection-tree-node.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CollectionTreeNodeComponent implements OnInit, OnChanges, OnDestroy {\n depth = 0;\n parentName: string;\n @Input() collectionTree: TreeNode<CollectionPartial>;\n @Input() activeCollectionId: string;\n @Input() expandAll = false;\n @Input() selectionManager: SelectionManager<CollectionPartial>;\n hasUpdatePermission$: Observable<boolean>;\n hasDeletePermission$: Observable<boolean>;\n moveListItems: Array<{ path: string; id: string }> = [];\n private subscription: Subscription;\n\n constructor(\n @SkipSelf() @Optional() private parent: CollectionTreeNodeComponent,\n private dataService: DataService,\n private collectionTreeService: CollectionTreeService,\n private router: Router,\n private route: ActivatedRoute,\n private changeDetectorRef: ChangeDetectorRef,\n ) {\n if (parent) {\n this.depth = parent.depth + 1;\n }\n }\n\n ngOnInit() {\n this.parentName = this.collectionTree.name || '<root>';\n const permissions$ = this.dataService.client\n .userStatus()\n .mapStream(data => data.userStatus.permissions)\n .pipe(shareReplay(1));\n this.hasUpdatePermission$ = permissions$.pipe(\n map(\n perms =>\n perms.includes(Permission.UpdateCatalog) || perms.includes(Permission.UpdateCollection),\n ),\n );\n this.hasDeletePermission$ = permissions$.pipe(\n map(\n perms =>\n perms.includes(Permission.DeleteCatalog) || perms.includes(Permission.DeleteCollection),\n ),\n );\n this.subscription = this.selectionManager?.selectionChanges$.subscribe(() =>\n this.changeDetectorRef.markForCheck(),\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n const expandAllChange = changes['expandAll'];\n if (expandAllChange) {\n if (expandAllChange.previousValue === true && expandAllChange.currentValue === false) {\n this.collectionTree.children.forEach(c => (c.expanded = false));\n }\n }\n }\n\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n trackByFn(index: number, item: CollectionPartial) {\n return item.id;\n }\n\n toggleExpanded(collection: TreeNode<CollectionPartial>) {\n collection.expanded = !collection.expanded;\n let expandedIds = this.route.snapshot.queryParamMap.get('expanded')?.split(',') ?? [];\n if (collection.expanded) {\n expandedIds.push(collection.id);\n } else {\n expandedIds = expandedIds.filter(id => id !== collection.id);\n }\n this.router.navigate(['./'], {\n queryParams: {\n expanded: expandedIds.filter(id => !!id).join(','),\n },\n queryParamsHandling: 'merge',\n relativeTo: this.route,\n });\n }\n\n getMoveListItems(collection: CollectionPartial) {\n this.moveListItems = this.collectionTreeService.getMoveListItems(collection);\n }\n\n move(collection: CollectionPartial, parentId: string) {\n this.collectionTreeService.onMove({\n index: 0,\n parentId,\n collectionId: collection.id,\n });\n }\n\n moveUp(collection: CollectionPartial, currentIndex: number) {\n if (!collection.parent) {\n return;\n }\n this.collectionTreeService.onMove({\n index: currentIndex - 1,\n parentId: collection.parent.id,\n collectionId: collection.id,\n });\n }\n\n moveDown(collection: CollectionPartial, currentIndex: number) {\n if (!collection.parent) {\n return;\n }\n this.collectionTreeService.onMove({\n index: currentIndex + 1,\n parentId: collection.parent.id,\n collectionId: collection.id,\n });\n }\n\n drop(event: CdkDragDrop<CollectionPartial | RootNode<CollectionPartial>>) {\n moveItemInArray(this.collectionTree.children, event.previousIndex, event.currentIndex);\n this.collectionTreeService.onDrop(event);\n }\n\n delete(id: string) {\n this.collectionTreeService.onDelete(id);\n }\n}\n", "<div\n cdkDropList\n class=\"tree-node\"\n #dropList\n [cdkDropListData]=\"collectionTree\"\n [cdkDropListDisabled]=\"!(hasUpdatePermission$ | async)\"\n (cdkDropListDropped)=\"drop($event)\"\n>\n <div\n class=\"collection\"\n [class.private]=\"collection.isPrivate\"\n *ngFor=\"let collection of collectionTree.children; index as i; trackBy: trackByFn\"\n cdkDrag\n [cdkDragData]=\"collection\"\n >\n <div\n class=\"collection-detail\"\n [ngClass]=\"'depth-' + depth\"\n [class.active]=\"collection.id === activeCollectionId\"\n >\n <div>\n <input\n type=\"checkbox\"\n clrCheckbox\n [checked]=\"selectionManager.isSelected(collection)\"\n (click)=\"selectionManager.toggleSelection(collection, $event)\"\n />\n </div>\n <div class=\"name\">\n <button\n class=\"icon-button folder-button\"\n [disabled]=\"expandAll\"\n *ngIf=\"collection.children?.length; else folderSpacer\"\n (click)=\"toggleExpanded(collection)\"\n >\n <clr-icon shape=\"folder\" *ngIf=\"!collection.expanded && !expandAll\"></clr-icon>\n <clr-icon shape=\"folder-open\" *ngIf=\"collection.expanded || expandAll\"></clr-icon>\n </button>\n <ng-template #folderSpacer>\n <div class=\"folder-button-spacer\"></div>\n </ng-template>\n {{ collection.name }}\n </div>\n <div class=\"flex-spacer\"></div>\n <vdr-chip *ngIf=\"collection.isPrivate\">{{ 'catalog.private' | translate }}</vdr-chip>\n <a\n class=\"btn btn-link btn-sm\"\n [routerLink]=\"['./', { contents: collection.id }]\"\n queryParamsHandling=\"preserve\"\n >\n <clr-icon shape=\"view-list\"></clr-icon>\n {{ 'catalog.view-contents' | translate }}\n </a>\n <a class=\"btn btn-link btn-sm\" [routerLink]=\"['/catalog/collections/', collection.id]\">\n <clr-icon shape=\"edit\"></clr-icon>\n {{ 'common.edit' | translate }}\n </a>\n <div class=\"drag-handle\" cdkDragHandle *vdrIfPermissions=\"['UpdateCatalog', 'UpdateCollection']\">\n <clr-icon shape=\"drag-handle\" size=\"24\"></clr-icon>\n </div>\n <vdr-dropdown>\n <button class=\"icon-button\" vdrDropdownTrigger (click)=\"getMoveListItems(collection)\">\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <a\n class=\"dropdown-item\"\n [routerLink]=\"['./', 'create', { parentId: collection.id }]\"\n *vdrIfPermissions=\"['CreateCatalog', 'CreateCollection']\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.create-new-collection' | translate }}\n </a>\n <div class=\"dropdown-divider\"></div>\n <button\n type=\"button\"\n vdrDropdownItem\n [disabled]=\"i === 0 || !(hasUpdatePermission$ | async)\"\n (click)=\"moveUp(collection, i)\"\n >\n <clr-icon shape=\"caret up\"></clr-icon>\n {{ 'catalog.move-up' | translate }}\n </button>\n <button\n type=\"button\"\n vdrDropdownItem\n [disabled]=\"\n i === collectionTree.children.length - 1 || !(hasUpdatePermission$ | async)\n \"\n (click)=\"moveDown(collection, i)\"\n >\n <clr-icon shape=\"caret down\"></clr-icon>\n {{ 'catalog.move-down' | translate }}\n </button>\n <h4 class=\"dropdown-header\">{{ 'catalog.move-to' | translate }}</h4>\n <button\n type=\"button\"\n vdrDropdownItem\n *ngFor=\"let item of moveListItems\"\n (click)=\"move(collection, item.id)\"\n [disabled]=\"!(hasUpdatePermission$ | async)\"\n >\n <div class=\"move-to-item\">\n <div class=\"move-icon\">\n <clr-icon shape=\"child-arrow\"></clr-icon>\n </div>\n <div class=\"path\">\n {{ item.path }}\n </div>\n </div>\n </button>\n <div class=\"dropdown-divider\"></div>\n <button\n class=\"button\"\n vdrDropdownItem\n (click)=\"delete(collection.id)\"\n [disabled]=\"!(hasDeletePermission$ | async)\"\n >\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n <vdr-collection-tree-node\n *ngIf=\"collection.expanded || expandAll\"\n [expandAll]=\"expandAll\"\n [collectionTree]=\"collection\"\n [activeCollectionId]=\"activeCollectionId\"\n [selectionManager]=\"selectionManager\"\n ></vdr-collection-tree-node>\n </div>\n</div>\n", "export type HasParent = { id: string; parent?: { id: string } | null };\nexport type TreeNode<T extends HasParent> = T & { children: Array<TreeNode<T>>; expanded: boolean };\nexport type RootNode<T extends HasParent> = { id?: string; children: Array<TreeNode<T>> };\n\n/**\n * Builds a tree from an array of nodes which have a parent.\n * Based on https://stackoverflow.com/a/31247960/772859, modified to preserve ordering.\n */\nexport function arrayToTree<T extends HasParent>(\n nodes: T[],\n currentState?: RootNode<T>,\n expandedIds: string[] = [],\n): RootNode<T> {\n const topLevelNodes: Array<TreeNode<T>> = [];\n const mappedArr: { [id: string]: TreeNode<T> } = {};\n const currentStateMap = treeToMap(currentState);\n\n // First map the nodes of the array to an object -> create a hash table.\n for (const node of nodes) {\n mappedArr[node.id] = { ...(node as any), children: [] };\n }\n\n for (const id of nodes.map(n => n.id)) {\n if (mappedArr.hasOwnProperty(id)) {\n const mappedElem = mappedArr[id];\n mappedElem.expanded = currentStateMap.get(id)?.expanded ?? expandedIds.includes(id);\n const parent = mappedElem.parent;\n if (!parent) {\n continue;\n }\n // If the element is not at the root level, add it to its parent array of children.\n const parentIsRoot = !mappedArr[parent.id];\n if (!parentIsRoot) {\n if (mappedArr[parent.id]) {\n mappedArr[parent.id].children.push(mappedElem);\n } else {\n mappedArr[parent.id] = { children: [mappedElem] } as any;\n }\n } else {\n topLevelNodes.push(mappedElem);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const rootId = topLevelNodes.length ? topLevelNodes[0].parent!.id : undefined;\n return { id: rootId, children: topLevelNodes };\n}\n\n/**\n * Converts an existing tree (as generated by the arrayToTree function) into a flat\n * Map. This is used to persist certain states (e.g. `expanded`) when re-building the\n * tree.\n */\nfunction treeToMap<T extends HasParent>(tree?: RootNode<T>): Map<string, TreeNode<T>> {\n const nodeMap = new Map<string, TreeNode<T>>();\n function visit(node: TreeNode<T>) {\n nodeMap.set(node.id, node);\n node.children.forEach(visit);\n }\n if (tree) {\n visit(tree as TreeNode<T>);\n }\n return nodeMap;\n}\n", "import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { Collection, SelectionManager } from '@vendure/admin-ui/core';\n\nimport { arrayToTree, RootNode } from './array-to-tree';\nimport { CollectionTreeService } from './collection-tree.service';\nimport { CollectionPartial, RearrangeEvent } from './collection-tree.types';\n\n@Component({\n selector: 'vdr-collection-tree',\n templateUrl: 'collection-tree.component.html',\n styleUrls: ['./collection-tree.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [CollectionTreeService],\n standalone: false\n})\nexport class CollectionTreeComponent implements OnInit, OnChanges {\n @Input() collections: CollectionPartial[];\n @Input() activeCollectionId: string;\n @Input() expandAll = false;\n @Input() expandedIds: string[] = [];\n @Input() selectionManager: SelectionManager<CollectionPartial>;\n @Output() rearrange = new EventEmitter<RearrangeEvent>();\n @Output() deleteCollection = new EventEmitter<string>();\n collectionTree: RootNode<CollectionPartial>;\n\n constructor(private collectionTreeService: CollectionTreeService) {}\n\n ngOnChanges(changes: SimpleChanges) {\n if ('collections' in changes && this.collections) {\n this.collectionTree = arrayToTree(this.collections, this.collectionTree, this.expandedIds);\n this.collectionTreeService.setCollectionTree(this.collectionTree);\n this.collectionTreeService.resetMoveList();\n }\n }\n\n ngOnInit() {\n this.collectionTreeService.rearrange$.subscribe(event => this.rearrange.emit(event));\n this.collectionTreeService.delete$.subscribe(id => this.deleteCollection.emit(id));\n }\n}\n", "<vdr-collection-tree-node\n *ngIf=\"collectionTree\"\n cdkDropListGroup\n [expandAll]=\"expandAll\"\n [collectionTree]=\"collectionTree\"\n [selectionManager]=\"selectionManager\"\n [activeCollectionId]=\"activeCollectionId\"\n></vdr-collection-tree-node>\n", "import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { Dialog, GetProductVariantOptionsQuery } from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-confirm-variant-deletion-dialog',\n templateUrl: './confirm-variant-deletion-dialog.component.html',\n styleUrls: ['./confirm-variant-deletion-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class ConfirmVariantDeletionDialogComponent implements Dialog<boolean> {\n resolveWith: (result?: boolean) => void;\n variants: NonNullable<GetProductVariantOptionsQuery['product']>['variants'] = [];\n\n confirm() {\n this.resolveWith(true);\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n", "<ng-template vdrDialogTitle>\n {{ 'catalog.confirm-deletion-of-unused-variants-title' | translate }}\n</ng-template>\n{{ 'catalog.confirm-deletion-of-unused-variants-body' | translate }}\n<ul>\n <li *ngFor=\"let variant of variants\">{{ variant.name }} ({{ variant.sku }})</li>\n</ul>\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"confirm()\" class=\"btn btn-primary\">\n {{ 'common.confirm' | translate }}\n </button>\n</ng-template>\n", "import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { FormBuilder, Validators } from '@angular/forms';\nimport { CreateFacetValueInput, Dialog, LanguageCode } from '@vendure/admin-ui/core';\n\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\n\n@Component({\n selector: 'vdr-create-facet-value-dialog',\n templateUrl: './create-facet-value-dialog.component.html',\n styleUrls: ['./create-facet-value-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class CreateFacetValueDialogComponent implements Dialog<CreateFacetValueInput> {\n resolveWith: (result?: CreateFacetValueInput) => void;\n languageCode: LanguageCode;\n form = this.formBuilder.group({\n name: ['', Validators.required],\n code: ['', Validators.required],\n });\n facetId: string;\n constructor(private formBuilder: FormBuilder) {}\n\n updateCode() {\n const nameControl = this.form.get('name');\n const codeControl = this.form.get('code');\n if (nameControl && codeControl && codeControl.pristine) {\n codeControl.setValue(normalizeString(`${nameControl.value}`, '-'));\n }\n }\n\n confirm() {\n const { name, code } = this.form.value;\n if (!name || !code) {\n return;\n }\n this.resolveWith({\n facetId: this.facetId,\n code,\n translations: [{ languageCode: this.languageCode, name }],\n });\n }\n\n cancel() {\n this.resolveWith();\n }\n}\n", "<ng-template vdrDialogTitle>\n {{ 'catalog.create-facet-value' | translate }}\n</ng-template>\n<div class=\"form-grid\" [formGroup]=\"form\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input id=\"name\" type=\"text\" formControlName=\"name\" (input)=\"updateCode()\" />\n </vdr-form-field>\n <vdr-form-field\n [label]=\"'common.code' | translate\"\n for=\"code\"\n >\n <input\n id=\"code\"\n type=\"text\"\n formControlName=\"code\"\n />\n </vdr-form-field>\n</div>\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button type=\"submit\" (click)=\"confirm()\" class=\"btn btn-primary\" [disabled]=\"form.invalid\">\n {{ 'common.confirm' | translate }}\n </button>\n</ng-template>\n", "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport {\n FormBuilder,\n FormControl,\n FormGroup,\n FormRecord,\n UntypedFormControl,\n UntypedFormGroup,\n Validators,\n} from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n CreateFacetInput,\n createUpdatedTranslatable,\n DataService,\n DeletionResult,\n FACET_WITH_VALUE_LIST_FRAGMENT,\n FacetWithValueListFragment,\n findTranslation,\n getCustomFieldsDefaults,\n GetFacetDetailDocument,\n GetFacetDetailQuery,\n GetFacetDetailQueryVariables,\n LanguageCode,\n ModalService,\n NotificationService,\n Permission,\n TypedBaseDetailComponent,\n UpdateFacetInput,\n UpdateFacetValueInput,\n} from '@vendure/admin-ui/core';\nimport { SortOrder } from '@vendure/common/lib/generated-types';\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\nimport { notNullOrUndefined } from '@vendure/common/lib/shared-utils';\nimport { gql } from 'apollo-angular';\nimport { BehaviorSubject, combineLatest, EMPTY, forkJoin, Observable } from 'rxjs';\nimport { debounceTime, map, mergeMap, switchMap, take, takeUntil } from 'rxjs/operators';\nimport { CreateFacetValueDialogComponent } from '../create-facet-value-dialog/create-facet-value-dialog.component';\n\nexport const FACET_DETAIL_QUERY = gql`\n query GetFacetDetail($id: ID!, $facetValueListOptions: FacetValueListOptions) {\n facet(id: $id) {\n ...FacetWithValueList\n }\n }\n ${FACET_WITH_VALUE_LIST_FRAGMENT}\n`;\n\ntype ValueItem =\n | FacetWithValueListFragment['valueList']['items'][number]\n | { id: string; name: string; code: string };\n\n@Component({\n selector: 'vdr-facet-detail',\n templateUrl: './facet-detail.component.html',\n styleUrls: ['./facet-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class FacetDetailComponent\n extends TypedBaseDetailComponent<typeof GetFacetDetailDocument, 'facet'>\n implements OnInit, OnDestroy\n{\n readonly customFields = this.getCustomFieldConfig('Facet');\n readonly customValueFields = this.getCustomFieldConfig('FacetValue');\n detailForm = this.formBuilder.group({\n facet: this.formBuilder.group({\n code: ['', Validators.required],\n name: '',\n visible: true,\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n }),\n values: this.formBuilder.record<\n FormGroup<{\n id: FormControl<string>;\n name: FormControl<string>;\n code: FormControl<string>;\n customFields: FormGroup;\n }>\n >({}),\n });\n currentPage = 1;\n itemsPerPage = 10;\n totalItems = 0;\n filterControl = new FormControl('');\n values$ = new BehaviorSubject<ValueItem[]>([]);\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateFacet];\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n protected dataService: DataService,\n private formBuilder: FormBuilder,\n private notificationService: NotificationService,\n private modalService: ModalService,\n ) {\n super();\n }\n\n ngOnInit() {\n this.init();\n this.filterControl.valueChanges\n .pipe(debounceTime(200), takeUntil(this.destroy$))\n .subscribe(filterTerm => {\n this.currentPage = 1;\n this.fetchFacetValues(this.currentPage, this.itemsPerPage, filterTerm);\n });\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n updateCode(currentCode: string, nameValue: string) {\n if (!currentCode) {\n const codeControl = this.detailForm.get(['facet', 'code']);\n if (codeControl && codeControl.pristine) {\n codeControl.setValue(normalizeString(nameValue, '-'));\n }\n }\n }\n\n updateValueCode(currentCode: string, nameValue: string, valueId: string) {\n if (!currentCode) {\n const codeControl = this.detailForm.get(['values', valueId, 'code']);\n if (codeControl && codeControl.pristine) {\n codeControl.setValue(normalizeString(nameValue, '-'));\n }\n }\n }\n\n customValueFieldIsSet(index: number, name: string): boolean {\n return !!this.detailForm.get(['values', index, 'customFields', name]);\n }\n\n addFacetValue() {\n this.modalService\n .fromComponent(CreateFacetValueDialogComponent, {\n locals: {\n languageCode: this.languageCode,\n facetId: this.id,\n },\n })\n .pipe(\n switchMap(result => {\n if (!result) {\n return EMPTY;\n } else {\n return this.dataService.facet.createFacetValues([result]);\n }\n }),\n )\n .subscribe(result => {\n if (result.createFacetValues) {\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'FacetValue',\n });\n this.currentPage = 1;\n this.fetchFacetValues(this.currentPage, this.itemsPerPage);\n }\n });\n }\n\n create() {\n const facetForm = this.detailForm.get('facet') as (typeof this.detailForm)['controls']['facet'];\n if (!facetForm || !facetForm.dirty) {\n return;\n }\n const newFacet = this.getUpdatedFacet(\n {\n id: '',\n createdAt: '',\n updatedAt: '',\n isPrivate: false,\n languageCode: this.languageCode,\n name: '',\n code: '',\n translations: [],\n },\n facetForm,\n this.languageCode,\n ) as CreateFacetInput;\n this.dataService.facet.createFacet(newFacet).subscribe(\n data => {\n this.notificationService.success(_('common.notify-create-success'), { entity: 'Facet' });\n this.detailForm.markAsPristine();\n this.changeDetector.markForCheck();\n this.router.navigate(['../', data.createFacet.id], { relativeTo: this.route });\n },\n err => {\n this.notificationService.error(_('common.notify-create-error'), {\n entity: 'Facet',\n });\n },\n );\n }\n\n save() {\n const valuesFormRecord = this.detailForm.get(\n 'values',\n ) as (typeof this.detailForm)['controls']['values'];\n combineLatest(this.entity$, this.languageCode$)\n .pipe(\n take(1),\n mergeMap(([facet, languageCode]) => {\n const facetForm = this.detailForm.get(\n 'facet',\n ) as (typeof this.detailForm)['controls']['facet'];\n const updateOperations: Array<Observable<any>> = [];\n\n if (facetForm && facetForm.dirty) {\n const updatedFacetInput = this.getUpdatedFacet(\n facet,\n facetForm,\n languageCode,\n ) as UpdateFacetInput;\n if (updatedFacetInput) {\n updateOperations.push(this.dataService.facet.updateFacet(updatedFacetInput));\n }\n }\n if (valuesFormRecord && valuesFormRecord.dirty) {\n const updatedValues = this.getUpdatedFacetValues(valuesFormRecord, languageCode);\n if (updatedValues.length) {\n updateOperations.push(this.dataService.facet.updateFacetValues(updatedValues));\n }\n }\n return forkJoin(updateOperations);\n }),\n )\n .subscribe(\n () => {\n this.detailForm.markAsPristine();\n this.changeDetector.markForCheck();\n this.notificationService.success(_('common.notify-update-success'), { entity: 'Facet' });\n },\n err => {\n this.notificationService.error(_('common.notify-update-error'), {\n entity: 'Facet',\n });\n },\n );\n }\n\n deleteFacetValue(facetValueId: string) {\n this.showModalAndDelete(facetValueId)\n .pipe(\n switchMap(response => {\n if (response.result === DeletionResult.DELETED) {\n return [true];\n } else {\n return this.showModalAndDelete(facetValueId, response.message || '').pipe(\n map(r => r.result === DeletionResult.DELETED),\n );\n }\n }),\n switchMap(deleted =>\n deleted\n ? this.dataService.query(GetFacetDetailDocument, {\n id: this.id,\n }).single$\n : [],\n ),\n )\n .subscribe(\n () => {\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'FacetValue',\n });\n this.fetchFacetValues(this.currentPage, this.itemsPerPage, this.filterControl.value);\n },\n err => {\n this.notificationService.error(_('common.notify-delete-error'), {\n entity: 'FacetValue',\n });\n },\n );\n }\n\n private showModalAndDelete(facetValueId: string, message?: string) {\n return this.modalService\n .dialog({\n title: _('catalog.confirm-delete-facet-value'),\n body: message,\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(\n switchMap(result =>\n result ? this.dataService.facet.deleteFacetValues([facetValueId], !!message) : EMPTY,\n ),\n map(result => result.deleteFacetValues[0]),\n );\n }\n\n protected setCurrentPage(newPage: number) {\n this.currentPage = newPage;\n this.fetchFacetValues(this.currentPage, this.itemsPerPage, this.filterControl.value);\n }\n\n protected setItemsPerPage(itemsPerPage: number) {\n this.itemsPerPage = itemsPerPage;\n this.fetchFacetValues(this.currentPage, this.itemsPerPage, this.filterControl.value);\n }\n\n private fetchFacetValues(currentPage: number, itemsPerPage: number, filterTerm?: string | null) {\n this.dataService\n .query<GetFacetDetailQuery, GetFacetDetailQueryVariables>(FACET_DETAIL_QUERY, {\n id: this.id,\n facetValueListOptions: {\n take: itemsPerPage,\n skip: (currentPage - 1) * itemsPerPage,\n sort: {\n createdAt: SortOrder.DESC,\n },\n ...(filterTerm ? { filter: { name: { contains: filterTerm } } } : {}),\n },\n })\n .single$.subscribe(({ facet }) => {\n if (facet) {\n this.values$.next([...facet.valueList.items]);\n this.totalItems = facet.valueList.totalItems;\n this.setFacetValueFormValues(facet, this.languageCode);\n }\n });\n }\n\n /**\n * Sets the values of the form on changes to the facet or current language.\n */\n protected setFormValues(facet: FacetWithValueListFragment, languageCode: LanguageCode) {\n const currentTranslation = findTranslation(facet, languageCode);\n\n this.detailForm.patchValue({\n facet: {\n code: facet.code,\n visible: !facet.isPrivate,\n name: currentTranslation?.name ?? '',\n },\n });\n\n if (this.customFields.length) {\n this.setCustomFieldFormValues(\n this.customFields,\n this.detailForm.get(['facet', 'customFields']),\n facet,\n currentTranslation,\n );\n }\n this.values$.next([...facet.valueList.items]);\n this.totalItems = facet.valueList.totalItems;\n this.setFacetValueFormValues(facet, languageCode);\n }\n\n private setFacetValueFormValues(facet: FacetWithValueListFragment, languageCode: LanguageCode) {\n const currentValuesFormGroup = this.detailForm.get('values') as FormRecord;\n facet.valueList.items.forEach(value => {\n const valueTranslation = findTranslation(value, languageCode);\n const group = {\n id: value.id,\n code: value.code,\n name: valueTranslation ? valueTranslation.name : '',\n };\n let valueControl = currentValuesFormGroup.get(value.id) as FormGroup;\n if (!valueControl) {\n valueControl = this.formBuilder.group(group);\n currentValuesFormGroup.addControl(value.id, valueControl);\n } else {\n valueControl.patchValue(group);\n }\n if (this.customValueFields.length) {\n let customValueFieldsGroup = valueControl.get(['customFields']) as\n | UntypedFormGroup\n | undefined;\n if (!customValueFieldsGroup) {\n customValueFieldsGroup = new UntypedFormGroup({});\n valueControl.addControl('customFields', customValueFieldsGroup);\n }\n\n if (customValueFieldsGroup) {\n for (const fieldDef of this.customValueFields) {\n const key = fieldDef.name;\n const fieldValue =\n fieldDef.type === 'localeString'\n ? (valueTranslation as any | undefined)?.customFields?.[key]\n : (value as any).customFields[key];\n const control = customValueFieldsGroup.get(key);\n if (control) {\n control.setValue(fieldValue);\n } else {\n customValueFieldsGroup.addControl(key, new UntypedFormControl(fieldValue));\n }\n }\n }\n }\n });\n }\n\n /**\n * Given a facet and the value of the detailForm, this method creates an updated copy of the facet which\n * can then be persisted to the API.\n */\n private getUpdatedFacet(\n facet: Omit<FacetWithValueListFragment, 'valueList'>,\n facetFormGroup: (typeof this.detailForm)['controls']['facet'],\n languageCode: LanguageCode,\n ): CreateFacetInput | UpdateFacetInput {\n const input = createUpdatedTranslatable({\n translatable: facet,\n updatedFields: facetFormGroup.value,\n customFieldConfig: this.customFields,\n languageCode,\n defaultTranslation: {\n languageCode,\n name: facet.name || '',\n },\n });\n input.isPrivate = !facetFormGroup.value.visible;\n return input;\n }\n\n /**\n * Given an array of facet values and the values from the detailForm, this method creates a new array\n * which can be persisted to the API via an updateFacetValues mutation.\n */\n private getUpdatedFacetValues(\n valuesFormGroup: FormGroup,\n languageCode: LanguageCode,\n ): UpdateFacetValueInput[] {\n const dirtyValueValues = Object.values(valuesFormGroup.controls)\n .filter(c => c.dirty)\n .map(c => c.value);\n\n return dirtyValueValues\n .map((value, i) =>\n createUpdatedTranslatable({\n translatable: value,\n updatedFields: value,\n customFieldConfig: this.customValueFields,\n languageCode,\n defaultTranslation: {\n languageCode,\n name: '',\n },\n }),\n )\n .filter(notNullOrUndefined);\n }\n}\n", "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left>\n <vdr-language-selector\n [disabled]=\"isNew$ | async\"\n [availableLanguageCodes]=\"availableLanguages$ | async\"\n [currentLanguageCode]=\"languageCode$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"facet-detail\" />\n <button\n class=\"btn btn-primary\"\n *ngIf=\"isNew$ | async; else updateButton\"\n (click)=\"create()\"\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\n >\n {{ 'common.create' | translate }}\n </button>\n <ng-template #updateButton>\n <button\n *vdrIfPermissions=\"updatePermission\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"detailForm.invalid || detailForm.pristine\"\n >\n {{ 'common.update' | translate }}\n </button>\n </ng-template>\n <vdr-action-bar-dropdown-menu locationId=\"facet-detail\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<form class=\"form\" [formGroup]=\"detailForm\">\n <vdr-page-detail-layout>\n <vdr-page-detail-sidebar formGroupName=\"facet\">\n <vdr-card>\n <vdr-form-field [label]=\"'catalog.visibility' | translate\" for=\"visibility\">\n <clr-toggle-wrapper>\n <input\n type=\"checkbox\"\n clrToggle\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\n formControlName=\"visible\"\n id=\"visibility\"\n />\n <label class=\"visible-toggle\">\n <ng-container *ngIf=\"detailForm.value.facet?.visible; else private\">{{\n 'catalog.public' | translate\n }}</ng-container>\n <ng-template #private>{{ 'catalog.private' | translate }}</ng-template>\n </label>\n </clr-toggle-wrapper>\n </vdr-form-field>\n </vdr-card>\n <vdr-card>\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n <vdr-page-block>\n <vdr-card formGroupName=\"facet\">\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input\n id=\"name\"\n type=\"text\"\n formControlName=\"name\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n (input)=\"updateCode(entity?.code, $event.target.value)\"\n />\n </vdr-form-field>\n <vdr-form-field [label]=\"'common.code' | translate\" for=\"code\">\n <input\n id=\"code\"\n type=\"text\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n formControlName=\"code\"\n />\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'common.custom-fields' | translate\" *ngIf=\"customFields.length\">\n <vdr-tabbed-custom-fields\n entityName=\"Facet\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('facet.customFields')\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n />\n </vdr-card>\n\n <vdr-custom-detail-component-host\n locationId=\"facet-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n\n <vdr-card\n *ngIf=\"!(isNew$ | async)\"\n [title]=\"'catalog.facet-values' | translate\"\n [paddingX]=\"false\"\n >\n <ng-template vdrCardControls>\n <input\n type=\"text\"\n class=\"mr-3\"\n [formControl]=\"filterControl\"\n [placeholder]=\"'catalog.filter-by-name' | translate\"\n />\n </ng-template>\n <ng-container *ngIf=\"values$ | async as filteredValues\">\n <table class=\"facet-values-list table\" formArrayName=\"values\">\n <thead>\n <tr>\n <th></th>\n <th>{{ 'common.name' | translate }}</th>\n <th>{{ 'common.code' | translate }}</th>\n <ng-container *ngIf=\"customValueFields.length\">\n <th>{{ 'common.custom-fields' | translate }}</th>\n </ng-container>\n <th></th>\n </tr>\n </thead>\n <tbody>\n <tr\n class=\"facet-value\"\n *ngFor=\"\n let value of filteredValues\n | paginate\n : {\n currentPage: currentPage,\n itemsPerPage: itemsPerPage,\n totalItems: totalItems,\n };\n let i = index\n \"\n [formGroup]=\"detailForm.get(['values', value.id])\"\n >\n <td class=\"align-middle\">\n <vdr-entity-info [entity]=\"value\"></vdr-entity-info>\n </td>\n <td class=\"align-middle\">\n <input\n type=\"text\"\n formControlName=\"name\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n (input)=\"updateValueCode(value.code, $event.target.value, value.id)\"\n />\n </td>\n <td class=\"align-middle\">\n <input type=\"text\" formControlName=\"code\" />\n </td>\n <td class=\"\" *ngIf=\"customValueFields.length\">\n <vdr-tabbed-custom-fields\n entityName=\"FacetValue\"\n [customFields]=\"customValueFields\"\n [compact]=\"true\"\n [customFieldsFormGroup]=\"\n detailForm.get(['values', value.id, 'customFields'])\n \"\n [readonly]=\"!(updatePermission | hasPermission)\"\n ></vdr-tabbed-custom-fields>\n </td>\n <td class=\"align-middle\">\n <vdr-dropdown>\n <button type=\"button\" class=\"icon-button\" vdrDropdownTrigger>\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\n </button>\n <vdr-dropdown-menu vdrPosition=\"bottom-right\">\n <button\n type=\"button\"\n class=\"delete-button\"\n (click)=\"deleteFacetValue(value.id)\"\n [disabled]=\"!(updatePermission | hasPermission)\"\n vdrDropdownItem\n >\n <clr-icon shape=\"trash\" class=\"is-danger\"></clr-icon>\n {{ 'common.delete' | translate }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </td>\n </tr>\n </tbody>\n </table>\n <div class=\"pagination-wrapper\">\n <vdr-items-per-page-controls\n [itemsPerPage]=\"itemsPerPage\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n ></vdr-items-per-page-controls>\n <vdr-pagination-controls\n [currentPage]=\"currentPage\"\n [itemsPerPage]=\"itemsPerPage\"\n [totalItems]=\"totalItems\"\n (pageChange)=\"setCurrentPage($event)\"\n ></vdr-pagination-controls>\n </div>\n </ng-container>\n <div>\n <button\n type=\"button\"\n class=\"button m-3\"\n *vdrIfPermissions=\"['CreateCatalog', 'CreateFacet']\"\n (click)=\"addFacetValue()\"\n >\n <clr-icon shape=\"add\"></clr-icon>\n {{ 'catalog.add-facet-value' | translate }}\n </button>\n </div>\n </vdr-card>\n </vdr-page-block>\n </vdr-page-detail-layout>\n</form>\n", "import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BulkAction,\n createBulkAssignToChannelAction,\n createBulkDeleteAction,\n createBulkRemoveFromChannelAction,\n currentChannelIsNotDefault,\n DataService,\n DuplicateEntityDialogComponent,\n getChannelCodeFromUserStatus,\n GetFacetListQuery,\n ItemOf,\n ModalService,\n NotificationService,\n Permission,\n RemoveFacetsFromChannelMutation,\n} from '@vendure/admin-ui/core';\nimport { unique } from '@vendure/common/lib/unique';\nimport { EMPTY, of } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\nimport { FacetListComponent } from './facet-list.component';\n\nexport const deleteFacetsBulkAction = createBulkDeleteAction<ItemOf<GetFacetListQuery, 'facets'>>({\n location: 'facet-list',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.DeleteFacet) ||\n userPermissions.includes(Permission.DeleteCatalog),\n getItemName: item => item.name,\n shouldRetryItem: (response, item) => !!response.message,\n bulkDelete: (dataService, ids, retrying) =>\n dataService.facet.deleteFacets(ids, retrying).pipe(map(res => res.deleteFacets)),\n});\n\nexport const assignFacetsToChannelBulkAction = createBulkAssignToChannelAction<\n ItemOf<GetFacetListQuery, 'facets'>\n>({\n location: 'facet-list',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.UpdateCatalog) ||\n userPermissions.includes(Permission.UpdateFacet),\n getItemName: item => item.name,\n bulkAssignToChannel: (dataService, facetIds, channelIds) =>\n channelIds.map(channelId =>\n dataService.facet\n .assignFacetsToChannel({\n facetIds,\n channelId,\n })\n .pipe(map(res => res.assignFacetsToChannel)),\n ),\n});\n\nexport const removeFacetsFromChannelBulkAction = createBulkRemoveFromChannelAction<\n ItemOf<GetFacetListQuery, 'facets'>,\n RemoveFacetsFromChannelMutation['removeFacetsFromChannel'][number]\n>({\n location: 'facet-list',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.DeleteCatalog) ||\n userPermissions.includes(Permission.DeleteFacet),\n getItemName: item => item.name,\n bulkRemoveFromChannel: (dataService, facetIds, channelId, retrying) =>\n dataService.facet\n .removeFacetsFromChannel({\n channelId: channelId,\n facetIds,\n force: retrying,\n })\n .pipe(map(res => res.removeFacetsFromChannel)),\n isErrorResult: result => (result.__typename === 'FacetInUseError' ? result.message : undefined),\n});\n\nexport const removeFacetsFromChannelBulkAction2: BulkAction<\n ItemOf<GetFacetListQuery, 'facets'>,\n FacetListComponent\n> = {\n location: 'facet-list',\n label: _('catalog.remove-from-channel'),\n getTranslationVars: ({ injector }) => getChannelCodeFromUserStatus(injector.get(DataService)),\n icon: 'layers',\n iconClass: 'is-warning',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.UpdateFacet) ||\n userPermissions.includes(Permission.UpdateCatalog),\n isVisible: ({ injector }) => currentChannelIsNotDefault(injector.get(DataService)),\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\n const modalService = injector.get(ModalService);\n const dataService = injector.get(DataService);\n const notificationService = injector.get(NotificationService);\n\n const activeChannelId$ = dataService.client\n .userStatus()\n .mapSingle(({ userStatus }) => userStatus.activeChannelId);\n\n function showModalAndDelete(facetIds: string[], message?: string) {\n return modalService\n .dialog({\n title: _('catalog.remove-from-channel'),\n translationVars: {\n count: selection.length,\n },\n size: message ? 'lg' : 'md',\n body: message,\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n {\n type: 'danger',\n label: message ? _('common.force-remove') : _('common.remove'),\n returnValue: true,\n },\n ],\n })\n .pipe(\n switchMap(res =>\n res\n ? activeChannelId$.pipe(\n switchMap(activeChannelId =>\n activeChannelId\n ? dataService.facet.removeFacetsFromChannel({\n channelId: activeChannelId,\n facetIds,\n force: !!message,\n })\n : EMPTY,\n ),\n map(res2 => res2.removeFacetsFromChannel),\n )\n : EMPTY,\n ),\n );\n }\n\n showModalAndDelete(unique(selection.map(f => f.id)))\n .pipe(\n switchMap(result => {\n let removedCount = selection.length;\n const errors: string[] = [];\n const errorIds: string[] = [];\n let i = 0;\n for (const item of result) {\n if (item.__typename === 'FacetInUseError') {\n errors.push(item.message);\n errorIds.push(selection[i]?.id);\n removedCount--;\n }\n i++;\n }\n if (0 < errorIds.length) {\n return showModalAndDelete(errorIds, errors.join('\\n')).pipe(\n map(result2 => {\n const notRemovedCount = result2.filter(\n r => r.__typename === 'FacetInUseError',\n ).length;\n return selection.length - notRemovedCount;\n }),\n );\n } else {\n return of(removedCount);\n }\n }),\n switchMap(removedCount =>\n removedCount\n ? getChannelCodeFromUserStatus(dataService).then(({ channelCode }) => ({\n channelCode,\n removedCount,\n }))\n : EMPTY,\n ),\n )\n .subscribe(({ removedCount, channelCode }) => {\n if (removedCount) {\n hostComponent.refresh();\n clearSelection();\n notificationService.success(_('catalog.notify-remove-facets-from-channel-success'), {\n count: removedCount,\n channelCode,\n });\n }\n });\n },\n};\n\nexport const duplicateFacetsBulkAction: BulkAction<\n ItemOf<GetFacetListQuery, 'facets'>,\n FacetListComponent\n> = {\n location: 'facet-list',\n label: _('common.duplicate'),\n icon: 'copy',\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\n const modalService = injector.get(ModalService);\n modalService\n .fromComponent(DuplicateEntityDialogComponent<ItemOf<GetFacetListQuery, 'facets'>>, {\n locals: {\n entities: selection,\n entityName: 'Facet',\n title: _('catalog.duplicate-facets'),\n getEntityName: entity => entity.name,\n },\n })\n .subscribe(result => {\n if (result) {\n clearSelection();\n hostComponent.refresh();\n }\n });\n },\n};\n", "import { Component, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n DataService,\n FACET_WITH_VALUE_LIST_FRAGMENT,\n GetFacetListDocument,\n GetFacetListQuery,\n ItemOf,\n LanguageCode,\n TypedBaseListComponent,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\n\nexport const FACET_LIST_QUERY = gql`\n query GetFacetList($options: FacetListOptions, $facetValueListOptions: FacetValueListOptions) {\n facets(options: $options) {\n items {\n ...FacetWithValueList\n }\n totalItems\n }\n }\n ${FACET_WITH_VALUE_LIST_FRAGMENT}\n`;\n\n@Component({\n selector: 'vdr-facet-list',\n templateUrl: './facet-list.component.html',\n styleUrls: ['./facet-list.component.scss'],\n standalone: false\n})\nexport class FacetListComponent\n extends TypedBaseListComponent<typeof GetFacetListDocument, 'facets'>\n implements OnInit\n{\n readonly initialLimit = 3;\n displayLimit: { [id: string]: number } = {};\n\n dataTableListId = 'facet-list';\n readonly customFields = this.getCustomFieldConfig('Facet');\n readonly filters = this.createFilterCollection()\n .addIdFilter()\n .addDateFilters()\n .addFilter({\n name: 'visibility',\n type: { kind: 'boolean' },\n label: _('common.visibility'),\n toFilterInput: value => ({\n isPrivate: { eq: !value },\n }),\n })\n .addCustomFieldFilters(this.customFields)\n .connectToRoute(this.route);\n\n readonly sorts = this.createSortCollection()\n .defaultSort('createdAt', 'DESC')\n .addSort({ name: 'id' })\n .addSort({ name: 'createdAt' })\n .addSort({ name: 'updatedAt' })\n .addSort({ name: 'name' })\n .addSort({ name: 'code' })\n .addCustomFieldSorts(this.customFields)\n .connectToRoute(this.route);\n\n constructor(protected dataService: DataService) {\n super();\n super.configure({\n document: GetFacetListDocument,\n getItems: data => data.facets,\n setVariables: (skip, take) => ({\n options: {\n skip,\n take,\n filter: {\n name: {\n contains: this.searchTermControl.value,\n },\n ...this.filters.createFilterInput(),\n },\n sort: this.sorts.createSortInput(),\n },\n facetValueListOptions: {\n take: 100,\n },\n }),\n refreshListOnChanges: [this.filters.valueChanges, this.sorts.valueChanges],\n });\n }\n\n toggleDisplayLimit(facet: ItemOf<GetFacetListQuery, 'facets'>) {\n if (this.displayLimit[facet.id] === facet.valueList.items.length) {\n this.displayLimit[facet.id] = this.initialLimit;\n } else {\n this.displayLimit[facet.id] = facet.valueList.items.length;\n }\n }\n\n setLanguage(code: LanguageCode) {\n this.dataService.client.setContentLanguage(code).subscribe();\n }\n}\n", "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left>\n <vdr-language-selector\n [availableLanguageCodes]=\"availableLanguages$ | async\"\n [currentLanguageCode]=\"contentLanguage$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"facet-list\" />\n <a\n class=\"btn btn-primary\"\n [routerLink]=\"['./create']\"\n *vdrIfPermissions=\"['CreateCatalog', 'CreateFacet']\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.create-new-facet' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu locationId=\"facet-list\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-data-table-2\n class=\"mt-2\"\n [id]=\"dataTableListId\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\n>\n <vdr-bulk-action-menu\n locationId=\"facet-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'catalog.filter-by-name' | translate\"\n ></vdr-dt2-search>\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\" [sort]=\"sorts.get('id')\">\n <ng-template let-facet=\"item\">\n {{ facet.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('createdAt')\"\n >\n <ng-template let-facet=\"item\">\n {{ facet.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('updatedAt')\"\n >\n <ng-template let-facet=\"item\">\n {{ facet.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\n <ng-template let-facet=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', facet.id]\"\n ><span>{{ facet.name }}</span>\n <clr-icon shape=\"arrow right\"></clr-icon>\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.code' | translate\" id=\"code\">\n <ng-template let-facet=\"item\">\n {{ facet.code }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.visibility' | translate\" id=\"visibility\">\n <ng-template let-facet=\"item\">\n <vdr-chip *ngIf=\"facet.isPrivate\" colorType=\"warning\">{{\n 'common.private' | translate\n }}</vdr-chip>\n <vdr-chip *ngIf=\"!facet.isPrivate\" colorType=\"success\">{{\n 'common.public' | translate\n }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.values' | translate\" id=\"values\">\n <ng-template let-facet=\"item\">\n <div class=\"facet-values-list\">\n <vdr-facet-value-chip\n *ngFor=\"let value of facet.valueList.items | slice : 0 : displayLimit[facet.id] || 3\"\n [facetValue]=\"value\"\n [removable]=\"false\"\n [displayFacetName]=\"false\"\n ></vdr-facet-value-chip>\n <vdr-chip *ngIf=\"displayLimit[facet.id] < facet.valueList.totalItems && (displayLimit[facet.id] || 0) === facet.valueList.items.length\">\n ... + {{ facet.valueList.totalItems - facet.valueList.items.length }}\n </vdr-chip>\n <button\n class=\"button-small\"\n *ngIf=\"facet.valueList.items.length > initialLimit\"\n (click)=\"toggleDisplayLimit(facet)\"\n >\n <ng-container *ngIf=\"(displayLimit[facet.id] || 0) < facet.valueList.items.length; else collapse\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ facet.valueList.totalItems - initialLimit }}\n </ng-container>\n <ng-template #collapse>\n <clr-icon shape=\"minus\"></clr-icon>\n </ng-template>\n </button>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column *ngFor=\"let customField of customFields\" [customField]=\"customField\" [sorts]=\"sorts\" />\n</vdr-data-table-2>\n", "import { Component, ElementRef, EventEmitter, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\nimport { AbstractControl, FormBuilder, FormControl, FormGroup } from '@angular/forms';\nimport {\n CurrencyCode,\n DataService,\n GetStockLocationListDocument,\n GetStockLocationListQuery,\n ItemOf,\n} from '@vendure/admin-ui/core';\nimport { generateAllCombinations } from '@vendure/common/lib/shared-utils';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { OptionValueInputComponent } from '../option-value-input/option-value-input.component';\n\nconst DEFAULT_VARIANT_CODE = '__DEFAULT_VARIANT__';\nexport type CreateVariantValues = {\n optionValues: string[];\n enabled: boolean;\n sku: string;\n price: number;\n stock: number;\n};\nexport type CreateProductVariantsConfig = {\n groups: Array<{ name: string; values: string[] }>;\n variants: CreateVariantValues[];\n stockLocationId: string;\n};\n\n@Component({\n selector: 'vdr-generate-product-variants',\n templateUrl: './generate-product-variants.component.html',\n styleUrls: ['./generate-product-variants.component.scss'],\n standalone: false\n})\nexport class GenerateProductVariantsComponent implements OnInit {\n @Output() variantsChange = new EventEmitter<CreateProductVariantsConfig>();\n @ViewChildren('optionGroupName', { read: ElementRef }) groupNameInputs: QueryList<ElementRef>;\n optionGroups: Array<{ name: string; values: Array<{ name: string; locked: boolean }> }> = [];\n currencyCode: CurrencyCode;\n variants: Array<{ id: string; values: string[] }>;\n variantFormValues: {\n [id: string]: FormGroup<{\n optionValues: FormControl<string[]>;\n enabled: FormControl<boolean>;\n price: FormControl<number>;\n sku: FormControl<string>;\n stock: FormControl<number>;\n }>;\n } = {};\n stockLocations$: Observable<Array<ItemOf<GetStockLocationListQuery, 'stockLocations'>>>;\n selectedStockLocationId: string | null = null;\n constructor(\n private dataService: DataService,\n private formBuilder: FormBuilder,\n ) {}\n\n ngOnInit() {\n this.dataService.settings.getActiveChannel().single$.subscribe(data => {\n this.currencyCode = data.activeChannel.defaultCurrencyCode;\n });\n this.stockLocations$ = this.dataService\n .query(GetStockLocationListDocument, {\n options: {\n take: 999,\n },\n })\n .refetchOnChannelChange()\n .mapStream(({ stockLocations }) => stockLocations.items)\n .pipe(\n tap(items => {\n if (items.length) {\n this.selectedStockLocationId = items[0].id;\n this.onFormChange();\n }\n }),\n );\n\n this.generateVariants();\n }\n\n addOption() {\n this.optionGroups.push({ name: '', values: [] });\n const index = this.optionGroups.length - 1;\n setTimeout(() => {\n const input = this.groupNameInputs.get(index)?.nativeElement;\n input?.focus();\n });\n }\n\n removeOption(name: string) {\n this.optionGroups = this.optionGroups.filter(g => g.name !== name);\n this.generateVariants();\n }\n\n generateVariants() {\n const totalValuesCount = this.optionGroups.reduce((sum, group) => sum + group.values.length, 0);\n const groups = totalValuesCount\n ? this.optionGroups.map(g => g.values.map(v => v.name))\n : [[DEFAULT_VARIANT_CODE]];\n this.variants = generateAllCombinations(groups).map(values => ({ id: values.join('|'), values }));\n\n this.variants.forEach((variant, index) => {\n if (!this.variantFormValues[variant.id]) {\n const formGroup = this.formBuilder.nonNullable.group({\n optionValues: [variant.values],\n enabled: true as boolean,\n price: this.copyFromDefault(variant.id, 'price', 0),\n sku: this.copyFromDefault(variant.id, 'sku', ''),\n stock: this.copyFromDefault(variant.id, 'stock', 0),\n });\n formGroup.valueChanges.subscribe(() => this.onFormChange());\n if (index === 0) {\n formGroup.get('price')?.valueChanges.subscribe(value => {\n this.copyValuesToPristine('price', formGroup.get('price'));\n });\n formGroup.get('sku')?.valueChanges.subscribe(value => {\n this.copyValuesToPristine('sku', formGroup.get('sku'));\n });\n formGroup.get('stock')?.valueChanges.subscribe(value => {\n this.copyValuesToPristine('stock', formGroup.get('stock'));\n });\n }\n this.variantFormValues[variant.id] = formGroup;\n }\n });\n this.onFormChange();\n }\n\n trackByFn(index: number, variant: { name: string; values: string[] }) {\n return variant.values.join('|');\n }\n\n handleEnter(event: KeyboardEvent, optionValueInputComponent: OptionValueInputComponent) {\n event.preventDefault();\n event.stopPropagation();\n optionValueInputComponent.focus();\n }\n\n copyValuesToPristine(field: 'price' | 'sku' | 'stock', formControl: AbstractControl | null) {\n if (!formControl) {\n return;\n }\n Object.values(this.variantFormValues).forEach(formGroup => {\n const correspondingFormControl = formGroup.get(field) as FormControl;\n if (correspondingFormControl && correspondingFormControl.pristine) {\n correspondingFormControl.setValue(formControl.value, { emitEvent: false });\n }\n });\n }\n\n onFormChange() {\n const variantsToCreate = this.variants\n .map(v => this.variantFormValues[v.id].value as CreateVariantValues)\n .filter(v => v.enabled);\n this.variantsChange.emit({\n groups: this.optionGroups.map(og => ({ name: og.name, values: og.values.map(v => v.name) })),\n variants: variantsToCreate,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n stockLocationId: this.selectedStockLocationId!,\n });\n }\n\n private copyFromDefault<T extends keyof CreateVariantValues>(\n variantId: string,\n prop: T,\n value: CreateVariantValues[T],\n ): CreateVariantValues[T] {\n return variantId !== DEFAULT_VARIANT_CODE\n ? (this.variantFormValues[DEFAULT_VARIANT_CODE].get(prop)?.value as CreateVariantValues[T])\n : value;\n }\n}\n", "<div *ngFor=\"let group of optionGroups\" class=\"option-groups\">\n <div class=\"name\">\n <label>{{ 'catalog.option' | translate }}</label>\n <input\n #optionGroupName\n placeholder=\"e.g. Size\"\n clrInput\n [(ngModel)]=\"group.name\"\n name=\"name\"\n required\n (keydown.enter)=\"handleEnter($event, optionValueInputComponent)\"\n />\n </div>\n <div class=\"values\">\n <label>{{ 'catalog.option-values' | translate }}</label>\n <vdr-option-value-input\n #optionValueInputComponent\n [(ngModel)]=\"group.values\"\n (ngModelChange)=\"generateVariants()\"\n (edit)=\"generateVariants()\"\n [groupName]=\"group.name\"\n [disabled]=\"group.name === ''\"\n ></vdr-option-value-input>\n </div>\n <div class=\"remove-group\">\n <button\n class=\"button-small mt-2\"\n [title]=\"'catalog.remove-option' | translate\"\n (click)=\"removeOption(group.name)\"\n >\n <clr-icon shape=\"trash\"></clr-icon>\n </button>\n </div>\n</div>\n<button class=\"button mb-2\" (click)=\"addOption()\">\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.add-option' | translate }}\n</button>\n\n<ng-container *ngIf=\"stockLocations$ | async as stockLocations\">\n <clr-alert *ngIf=\"stockLocations.length === 0\" clrAlertType=\"warning\" [clrAlertClosable]=\"false\" class=\"\">\n <clr-alert-item>\n <span class=\"alert-text\">\n {{ 'catalog.no-stock-locations-available-on-current-channel' | translate }}\n </span>\n </clr-alert-item>\n </clr-alert>\n\n <div class=\"form-grid mb-2\">\n <vdr-form-field *ngIf=\"stockLocations.length\" [label]=\"'catalog.add-stock-to-location' | translate\">\n <select [(ngModel)]=\"selectedStockLocationId\">\n <option *ngFor=\"let location of stockLocations\" [value]=\"location.id\">\n {{ location.name }}\n </option>\n </select>\n </vdr-form-field>\n </div>\n\n <div class=\"variants-preview\" *ngIf=\"0 < stockLocations.length\">\n <table class=\"table\">\n <thead>\n <tr>\n <th *ngIf=\"1 < variants.length\">{{ 'common.create' | translate }}</th>\n <th *ngIf=\"1 < variants.length\">{{ 'catalog.variant' | translate }}</th>\n <th>{{ 'catalog.sku' | translate }}</th>\n <th>{{ 'catalog.price' | translate }}</th>\n <th>{{ 'catalog.stock-on-hand' | translate }}</th>\n </tr>\n </thead>\n <tr\n *ngFor=\"let variant of variants; trackBy: trackByFn\"\n [class.disabled]=\"!variantFormValues[variant.id].value.enabled === false\"\n [formGroup]=\"variantFormValues[variant.id]\"\n >\n <td *ngIf=\"1 < variants.length\">\n <input type=\"checkbox\" formControlName=\"enabled\" clrCheckbox />\n </td>\n <td *ngIf=\"1 < variants.length\">\n {{ variant.values.join(' ') }}\n </td>\n <td>\n <vdr-form-field>\n <input type=\"text\" formControlName=\"sku\" [placeholder]=\"'catalog.sku' | translate\" />\n </vdr-form-field>\n </td>\n <td>\n <vdr-form-field>\n <vdr-currency-input\n formControlName=\"price\"\n [currencyCode]=\"currencyCode\"\n ></vdr-currency-input>\n </vdr-form-field>\n </td>\n <td>\n <vdr-form-field>\n <input type=\"number\" formControlName=\"stock\" min=\"0\" step=\"1\" />\n </vdr-form-field>\n </td>\n </tr>\n </table>\n </div>\n</ng-container>\n", "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, UntypedFormGroup, Validators } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n Asset,\n CreateProductInput,\n createUpdatedTranslatable,\n DataService,\n findTranslation,\n getChannelCodeFromUserStatus,\n getCustomFieldsDefaults,\n GetProductDetailDocument,\n GetProductDetailQuery,\n GetProductWithVariantsQuery,\n LanguageCode,\n ModalService,\n NotificationService,\n Permission,\n PRODUCT_DETAIL_FRAGMENT,\n ProductDetailFragment,\n ProductVariantFragment,\n TypedBaseDetailComponent,\n unicodePatternValidator,\n UpdateProductInput,\n UpdateProductMutation,\n UpdateProductVariantInput,\n UpdateProductVariantsMutation,\n} from '@vendure/admin-ui/core';\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\nimport { DEFAULT_CHANNEL_CODE } from '@vendure/common/lib/shared-constants';\nimport { unique } from '@vendure/common/lib/unique';\nimport { gql } from 'apollo-angular';\nimport { combineLatest, concat, EMPTY, from, Observable, of } from 'rxjs';\nimport { distinctUntilChanged, map, mergeMap, shareReplay, switchMap, take } from 'rxjs/operators';\n\nimport { ProductDetailService } from '../../providers/product-detail/product-detail.service';\nimport { ApplyFacetDialogComponent } from '../apply-facet-dialog/apply-facet-dialog.component';\nimport { AssignProductsToChannelDialogComponent } from '../assign-products-to-channel-dialog/assign-products-to-channel-dialog.component';\nimport { CreateProductVariantsConfig } from '../generate-product-variants/generate-product-variants.component';\n\ninterface SelectedAssets {\n assets?: Asset[];\n featuredAsset?: Asset;\n}\n\nexport const GET_PRODUCT_DETAIL = gql`\n query GetProductDetail($id: ID!) {\n product(id: $id) {\n ...ProductDetail\n }\n }\n ${PRODUCT_DETAIL_FRAGMENT}\n`;\n\n@Component({\n selector: 'vdr-product-detail2',\n templateUrl: './product-detail.component.html',\n styleUrls: ['./product-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class ProductDetailComponent\n extends TypedBaseDetailComponent<typeof GetProductDetailDocument, 'product'>\n implements OnInit, OnDestroy\n{\n readonly customFields = this.getCustomFieldConfig('Product');\n detailForm = this.formBuilder.group({\n enabled: true,\n name: ['', Validators.required],\n autoUpdateVariantNames: true,\n slug: ['', unicodePatternValidator(/^[\\p{Letter}0-9._-]+$/u)],\n description: '',\n facetValueIds: [[] as string[]],\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n });\n assetChanges: SelectedAssets = {};\n productChannels$: Observable<ProductDetailFragment['channels']>;\n facetValues$: Observable<ProductDetailFragment['facetValues']>;\n createVariantsConfig: CreateProductVariantsConfig = { groups: [], variants: [], stockLocationId: '' };\n public readonly updatePermissions = [Permission.UpdateCatalog, Permission.UpdateProduct];\n\n constructor(\n private productDetailService: ProductDetailService,\n private formBuilder: FormBuilder,\n private modalService: ModalService,\n private notificationService: NotificationService,\n protected dataService: DataService,\n private changeDetector: ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit() {\n this.init();\n\n const productFacetValues$ = this.isNew$.pipe(\n switchMap(isNew => {\n return isNew ? of([]) : this.entity$.pipe(map(product => product.facetValues));\n }),\n );\n const productGroup = this.detailForm;\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const formFacetValueIdChanges$ = productGroup.get('facetValueIds')!.valueChanges.pipe(\n distinctUntilChanged(),\n switchMap(ids =>\n this.dataService.facet\n .getFacetValues({ filter: { id: { in: ids } } })\n .mapSingle(({ facetValues }) => facetValues.items),\n ),\n shareReplay(1),\n );\n this.facetValues$ = concat(\n productFacetValues$.pipe(take(1)),\n productFacetValues$.pipe(switchMap(() => formFacetValueIdChanges$)),\n );\n this.productChannels$ = this.entity$.pipe(map(p => p.channels));\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n isDefaultChannel(channelCode: string): boolean {\n return channelCode === DEFAULT_CHANNEL_CODE;\n }\n\n assignToChannel() {\n this.productChannels$\n .pipe(\n take(1),\n switchMap(channels =>\n this.modalService.fromComponent(AssignProductsToChannelDialogComponent, {\n size: 'lg',\n locals: {\n productIds: [this.id],\n currentChannelIds: channels.map(c => c.id),\n },\n }),\n ),\n )\n .subscribe();\n }\n\n removeFromChannel(channelId: string) {\n from(getChannelCodeFromUserStatus(this.dataService, channelId))\n .pipe(\n switchMap(({ channelCode }) =>\n this.modalService.dialog({\n title: _('catalog.remove-product-from-channel'),\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n {\n type: 'danger',\n label: _('catalog.remove-from-channel'),\n translationVars: { channelCode },\n returnValue: true,\n },\n ],\n }),\n ),\n switchMap(response =>\n response\n ? this.dataService.product.removeProductsFromChannel({\n channelId,\n productIds: [this.id],\n })\n : EMPTY,\n ),\n )\n .subscribe(\n () => {\n this.notificationService.success(_('catalog.notify-remove-product-from-channel-success'));\n },\n err => {\n this.notificationService.error(_('catalog.notify-remove-product-from-channel-error'));\n },\n );\n }\n\n assignVariantToChannel(variant: ProductVariantFragment) {\n return this.modalService\n .fromComponent(AssignProductsToChannelDialogComponent, {\n size: 'lg',\n locals: {\n productIds: [this.id],\n productVariantIds: [variant.id],\n currentChannelIds: variant.channels.map(c => c.id),\n },\n })\n .subscribe();\n }\n\n removeVariantFromChannel({ channelId, variant }: { channelId: string; variant: ProductVariantFragment }) {\n from(getChannelCodeFromUserStatus(this.dataService, channelId))\n .pipe(\n switchMap(({ channelCode }) =>\n this.modalService.dialog({\n title: _('catalog.remove-product-variant-from-channel'),\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n {\n type: 'danger',\n label: _('catalog.remove-from-channel'),\n translationVars: { channelCode },\n returnValue: true,\n },\n ],\n }),\n ),\n switchMap(response =>\n response\n ? this.dataService.product.removeVariantsFromChannel({\n channelId,\n productVariantIds: [variant.id],\n })\n : EMPTY,\n ),\n )\n .subscribe(\n () => {\n this.notificationService.success(_('catalog.notify-remove-variant-from-channel-success'));\n },\n err => {\n this.notificationService.error(_('catalog.notify-remove-variant-from-channel-error'));\n },\n );\n }\n\n assetsChanged(): boolean {\n return !!Object.values(this.assetChanges).length;\n }\n\n /**\n * If creating a new product, automatically generate the slug based on the product name.\n */\n updateSlug(nameValue: string) {\n const slugControl = this.detailForm.get('slug');\n const currentTranslation = this.entity ? findTranslation(this.entity, this.languageCode) : undefined;\n const currentSlugIsEmpty = !currentTranslation || !currentTranslation.slug;\n if (slugControl && slugControl.pristine && currentSlugIsEmpty) {\n slugControl.setValue(normalizeString(`${nameValue}`, '-'));\n }\n }\n\n selectProductFacetValue() {\n this.displayFacetValueModal().subscribe(facetValueIds => {\n if (facetValueIds) {\n const facetValueIdsControl = this.detailForm.controls.facetValueIds;\n const currentFacetValueIds = facetValueIdsControl.value ?? [];\n facetValueIdsControl.setValue(unique([...currentFacetValueIds, ...facetValueIds]));\n facetValueIdsControl.markAsDirty();\n }\n });\n }\n\n removeProductFacetValue(facetValueId: string) {\n const facetValueIdsControl = this.detailForm.controls.facetValueIds;\n const currentFacetValueIds = facetValueIdsControl.value ?? [];\n facetValueIdsControl.setValue(currentFacetValueIds.filter(id => id !== facetValueId));\n facetValueIdsControl.markAsDirty();\n }\n\n private displayFacetValueModal(): Observable<string[] | undefined> {\n return this.modalService\n .fromComponent(ApplyFacetDialogComponent, {\n size: 'md',\n closable: true,\n })\n .pipe(map(facetValues => facetValues && facetValues.map(v => v.id)));\n }\n\n create() {\n const productGroup = this.detailForm;\n if (!productGroup.dirty) {\n return;\n }\n\n const newProduct = this.getUpdatedProduct(\n {\n id: '',\n createdAt: '',\n updatedAt: '',\n enabled: true,\n languageCode: this.languageCode,\n name: '',\n slug: '',\n featuredAsset: null,\n assets: [],\n description: '',\n translations: [],\n optionGroups: [],\n facetValues: [],\n channels: [],\n },\n productGroup as UntypedFormGroup,\n this.languageCode,\n ) as CreateProductInput;\n this.productDetailService\n .createProductWithVariants(newProduct, this.createVariantsConfig, this.languageCode)\n .subscribe(\n ({ createProductVariants, productId }) => {\n this.notificationService.success(_('common.notify-create-success'), {\n entity: 'Product',\n });\n this.assetChanges = {};\n this.detailForm.markAsPristine();\n this.router.navigate(['../', productId], { relativeTo: this.route });\n },\n err => {\n // eslint-disable-next-line no-console\n console.error(err);\n this.notificationService.error(_('common.notify-create-error'), {\n entity: 'Product',\n });\n },\n );\n }\n\n save() {\n combineLatest(this.entity$, this.languageCode$)\n .pipe(\n take(1),\n mergeMap(([product, languageCode]) => {\n const productGroup = this.detailForm;\n let productInput: UpdateProductInput | undefined;\n let variantsInput: UpdateProductVariantInput[] | undefined;\n\n if (productGroup.dirty || this.assetsChanged()) {\n productInput = this.getUpdatedProduct(\n product,\n productGroup as UntypedFormGroup,\n languageCode,\n ) as UpdateProductInput;\n }\n\n return this.productDetailService.updateProduct({\n product,\n languageCode,\n autoUpdate: this.detailForm.get(['autoUpdateVariantNames'])?.value ?? false,\n productInput,\n variantsInput,\n });\n }),\n )\n .subscribe(\n result => {\n this.updateSlugAfterSave(result);\n this.detailForm.markAsPristine();\n this.assetChanges = {};\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'Product',\n });\n this.changeDetector.markForCheck();\n },\n err => {\n this.notificationService.error(_('common.notify-update-error'), {\n entity: 'Product',\n });\n },\n );\n }\n\n canDeactivate(): boolean {\n return super.canDeactivate() && !this.assetChanges.assets && !this.assetChanges.featuredAsset;\n }\n\n /**\n * Sets the values of the form on changes to the product or current language.\n */\n protected setFormValues(\n product: NonNullable<GetProductWithVariantsQuery['product']>,\n languageCode: LanguageCode,\n ) {\n const currentTranslation = findTranslation(product, languageCode);\n this.detailForm.patchValue({\n enabled: product.enabled,\n name: currentTranslation ? currentTranslation.name : '',\n slug: currentTranslation ? currentTranslation.slug : '',\n description: currentTranslation ? currentTranslation.description : '',\n facetValueIds: product.facetValues.map(fv => fv.id),\n });\n\n if (this.customFields.length) {\n this.setCustomFieldFormValues(\n this.customFields,\n this.detailForm.get(['customFields']),\n product,\n currentTranslation,\n );\n }\n }\n\n /**\n * Given a product and the value of the detailForm, this method creates an updated copy of the product which\n * can then be persisted to the API.\n */\n private getUpdatedProduct(\n product: NonNullable<GetProductDetailQuery['product']>,\n productFormGroup: UntypedFormGroup,\n languageCode: LanguageCode,\n ): UpdateProductInput | CreateProductInput {\n const updatedProduct = createUpdatedTranslatable({\n translatable: product,\n updatedFields: productFormGroup.value,\n customFieldConfig: this.customFields,\n languageCode,\n defaultTranslation: {\n languageCode,\n name: product.name || '',\n slug: product.slug || '',\n description: product.description || '',\n },\n });\n return {\n ...updatedProduct,\n assetIds: this.assetChanges.assets?.map(a => a.id),\n featuredAssetId: this.assetChanges.featuredAsset?.id,\n facetValueIds: productFormGroup.controls.facetValueIds.dirty\n ? productFormGroup.value.facetValueIds\n : undefined,\n } as UpdateProductInput | CreateProductInput;\n }\n\n /**\n * The server may alter the slug value in order to normalize and ensure uniqueness upon saving.\n */\n private updateSlugAfterSave(results: Array<UpdateProductMutation | UpdateProductVariantsMutation>) {\n const firstResult = results[0];\n const slugControl = this.detailForm.get(['product', 'slug']);\n\n function isUpdateMutation(input: any): input is UpdateProductMutation {\n return input.hasOwnProperty('updateProduct');\n }\n\n if (slugControl && isUpdateMutation(firstResult)) {\n slugControl.setValue(firstResult.updateProduct.slug, { emitEvent: false });\n }\n }\n}\n", "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left>\n <div class=\"flex clr-flex-row\"></div>\n <vdr-language-selector\n [disabled]=\"isNew$ | async\"\n [availableLanguageCodes]=\"availableLanguages$ | async\"\n [currentLanguageCode]=\"languageCode$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"product-detail\"></vdr-action-bar-items>\n <button\n class=\"btn btn-primary\"\n *ngIf=\"isNew$ | async; else updateButton\"\n (click)=\"create()\"\n [disabled]=\"detailForm.invalid || detailForm.pristine || createVariantsConfig.variants.length === 0\"\n >\n {{ 'common.create' | translate }}\n </button>\n <ng-template #updateButton>\n <button\n *vdrIfPermissions=\"updatePermissions\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"(detailForm.invalid || detailForm.pristine) && !assetsChanged()\"\n >\n {{ 'common.update' | translate }}\n </button>\n </ng-template>\n <vdr-action-bar-dropdown-menu locationId=\"product-detail\"></vdr-action-bar-dropdown-menu>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n\n<form class=\"form\" [formGroup]=\"detailForm\">\n <vdr-page-detail-layout>\n <vdr-page-detail-sidebar>\n <vdr-card>\n <vdr-form-field [label]=\"'catalog.visibility' | translate\" for=\"visibility\">\n <clr-toggle-wrapper *vdrIfPermissions=\"updatePermissions\">\n <input\n type=\"checkbox\"\n clrToggle\n name=\"enabled\"\n [formControl]=\"detailForm.get(['enabled'])\"\n />\n <label>{{ 'common.enabled' | translate }}</label>\n </clr-toggle-wrapper>\n </vdr-form-field>\n </vdr-card>\n <ng-container *ngIf=\"!(isNew$ | async)\">\n <vdr-card *vdrIfMultichannel [title]=\"'common.channels' | translate\">\n <vdr-form-item *vdrIfDefaultChannelActive>\n <div class=\"flex channel-assignment\">\n <div class=\"mb-2\">\n <ng-container *ngFor=\"let channel of productChannels$ | async\">\n <vdr-chip\n *ngIf=\"!isDefaultChannel(channel.code)\"\n icon=\"times-circle\"\n (iconClick)=\"removeFromChannel(channel.id)\"\n >\n <vdr-channel-badge [channelCode]=\"channel.code\"></vdr-channel-badge>\n {{ channel.code | channelCodeToLabel }}\n </vdr-chip>\n </ng-container>\n </div>\n <button class=\"button-small\" (click)=\"assignToChannel()\">\n <clr-icon shape=\"layers\"></clr-icon>\n {{ 'common.assign-to-channel' | translate }}\n </button>\n </div>\n </vdr-form-item>\n </vdr-card>\n </ng-container>\n <vdr-card *ngIf=\"entity?.optionGroups.length\" [title]=\"'catalog.product-options' | translate\">\n <div class=\"options\">\n <vdr-chip\n *ngFor=\"let optionGroup of entity?.optionGroups | sort : 'id'\"\n [colorFrom]=\"optionGroup.code\"\n [invert]=\"true\"\n >\n {{ optionGroup.name }}\n </vdr-chip>\n </div>\n <div>\n <a [routerLink]=\"['options']\" class=\"button-small mt-2\" *vdrIfPermissions=\"updatePermissions\">\n <clr-icon shape=\"pencil\"></clr-icon>\n {{ 'catalog.edit-options' | translate }}\n </a>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'catalog.facets' | translate\">\n <div class=\"facets\">\n <vdr-facet-value-chip\n *ngFor=\"let facetValue of facetValues$ | async\"\n [facetValue]=\"facetValue\"\n [removable]=\"updatePermissions | hasPermission\"\n (remove)=\"removeProductFacetValue(facetValue.id)\"\n ></vdr-facet-value-chip>\n </div>\n <div>\n <button\n class=\"button-small mt-2\"\n *vdrIfPermissions=\"updatePermissions\"\n (click)=\"selectProductFacetValue()\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.add-facets' | translate }}\n </button>\n </div>\n </vdr-card>\n <vdr-card *ngIf=\"entity$ | async as entity\">\n <vdr-page-entity-info [entity]=\"entity\"></vdr-page-entity-info>\n </vdr-card>\n </vdr-page-detail-sidebar>\n\n <vdr-page-block>\n <button type=\"submit\" hidden x-data=\"prevents enter key from triggering other buttons\"></button>\n <vdr-card>\n <div class=\"form-grid\">\n <div>\n <vdr-form-field [label]=\"'catalog.product-name' | translate\" for=\"name\">\n <input\n id=\"name\"\n type=\"text\"\n formControlName=\"name\"\n [readonly]=\"!(updatePermissions | hasPermission)\"\n (input)=\"updateSlug($event.target.value)\"\n />\n </vdr-form-field>\n <div *ngIf=\"(isNew$ | async) === false && detailForm.get(['name'])?.dirty\">\n <clr-checkbox-wrapper>\n <input\n clrCheckbox\n type=\"checkbox\"\n id=\"auto-update\"\n formControlName=\"autoUpdateVariantNames\"\n />\n <label>{{ 'catalog.auto-update-product-variant-name' | translate }}</label>\n </clr-checkbox-wrapper>\n </div>\n </div>\n <vdr-form-field\n [label]=\"'catalog.slug' | translate\"\n for=\"slug\"\n [errors]=\"{ pattern: 'catalog.slug-pattern-error' | translate }\"\n >\n <input\n id=\"slug\"\n type=\"text\"\n formControlName=\"slug\"\n [readonly]=\"!(updatePermissions | hasPermission)\"\n />\n </vdr-form-field>\n <vdr-form-field\n class=\"form-grid-span\"\n [label]=\"'common.description' | translate\"\n for=\"slug\"\n [errors]=\"{ pattern: 'catalog.slug-pattern-error' | translate }\"\n >\n <vdr-rich-text-editor\n formControlName=\"description\"\n [readonly]=\"!(updatePermissions | hasPermission)\"\n ></vdr-rich-text-editor>\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'common.custom-fields' | translate\" *ngIf=\"customFields.length\">\n <vdr-tabbed-custom-fields\n entityName=\"Product\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\n [readonly]=\"!(updatePermissions | hasPermission)\"\n ></vdr-tabbed-custom-fields>\n </vdr-card>\n <vdr-custom-detail-component-host\n locationId=\"product-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n ></vdr-custom-detail-component-host>\n <vdr-card [title]=\"'catalog.assets' | translate\">\n <vdr-assets\n [assets]=\"assetChanges.assets || entity?.assets\"\n [featuredAsset]=\"assetChanges.featuredAsset || entity?.featuredAsset\"\n [updatePermissions]=\"updatePermissions\"\n (change)=\"assetChanges = $event\"\n ></vdr-assets>\n </vdr-card>\n\n <vdr-card [title]=\"'catalog.product-variants' | translate\" [paddingX]=\"isNew$ | async\">\n <div *ngIf=\"isNew$ | async; else variantList\">\n <vdr-generate-product-variants\n (variantsChange)=\"createVariantsConfig = $event\"\n ></vdr-generate-product-variants>\n </div>\n <ng-template #variantList>\n <vdr-product-variant-list\n [productId]=\"this.id\"\n dataTableId=\"product-detail-variants-list\"\n [hideLanguageSelect]=\"true\"\n ></vdr-product-variant-list>\n </ng-template>\n <div class=\"mx-3\" *ngIf=\"(isNew$ | async) === false\">\n <a class=\"button\" [routerLink]=\"['manage-variants']\">\n <clr-icon shape=\"add-text\"></clr-icon>\n {{ 'catalog.manage-variants' | translate }}</a\n >\n </div>\n </vdr-card>\n </vdr-page-block>\n </vdr-page-detail-layout>\n</form>\n", "import { Component, Input, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n DataTableLocationId,\n ProductVariantFilterParameter,\n ProductVariantListQueryDocument,\n TypedBaseListComponent,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-product-variant-list',\n templateUrl: './product-variant-list.component.html',\n styleUrls: ['./product-variant-list.component.scss'],\n standalone: false,\n})\nexport class ProductVariantListComponent\n extends TypedBaseListComponent<typeof ProductVariantListQueryDocument, 'productVariants'>\n implements OnInit\n{\n @Input() productId?: string;\n @Input() hideLanguageSelect = false;\n pageLocationId = 'product-variant-list' as const;\n @Input() dataTableId: DataTableLocationId | undefined;\n readonly customFields = this.getCustomFieldConfig('ProductVariant');\n readonly filters = this.createFilterCollection()\n .addIdFilter()\n .addDateFilters()\n .addFilters([\n {\n name: 'name',\n type: { kind: 'text' },\n label: _('common.name'),\n filterField: 'name',\n },\n {\n name: 'enabled',\n type: { kind: 'boolean' },\n label: _('common.enabled'),\n filterField: 'enabled',\n },\n {\n name: 'sku',\n type: { kind: 'text' },\n label: _('catalog.sku'),\n filterField: 'sku',\n },\n {\n name: 'price',\n type: { kind: 'number', inputType: 'currency' },\n label: _('common.price'),\n filterField: 'price',\n },\n {\n name: 'priceWithTax',\n type: { kind: 'number', inputType: 'currency' },\n label: _('common.price-with-tax'),\n filterField: 'priceWithTax',\n },\n ])\n .addCustomFieldFilters(this.customFields)\n .connectToRoute(this.route);\n\n readonly sorts = this.createSortCollection()\n .addSorts([\n { name: 'id' },\n { name: 'createdAt' },\n { name: 'updatedAt' },\n { name: 'name' },\n { name: 'sku' },\n { name: 'price' },\n { name: 'priceWithTax' },\n ])\n .addCustomFieldSorts(this.customFields)\n .connectToRoute(this.route);\n\n constructor() {\n super();\n this.configure({\n document: ProductVariantListQueryDocument,\n getItems: data => data.productVariants,\n setVariables: (skip, take) => {\n const searchTerm = this.searchTermControl.value;\n const filterParam: ProductVariantFilterParameter = { _and: [] };\n const filterInput = this.filters.createFilterInput();\n if (Object.keys(filterInput).length) {\n filterParam._and?.push(filterInput);\n }\n if (searchTerm) {\n filterParam._and?.push({\n _or: [\n {\n name: { contains: searchTerm },\n },\n {\n sku: { contains: searchTerm },\n },\n ],\n });\n }\n if (this.productId) {\n filterParam._and?.push({\n productId: {\n eq: this.productId,\n },\n });\n }\n return {\n options: {\n skip,\n take,\n filter: filterParam,\n sort: this.sorts.createSortInput(),\n },\n };\n },\n refreshListOnChanges: [this.sorts.valueChanges, this.filters.valueChanges],\n });\n }\n}\n", "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left>\n <vdr-language-selector *ngIf=\"!hideLanguageSelect\"\n [availableLanguageCodes]=\"availableLanguages$ | async\"\n [currentLanguageCode]=\"contentLanguage$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items [locationId]=\"pageLocationId\" />\n <vdr-action-bar-dropdown-menu [locationId]=\"pageLocationId\" />\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-data-table-2\n class=\"mt-2\"\n [id]=\"dataTableId || 'product-variant-list'\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n>\n <vdr-bulk-action-menu\n locationId=\"product-variant-list\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n />\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'settings.search-by-product-name-or-sku' | translate\"\n />\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\" [sort]=\"sorts.get('id')\">\n <ng-template let-variant=\"item\">\n {{ variant.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('createdAt')\"\n >\n <ng-template let-variant=\"item\">\n {{ variant.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('updatedAt')\"\n >\n <ng-template let-variant=\"item\">\n {{ variant.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\n <ng-template let-variant=\"item\">\n <div class=\"image-placeholder\">\n <img\n *ngIf=\"variant.featuredAsset as asset; else imagePlaceholder\"\n [src]=\"asset | assetPreview : 'tiny'\"\n />\n <ng-template #imagePlaceholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\n <ng-template let-variant=\"item\">\n <a\n class=\"button-ghost\"\n [routerLink]=\"['/catalog/products', variant.productId, 'variants', variant.id]\"\n ><span>{{ variant.name }}</span\n >\n <clr-icon shape=\"arrow right\"\n />\n </a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.sku' | translate\" id=\"sku\" [sort]=\"sorts.get('sku')\">\n <ng-template let-variant=\"item\">\n {{ variant.sku }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.enabled' | translate\" id=\"enabled\">\n <ng-template let-variant=\"item\">\n <vdr-chip *ngIf=\"variant.enabled\" colorType=\"success\">{{\n 'common.enabled' | translate\n }}\n </vdr-chip>\n <vdr-chip *ngIf=\"!variant.enabled\" colorType=\"warning\">{{\n 'common.disabled' | translate\n }}\n </vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.price' | translate\" id=\"price\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('price')\"\n >\n <ng-template let-variant=\"item\">\n {{ variant.price | localeCurrency : variant.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.price-with-tax' | translate\" id=\"price-with-tax\"\n [sort]=\"sorts.get('priceWithTax')\">\n <ng-template let-variant=\"item\">\n {{ variant.priceWithTax | localeCurrency : variant.currencyCode }}\n </ng-template>\n </vdr-dt2-column>\n\n <vdr-dt2-column [heading]=\"'catalog.stock-on-hand' | translate\" id=\"stock-on-hand\" [hiddenByDefault]=\"false\">\n <ng-template let-variant=\"item\">\n <vdr-chip *ngFor=\"let stockLevel of variant.stockLevels\" [title]=\"stockLevel.stockLocation?.name\">\n <div class=\"flex center\">\n <div>\n {{\n stockLevel.stockOnHand\n }}<span class=\"ml-1\" *ngIf=\"stockLevel.stockAllocated\"\n >({{ stockLevel.stockAllocated }} allocated)</span\n >\n </div>\n </div>\n </vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column *ngFor=\"let field of customFields\" [customField]=\"field\" [sorts]=\"sorts\" />\n</vdr-data-table-2>\n", "import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BulkAction,\n createBulkRemoveFromChannelAction,\n DataService,\n DeletionResult,\n DuplicateEntityDialogComponent,\n GetProductListQuery,\n isMultiChannel,\n ItemOf,\n ModalService,\n NotificationService,\n Permission,\n} from '@vendure/admin-ui/core';\nimport { unique } from '@vendure/common/lib/unique';\nimport { EMPTY } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\n\nimport { AssignProductsToChannelDialogComponent } from '../assign-products-to-channel-dialog/assign-products-to-channel-dialog.component';\nimport { BulkAddFacetValuesDialogComponent } from '../bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component';\n\nimport { ProductListComponent } from './product-list.component';\n\nexport const deleteProductsBulkAction: BulkAction<\n ItemOf<GetProductListQuery, 'products'>,\n ProductListComponent\n> = {\n location: 'product-list',\n label: _('common.delete'),\n icon: 'trash',\n iconClass: 'is-danger',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.DeleteProduct) ||\n userPermissions.includes(Permission.DeleteCatalog),\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\n const modalService = injector.get(ModalService);\n const dataService = injector.get(DataService);\n const notificationService = injector.get(NotificationService);\n modalService\n .dialog({\n title: _('catalog.confirm-bulk-delete-products'),\n translationVars: {\n count: selection.length,\n },\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(\n switchMap(response =>\n response ? dataService.product.deleteProducts(unique(selection.map(p => p.id))) : EMPTY,\n ),\n )\n .subscribe(result => {\n let deleted = 0;\n const errors: string[] = [];\n for (const item of result.deleteProducts) {\n if (item.result === DeletionResult.DELETED) {\n deleted++;\n } else if (item.message) {\n errors.push(item.message);\n }\n }\n if (0 < deleted) {\n notificationService.success(_('catalog.notify-bulk-delete-products-success'), {\n count: deleted,\n });\n }\n if (0 < errors.length) {\n notificationService.error(errors.join('\\n'));\n }\n hostComponent.refresh();\n clearSelection();\n });\n },\n};\n\nexport const assignProductsToChannelBulkAction: BulkAction<\n ItemOf<GetProductListQuery, 'products'>,\n ProductListComponent\n> = {\n location: 'product-list',\n label: _('common.assign-to-channel'),\n icon: 'layers',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.UpdateCatalog) ||\n userPermissions.includes(Permission.UpdateProduct),\n isVisible: ({ injector }) => isMultiChannel(injector.get(DataService)),\n onClick: ({ injector, selection, clearSelection }) => {\n const modalService = injector.get(ModalService);\n modalService\n .fromComponent(AssignProductsToChannelDialogComponent, {\n size: 'lg',\n locals: {\n productIds: unique(selection.map(p => p.id)),\n currentChannelIds: [],\n },\n })\n .subscribe(result => {\n if (result) {\n clearSelection();\n }\n });\n },\n};\n\nexport const removeProductsFromChannelBulkAction = createBulkRemoveFromChannelAction<\n ItemOf<GetProductListQuery, 'products'>\n>({\n location: 'product-list',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.UpdateCatalog) ||\n userPermissions.includes(Permission.UpdateProduct),\n getItemName: item => item.name,\n bulkRemoveFromChannel: (dataService, productIds, channelId) =>\n dataService.product\n .removeProductsFromChannel({\n channelId: channelId,\n productIds,\n })\n .pipe(map(res => res.removeProductsFromChannel)),\n});\n\nexport const assignFacetValuesToProductsBulkAction: BulkAction<\n ItemOf<GetProductListQuery, 'products'>,\n ProductListComponent\n> = {\n location: 'product-list',\n label: _('catalog.edit-facet-values'),\n icon: 'tag',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.UpdateCatalog) ||\n userPermissions.includes(Permission.UpdateProduct),\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\n const modalService = injector.get(ModalService);\n const notificationService = injector.get(NotificationService);\n const mode = 'product';\n const ids = unique(selection.map(p => p.id));\n return modalService\n .fromComponent(BulkAddFacetValuesDialogComponent, {\n size: 'xl',\n locals: {\n mode,\n ids,\n },\n })\n .subscribe(result => {\n if (result) {\n notificationService.success(_('common.notify-bulk-update-success'), {\n count: selection.length,\n entity: mode === 'product' ? 'Products' : 'ProductVariants',\n });\n clearSelection();\n }\n });\n },\n};\n\nexport const duplicateProductsBulkAction: BulkAction<\n ItemOf<GetProductListQuery, 'products'>,\n ProductListComponent\n> = {\n location: 'product-list',\n label: _('common.duplicate'),\n icon: 'copy',\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\n const modalService = injector.get(ModalService);\n modalService\n .fromComponent(DuplicateEntityDialogComponent<ItemOf<GetProductListQuery, 'products'>>, {\n locals: {\n entities: selection,\n entityName: 'Product',\n title: _('catalog.duplicate-products'),\n getEntityName: entity => entity.name,\n },\n })\n .subscribe(result => {\n if (result) {\n clearSelection();\n hostComponent.refresh();\n }\n });\n },\n};\n", "import { Component, OnInit } from '@angular/core';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n DataService,\n FacetValueFormInputComponent,\n JobQueueService,\n JobState,\n LogicalOperator,\n ModalService,\n NotificationService,\n ProductListQueryDocument,\n TypedBaseListComponent,\n} from '@vendure/admin-ui/core';\nimport { EMPTY, lastValueFrom } from 'rxjs';\nimport { delay, switchMap } from 'rxjs/operators';\n\n@Component({\n selector: 'vdr-products-list',\n templateUrl: './product-list.component.html',\n styleUrls: ['./product-list.component.scss'],\n standalone: false,\n})\nexport class ProductListComponent\n extends TypedBaseListComponent<typeof ProductListQueryDocument, 'products'>\n implements OnInit\n{\n pendingSearchIndexUpdates = 0;\n dataTableListId = 'product-list';\n pageLocationId = 'product-list' as const;\n readonly customFields = this.getCustomFieldConfig('Product');\n readonly filters = this.createFilterCollection()\n .addIdFilter()\n .addDateFilters()\n .addFilters([\n {\n name: 'enabled',\n type: { kind: 'boolean' },\n label: _('common.enabled'),\n filterField: 'enabled',\n },\n {\n name: 'slug',\n type: { kind: 'text' },\n label: _('common.slug'),\n filterField: 'slug',\n },\n ])\n .addFilter({\n name: 'facetValues',\n type: {\n kind: 'custom',\n component: FacetValueFormInputComponent,\n serializeValue: value => value.map(v => v.id).join(','),\n deserializeValue: value => value.split(',').map(id => ({ id })),\n getLabel: value => {\n if (value.length === 0) {\n return '';\n }\n if (value[0].name) {\n return value.map(v => v.name).join(', ');\n } else {\n return lastValueFrom(\n this.dataService.facet\n .getFacetValues({ filter: { id: { in: value.map(v => v.id) } } })\n .mapSingle(({ facetValues }) =>\n facetValues.items.map(fv => fv.name).join(', '),\n ),\n );\n }\n },\n },\n label: _('catalog.facet-values'),\n toFilterInput: (value: any[]) => ({\n facetValueId: {\n in: value.map(v => v.id),\n },\n }),\n })\n .addCustomFieldFilters(this.customFields)\n .connectToRoute(this.route);\n\n readonly sorts = this.createSortCollection()\n .defaultSort('createdAt', 'DESC')\n .addSorts([\n { name: 'id' },\n { name: 'createdAt' },\n { name: 'updatedAt' },\n { name: 'name' },\n { name: 'slug' },\n ])\n .addCustomFieldSorts(this.customFields)\n .connectToRoute(this.route);\n\n constructor(\n protected dataService: DataService,\n private modalService: ModalService,\n private notificationService: NotificationService,\n private jobQueueService: JobQueueService,\n ) {\n super();\n this.configure({\n document: ProductListQueryDocument,\n getItems: data => data.products,\n setVariables: (skip, take) => {\n const searchTerm = this.searchTermControl.value;\n let filterInput = this.filters.createFilterInput();\n if (searchTerm) {\n filterInput = {\n name: {\n contains: searchTerm,\n },\n sku: {\n contains: searchTerm,\n },\n };\n }\n return {\n options: {\n skip,\n take,\n filter: {\n ...(filterInput ?? {}),\n },\n filterOperator: searchTerm ? LogicalOperator.OR : LogicalOperator.AND,\n sort: this.sorts.createSortInput(),\n },\n };\n },\n refreshListOnChanges: [this.sorts.valueChanges, this.filters.valueChanges],\n });\n }\n\n rebuildSearchIndex() {\n this.dataService.product.reindex().subscribe(({ reindex }) => {\n this.notificationService.info(_('catalog.reindexing'));\n this.jobQueueService.addJob(reindex.id, job => {\n if (job.state === JobState.COMPLETED) {\n const time = new Intl.NumberFormat().format(job.duration || 0);\n this.notificationService.success(_('catalog.reindex-successful'), {\n count: job.result.indexedItemCount,\n time,\n });\n this.refresh();\n } else {\n this.notificationService.error(_('catalog.reindex-error'));\n }\n });\n });\n }\n\n deleteProduct(productId: string) {\n this.modalService\n .dialog({\n title: _('catalog.confirm-delete-product'),\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(\n switchMap(response => (response ? this.dataService.product.deleteProduct(productId) : EMPTY)),\n // Short delay to allow the product to be removed from the search index before\n // refreshing.\n delay(500),\n )\n .subscribe(\n () => {\n this.notificationService.success(_('common.notify-delete-success'), {\n entity: 'Product',\n });\n this.refresh();\n },\n err => {\n this.notificationService.error(_('common.notify-delete-error'), {\n entity: 'Product',\n });\n },\n );\n }\n}\n", "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left>\n <vdr-language-selector\n [availableLanguageCodes]=\"availableLanguages$ | async\"\n [currentLanguageCode]=\"contentLanguage$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </vdr-ab-left>\n <vdr-ab-right>\n <vdr-action-bar-items [locationId]=\"pageLocationId\"></vdr-action-bar-items>\n <a\n class=\"btn btn-primary mr-1\"\n [routerLink]=\"['./create']\"\n *vdrIfPermissions=\"['CreateCatalog', 'CreateProduct']\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.create-new-product' | translate }}\n </a>\n <vdr-action-bar-dropdown-menu [alwaysShow]=\"true\" [locationId]=\"pageLocationId\">\n <button type=\"button\" vdrDropdownItem (click)=\"rebuildSearchIndex()\">\n <clr-icon shape=\"refresh\" class=\"\"></clr-icon>\n {{ 'catalog.rebuild-search-index' | translate }}\n </button>\n </vdr-action-bar-dropdown-menu>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<vdr-data-table-2\n class=\"mt-2\"\n [id]=\"dataTableListId\"\n [items]=\"items$ | async\"\n [itemsPerPage]=\"itemsPerPage$ | async\"\n [totalItems]=\"totalItems$ | async\"\n [currentPage]=\"currentPage$ | async\"\n [filters]=\"filters\"\n (pageChange)=\"setPageNumber($event)\"\n (itemsPerPageChange)=\"setItemsPerPage($event)\"\n (visibleColumnsChange)=\"setVisibleColumns($event)\"\n>\n <vdr-bulk-action-menu\n [locationId]=\"dataTableListId\"\n [hostComponent]=\"this\"\n [selectionManager]=\"selectionManager\"\n ></vdr-bulk-action-menu>\n <vdr-dt2-search\n [searchTermControl]=\"searchTermControl\"\n [searchTermPlaceholder]=\"'settings.search-by-product-name-or-sku' | translate\"\n />\n <vdr-dt2-column [heading]=\"'common.id' | translate\" id=\"id\" [hiddenByDefault]=\"true\" [sort]=\"sorts.get('id')\">\n <ng-template let-product=\"item\">\n {{ product.id }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.created-at' | translate\" id=\"created-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('createdAt')\"\n >\n <ng-template let-product=\"item\">\n {{ product.createdAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column\n [heading]=\"'common.updated-at' | translate\" id=\"updated-at\"\n [hiddenByDefault]=\"true\"\n [sort]=\"sorts.get('updatedAt')\"\n >\n <ng-template let-product=\"item\">\n {{ product.updatedAt | localeDate : 'short' }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.image' | translate\" id=\"image\">\n <ng-template let-product=\"item\">\n <div class=\"image-placeholder\">\n <img\n *ngIf=\"product.featuredAsset as asset; else imagePlaceholder\"\n [src]=\"asset | assetPreview : 'tiny'\"\n />\n <ng-template #imagePlaceholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.name' | translate\" id=\"name\" [optional]=\"false\" [sort]=\"sorts.get('name')\">\n <ng-template let-product=\"item\">\n <a class=\"button-ghost\" [routerLink]=\"['./', product.id]\"\n ><span>{{ product.name }}</span\n ><clr-icon shape=\"arrow right\"\n /></a>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.slug' | translate\" id=\"slug\" [sort]=\"sorts.get('slug')\">\n <ng-template let-product=\"item\">\n {{ product.slug }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'common.enabled' | translate\" id=\"enabled\">\n <ng-template let-product=\"item\">\n <vdr-chip *ngIf=\"product.enabled\" colorType=\"success\">{{\n 'common.enabled' | translate\n }}</vdr-chip>\n <vdr-chip *ngIf=\"!product.enabled\" colorType=\"warning\">{{\n 'common.disabled' | translate\n }}</vdr-chip>\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-column [heading]=\"'catalog.number-of-variants' | translate\" id=\"number-of-variants\">\n <ng-template let-product=\"item\">\n {{ 'catalog.variant-count' | translate : { count: product.variantList?.totalItems } }}\n </ng-template>\n </vdr-dt2-column>\n <vdr-dt2-custom-field-column\n *ngFor=\"let customField of customFields\"\n [customField]=\"customField\"\n [sorts]=\"sorts\"\n />\n</vdr-data-table-2>\n", "import { ChangeDetectionStrategy, ChangeDetectorRef, Component, OnDestroy, OnInit } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, UntypedFormGroup } from '@angular/forms';\nimport { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n Asset,\n CreateProductVariantInput,\n createUpdatedTranslatable,\n CurrencyCode,\n DataService,\n findTranslation,\n getCustomFieldsDefaults,\n GetProductVariantDetailDocument,\n GetProductVariantDetailQuery,\n GlobalFlag,\n ItemOf,\n LanguageCode,\n ModalService,\n NotificationService,\n Permission,\n ProductOptionFragment,\n ProductVariantUpdateMutationDocument,\n TypedBaseDetailComponent,\n UpdateProductVariantInput,\n} from '@vendure/admin-ui/core';\nimport { pick } from '@vendure/common/lib/pick';\nimport { unique } from '@vendure/common/lib/unique';\nimport { combineLatest, concat, Observable } from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n mergeMap,\n shareReplay,\n skip,\n switchMap,\n switchMapTo,\n take,\n tap,\n} from 'rxjs/operators';\nimport { ProductDetailService } from '../../providers/product-detail/product-detail.service';\nimport { ApplyFacetDialogComponent } from '../apply-facet-dialog/apply-facet-dialog.component';\n\ninterface SelectedAssets {\n assets?: Asset[];\n featuredAsset?: Asset;\n}\n\ninterface VariantFormValue {\n id: string;\n enabled: boolean;\n sku: string;\n name: string;\n taxCategoryId: string;\n stockOnHand: number;\n useGlobalOutOfStockThreshold: boolean;\n outOfStockThreshold: number;\n trackInventory: GlobalFlag;\n facetValueIds: string[][];\n customFields?: any;\n}\ntype T = NonNullable<GetProductVariantDetailQuery['productVariant']>;\ntype T1 = T['stockLevels'];\n@Component({\n selector: 'vdr-product-variant-detail',\n templateUrl: './product-variant-detail.component.html',\n styleUrls: ['./product-variant-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class ProductVariantDetailComponent\n extends TypedBaseDetailComponent<typeof GetProductVariantDetailDocument, 'productVariant'>\n implements OnInit, OnDestroy\n{\n public readonly updatePermissions = [Permission.UpdateCatalog, Permission.UpdateProduct];\n readonly customFields = this.getCustomFieldConfig('ProductVariant');\n readonly customPriceFields = this.getCustomFieldConfig('ProductVariantPrice');\n readonly customOptionFields = this.getCustomFieldConfig('ProductOption');\n stockLevels$: Observable<NonNullable<GetProductVariantDetailQuery['productVariant']>['stockLevels']>;\n detailForm = this.formBuilder.group<VariantFormValue>({\n id: '',\n enabled: false,\n sku: '',\n name: '',\n taxCategoryId: '',\n stockOnHand: 0,\n useGlobalOutOfStockThreshold: true,\n outOfStockThreshold: 0,\n trackInventory: GlobalFlag.TRUE,\n facetValueIds: [],\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customFields)),\n });\n stockLevelsForm = this.formBuilder.array<\n FormGroup<{\n stockLocationId: FormControl<string | null>;\n stockLocationName: FormControl<string | null>;\n stockOnHand: FormControl<number | null>;\n stockAllocated: FormControl<number | null>;\n }>\n >([]);\n pricesForm = this.formBuilder.array<\n FormGroup<{\n price: FormControl<number | null>;\n currencyCode: FormControl<CurrencyCode | null>;\n delete: FormControl<boolean | null>;\n customFields: FormGroup<any>; //TODO: Add type\n }>\n >([]);\n assetChanges: SelectedAssets = {};\n taxCategories$: Observable<Array<ItemOf<GetProductVariantDetailQuery, 'taxCategories'>>>;\n unusedStockLocation$: Observable<Array<ItemOf<GetProductVariantDetailQuery, 'stockLocations'>>>;\n unusedCurrencyCodes$: Observable<string[]>;\n channelPriceIncludesTax$: Observable<boolean>;\n readonly GlobalFlag = GlobalFlag;\n globalTrackInventory: boolean;\n globalOutOfStockThreshold: number;\n facetValues$: Observable<NonNullable<GetProductVariantDetailQuery['productVariant']>['facetValues']>;\n channelDefaultCurrencyCode: CurrencyCode;\n\n constructor(\n private productDetailService: ProductDetailService,\n private formBuilder: FormBuilder,\n private modalService: ModalService,\n private notificationService: NotificationService,\n protected dataService: DataService,\n private changeDetector: ChangeDetectorRef,\n ) {\n super();\n }\n\n ngOnInit() {\n this.init();\n this.dataService.settings.getGlobalSettings('cache-first').single$.subscribe(({ globalSettings }) => {\n this.globalTrackInventory = globalSettings.trackInventory;\n this.globalOutOfStockThreshold = globalSettings.outOfStockThreshold;\n this.changeDetector.markForCheck();\n });\n this.taxCategories$ = this.result$.pipe(map(data => data.taxCategories.items));\n const availableCurrencyCodes$ = this.result$.pipe(\n tap(data => (this.channelDefaultCurrencyCode = data.activeChannel.defaultCurrencyCode)),\n map(data => data.activeChannel.availableCurrencyCodes),\n );\n this.unusedCurrencyCodes$ = combineLatest(this.pricesForm.valueChanges, availableCurrencyCodes$).pipe(\n map(([prices, currencyCodes]) =>\n currencyCodes.filter(code => !prices.map(p => p.currencyCode).includes(code)),\n ),\n );\n const stockLocations$ = this.result$.pipe(map(data => data.stockLocations.items));\n this.unusedStockLocation$ = combineLatest(this.entity$, stockLocations$).pipe(\n map(([entity, stockLocations]) => {\n const usedIds = entity.stockLevels.map(l => l.stockLocation.id);\n return stockLocations.filter(l => !usedIds.includes(l.id));\n }),\n );\n this.channelPriceIncludesTax$ = this.dataService.settings\n .getActiveChannel('cache-first')\n .refetchOnChannelChange()\n .mapStream(data => data.activeChannel.pricesIncludeTax)\n .pipe(shareReplay(1));\n this.stockLevels$ = this.entity$.pipe(map(entity => entity?.stockLevels ?? []));\n const facetValues$ = this.entity$.pipe(map(variant => variant.facetValues ?? []));\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const formFacetValueIdChanges$ = this.detailForm.get('facetValueIds')!.valueChanges.pipe(\n skip(1),\n distinctUntilChanged(),\n switchMap(ids =>\n this.dataService.facet\n .getFacetValues({ filter: { id: { in: ids } } })\n .mapSingle(({ facetValues }) => facetValues.items),\n ),\n shareReplay(1),\n );\n this.facetValues$ = concat(\n facetValues$.pipe(take(1)),\n facetValues$.pipe(switchMapTo(formFacetValueIdChanges$)),\n );\n }\n\n ngOnDestroy() {\n this.destroy();\n }\n\n addPriceInCurrency(currencyCode: CurrencyCode) {\n this.pricesForm.push(\n this.formBuilder.group({\n currencyCode,\n price: 0,\n delete: false as boolean,\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customPriceFields)),\n }),\n );\n }\n\n toggleDeletePrice(deleteFormControl: FormControl) {\n deleteFormControl.setValue(!deleteFormControl.value);\n deleteFormControl.markAsDirty();\n }\n\n addStockLocation(stockLocation: ItemOf<GetProductVariantDetailQuery, 'stockLocations'>) {\n this.stockLevelsForm.push(\n this.formBuilder.group({\n stockLocationId: stockLocation.id,\n stockLocationName: stockLocation.name,\n stockOnHand: 0,\n stockAllocated: 0,\n }),\n );\n }\n\n save() {\n combineLatest(this.entity$, this.languageCode$)\n .pipe(\n take(1),\n mergeMap(([variant, languageCode]) => {\n const input = pick(\n this.getUpdatedVariant(\n variant,\n this.detailForm,\n languageCode,\n ) as UpdateProductVariantInput,\n [\n 'id',\n 'enabled',\n 'translations',\n 'sku',\n 'taxCategoryId',\n 'facetValueIds',\n 'featuredAssetId',\n 'assetIds',\n 'trackInventory',\n 'outOfStockThreshold',\n 'useGlobalOutOfStockThreshold',\n 'customFields',\n ],\n ) as UpdateProductVariantInput;\n if (this.stockLevelsForm.dirty) {\n input.stockLevels = this.stockLevelsForm.controls\n .filter(control => control.dirty)\n .map(control => ({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n stockLocationId: control.value.stockLocationId!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n stockOnHand: control.value.stockOnHand!,\n }));\n }\n if (this.pricesForm.dirty) {\n input.prices = this.pricesForm.controls\n .filter(control => control.dirty)\n .map(control => ({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n price: control.value.price!,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n currencyCode: control.value.currencyCode!,\n delete: control.value.delete === true,\n customFields: control.get('customFields')?.value,\n }));\n }\n return this.dataService.mutate(ProductVariantUpdateMutationDocument, {\n input: [input],\n });\n }),\n )\n .subscribe(\n result => {\n this.detailForm.markAsPristine();\n this.stockLevelsForm.markAsPristine();\n this.pricesForm.markAsPristine();\n this.assetChanges = {};\n this.notificationService.success(_('common.notify-update-success'), {\n entity: 'ProductVariant',\n });\n this.changeDetector.markForCheck();\n },\n err => {\n this.notificationService.error(_('common.notify-update-error'), {\n entity: 'ProductVariant',\n });\n },\n );\n }\n\n assetsChanged(): boolean {\n return !!Object.values(this.assetChanges).length;\n }\n\n inventoryIsNotTracked(formGroup: UntypedFormGroup): boolean {\n const trackInventory = formGroup.get('trackInventory')?.value;\n return (\n trackInventory === GlobalFlag.FALSE ||\n (trackInventory === GlobalFlag.INHERIT && this.globalTrackInventory === false)\n );\n }\n\n optionGroupCode(optionGroupId: string): string | undefined {\n const group = this.entity?.product.optionGroups.find(g => g.id === optionGroupId);\n return group?.code;\n }\n\n optionName(option: ProductOptionFragment) {\n const translation =\n option.translations.find(t => t.languageCode === this.languageCode) ?? option.translations[0];\n return translation.name;\n }\n\n removeFacetValue(facetValueId: string) {\n const facetValueIdsControl = this.detailForm.controls.facetValueIds;\n const currentFacetValueIds = facetValueIdsControl.value ?? [];\n facetValueIdsControl.setValue(currentFacetValueIds.filter(id => id !== facetValueId));\n facetValueIdsControl.markAsDirty();\n }\n\n selectFacetValue() {\n this.displayFacetValueModal().subscribe(facetValueIds => {\n if (facetValueIds) {\n const facetValueIdsControl = this.detailForm.controls.facetValueIds;\n const currentFacetValueIds = facetValueIdsControl.value ?? [];\n facetValueIdsControl.setValue(unique([...currentFacetValueIds, ...facetValueIds]));\n facetValueIdsControl.markAsDirty();\n }\n });\n }\n\n private displayFacetValueModal(): Observable<string[] | undefined> {\n return this.modalService\n .fromComponent(ApplyFacetDialogComponent, {\n size: 'md',\n closable: true,\n })\n .pipe(map(facetValues => facetValues && facetValues.map(v => v.id)));\n }\n\n protected setFormValues(\n variant: NonNullable<GetProductVariantDetailQuery['productVariant']>,\n languageCode: LanguageCode,\n ): void {\n const variantTranslation = findTranslation(variant, languageCode);\n const facetValueIds = variant.facetValues.map(fv => fv.id);\n this.detailForm.patchValue({\n id: variant.id,\n enabled: variant.enabled,\n sku: variant.sku,\n name: variantTranslation ? variantTranslation.name : '',\n taxCategoryId: variant.taxCategory.id,\n stockOnHand: variant.stockLevels[0]?.stockOnHand ?? 0,\n useGlobalOutOfStockThreshold: variant.useGlobalOutOfStockThreshold,\n outOfStockThreshold: variant.outOfStockThreshold,\n trackInventory: variant.trackInventory,\n facetValueIds,\n });\n this.stockLevelsForm.clear();\n for (const stockLevel of variant.stockLevels) {\n this.stockLevelsForm.push(\n this.formBuilder.group({\n stockLocationId: stockLevel.stockLocation.id,\n stockLocationName: stockLevel.stockLocation.name,\n stockOnHand: stockLevel.stockOnHand,\n stockAllocated: stockLevel.stockAllocated,\n }),\n );\n }\n this.pricesForm.clear();\n for (const price of variant.prices) {\n const priceForm = this.formBuilder.group({\n price: price.price,\n currencyCode: price.currencyCode,\n delete: false as boolean,\n customFields: this.formBuilder.group(getCustomFieldsDefaults(this.customPriceFields)),\n });\n if (this.customPriceFields.length) {\n this.setCustomFieldFormValues(this.customPriceFields, priceForm.get(['customFields']), price);\n }\n this.pricesForm.push(priceForm);\n }\n if (this.customFields.length) {\n this.setCustomFieldFormValues(\n this.customFields,\n this.detailForm.get('customFields'),\n variant,\n variantTranslation,\n );\n }\n }\n\n /**\n * Given a product and the value of the detailForm, this method creates an updated copy of the product which\n * can then be persisted to the API.\n */\n private getUpdatedVariant(\n variant: NonNullable<GetProductVariantDetailQuery['productVariant']>,\n variantFormGroup: typeof this.detailForm,\n languageCode: LanguageCode,\n ): UpdateProductVariantInput | CreateProductVariantInput {\n const updatedProduct = createUpdatedTranslatable({\n translatable: variant,\n updatedFields: variantFormGroup.value,\n customFieldConfig: this.customFields,\n languageCode,\n defaultTranslation: {\n languageCode,\n name: variant.name || '',\n },\n });\n return {\n ...updatedProduct,\n assetIds: this.assetChanges.assets?.map(a => a.id),\n featuredAssetId: this.assetChanges.featuredAsset?.id,\n facetValueIds: variantFormGroup.controls.facetValueIds.dirty\n ? variantFormGroup.value.facetValueIds\n : undefined,\n taxCategoryId: variantFormGroup.controls.taxCategoryId.dirty\n ? variantFormGroup.value.taxCategoryId\n : undefined,\n } as UpdateProductVariantInput | CreateProductVariantInput;\n }\n}\n", "<vdr-page-block>\n <vdr-action-bar>\n <vdr-ab-left [grow]=\"true\">\n <div class=\"flex center\">\n <ng-container *ngIf=\"availableLanguages$ | async as availableLanguages\">\n <vdr-language-selector\n *ngIf=\"availableLanguages.length > 1\"\n class=\"mr-2\"\n [disabled]=\"isNew$ | async\"\n [availableLanguageCodes]=\"availableLanguages\"\n [currentLanguageCode]=\"languageCode$ | async\"\n (languageCodeChange)=\"setLanguage($event)\"\n ></vdr-language-selector>\n </ng-container>\n <vdr-product-variant-quick-jump [productId]=\"entity?.product.id\" />\n </div>\n </vdr-ab-left>\n\n <vdr-ab-right>\n <vdr-action-bar-items locationId=\"product-variant-detail\"></vdr-action-bar-items>\n <button\n *vdrIfPermissions=\"['UpdateCatalog', 'UpdateProduct']\"\n class=\"btn btn-primary\"\n (click)=\"save()\"\n [disabled]=\"\n (detailForm.invalid ||\n stockLevelsForm.invalid ||\n pricesForm.invalid ||\n (detailForm.pristine && stockLevelsForm.pristine && pricesForm.pristine)) &&\n !assetsChanged()\n \"\n >\n {{ 'common.update' | translate }}\n </button>\n <vdr-action-bar-dropdown-menu locationId=\"product-variant-detail\"></vdr-action-bar-dropdown-menu>\n </vdr-ab-right>\n </vdr-action-bar>\n</vdr-page-block>\n<form class=\"form\" [formGroup]=\"detailForm\" *ngIf=\"entity$ | async as variant\">\n <vdr-page-detail-layout>\n <vdr-page-detail-sidebar\n ><vdr-card>\n <vdr-form-field [label]=\"'catalog.visibility' | translate\" for=\"visibility\">\n <clr-toggle-wrapper *vdrIfPermissions=\"['UpdateCatalog', 'UpdateProduct']\">\n <input\n type=\"checkbox\"\n clrToggle\n name=\"enabled\"\n [formControl]=\"detailForm.get(['enabled'])\"\n />\n <label>{{ 'common.enabled' | translate }}</label>\n </clr-toggle-wrapper>\n </vdr-form-field>\n </vdr-card>\n <vdr-card *ngIf=\"variant.options.length\" [title]=\"'catalog.product-options' | translate\">\n <div class=\"options\">\n <vdr-chip\n *ngFor=\"let option of variant.options | sort : 'groupId'\"\n [colorFrom]=\"optionGroupCode(option.groupId)\"\n [invert]=\"true\"\n >\n <span>{{ optionGroupCode(option.groupId) }}:</span>\n {{ optionName(option) }}\n </vdr-chip>\n </div>\n <div>\n <a\n [routerLink]=\"['../../', 'options']\"\n class=\"button-small mt-2\"\n *vdrIfPermissions=\"updatePermissions\"\n >\n <clr-icon shape=\"pencil\"></clr-icon>\n {{ 'catalog.edit-options' | translate }}\n </a>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'catalog.facets' | translate\">\n <div class=\"facets\">\n <vdr-facet-value-chip\n *ngFor=\"let facetValue of facetValues$ | async\"\n [facetValue]=\"facetValue\"\n [removable]=\"updatePermissions | hasPermission\"\n (remove)=\"removeFacetValue(facetValue.id)\"\n ></vdr-facet-value-chip>\n </div>\n <div>\n <button\n class=\"button-small mt-2\"\n *vdrIfPermissions=\"updatePermissions\"\n (click)=\"selectFacetValue()\"\n >\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.add-facets' | translate }}\n </button>\n </div>\n </vdr-card>\n\n <vdr-card>\n <vdr-page-entity-info *ngIf=\"entity$ | async as entity\" [entity]=\"entity\" />\n </vdr-card>\n </vdr-page-detail-sidebar>\n\n <vdr-page-block>\n <button type=\"submit\" hidden x-data=\"prevents enter key from triggering other buttons\"></button>\n <vdr-card>\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'common.name' | translate\" for=\"name\">\n <input\n id=\"name\"\n type=\"text\"\n formControlName=\"name\"\n [readonly]=\"!(['UpdateCatalog', 'UpdateProduct'] | hasPermission)\"\n />\n </vdr-form-field>\n <vdr-form-field [label]=\"'catalog.sku' | translate\" for=\"sku\">\n <input\n id=\"sku\"\n type=\"text\"\n formControlName=\"sku\"\n [readonly]=\"!(updatePermissions | hasPermission)\"\n />\n </vdr-form-field>\n </div>\n </vdr-card>\n <vdr-card [title]=\"'common.custom-fields' | translate\" *ngIf=\"customFields.length\">\n <vdr-tabbed-custom-fields\n entityName=\"ProductVariant\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"detailForm.get('customFields')\"\n [readonly]=\"!(updatePermissions | hasPermission)\"\n />\n </vdr-card>\n <vdr-custom-detail-component-host\n locationId=\"product-variant-detail\"\n [entity$]=\"entity$\"\n [detailForm]=\"detailForm\"\n />\n <vdr-card [title]=\"'catalog.assets' | translate\">\n <vdr-assets\n [assets]=\"assetChanges.assets || variant.assets\"\n [featuredAsset]=\"assetChanges.featuredAsset || variant.featuredAsset\"\n [updatePermissions]=\"updatePermissions\"\n (change)=\"assetChanges = $event\"\n />\n </vdr-card>\n <vdr-card [title]=\"'catalog.price-and-tax' | translate\">\n <div class=\"form-grid\">\n <vdr-form-field [label]=\"'catalog.tax-category' | translate\" for=\"taxCategory\">\n <select name=\"taxCategory\" formControlName=\"taxCategoryId\">\n <option\n *ngFor=\"let taxCategory of taxCategories$ | async\"\n [value]=\"taxCategory.id\"\n >\n {{ taxCategory.name }}\n </option>\n </select>\n </vdr-form-field>\n </div>\n <div class=\"form-grid prices\" *ngFor=\"let price of pricesForm.controls\" [formGroup]=\"price\">\n <vdr-form-field\n [label]=\"\n ('catalog.price' | translate) +\n (1 < pricesForm.length ? ' (' + price.value.currencyCode + ')' : '')\n \"\n [tooltip]=\"\n 1 < pricesForm.length && price.value.currencyCode === channelDefaultCurrencyCode\n ? ('catalog.default-currency' | translate)\n : undefined\n \"\n for=\"price\"\n >\n <div class=\"price-wrapper\" [class.pending-deletion]=\"price.value.delete === true\">\n <vdr-currency-input\n name=\"price\"\n [currencyCode]=\"price.value.currencyCode\"\n [readonly]=\"\n !(updatePermissions | hasPermission) || price.value.delete === true\n \"\n formControlName=\"price\"\n />\n <div *ngIf=\"1 < pricesForm.controls.length\">\n <button\n class=\"button-small delete-button\"\n [disabled]=\"price.value.currencyCode === channelDefaultCurrencyCode\"\n (click)=\"toggleDeletePrice(price.get('delete'))\"\n >\n <clr-icon shape=\"trash\"></clr-icon>\n </button>\n </div>\n </div>\n </vdr-form-field>\n <vdr-variant-price-detail\n [price]=\"price.value.price\"\n [currencyCode]=\"price.value.currencyCode\"\n [priceIncludesTax]=\"channelPriceIncludesTax$ | async\"\n [taxCategoryId]=\"detailForm.get('taxCategoryId')!.value\"\n />\n\n <div class=\"form-grid-span\" *ngIf=\"customPriceFields.length\">\n <div class=\"title-row\">\n <span class=\"title\">{{ 'common.custom-fields' | translate }}</span>\n </div>\n <vdr-tabbed-custom-fields\n entityName=\"ProductVariantPrice\"\n [customFields]=\"customPriceFields\"\n [customFieldsFormGroup]=\"price.get(['customFields'])\"\n [readonly]=\"!(updatePermissions | hasPermission)\"\n />\n </div>\n </div>\n\n <vdr-variant-price-strategy-detail\n [channelPriceIncludesTax]=\"channelPriceIncludesTax$ | async\"\n [channelDefaultCurrencyCode]=\"channelDefaultCurrencyCode\"\n [variant]=\"variant\"\n />\n\n <ng-container *ngIf=\"unusedCurrencyCodes$ | async as unusedCurrencyCodes\">\n <div *ngIf=\"unusedCurrencyCodes.length\">\n <vdr-dropdown>\n <button class=\"button mt-2\" vdrDropdownTrigger>\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.add-price-in-another-currency' | translate }}\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\n </button>\n <vdr-dropdown-menu>\n <button\n vdrDropdownItem\n *ngFor=\"let currencyCode of unusedCurrencyCodes\"\n (click)=\"addPriceInCurrency(currencyCode)\"\n >\n {{ currencyCode | localeCurrencyName }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n </ng-container>\n </vdr-card>\n <vdr-card [title]=\"'catalog.stock-levels' | translate\">\n <div class=\"form-grid\">\n <vdr-form-field\n for=\"track-inventory\"\n [label]=\"'catalog.track-inventory' | translate\"\n [tooltip]=\"'catalog.track-inventory-tooltip' | translate\"\n >\n <select\n name=\"track-inventory\"\n formControlName=\"trackInventory\"\n [disabled]=\"!(updatePermissions | hasPermission)\"\n >\n <option [value]=\"GlobalFlag.TRUE\">\n {{ 'catalog.track-inventory-true' | translate }}\n </option>\n <option [value]=\"GlobalFlag.FALSE\">\n {{ 'catalog.track-inventory-false' | translate }}\n </option>\n <option [value]=\"GlobalFlag.INHERIT\">\n {{ 'catalog.track-inventory-inherit' | translate }}\n </option>\n </select>\n </vdr-form-field>\n\n <vdr-form-item\n [label]=\"'catalog.out-of-stock-threshold' | translate\"\n [tooltip]=\"'catalog.out-of-stock-threshold-tooltip' | translate\"\n >\n <input\n type=\"number\"\n formControlName=\"outOfStockThreshold\"\n [readonly]=\"!(updatePermissions | hasPermission)\"\n [vdrDisabled]=\"\n detailForm.get('useGlobalOutOfStockThreshold')?.value !== false ||\n inventoryIsNotTracked(detailForm)\n \"\n />\n <clr-toggle-wrapper>\n <input\n type=\"checkbox\"\n clrToggle\n name=\"useGlobalOutOfStockThreshold\"\n formControlName=\"useGlobalOutOfStockThreshold\"\n [vdrDisabled]=\"\n !(updatePermissions | hasPermission) || inventoryIsNotTracked(detailForm)\n \"\n />\n <label\n >{{ 'catalog.use-global-value' | translate }} ({{\n globalOutOfStockThreshold\n }})</label\n >\n </clr-toggle-wrapper>\n </vdr-form-item>\n </div>\n <div\n class=\"form-grid stock-levels\"\n *ngFor=\"let stockLevel of stockLevelsForm.controls\"\n [formGroup]=\"stockLevel\"\n >\n <vdr-form-field\n [label]=\"\n stockLevel.get('stockLocationName')?.value +\n ': ' +\n ('catalog.stock-on-hand' | translate)\n \"\n [for]=\"'stockOnHand_' + stockLevel.get('stockLocationId')?.value\"\n >\n <input\n [id]=\"'stockOnHand_' + stockLevel.get('stockLocationId')?.value\"\n type=\"number\"\n formControlName=\"stockOnHand\"\n [readonly]=\"!(updatePermissions | hasPermission)\"\n />\n </vdr-form-field>\n <vdr-form-item\n [label]=\"\n stockLevel.get('stockLocationName')?.value +\n ': ' +\n ('catalog.stock-allocated' | translate)\n \"\n >\n {{ stockLevel.get('stockAllocated')?.value }}\n </vdr-form-item>\n </div>\n <ng-container *ngIf=\"unusedStockLocation$ | async as unusedStockLocations\">\n <div *ngIf=\"unusedStockLocations.length\">\n <vdr-dropdown>\n <button class=\"button mt-2\" vdrDropdownTrigger>\n <clr-icon shape=\"plus\"></clr-icon>\n {{ 'catalog.add-stock-location' | translate }}\n <clr-icon shape=\"ellipsis-vertical\"></clr-icon>\n </button>\n <vdr-dropdown-menu>\n <button\n vdrDropdownItem\n *ngFor=\"let stockLocation of unusedStockLocations\"\n (click)=\"addStockLocation(stockLocation)\"\n >\n <clr-icon shape=\"map-marker\"></clr-icon> {{ stockLocation.name }}\n </button>\n </vdr-dropdown-menu>\n </vdr-dropdown>\n </div>\n </ng-container>\n </vdr-card>\n </vdr-page-block>\n </vdr-page-detail-layout>\n</form>\n", "import { ChangeDetectionStrategy, Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\nimport { DataService } from '@vendure/admin-ui/core';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\n\n@Component({\n selector: 'vdr-variant-price-detail',\n templateUrl: './variant-price-detail.component.html',\n styleUrls: ['./variant-price-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class VariantPriceDetailComponent implements OnInit, OnChanges {\n @Input() priceIncludesTax: boolean;\n @Input() price: number;\n @Input() currencyCode: string;\n @Input() taxCategoryId: string;\n\n grossPrice$: Observable<number>;\n taxRate$: Observable<number>;\n\n private priceChange$ = new BehaviorSubject<number>(0);\n private taxCategoryIdChange$ = new BehaviorSubject<string>('');\n\n constructor(private dataService: DataService) {}\n\n ngOnInit() {\n const taxRates$ = this.dataService.settings\n .getTaxRatesSimple(999, 0, 'cache-first')\n .mapStream(data => data.taxRates.items);\n const activeChannel$ = this.dataService.settings\n .getActiveChannel('cache-first')\n .refetchOnChannelChange()\n .mapStream(data => data.activeChannel);\n\n this.taxRate$ = combineLatest(activeChannel$, taxRates$, this.taxCategoryIdChange$).pipe(\n map(([channel, taxRates, taxCategoryId]) => {\n const defaultTaxZone = channel.defaultTaxZone;\n if (!defaultTaxZone) {\n return 0;\n }\n const applicableRate = taxRates.find(\n taxRate => taxRate.zone.id === defaultTaxZone.id && taxRate.category.id === taxCategoryId,\n );\n\n if (!applicableRate) {\n return 0;\n }\n return applicableRate.value;\n }),\n );\n\n this.grossPrice$ = combineLatest(this.taxRate$, this.priceChange$).pipe(\n map(([taxRate, price]) => Math.round(price * ((100 + taxRate) / 100))),\n );\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if ('price' in changes) {\n this.priceChange$.next(changes.price.currentValue);\n }\n if ('taxCategoryId' in changes) {\n this.taxCategoryIdChange$.next(changes.taxCategoryId.currentValue);\n }\n }\n}\n", "<label class=\"clr-control-label\">{{ 'catalog.taxes' | translate }}</label>\n<div *ngIf=\"priceIncludesTax\" class=\"value\">\n {{ 'catalog.price-includes-tax-at' | translate: { rate: taxRate$ | async } }}\n</div>\n<div *ngIf=\"!priceIncludesTax\" class=\"value\">\n {{\n 'catalog.price-with-tax-in-default-zone'\n | translate: { price: grossPrice$ | async | localeCurrency: currencyCode, rate: taxRate$ | async }\n }}\n</div>\n", "import { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport {\n CurrencyCode,\n ProductVariantDetailQueryProductVariantFragmentFragment,\n} from '@vendure/admin-ui/core';\n\n@Component({\n selector: 'vdr-variant-price-strategy-detail',\n templateUrl: './variant-price-strategy-detail.component.html',\n styleUrls: ['./variant-price-strategy-detail.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class VariantPriceStrategyDetailComponent {\n @Input() channelPriceIncludesTax: boolean;\n @Input() variant: ProductVariantDetailQueryProductVariantFragmentFragment;\n @Input() channelDefaultCurrencyCode: CurrencyCode;\n\n calculatedPriceDiffersFromInputPrice(): boolean {\n const defaultPrice =\n this.variant.prices.find(p => p.currencyCode === this.channelDefaultCurrencyCode) ??\n this.variant.prices[0];\n if (!defaultPrice) {\n return false;\n }\n if (this.channelPriceIncludesTax) {\n return this.variant.priceWithTax !== defaultPrice.price;\n } else {\n return this.variant.price !== defaultPrice.price;\n }\n }\n}\n", "<div *ngIf=\"calculatedPriceDiffersFromInputPrice()\" class=\"price-strategy-detail\">\n <vdr-form-item\n [label]=\"'catalog.calculated-price' | translate\"\n [tooltip]=\"'catalog.calculated-price-tooltip' | translate\"\n for=\"price\"\n >\n </vdr-form-item>\n <div class=\"form-grid mt-2\">\n <vdr-form-item [label]=\"'common.price' | translate\">\n {{ variant.price | localeCurrency : variant.currencyCode }}\n </vdr-form-item>\n <vdr-form-item [label]=\"'common.price-with-tax' | translate\">\n {{ variant.priceWithTax | localeCurrency : variant.currencyCode }}\n </vdr-form-item>\n </div>\n</div>\n", "import { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { Router } from '@angular/router';\nimport {\n DataService,\n GetProductVariantsQuickJumpDocument,\n GetProductVariantsQuickJumpQuery,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\nimport { Observable } from 'rxjs';\n\nconst GET_PRODUCT_VARIANTS_QUICK_JUMP = gql`\n query GetProductVariantsQuickJump($id: ID!) {\n product(id: $id) {\n id\n variants {\n id\n name\n sku\n }\n }\n }\n`;\n\n@Component({\n selector: 'vdr-product-variant-quick-jump',\n templateUrl: './product-variant-quick-jump.component.html',\n styleUrls: ['./product-variant-quick-jump.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class ProductVariantQuickJumpComponent implements OnInit {\n @Input() productId: string;\n selectedVariantId: string | undefined;\n variants$: Observable<NonNullable<GetProductVariantsQuickJumpQuery['product']>['variants']>;\n constructor(\n private dataService: DataService,\n private router: Router,\n ) {}\n\n ngOnInit() {\n this.variants$ = this.dataService\n .query(GetProductVariantsQuickJumpDocument, {\n id: this.productId,\n })\n .mapStream(data => data.product?.variants ?? []);\n }\n\n searchFn = (\n term: string,\n item: NonNullable<GetProductVariantsQuickJumpQuery['product']>['variants'][number],\n ) =>\n item.name.toLowerCase().includes(term.toLowerCase()) ||\n item.sku.toLowerCase().includes(term.toLowerCase());\n\n onSelect(item?: NonNullable<GetProductVariantsQuickJumpQuery['product']>['variants'][number]) {\n if (item) {\n this.router\n .navigate(['catalog', 'products', this.productId, 'variants', item.id])\n .then(() => (this.selectedVariantId = undefined));\n }\n }\n}\n", "<ng-select\n *ngIf=\"(variants$ | async)?.length > 1\"\n [items]=\"variants$ | async\"\n appendTo=\"body\"\n bindValue=\"id\"\n [(ngModel)]=\"selectedVariantId\"\n [searchFn]=\"searchFn\"\n [clearable]=\"false\"\n [placeholder]=\"'catalog.quick-jump-placeholder' | translate\"\n (change)=\"onSelect($event)\"\n>\n <ng-template ng-option-tmp let-item=\"item\" let-index=\"index\" let-search=\"searchTerm\">\n {{ item.name }} ({{ item.sku }})\n </ng-template>\n</ng-select>\n", "import { marker as _ } from '@biesbjerg/ngx-translate-extract-marker';\nimport {\n BulkAction,\n createBulkRemoveFromChannelAction,\n DataService,\n DeletionResult,\n GetProductVariantListQuery,\n isMultiChannel,\n ItemOf,\n ModalService,\n NotificationService,\n Permission,\n ProductVariant,\n} from '@vendure/admin-ui/core';\nimport { unique } from '@vendure/common/lib/unique';\nimport { EMPTY } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { AssignProductsToChannelDialogComponent } from '../assign-products-to-channel-dialog/assign-products-to-channel-dialog.component';\nimport { BulkAddFacetValuesDialogComponent } from '../bulk-add-facet-values-dialog/bulk-add-facet-values-dialog.component';\nimport { ProductVariantListComponent } from './product-variant-list.component';\n\nexport const assignProductVariantsToChannelBulkAction: BulkAction<\n ItemOf<GetProductVariantListQuery, 'productVariants'>,\n ProductVariantListComponent\n> = {\n location: 'product-variant-list',\n label: _('common.assign-to-channel'),\n icon: 'layers',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.UpdateCatalog) ||\n userPermissions.includes(Permission.UpdateProduct),\n isVisible: ({ injector }) => isMultiChannel(injector.get(DataService)),\n onClick: ({ injector, selection, clearSelection }) => {\n const modalService = injector.get(ModalService);\n modalService\n .fromComponent(AssignProductsToChannelDialogComponent, {\n size: 'lg',\n locals: {\n productVariantIds: unique(selection.map(p => p.id)),\n currentChannelIds: [],\n },\n })\n .subscribe(result => {\n if (result) {\n clearSelection();\n }\n });\n },\n};\n\nexport const removeProductVariantsFromChannelBulkAction = createBulkRemoveFromChannelAction<\n ItemOf<GetProductVariantListQuery, 'productVariants'>\n>({\n location: 'product-variant-list',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.UpdateCatalog) ||\n userPermissions.includes(Permission.UpdateProduct),\n getItemName: item => item.name,\n bulkRemoveFromChannel: (dataService, ids, channelId) =>\n dataService.product\n .removeVariantsFromChannel({\n channelId: channelId,\n productVariantIds: ids,\n })\n .pipe(map(res => res.removeProductVariantsFromChannel)),\n});\n\nexport const deleteProductVariantsBulkAction: BulkAction<ProductVariant, ProductVariantListComponent> = {\n location: 'product-variant-list',\n label: _('common.delete'),\n icon: 'trash',\n iconClass: 'is-danger',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.DeleteProduct) ||\n userPermissions.includes(Permission.DeleteCatalog),\n onClick: ({ injector, selection, hostComponent, clearSelection }) => {\n const modalService = injector.get(ModalService);\n const dataService = injector.get(DataService);\n const notificationService = injector.get(NotificationService);\n modalService\n .dialog({\n title: _('common.confirm-bulk-delete'),\n translationVars: {\n count: selection.length,\n },\n buttons: [\n { type: 'secondary', label: _('common.cancel') },\n { type: 'danger', label: _('common.delete'), returnValue: true },\n ],\n })\n .pipe(\n switchMap(response =>\n response\n ? dataService.product.deleteProductVariants(unique(selection.map(p => p.id)))\n : EMPTY,\n ),\n )\n .subscribe(result => {\n let deleted = 0;\n const errors: string[] = [];\n for (const item of result.deleteProductVariants) {\n if (item.result === DeletionResult.DELETED) {\n deleted++;\n } else if (item.message) {\n errors.push(item.message);\n }\n }\n if (0 < deleted) {\n notificationService.success(_('catalog.notify-bulk-delete-products-success'), {\n count: deleted,\n });\n }\n if (0 < errors.length) {\n notificationService.error(errors.join('\\n'));\n }\n hostComponent.refresh();\n clearSelection();\n });\n },\n};\n\nexport const assignFacetValuesToProductVariantsBulkAction: BulkAction<\n ItemOf<GetProductVariantListQuery, 'productVariants'>,\n ProductVariantListComponent\n> = {\n location: 'product-variant-list',\n label: _('catalog.edit-facet-values'),\n icon: 'tag',\n requiresPermission: userPermissions =>\n userPermissions.includes(Permission.UpdateCatalog) ||\n userPermissions.includes(Permission.UpdateProduct),\n onClick: ({ injector, selection, clearSelection }) => {\n const modalService = injector.get(ModalService);\n const notificationService = injector.get(NotificationService);\n const mode = 'variant';\n const ids = unique(selection.map(p => p.id));\n return modalService\n .fromComponent(BulkAddFacetValuesDialogComponent, {\n size: 'xl',\n locals: {\n mode,\n ids,\n },\n })\n .subscribe(result => {\n if (result) {\n notificationService.success(_('common.notify-bulk-update-success'), {\n count: selection.length,\n entity: mode === 'variant' ? 'Products' : 'ProductVariants',\n });\n clearSelection();\n }\n });\n },\n};\n", "import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport { UntypedFormArray, UntypedFormGroup } from '@angular/forms';\nimport { Asset, Permission, ProductDetailFragment, ProductVariantFragment } from '@vendure/admin-ui/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';\n\ninterface SelectedAssets {\n assets?: Asset[];\n featuredAsset?: Asset;\n}\n\ninterface PaginationConfig {\n totalItems: number;\n currentPage: number;\n itemsPerPage: number;\n}\n\n@Component({\n selector: 'vdr-product-variants-table',\n templateUrl: './product-variants-table.component.html',\n styleUrls: ['./product-variants-table.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\nexport class ProductVariantsTableComponent implements OnInit, OnDestroy {\n @Input('productVariantsFormArray') formArray: UntypedFormArray;\n @Input() variants: ProductVariantFragment[];\n @Input() paginationConfig: PaginationConfig;\n @Input() channelPriceIncludesTax: boolean;\n @Input() optionGroups: ProductDetailFragment['optionGroups'];\n @Input() pendingAssetChanges: { [variantId: string]: SelectedAssets };\n formGroupMap = new Map<string, UntypedFormGroup>();\n readonly updatePermission = [Permission.UpdateCatalog, Permission.UpdateProduct];\n private subscription: Subscription;\n\n constructor(private changeDetector: ChangeDetectorRef) {}\n\n ngOnInit() {\n this.subscription = this.formArray.valueChanges\n .pipe(\n map(value => value.length),\n debounceTime(1),\n distinctUntilChanged(),\n )\n .subscribe(() => {\n this.buildFormGroupMap();\n });\n\n this.buildFormGroupMap();\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n\n trackByFn(index: number, item: any) {\n if ((item as any).id != null) {\n return (item as any).id;\n } else {\n return index;\n }\n }\n\n getFeaturedAsset(variant: ProductVariantFragment) {\n return this.pendingAssetChanges[variant.id]?.featuredAsset || variant.featuredAsset;\n }\n\n optionGroupName(optionGroupId: string): string | undefined {\n const group = this.optionGroups.find(g => g.id === optionGroupId);\n return group && group.name;\n }\n\n private buildFormGroupMap() {\n this.formGroupMap.clear();\n for (const controlGroup of this.formArray.controls) {\n this.formGroupMap.set(controlGroup.value.id, controlGroup as UntypedFormGroup);\n }\n this.changeDetector.markForCheck();\n }\n}\n", "<table class=\"table\">\n <thead>\n <tr>\n <th></th>\n <th>{{ 'common.name' | translate }}</th>\n <th>{{ 'catalog.sku' | translate }}</th>\n <ng-container *ngFor=\"let optionGroup of optionGroups | sort: 'id'\">\n <th>{{ optionGroup.name }}</th>\n </ng-container>\n <th>{{ 'catalog.price' | translate }}</th>\n <th>{{ 'catalog.stock-on-hand' | translate }}</th>\n <th>{{ 'common.enabled' | translate }}</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let variant of variants | paginate: paginationConfig; index as i; trackBy: trackByFn\">\n <ng-container *ngIf=\"formGroupMap.get(variant.id) as formGroup\" [formGroup]=\"formGroup\">\n <td class=\"left align-middle\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\n <div class=\"card-img\">\n <div class=\"featured-asset\">\n <img\n *ngIf=\"getFeaturedAsset(variant) as featuredAsset; else placeholder\"\n [src]=\"featuredAsset | assetPreview: 'tiny'\"\n />\n <ng-template #placeholder>\n <div class=\"placeholder\">\n <clr-icon shape=\"image\" size=\"48\"></clr-icon>\n </div>\n </ng-template>\n </div>\n </div>\n </td>\n <td class=\"left align-middle\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\n <clr-input-container>\n <input\n clrInput\n type=\"text\"\n formControlName=\"name\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n [placeholder]=\"'common.name' | translate\"\n />\n </clr-input-container>\n </td>\n <td class=\"left align-middle\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\n <clr-input-container>\n <input\n clrInput\n type=\"text\"\n formControlName=\"sku\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n [placeholder]=\"'catalog.sku' | translate\"\n />\n </clr-input-container>\n </td>\n <ng-container *ngFor=\"let option of variant.options | sort: 'groupId'\">\n <td\n class=\"left align-middle\"\n [class.disabled]=\"!formGroup.get('enabled')!.value\"\n [style.color]=\"optionGroupName(option.groupId) | stringToColor\"\n >\n {{ option.name }}\n </td>\n </ng-container>\n <td class=\"left align-middle price\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\n <clr-input-container>\n <vdr-currency-input\n *ngIf=\"!channelPriceIncludesTax\"\n clrInput\n [currencyCode]=\"variant.currencyCode\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n formControlName=\"price\"\n ></vdr-currency-input>\n <vdr-currency-input\n *ngIf=\"channelPriceIncludesTax\"\n clrInput\n [currencyCode]=\"variant.currencyCode\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n formControlName=\"priceWithTax\"\n ></vdr-currency-input>\n </clr-input-container>\n </td>\n <td class=\"left align-middle stock\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\n <clr-input-container>\n <input\n clrInput\n type=\"number\"\n min=\"0\"\n step=\"1\"\n formControlName=\"stockOnHand\"\n [readonly]=\"!(updatePermission | hasPermission)\"\n />\n </clr-input-container>\n </td>\n <td class=\"left align-middle stock\" [class.disabled]=\"!formGroup.get('enabled')!.value\">\n <clr-toggle-wrapper>\n <input\n type=\"checkbox\"\n clrToggle\n name=\"enabled\"\n formControlName=\"enabled\"\n [vdrDisabled]=\"!(updatePermission | hasPermission)\"\n />\n </clr-toggle-wrapper>\n </td>\n </ng-container>\n </tr>\n </tbody>\n</table>\n", "import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport {\n CustomFieldConfig,\n LanguageCode,\n ProductVariantFragment,\n UpdateProductOptionInput,\n createUpdatedTranslatable,\n Dialog,\n} from '@vendure/admin-ui/core';\n\nimport { normalizeString } from '@vendure/common/lib/normalize-string';\n\n@Component({\n selector: 'vdr-update-product-option-dialog',\n templateUrl: './update-product-option-dialog.component.html',\n styleUrls: ['./update-product-option-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class UpdateProductOptionDialogComponent\n implements Dialog<UpdateProductOptionInput & { autoUpdate: boolean }>, OnInit\n{\n resolveWith: (result?: UpdateProductOptionInput & { autoUpdate: boolean }) => void;\n updateVariantName = true;\n // Provided by caller\n productOption: ProductVariantFragment['options'][number];\n activeLanguage: LanguageCode;\n name: string;\n code: string;\n customFields: CustomFieldConfig[];\n codeInputTouched = false;\n customFieldsForm: UntypedFormGroup;\n\n ngOnInit(): void {\n const currentTranslation = this.productOption.translations.find(\n t => t.languageCode === this.activeLanguage,\n );\n this.name = currentTranslation?.name ?? '';\n this.code = this.productOption.code;\n this.customFieldsForm = new UntypedFormGroup({});\n if (this.customFields) {\n const cfCurrentTranslation =\n (currentTranslation && (currentTranslation as any).customFields) || {};\n\n for (const fieldDef of this.customFields) {\n const key = fieldDef.name;\n const value =\n fieldDef.type === 'localeString'\n ? cfCurrentTranslation[key]\n : (this.productOption as any).customFields[key];\n this.customFieldsForm.addControl(fieldDef.name, new UntypedFormControl(value));\n }\n }\n }\n\n update() {\n const result = createUpdatedTranslatable({\n translatable: this.productOption,\n languageCode: this.activeLanguage,\n updatedFields: {\n code: this.code,\n name: this.name,\n customFields: this.customFieldsForm.value,\n },\n customFieldConfig: this.customFields,\n defaultTranslation: {\n languageCode: this.activeLanguage,\n name: '',\n },\n });\n this.resolveWith({ ...result, autoUpdate: this.updateVariantName });\n }\n\n cancel() {\n this.resolveWith();\n }\n\n updateCode(nameValue: string) {\n if (!this.codeInputTouched && !this.productOption.code) {\n this.code = normalizeString(nameValue, '-');\n }\n }\n}\n", "<ng-template vdrDialogTitle>{{ 'catalog.update-product-option' | translate }}</ng-template>\n<vdr-form-field [label]=\"'catalog.option-name' | translate\" for=\"name\">\n <input\n id=\"name\"\n type=\"text\"\n #nameInput=\"ngModel\"\n [(ngModel)]=\"name\"\n required\n (input)=\"updateCode($event.target.value)\"\n />\n</vdr-form-field>\n<vdr-form-field [label]=\"'common.code' | translate\" for=\"code\">\n <input id=\"code\" type=\"text\" #codeInput=\"ngModel\" required [(ngModel)]=\"code\" pattern=\"[a-z0-9_-]+\" />\n</vdr-form-field>\n<clr-checkbox-wrapper>\n <input type=\"checkbox\" clrCheckbox [(ngModel)]=\"updateVariantName\" />\n <label>{{ 'catalog.auto-update-option-variant-name' | translate }}</label>\n</clr-checkbox-wrapper>\n<section *ngIf=\"customFields.length\">\n <label>{{ 'common.custom-fields' | translate }}</label>\n <vdr-tabbed-custom-fields\n entityName=\"ProductOption\"\n [customFields]=\"customFields\"\n [customFieldsFormGroup]=\"customFieldsForm\"\n [readonly]=\"!(['UpdateCatalog', 'UpdateProduct'] | hasPermission)\"\n ></vdr-tabbed-custom-fields>\n</section>\n\n<ng-template vdrDialogButtons>\n <button type=\"button\" class=\"btn\" (click)=\"cancel()\">{{ 'common.cancel' | translate }}</button>\n <button\n type=\"submit\"\n (click)=\"update()\"\n [disabled]=\"\n nameInput.invalid ||\n codeInput.invalid ||\n (nameInput.pristine && codeInput.pristine && customFieldsForm.pristine)\n \"\n class=\"btn btn-primary\"\n >\n {{ 'catalog.update-product-option' | translate }}\n </button>\n</ng-template>\n", "import { gql } from 'apollo-angular';\n\nconst PRODUCT_LIST_QUERY_PRODUCT_FRAGMENT = gql`\n fragment ProductListQueryProductFragment on Product {\n id\n createdAt\n updatedAt\n enabled\n languageCode\n name\n slug\n featuredAsset {\n id\n createdAt\n updatedAt\n preview\n focalPoint {\n x\n y\n }\n }\n variantList {\n totalItems\n }\n }\n`;\n\nexport const PRODUCT_LIST_QUERY = gql`\n query ProductListQuery($options: ProductListOptions) {\n products(options: $options) {\n items {\n ...ProductListQueryProductFragment\n }\n totalItems\n }\n }\n ${PRODUCT_LIST_QUERY_PRODUCT_FRAGMENT}\n`;\n", "import {\n ASSET_FRAGMENT,\n PRODUCT_OPTION_FRAGMENT,\n PRODUCT_VARIANT_PRICE_FRAGMENT,\n} from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\n\nexport const PRODUCT_VARIANT_DETAIL_QUERY_PRODUCT_VARIANT_FRAGMENT = gql`\n fragment ProductVariantDetailQueryProductVariantFragment on ProductVariant {\n id\n createdAt\n updatedAt\n enabled\n languageCode\n name\n price\n currencyCode\n prices {\n ...ProductVariantPrice\n }\n priceWithTax\n stockOnHand\n stockAllocated\n trackInventory\n outOfStockThreshold\n useGlobalOutOfStockThreshold\n taxRateApplied {\n id\n name\n value\n }\n taxCategory {\n id\n name\n }\n sku\n options {\n ...ProductOption\n }\n stockLevels {\n id\n createdAt\n updatedAt\n stockOnHand\n stockAllocated\n stockLocationId\n stockLocation {\n id\n createdAt\n updatedAt\n name\n }\n }\n facetValues {\n id\n code\n name\n facet {\n id\n name\n }\n }\n featuredAsset {\n ...Asset\n }\n assets {\n ...Asset\n }\n translations {\n id\n languageCode\n name\n }\n channels {\n id\n code\n }\n product {\n id\n name\n optionGroups {\n id\n name\n code\n translations {\n id\n languageCode\n name\n }\n }\n }\n }\n ${PRODUCT_VARIANT_PRICE_FRAGMENT}\n`;\n\nexport const PRODUCT_VARIANT_DETAIL_QUERY = gql`\n query GetProductVariantDetail($id: ID!) {\n productVariant(id: $id) {\n ...ProductVariantDetailQueryProductVariantFragment\n }\n stockLocations(options: { take: 100 }) {\n items {\n id\n createdAt\n updatedAt\n name\n description\n }\n }\n taxCategories(options: { take: 100 }) {\n items {\n id\n createdAt\n updatedAt\n name\n isDefault\n }\n totalItems\n }\n activeChannel {\n id\n availableCurrencyCodes\n defaultCurrencyCode\n }\n }\n ${PRODUCT_VARIANT_DETAIL_QUERY_PRODUCT_VARIANT_FRAGMENT}\n`;\n\nexport const PRODUCT_VARIANT_UPDATE_MUTATION = gql`\n mutation ProductVariantUpdateMutation($input: [UpdateProductVariantInput!]!) {\n updateProductVariants(input: $input) {\n ...ProductVariantDetailQueryProductVariantFragment\n }\n }\n ${PRODUCT_VARIANT_DETAIL_QUERY_PRODUCT_VARIANT_FRAGMENT}\n`;\n", "import { ASSET_FRAGMENT } from '@vendure/admin-ui/core';\nimport { gql } from 'apollo-angular';\n\nconst PRODUCT_VARIANT_LIST_QUERY_PRODUCT_VARIANT_FRAGMENT = gql`\n fragment ProductVariantListQueryProductVariantFragment on ProductVariant {\n id\n createdAt\n updatedAt\n productId\n enabled\n languageCode\n name\n price\n currencyCode\n priceWithTax\n trackInventory\n outOfStockThreshold\n stockLevels {\n id\n createdAt\n updatedAt\n stockLocationId\n stockOnHand\n stockAllocated\n stockLocation {\n id\n createdAt\n updatedAt\n name\n }\n }\n useGlobalOutOfStockThreshold\n sku\n featuredAsset {\n ...Asset\n }\n }\n\n ${ASSET_FRAGMENT}\n`;\n\nexport const PRODUCT_VARIANT_LIST_QUERY = gql`\n query ProductVariantListQuery($options: ProductVariantListOptions!) {\n productVariants(options: $options) {\n items {\n ...ProductVariantListQueryProductVariantFragment\n }\n totalItems\n }\n }\n ${PRODUCT_VARIANT_LIST_QUERY_PRODUCT_VARIANT_FRAGMENT}\n`;\n"],
5
- "mappings": "izFAgFA,IAAYA,GAAZ,SAAYA,EAAc,CACxBA,OAAAA,EAAA,4BAAA,8BACAA,EAAA,MAAA,QACAA,EAAA,UAAA,YAHUA,CAIZ,EAJYA,KAAcC,EAAAD,eAAdA,GAAc,CAAA,EAAA,EAmKdE,GAAZ,SAAYA,EAAS,CACnBA,OAAAA,EAAA,OAAA,SACAA,EAAA,MAAA,QACAA,EAAA,MAAA,QAHUA,CAIZ,EAJYA,KAASD,EAAAC,UAATA,GAAS,CAAA,EAAA,EAsvBTC,GAAZ,SAAYA,EAAY,CAEtBA,OAAAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EAAA,IAAA,MAEAA,EA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,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,MAAA,QAEAA,EAAA,MAAA,QAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,MAAA,QAEAA,EAAA,MAAA,QAEAA,EAAA,MAAA,QAEAA,EAAA,MAAA,QAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,MAAA,QAEAA,EAAA,MAAA,QAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,MAAA,QAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,MAAA,QAEAA,EAAA,MAAA,QAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,MAAA,QAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,MAAA,QAEAA,EAAA,MAAA,QAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,MAAA,QAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,MAAA,QAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,GAAA,KAEAA,EAAA,QAAA,UAEAA,EAAA,QAAA,UAEAA,EAAA,GAAA,KA1TUA,CA2TZ,EA3TYA,KAAYR,EAAAQ,aAAZA,GAAY,CAAA,EAAA,EAyWZC,GAAZ,SAAYA,EAAe,CACzBA,OAAAA,EAAA,IAAA,MACAA,EAAA,GAAA,KAFUA,CAGZ,EAHYA,KAAeT,EAAAS,gBAAfA,GAAe,CAAA,EAAA,EAsBfC,GAAZ,SAAYA,EAAc,CACxBA,OAAAA,EAAA,MAAA,QADUA,CAEZ,EAFYA,KAAcV,EAAAU,eAAdA,GAAc,CAAA,EAAA,EAwBdC,GAAZ,SAAYA,EAAU,CACpBA,OAAAA,EAAA,kBAAA,oBACAA,EAAA,WAAA,aACAA,EAAA,WAAA,aAHUA,CAIZ,EAJYA,KAAUX,EAAAW,WAAVA,GAAU,CAAA,EAAA,EAwkDVC,GAAZ,SAAYA,EAAS,CACnBA,OAAAA,EAAA,UAAA,YACAA,EAAA,QAAA,UACAA,EAAA,OAAA,SAHUA,CAIZ,EAJYA,KAASZ,EAAAY,UAATA,GAAS,CAAA,EAAA,EA0KTC,GAAZ,SAAYA,EAAU,CAEpBA,OAAAA,EAAA,cAAA,gBAEAA,EAAA,oBAAA,sBAEAA,EAAA,YAAA,cAEAA,EAAA,cAAA,gBAEAA,EAAA,cAAA,gBAEAA,EAAA,iBAAA,mBAEAA,EAAA,cAAA,gBAEAA,EAAA,eAAA,iBAEAA,EAAA,oBAAA,sBAEAA,EAAA,YAAA,cAEAA,EAAA,YAAA,cAEAA,EAAA,oBAAA,sBAEAA,EAAA,cAAA,gBAEAA,EAAA,gBAAA,kBAEAA,EAAA,aAAA,eAEAA,EAAA,eAAA,iBAEAA,EAAA,qBAAA,uBAEAA,EAAA,oBAAA,sBAEAA,EAAA,aAAA,eAEAA,EAAA,UAAA,YAEAA,EAAA,kBAAA,oBAEAA,EAAA,cAAA,gBAEAA,EAAA,WAAA,aAEAA,EAAA,oBAAA,sBAEAA,EAAA,YAAA,cAEAA,EAAA,cAAA,gBAEAA,EAAA,cAAA,gBAEAA,EAAA,iBAAA,mBAEAA,EAAA,cAAA,gBAEAA,EAAA,eAAA,iBAEAA,EAAA,oBAAA,sBAEAA,EAAA,YAAA,cAEAA,EAAA,YAAA,cAEAA,EAAA,oBAAA,sBAEAA,EAAA,cAAA,gBAEAA,EAAA,gBAAA,kBAEAA,EAAA,aAAA,eAEAA,EAAA,eAAA,iBAEAA,EAAA,qBAAA,uBAEAA,EAAA,oBAAA,sBAEAA,EAAA,aAAA,eAEAA,EAAA,UAAA,YAEAA,EAAA,kBAAA,oBAEAA,EAAA,cAAA,gBAEAA,EAAA,WAAA,aAEAA,EAAA,MAAA,QAEAA,EAAA,OAAA,SAEAA,EAAA,kBAAA,oBAEAA,EAAA,UAAA,YAEAA,EAAA,YAAA,cAEAA,EAAA,YAAA,cAEAA,EAAA,eAAA,iBAEAA,EAAA,YAAA,cAEAA,EAAA,aAAA,eAEAA,EAAA,kBAAA,oBAEAA,EAAA,UAAA,YAEAA,EAAA,UAAA,YAEAA,EAAA,kBAAA,oBAEAA,EAAA,YAAA,cAEAA,EAAA,cAAA,gBAEAA,EAAA,WAAA,aAEAA,EAAA,aAAA,eAEAA,EAAA,mBAAA,qBAEAA,EAAA,kBAAA,oBAEAA,EAAA,WAAA,aAEAA,EAAA,QAAA,UAEAA,EAAA,gBAAA,kBAEAA,EAAA,YAAA,cAEAA,EAAA,SAAA,WAEAA,EAAA,WAAA,aAEAA,EAAA,oBAAA,sBAEAA,EAAA,YAAA,cAEAA,EAAA,cAAA,gBAEAA,EAAA,cAAA,gBAEAA,EAAA,iBAAA,mBAEAA,EAAA,cAAA,gBAEAA,EAAA,eAAA,iBAEAA,EAAA,oBAAA,sBAEAA,EAAA,YAAA,cAEAA,EAAA,qBAAA,uBAEAA,EAAA,YAAA,cAEAA,EAAA,oBAAA,sBAEAA,EAAA,cAAA,gBAEAA,EAAA,gBAAA,kBAEAA,EAAA,aAAA,eAEAA,EAAA,eAAA,iBAEAA,EAAA,qBAAA,uBAEAA,EAAA,oBAAA,sBAEAA,EAAA,aAAA,eAEAA,EAAA,UAAA,YAEAA,EAAA,kBAAA,oBAEAA,EAAA,cAAA,gBAEAA,EAAA,WAAA,aA1LUA,CA2LZ,EA3LYA,KAAUb,EAAAa,WAAVA,GAAU,CAAA,EAAA,EA0gDVC,GAAZ,SAAYA,EAAS,CACnBA,OAAAA,EAAA,IAAA,MACAA,EAAA,KAAA,OAFUA,CAGZ,EAHYA,KAASd,EAAAc,UAATA,GAAS,CAAA,EAAA,EAuGTC,GAAZ,SAAYA,EAAiB,CAC3BA,OAAAA,EAAA,WAAA,aACAA,EAAA,WAAA,aACAA,EAAA,aAAA,eACAA,EAAA,QAAA,UACAA,EAAA,OAAA,SACAA,EAAA,KAAA,OANUA,CAOZ,EAPYA,KAAiBf,EAAAe,kBAAjBA,GAAiB,CAAA,EAAA,ICn8L7B,IAAAC,GAA0B,SCG1B,IAAAC,GAAgC,SAChCC,GAAmC,SCb7B,SAAUC,GAAYC,EAAmCC,EAAgBC,EAAe,CAC1F,GAAI,CAACF,EACD,MAAO,GAEX,IAAMG,EAAYH,EAAOI,YAAYH,CAAM,EAC3C,GAAIE,IAAc,GACd,OAAOH,EAEX,IAAMK,EAAOL,EAAOM,OAAO,EAAGH,CAAS,EACjCI,EAAOP,EAAOM,OAAOH,CAAS,EAAED,QAAQD,EAAQC,CAAO,EAC7D,OAAOG,EAAOE,CAClB,CDiBA,IAAaC,IAAoB,IAAA,CAA3B,MAAOA,CAAoB,CAC7BC,YAAoBC,EAAwB,CAAxB,KAAAA,YAAAA,CAA2B,CAE/CC,kBAAgB,CACZ,OAAO,KAAKD,YAAYE,SACnBD,iBAAgB,EAChBE,UAAUC,GAAQA,EAAKC,cAAcC,KAAK,EAC1CC,KAAKC,GAAY,CAAC,CAAC,CAC5B,CAEAC,0BACIC,EACAC,EACAC,EAA0B,CAE1B,IAAMC,EAAiB,KAAKb,YAAYc,QAAQC,cAAcL,CAAK,EAC7DM,EAAuBL,EAAqBM,OAAOC,OAAOC,GAAK,EAAIA,EAAEC,OAAOC,MAAM,EAClFC,EAAsB,KAAKC,0BAA0BP,EAAsBJ,CAAY,EAE7F,OAAOY,GAASX,EAAgBS,CAAmB,EAAEf,KACjDkB,GAAS,CAAC,CAAC,CAAEV,cAAAA,CAAa,EAAIW,CAAY,KACTA,EAAaL,OACpCG,GACIE,EAAaC,IAAIC,GACb,KAAK5B,YAAYc,QAAQe,wBAAwB,CAC7CC,UAAWf,EAAcgB,GACzBC,cAAeJ,EAAYG,GAC9B,CAAC,CACL,EAELE,GAAG,CAAA,CAAE,GACiB1B,KAAKoB,EAAI,KAAO,CAAEZ,cAAAA,EAAeW,aAAAA,CAAY,EAAG,CAAC,CAChF,EACDD,GAAS,CAAC,CAAEV,cAAAA,EAAeW,aAAAA,CAAY,IAAM,CACzC,IAAMQ,EAAWvB,EAAqBuB,SAASP,IAAIQ,GAAI,CACnD,IAAMC,GAAYV,EAAaL,OACzBc,EAAEE,aAAaV,IAAI,CAACW,GAAYC,KAAS,CACrC,IAAMC,GAASd,EAAaa,EAAK,EAAEE,QAAQC,KAAKC,IAAKA,GAAEC,OAASN,EAAU,EAC1E,GAAI,CAACE,GACD,MAAM,IAAIK,MACN,4CAA4CP,EAAU,yBAAyB,EAGvF,OAAOE,GAAOT,EAClB,CAAC,EACD,CAAA,EACN,OAAOe,GAAAC,EAAA,GACAZ,GADA,CAEHC,UAAAA,IAER,CAAC,EACKK,EAAUf,EAAaC,IAAIqB,GAAMA,EAAGP,OAAO,EAAEQ,OAAO,CAACC,EAAMP,KAAM,CAAC,GAAGO,EAAM,GAAGP,EAAC,EAAG,CAAA,CAAE,EAC1F,OAAO,KAAKQ,sBACRpC,EACAmB,EACAO,EACA7B,EACAD,EAAqByC,eAAe,CAE5C,CAAC,CAAC,CAEV,CAEA7B,0BAA0BN,EAAmDL,EAA0B,CACnG,OAAOK,EAAOI,OACRG,GACIP,EAAOU,IAAI0B,GACP,KAAKrD,YAAYc,QACZS,0BAA0B,CACvB+B,QAAMC,oBAAgBF,EAAET,KAAM,GAAG,EACjCY,aAAc,CAAC,CAAE5C,aAAAA,EAAcgC,KAAMS,EAAET,IAAI,CAAE,EAC7CH,QAASY,EAAEjC,OAAOO,IAAIQ,IAAM,CACxBmB,QAAMC,oBAAgBpB,EAAG,GAAG,EAC5BqB,aAAc,CAAC,CAAE5C,aAAAA,EAAcgC,KAAMT,CAAC,CAAE,GAC1C,EACL,EACA5B,KAAKoB,EAAIvB,GAAQA,EAAKqD,wBAAwB,CAAC,CAAC,CACxD,EAELxB,GAAG,CAAA,CAAE,CACf,CAEAkB,sBACIrC,EACA4C,EACAjB,EACA7B,EACAwC,EAAuB,CAEvB,IAAMlB,EAAwCwB,EAAY/B,IAAIQ,GAAI,CAC9D,IAAMS,EAAOH,EAAQpB,OACf,GAAGP,EAAQ8B,IAAI,IAAIT,EAAEC,UAChBT,IAAII,GAAMU,EAAQC,KAAKC,GAAKA,EAAEZ,KAAOA,CAAE,CAAC,EACxCb,OAAOyC,qBAAkB,EACzBhC,IAAIgB,GAAKA,EAAEC,IAAI,EACfgB,KAAK,GAAG,CAAC,GACd9C,EAAQ8B,KACd,MAAO,CACHd,UAAWhB,EAAQiB,GACnB8B,MAAO1B,EAAE0B,MACTC,IAAK3B,EAAE2B,IACPN,aAAc,CACV,CACI5C,aAAAA,EACAgC,KAAAA,EACH,EAELmB,YAAa,CACT,CACIX,gBAAAA,EACAY,YAAa7B,EAAE8B,MAClB,EAEL7B,UAAWD,EAAEC,UAErB,CAAC,EACD,OAAO,KAAKpC,YAAYc,QAAQqC,sBAAsBjB,CAAQ,EAAE3B,KAC5DoB,EAAI,CAAC,CAAEwB,sBAAAA,CAAqB,KAAQ,CAChCA,sBAAAA,EACArB,UAAWhB,EAAQiB,IACrB,CAAC,CAEX,CAEAmC,cAAcC,EAMb,CACG,GAAM,CAAErD,QAAAA,EAASF,aAAAA,EAAcwD,WAAAA,EAAYC,aAAAA,EAAcC,cAAAA,CAAa,EAAKH,EACrEI,EAA6F,CAAA,EAC7FC,EAAsBF,GAAiB,CAAA,EAQ7C,OANkBF,EACZ,KAAKpE,YAAYc,QACZ2D,6BAA6B,CAAA,EAAI3D,EAAQiB,EAAE,EAC3C5B,UAAU,CAAC,CAAEuE,gBAAAA,CAAe,IAAOA,EAAgBpE,KAAK,EAC7D2B,GAAG,CAAA,CAAE,GAEM1B,KACbkB,GAASS,GAAW,CAChB,GAAImC,EAAc,CACdE,EAAiBI,KAAK,KAAK3E,YAAYc,QAAQoD,cAAcG,CAAY,CAAC,EAC1E,IAAMO,EAAiBC,GAAgB/D,EAASF,CAAY,GAAGgC,MAAQ,GACjEkC,GAAiBD,GAAgBR,EAAczD,CAAY,GAAGgC,KACpE,GAAIkC,IAAkBF,IAAmBE,IAAkBV,EACvD,QAAWW,MAAW7C,EAAU,CAC5B,IAAM8C,GAAqBH,GAAgBE,GAASnE,CAAY,GAAGgC,MAAQ,GACvEqC,GACEC,GAAuBV,EAAoB9B,KAAKyC,IAAKA,GAAEpD,KAAOgD,GAAQhD,EAAE,EAC1EmD,GACAD,GAAeC,IAEfD,GAAe,CACXlD,GAAIgD,GAAQhD,GACZyB,aAAc,CAAC,CAAE5C,aAAAA,EAAcgC,KAAMoC,EAAkB,CAAE,GAE7DR,EAAoBG,KAAKM,EAAY,GAEzC,IAAMG,GAAqBP,GAAgBI,GAAcrE,CAAY,EACjEwE,KACIA,GAAmBxC,KACnBwC,GAAmBxC,KAAOyC,GACtBD,GAAmBxC,KACnBgC,EACAE,EAAc,EAMlBM,GAAmBxC,KAAO,CACtBkC,GACA,GAAGC,GAAQtC,QAAQd,IAAIgB,IAAKA,GAAEC,IAAI,CAAC,EACrCgB,KAAK,GAAG,EAGtB,CAER,CACA,OAAIY,EAAoBnD,QACpBkD,EAAiBI,KACb,KAAK3E,YAAYc,QAAQwE,sBAAsBd,CAAmB,CAAC,EAGpEhD,GAAS+C,CAAgB,CACpC,CAAC,CAAC,CAEV,CAEAgB,qBACIC,EACAC,EACA3E,EACAF,EAA0B,CAQ1B,OANkB6E,EACZ,KAAKzF,YAAYc,QACZ2D,6BAA6B,CAAA,EAAI3D,EAAQiB,EAAE,EAC3C5B,UAAU,CAAC,CAAEuE,gBAAAA,CAAe,IAAOA,EAAgBpE,KAAK,EAC7D2B,GAAG,CAAA,CAAE,GAEM1B,KACbkB,GAASS,GAAW,CAChB,IAAIwD,EAA8CzD,GAAG,CAAA,CAAE,EACvD,GAAIwD,EAAwB,CACxB,IAAME,EAAiB,IAAIC,IAE3B,QAAWlF,KAAS8E,EAAQ,CACxB,IAAMK,EAAgBhB,GAAgBnE,EAAOE,CAAY,GAAGgC,KACxDkD,GACJ,QAAWf,MAAW7C,EACd4D,IAGAf,GAAQtC,QAAQd,IAAIgB,IAAKA,GAAEZ,EAAE,EAAEgE,SAASrF,EAAMqB,EAAE,IAC3C+D,KACDA,GAAgBjB,GACZE,GAAQtC,QAAQC,KAAKC,IAAKA,GAAEZ,KAAOrB,EAAMqB,EAAE,EAC3CnB,CAAY,GACbgC,OAIXkD,IAAiBD,GACjBF,EAAeK,IAAIF,GAAeD,CAAa,CAEvD,CAEA,IAAMI,EAAgD,CAAA,EACtD,GAAIN,EAAeO,KAAM,CACrB,IAAMC,EAAiBC,MAAMC,KAAKV,EAAeW,KAAI,CAAE,EACvD,QAAWvB,KAAW7C,EAAU,CAC5B,IAAMqE,GAAc1B,GAAgBE,EAASnE,CAAY,GAAGgC,KAI5D,GAHI,CAAC2D,IAGD,CAACJ,EAAeK,KAAKV,IAAiBS,GAAYR,SAASD,EAAa,CAAC,EACzE,SAEJ,IAAMW,GAAqBN,EAAelD,OACtC,CAACL,GAAMkD,KACHT,GAAYzC,GAAMkD,GAAeH,EAAee,IAAIZ,EAAa,CAAE,EACvES,EAAW,EAEfN,EAAiBtB,KAAK,CAClB5C,GAAIgD,EAAQhD,GACZyB,aAAc,CACV,CACI5C,aAAAA,EACAgC,KAAM6D,GACT,EAER,CACL,CACJ,CACIR,EAAiB5E,OACjBqE,EACI,KAAK1F,YAAYc,QAAQwE,sBAAsBW,CAAgB,EAEnEP,EAA6BzD,GAAG,CAAA,CAAE,CAE1C,CACA,OAAOT,GACHgE,EAAO7D,IAAIjB,GAAS,KAAKV,YAAYc,QAAQ6F,oBAAoBjG,CAAK,CAAC,CAAC,EAC1EH,KAAKkB,GAAS,IAAMiE,CAA0B,CAAC,CACrD,CAAC,CAAC,CAEV,CAEAkB,qBAAqB7E,EAAYD,EAAiB,CAC9C,OAAO,KAAK9B,YAAYc,QAAQ8F,qBAAqB7E,CAAE,EAAExB,KACrDsG,EAAUC,GACFA,EAAOF,qBAAqBE,SAAWC,GAAeC,QAC/C,KAAKhH,YAAYc,QAAQmG,WAAWnF,CAAS,EAAEoF,QAE/CC,GAAWL,EAAOF,qBAAqBQ,OAAO,CAE5D,CAAC,CAEV,iDA1RStH,GAAoBuH,GAAAC,CAAA,CAAA,CAAA,CAAA,kCAApBxH,EAAoByH,QAApBzH,EAAoB0H,UAAAC,WAFjB,MAAM,CAAA,CAAA,SAET3H,CAAoB,GAAA,qCGLb4H,EAAA,EAAA,SAAA,CAAA,EAGIC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,KAAA,CAAM,CAAA,CAAA,EAGfC,EAAA,CAAA,mBACJC,EAAA,oBAHIC,EAAA,WAAAN,EAAAO,WAAAC,UAAAR,EAAAO,WAAAE,OAAA,EAEAC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,eAAA,EAAA,GAAA,6BAiCJC,EAAA,EAAA,EAAA,EACIC,EAAA,EAAA,2BAAA,EAAA,4DAEIJ,EAAA,EAAAJ,EAAA,eAAAN,EAAAe,uBAAA,EAAwC,wBAAAC,EAAAC,IAAA,cAAA,CAAA,EACiB,WAAA,CAAAL,EAAA,EAAA,EAAAZ,EAAAkB,gBAAA,CAAA,4BAkBrDd,EAAA,CAAA,oBAAAO,EAAA,IAAAQ,EAAAC,MAAAC,GAAA,GAAA,6BAKAjB,EAAA,CAAA,uCAAAO,EAAA,IAAAW,EAAA,EAAA,EAAAC,EAAAH,MAAAI,UAAA,OAAA,EAAA,GAAA,6BAKApB,EAAA,CAAA,uCAAAO,EAAA,IAAAW,EAAA,EAAA,EAAAG,EAAAL,MAAAM,UAAA,OAAA,EAAA,GAAA,6BAKAZ,EAAA,EAAA,QAAA,EAAA,iDAEIR,EAAA,cAAAqB,EAAAV,IAAA,MAAA,CAAA,EAAyC,WAAA,CAAAL,EAAA,EAAA,EAAAZ,EAAAkB,gBAAA,CAAA,4BAO7CJ,EAAA,EAAA,QAAA,EAAA,oBAAmBR,EAAA,cAAAsB,EAAAX,IAAA,MAAA,CAAA,6BAQnBH,EAAA,EAAA,2BAAA,EAAA,iDAEIR,EAAA,eAAAN,EAAA6B,kBAAA,EAAmC,UAAA,EAAA,EACnB,wBAAAC,EAAAb,IAAA,cAAA,CAAA,EAC2C,WAAA,CAAAL,EAAA,EAAA,EAAAZ,EAAAkB,gBAAA,CAAA,sCAjD3EtB,EAAA,EAAA,mBAAA,EAAA,EAOIC,EAAA,aAAA,SAAAkC,EAAA,CAAAjC,EAAAkC,CAAA,EAAA,IAAAhB,EAAAf,EAAA,EAAAgC,UAAAjC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAAF,EAAAkC,mBAAAlB,EAAAI,MAAAC,EAAA,EAAAc,YAAAJ,CAAA,CAAA,CAAA,EAA4E,qBAAA,SAAAA,EAAA,CAAAjC,EAAAkC,CAAA,EAAA,IAAAhB,EAAAf,EAAA,EAAAgC,UAAAjC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAAF,EAAAkC,mBAAAlB,EAAAI,MAAAC,EAAA,EAAAe,aAAAL,CAAA,CAAA,CAAA,EAI5EnC,EAAA,EAAA,iBAAA,EAAA,mBACIyC,EAAA,EAAAC,GAAA,EAAA,EAAA,aAAA,EAGJjC,EAAA,EACAT,EAAA,EAAA,iBAAA,EAAA,mBACIyC,EAAA,EAAAE,GAAA,EAAA,EAAA,aAAA,EAGJlC,EAAA,EACAT,EAAA,EAAA,iBAAA,EAAA,mBACIyC,EAAA,EAAAG,GAAA,EAAA,EAAA,aAAA,EAGJnC,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,oBACIyC,EAAA,GAAAI,GAAA,EAAA,EAAA,aAAA,EAOJpC,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,oBACIyC,EAAA,GAAAK,GAAA,EAAA,EAAA,aAAA,EAGJrC,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,oBAIIyC,EAAA,GAAAM,GAAA,EAAA,EAAA,aAAA,EASJtC,EAAA,EAAiB,8CAlDjBC,EAAA,QAAAsC,CAAA,EAAiB,cAAA,UAAA,EACS,eAAA5C,EAAAkC,mBAAAlB,EAAAI,MAAAC,EAAA,GAAA,KAAA,KAAArB,EAAAkC,mBAAAlB,EAAAI,MAAAC,EAAA,EAAAe,YAAA,EAC6C,cAAApC,EAAAkC,mBAAAlB,EAAAI,MAAAC,EAAA,GAAA,KAAA,KAAArB,EAAAkC,mBAAAlB,EAAAI,MAAAC,EAAA,EAAAc,WAAA,EACF,aAAAS,EAAAC,MAAA,EAKrDnC,EAAA,EAAAJ,EAAA,UAAAM,EAAA,EAAA,GAAA,WAAA,CAAA,EAAmC,kBAAA,EAAA,EAKnCF,EAAA,CAAA,EAAAJ,EAAA,UAAAM,EAAA,EAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EAK3CF,EAAA,CAAA,EAAAJ,EAAA,UAAAM,EAAA,EAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EAK3CF,EAAA,CAAA,EAAAJ,EAAA,UAAAM,EAAA,GAAA,GAAA,aAAA,CAAA,EAAqC,WAAA,EAAA,EASrCF,EAAA,CAAA,EAAAJ,EAAA,UAAAM,EAAA,GAAA,GAAA,aAAA,CAAA,EAAqC,WAAA,EAAA,EAMjDF,EAAA,CAAA,EAAAJ,EAAA,UAAAM,EAAA,GAAA,GAAA,sBAAA,CAAA,EAA8C,kBAAAZ,EAAA6B,mBAAAgB,SAAA,CAAA,6BA1E1DjD,EAAA,EAAA,WAAA,EAAA,EAKIkB,EAAA,EAAA,uBAAA,EAAA,EACAlB,EAAA,EAAA,MAAA,EAAA,EAAuB,EAAA,iBAAA,EAAA,mBAEfkB,EAAA,EAAA,QAAA,EAAA,uBAMJT,EAAA,EACAT,EAAA,EAAA,iBAAA,EAAA,mBACIkB,EAAA,EAAA,QAAA,EAAA,wBAMJT,EAAA,EAAiB,EAErBgC,EAAA,GAAAS,GAAA,EAAA,EAAA,eAAA,EAAA,EAAkF,GAAAC,GAAA,GAAA,GAAA,mBAAA,EAAA,EAgEtF1C,EAAA,2CAtFIC,EAAA,gBAAA0C,CAAA,EAAmB,QAAAhC,EAAAI,MAAA6B,IAAA,EAGGvC,EAAA,EAAAJ,EAAA,SAAAU,EAAAI,KAAA,EAEFV,EAAA,CAAA,EAAAJ,EAAA,QAAAM,EAAA,EAAA,GAAA,aAAA,CAAA,EAERF,EAAA,CAAA,EAAAJ,EAAA,KAAA,QAAA0C,CAAA,EAAkB,WAAA,CAAApC,EAAA,EAAA,GAAAZ,EAAAkB,gBAAA,CAAA,EAMVR,EAAA,CAAA,EAAAJ,EAAA,QAAAM,EAAA,EAAA,GAAA,aAAA,CAAA,EAERF,EAAA,CAAA,EAAAJ,EAAA,KAAA,QAAA0C,CAAA,EAAkB,WAAA,CAAApC,EAAA,GAAA,GAAAZ,EAAAkB,gBAAA,CAAA,EAOcR,EAAA,CAAA,EAAAJ,EAAA,OAAAN,EAAAe,wBAAA8B,MAAA,EAWvCnC,EAAA,EAAAJ,EAAA,OAAAN,EAAAkD,WAAAlC,CAAA,CAAA,6BArCjBpB,EAAA,EAAA,OAAA,CAAA,EAA0F,EAAA,MAAA,CAAA,EAElFyC,EAAA,EAAAc,GAAA,GAAA,GAAA,WAAA,CAAA,EAyFJ9C,EAAA,EAAM,kBA3FSC,EAAA,YAAAN,EAAAO,UAAA,EAGiBG,EAAA,CAAA,EAAAJ,EAAA,UAAAN,EAAAoD,gBAAA,CAAA,GDR5C,IAAaC,IAA8B,IAAA,CAArC,MAAOA,UAAsCC,EAAuC,CAWtFC,YACcC,EACAC,EACAC,EACAC,EACAC,EACFC,EACAC,EACAC,EACAC,EAAwC,CAEhD,MAAMR,EAAOC,EAAQC,EAAqBC,EAAaC,CAAkB,EAV/D,KAAAJ,MAAAA,EACA,KAAAC,OAAAA,EACA,KAAAC,oBAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,mBAAAA,EACF,KAAAC,qBAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,eAAAA,EACA,KAAAC,oBAAAA,EAbZ,KAAAC,uBAAyB,GACzB,KAAA/B,mBAA2F,CAAA,EAClF,KAAAhB,iBAAmB,CAACgD,EAAWC,cAAeD,EAAWE,aAAa,EAc3E,KAAKrD,wBAA0B,KAAKsD,qBAAqB,oBAAoB,EAC7E,KAAKxC,mBAAqB,KAAKwC,qBAAqB,eAAe,CACvE,CAEAC,UAAQ,CACJ,KAAKC,cAAgB,KAAKf,MAAMgB,SAASC,KAAKC,OAAOC,KACjDC,EAAKC,GAAgCA,EAAQC,YAAY,EACzDC,GAAKD,GAAoD,CACrD,QAAWE,KAASF,EAChB,KAAK5C,mBAAmB8C,EAAM3D,EAAE,EAAI,CAChCc,YAAa,EACbC,aAAc,GAG1B,CAAC,CAAC,EAEN,KAAK7B,WAAa,IAAI0E,GAAiB,CACnCH,aAAc,IAAII,GAAiB,CAAA,CAAE,EACxC,EACD,MAAMC,KAAI,CACd,CAEA/B,iBAAe,CAEX,OADqB,KAAK7C,WAAWU,IAAI,cAAc,EACbmE,QAC9C,CAEAlC,WAAWmC,EAA6B,CAEpC,OADgBA,EAAYpE,IAAI,SAAS,EACJmE,QACzC,CAEAjF,MAAI,CACA,GAAI,KAAKI,WAAWE,SAAW,KAAKF,WAAWC,SAC3C,OAGJ,IAAM8E,EAAW,KAAK3B,YAAYkB,QAAQU,WAAW,KAAKlE,EAAE,EAAEmE,UAAUf,GAAQA,EAAKI,OAAQ,EAC7FY,GAAc,KAAKC,QAAS,KAAKC,cAAeL,CAAQ,EACnDX,KACGiB,GAAK,CAAC,EACNC,GAAS,CAAC,CAAC,CAAEf,aAAAA,CAAY,EAAIgB,EAAcjB,CAAO,IAAK,CACnD,IAAMkB,EAA2C,CAAA,EAC3CC,EAAyD,CAAA,EAC/D,QAAWC,KAAmB,KAAK7C,gBAAe,EAAI,CAClD,GAAI6C,EAAgBC,MAAO,CACvB,IAAMC,EAAoBrB,EAAasB,KACnCC,GAAMA,EAAGhF,KAAO4E,EAAgB7E,MAAMC,EAAE,EAE5C,GAAI8E,EAAmB,CACnB,IAAMG,EAAQ,KAAKC,sBACfJ,EACAF,EACAH,CAAY,EAEhBC,EAAiBS,KACb,KAAK7C,YAAYkB,QAAQ4B,yBAAyBH,CAAK,CAAC,CAEhE,CACJ,CAEA,QAAWI,KAAc,KAAKxD,WAAW+C,CAAe,EACpD,GAAIS,EAAWR,MAAO,CAClB,IAAMb,EAAcP,EACfsB,KAAKC,GAAMA,EAAGhF,KAAO4E,EAAgB7E,MAAMC,EAAE,GAC5CsF,QAAQP,KAAKQ,GAAKA,EAAEvF,KAAOqF,EAAWtF,MAAMC,EAAE,EACpD,GAAIgE,EAAa,CACb,IAAMiB,EAAQ,KAAKO,iBACfxB,EACAqB,EACAZ,CAAY,EAEhBE,EAA2BQ,KAAKF,CAAK,CACzC,CACJ,CAER,CACA,OAAIN,EAA2BnD,QAC3BkD,EAAiBS,KACb,KAAK3C,qBAAqBiD,qBACtBd,EACA,KAAK/B,uBACLY,EACAiB,CAAY,CACf,EAGFiB,GAAShB,CAAgB,CACpC,CAAC,CAAC,EAELiB,UACG,IAAK,CACD,KAAKzG,WAAW0G,eAAc,EAC9B,KAAKlD,eAAemD,aAAY,EAChC,KAAKlD,oBAAoBmD,QAAU,+BAAiC,CAChEzC,OAAQ,qBACX,CACL,EACA0C,GAAM,CACF,KAAKpD,oBAAoBqD,MAAQ,6BAA+B,CAC5D3C,OAAQ,qBACX,CACL,CAAC,CAEb,CAEQ6B,sBACJlB,EACAiC,EACAxB,EAA0B,CAY1B,OAVcyB,GAA0B,CACpCC,aAAcnC,EACdoC,cAAeH,EAAqBlG,MACpCsG,kBAAmB,KAAK3G,wBACxB+E,aAAAA,EACA6B,mBAAoB,CAChB7B,aAAAA,EACA8B,KAAMvC,EAAYuC,MAAQ,IAEjC,CAEL,CAEQf,iBACJgB,EACAC,EACAhC,EAA0B,CAY1B,OAVcyB,GAA0B,CACpCC,aAAcK,EACdJ,cAAeK,EAAgB1G,MAC/BsG,kBAAmB,KAAK7F,mBACxBiE,aAAAA,EACA6B,mBAAoB,CAChB7B,aAAAA,EACA8B,KAAMC,EAAOD,MAAQ,IAE5B,CAEL,CAEUG,cAAcrD,EAA4BoB,EAA0B,CAC1E,IAAMkC,EAAa,KAAKzH,WAAWU,IAAI,cAAc,EACrD,QAAWoE,KAAeX,EAAOI,aAAc,CAC3C,IAAMmD,EAAmBC,GAAgB7C,EAAaS,CAAY,EAE5DqC,EAAY,KAAKC,mBAAmB/C,EAAa2C,EAAYC,CAAgB,EACnF,KAAKI,oBAAoB,KAAKtH,wBAAyBoH,EAAW9C,EAAa4C,CAAgB,EAE/F,IAAIK,EAAcH,EAAUlH,IAAI,SAAS,EACpCqH,IACDA,EAAc,KAAKxE,YAAYyE,MAAM,CAAA,CAAE,EACvCJ,EAAUK,WAAW,UAAWF,CAAW,GAE/C,QAAWT,KAAUxC,EAAYsB,QAAS,CACtC,IAAM8B,EAAoBP,GAAgBL,EAAQ/B,CAAY,EACxDY,EAAa,KAAKgC,cAAcb,EAAQS,EAAaG,CAAiB,EAE5E,KAAKJ,oBAAoB,KAAKxG,mBAAoB6E,EAAYmB,EAAQY,CAAiB,CAC3F,CACJ,CACJ,CAEUJ,oBAGNM,EACAC,EACAlE,EACAmE,EAAqC,CAErC,GAAIF,EAAa9F,OAAQ,CACrB,IAAIiG,EAAyBF,EAAU3H,IAAI,CAAC,cAAc,CAAC,EACtD6H,IACDA,EAAyB,KAAKhF,YAAYkB,MACtC2D,EAAaI,OAAO,CAACC,EAAMC,IAAWC,GAAAC,EAAA,GAAKH,GAAL,CAAW,CAACC,EAAMrB,IAAI,EAAG,EAAE,GAAK,CAAA,CAAE,CAAC,EAE7EgB,EAAUJ,WAAW,eAAgBM,CAAsB,GAE/D,KAAKM,yBAAyBT,EAAcG,EAAwBpE,EAAQmE,CAAkB,CAClG,CACJ,CAEUT,mBACN1D,EACAsD,EACAa,EAAyE,CAEzE,IAAM7D,EAAQ,CACV3D,GAAIqD,EAAOrD,GACXG,UAAWkD,EAAOlD,UAClBE,UAAWgD,EAAOhD,UAClBuB,KAAMyB,EAAOzB,KACb2E,KAAMiB,GAAoBjB,MAAQ,IAElCO,EAAYH,EAAW5C,SAASgB,KAAKiD,GAAWA,EAAQjI,MAAMC,KAAOqD,EAAOrD,EAAE,EAGlF,OAAI8G,GACAA,EAAUlH,IAAI,IAAI,GAAGqI,SAAStE,EAAM3D,EAAE,EACtC8G,EAAUlH,IAAI,MAAM,GAAGqI,SAAStE,EAAM/B,IAAI,EAC1CkF,EAAUlH,IAAI,MAAM,GAAGqI,SAAStE,EAAM4C,IAAI,EAC1CO,EAAUlH,IAAI,WAAW,GAAGqI,SAAStE,EAAMxD,SAAS,EACpD2G,EAAUlH,IAAI,WAAW,GAAGqI,SAAStE,EAAMtD,SAAS,IAEpDyG,EAAY,KAAKrE,YAAYkB,MAAMA,CAAK,EACxCgD,EAAWxB,KAAK2B,CAAS,GAEtBA,CACX,CAEUO,cACNhE,EACA4D,EACAO,EAAuF,CAEvF,IAAM7D,EAAQ,CACV3D,GAAIqD,EAAOrD,GACXG,UAAWkD,EAAOlD,UAClBE,UAAWgD,EAAOhD,UAClBuB,KAAMyB,EAAOzB,KACb2E,KAAMiB,GAAoBjB,MAAQ,IAElClB,EAAa4B,EAAYlD,SAASgB,KAAKiD,GAAWA,EAAQjI,MAAMC,KAAOqD,EAAOrD,EAAE,EAGpF,OAAIqF,GACAA,EAAWzF,IAAI,IAAI,GAAGqI,SAAStE,EAAM3D,EAAE,EACvCqF,EAAWzF,IAAI,MAAM,GAAGqI,SAAStE,EAAM/B,IAAI,EAC3CyD,EAAWzF,IAAI,MAAM,GAAGqI,SAAStE,EAAM4C,IAAI,EAC3ClB,EAAWzF,IAAI,WAAW,GAAGqI,SAAStE,EAAMxD,SAAS,EACrDkF,EAAWzF,IAAI,WAAW,GAAGqI,SAAStE,EAAMtD,SAAS,IAErDgF,EAAa,KAAK5C,YAAYkB,MAAMA,CAAK,EACzCsD,EAAY9B,KAAKE,CAAU,GAExBA,CACX,iDArQSrD,GAA6BkG,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,CAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,EAAAN,EAAAO,EAAA,EAAAP,EAAAQ,EAAA,EAAAR,EAAAS,CAAA,CAAA,CAAA,CAAA,+BAA7B3G,EAA6B4G,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,EAAA,qBAAA,yBAAA,qBAAA,EAAA,CAAA,EAAA,OAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,cAAA,GAAA,OAAA,WAAA,KAAA,cAAA,EAAA,gBAAA,SAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,WAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,QAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,cAAA,EAAA,QAAA,UAAA,EAAA,CAAA,EAAA,OAAA,EAAA,WAAA,EAAA,CAAA,gBAAA,cAAA,EAAA,CAAA,EAAA,gBAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,gBAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,OAAA,OAAA,kBAAA,OAAA,EAAA,KAAA,UAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,OAAA,OAAA,kBAAA,OAAA,EAAA,KAAA,UAAA,EAAA,CAAA,gBAAA,eAAA,EAAA,MAAA,EAAA,CAAA,KAAA,oBAAA,EAAA,QAAA,cAAA,eAAA,cAAA,aAAA,aAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,cAAA,EAAA,CAAA,aAAA,qBAAA,EAAA,eAAA,wBAAA,UAAA,EAAA,CAAA,KAAA,oBAAA,EAAA,aAAA,qBAAA,QAAA,cAAA,eAAA,cAAA,YAAA,EAAA,CAAA,KAAA,KAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,KAAA,OAAA,EAAA,UAAA,UAAA,EAAA,CAAA,KAAA,OAAA,EAAA,UAAA,UAAA,EAAA,CAAA,KAAA,gBAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,OAAA,OAAA,EAAA,cAAA,UAAA,EAAA,CAAA,OAAA,OAAA,EAAA,aAAA,EAAA,CAAA,aAAA,gBAAA,EAAA,eAAA,UAAA,wBAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICpC1C7K,EAAA,EAAA,iBAAA,EACIkB,EAAA,EAAA,gBAAA,EACAlB,EAAA,EAAA,6BAAA,EAA6BQ,EAAA,CAAA,mBAA2DC,EAAA,EAA8B,EAE1HT,EAAA,EAAA,eAAA,EAAe,EAAA,gBAAA,EACK,EAAA,gBAAA,EACI,EAAA,aAAA,EACC,EAAA,wBAAA,CAAA,8BAILC,EAAA,qBAAA,SAAAkC,EAAA,CAAA,OAAsB2I,EAAAC,YAAA5I,CAAA,CAAmB,CAAA,EAC5C1B,EAAA,EAAwB,EAG7BT,EAAA,GAAA,cAAA,EAAc,GAAA,MAAA,CAAA,EACe,GAAA,MAAA,CAAA,EACH,GAAA,sBAAA,EACQ,GAAA,QAAA,CAAA,EAKdgL,GAAA,gBAAA,SAAA7I,EAAA,CAAA8I,OAAAC,GAAAJ,EAAAzG,uBAAAlC,CAAA,IAAA2I,EAAAzG,uBAAAlC,GAAAA,CAAA,CAAA,EAJJ1B,EAAA,EAMAT,EAAA,GAAA,OAAA,EAAOQ,EAAA,EAAA,oBAA4DC,EAAA,EAAQ,EACxD,EAE3BgC,EAAA,GAAA0I,GAAA,EAAA,EAAA,SAAA,CAAA,EAQJ1K,EAAA,EAAM,EACK,EACF,EAErBT,EAAA,GAAA,gBAAA,EACIyC,EAAA,GAAA2I,GAAA,EAAA,EAAA,OAAA,CAAA,gBA6FJ3K,EAAA,EAAiB,SApIYK,EAAA,CAAA,EAAAuK,EAAArK,EAAA,EAAA,EAAA,yCAAA,CAAA,EAObF,EAAA,CAAA,EAAAJ,EAAA,yBAAAM,EAAA,GAAA,EAAA8J,EAAAQ,mBAAA,CAAA,EAAsD,sBAAAtK,EAAA,GAAA,GAAA8J,EAAA/E,aAAA,CAAA,EAc1CjF,EAAA,CAAA,EAAAyK,GAAA,UAAAT,EAAAzG,sBAAA,EAEGvD,EAAA,CAAA,EAAAuK,EAAArK,EAAA,GAAA,GAAA,0CAAA,CAAA,EAIVF,EAAA,CAAA,EAAAJ,EAAA,mBAAAoK,EAAAxJ,gBAAA,EAY4BR,EAAA,CAAA,EAAAJ,EAAA,OAAAM,EAAA,GAAA,GAAA8J,EAAAnG,aAAA,CAAA;wGDLxClB,CAA8B,GAAA,EEpB3C,IAAA+H,GAAgC,SAChCC,GAAuB,SEPvB,IAAAC,GAAgC,gCCT5BC,EAAA,CAAA,yBAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,qCAAA,EAAA;CAAA,qCAkBAC,EAAA,EAAA,SAAA,CAAA,EAAkCC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,OAAA,CAAQ,CAAA,CAAA,EAAEV,EAAA,CAAA,mBAAiCW,EAAA,EACtFR,EAAA,EAAA,SAAA,CAAA,EAAsBC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAK,QAAA,CAAS,CAAA,CAAA,EACpCZ,EAAA,CAAA,mBACJW,EAAA,oBAHqDE,EAAA,EAAAC,EAAAZ,EAAA,EAAA,EAAA,eAAA,CAAA,EACaW,EAAA,CAAA,EAAAE,EAAA,WAAAR,EAAAS,KAAAC,OAAA,EAC9DJ,EAAA,EAAAZ,EAAA,IAAAC,EAAA,EAAA,EAAA,gBAAA,EAAA,GAAA,GDFR,IAAagB,IAAuC,IAAA,CAA9C,MAAOA,CAAuC,CAOhDC,YAAoBC,EAAwB,CAAxB,KAAAA,YAAAA,EAJpB,KAAAJ,KAAO,KAAKI,YAAYC,MAAM,CAC1BC,KAAM,CAAC,GAAIC,GAAWC,QAAQ,EAC9BC,KAAM,CAAC,GAAIF,GAAWC,QAAQ,EACjC,CAC8C,CAE/CE,YAAU,CACN,IAAMC,EAAc,KAAKX,KAAKY,IAAI,MAAM,EAClCC,EAAc,KAAKb,KAAKY,IAAI,MAAM,EACpCD,GAAeE,GAAeA,EAAYC,UAC1CD,EAAYE,YAASC,oBAAgB,GAAGL,EAAYM,KAAK,GAAI,GAAG,CAAC,CAEzE,CAEArB,SAAO,CACH,GAAM,CAAEU,KAAAA,EAAMG,KAAAA,CAAI,EAAK,KAAKT,KAAKiB,MAC7B,CAACX,GAAQ,CAACG,GAGd,KAAKS,YAAY,CACbT,KAAAA,EACAU,QAAS,CAAA,EACTC,aAAc,CAAC,CAAEC,aAAc,KAAKA,aAAcf,KAAAA,CAAI,CAAE,EAC3D,CACL,CAEAZ,QAAM,CACF,KAAKwB,YAAW,CACpB,iDA/BShB,GAAuCoB,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAvCrB,EAAuCsB,UAAA,CAAA,CAAA,wCAAA,CAAA,EAAAC,WAAA,GAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,KAAA,OAAA,OAAA,OAAA,kBAAA,OAAA,EAAA,OAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,KAAA,OAAA,OAAA,OAAA,kBAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,cAAA,EAAA,QAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICnBpDE,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,EAGA9C,EAAA,EAAA,MAAA,CAAA,EAA0C,EAAA,iBAAA,CAAA,mBAElCA,EAAA,EAAA,QAAA,CAAA,EAAoDC,EAAA,QAAA,UAAA,CAAA,OAAS2C,EAAArB,WAAA,CAAY,CAAA,EAAzEf,EAAA,EAA6E,EAEjFR,EAAA,EAAA,iBAAA,CAAA,mBAII+C,EAAA,EAAA,QAAA,CAAA,EAKJvC,EAAA,EAAiB,EAErBqC,EAAA,EAAAG,GAAA,EAAA,EAAA,cAAA,CAAA,SAfuBtC,EAAA,EAAAE,EAAA,YAAAgC,EAAA/B,IAAA,EACHH,EAAA,EAAAE,EAAA,QAAAb,EAAA,EAAA,EAAA,aAAA,CAAA,EAIZW,EAAA,CAAA,EAAAE,EAAA,QAAAb,EAAA,EAAA,EAAA,aAAA,CAAA,0FDWKgB,CAAuC,GAAA,EEXpD,IAAAkC,GAAmC,gCCP/BC,EAAA,CAAA,yBAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,gCAAA,EAAA;CAAA,4BAIIC,EAAA,EAAA,iBAAA,CAAA,EACIC,EAAA,EAAA,YAAA,EAAA,EAGJC,EAAA,0BAJgBC,EAAA,QAAAC,EAAAC,IAAA,EACDC,EAAA,EAAAH,EAAA,QAAAC,EAAAG,OAAA,EAA6B,kBAAAH,EAAAI,IAAA,0BAI5CR,EAAA,EAAA,YAAA,EAAA,EAC2B,EAAA,gBAAA,EACP,EAAA,OAAA,EAAA,EAERH,EAAA,CAAA,mBACJK,EAAA,EAAO,EACM,SANuDC,EAAA,mBAAA,EAAA,EAIhEG,EAAA,CAAA,EAAAR,EAAA,IAAAC,EAAA,EAAA,EAAA,gDAAA,EAAA,GAAA,6BAKhBC,EAAA,EAAA,MAAA,EAAA,EAA0C,EAAA,YAAA,EAAA,EACgC,EAAA,gBAAA,EAClD,EAAA,OAAA,EAAA,EAERH,EAAA,CAAA,mBAGJK,EAAA,EAAO,EACM,EACT,kBARsBI,EAAA,EAAAH,EAAA,mBAAA,EAAA,EAGtBG,EAAA,CAAA,EAAAG,GAAA,IAAAV,EAAA,EAAA,EAAA,gCAAA,EAAA,KAAAW,EAAAC,gBAAAN,KAAA,KAAAK,EAAAC,gBAAAC,IAAA,IAAA,sCAoBhBZ,EAAA,EAAA,SAAA,EAAA,EAAkCa,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAL,EAAAM,EAAA,EAAA,OAAAC,EAASP,EAAAQ,OAAA,CAAQ,CAAA,CAAA,EAAErB,EAAA,CAAA,mBAAiCK,EAAA,EACtFF,EAAA,EAAA,SAAA,EAAA,EAAsBa,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAL,EAAAM,EAAA,EAAA,OAAAC,EAASP,EAAAS,QAAA,CAAS,CAAA,CAAA,EAEpCtB,EAAA,CAAA,mBACJK,EAAA,oBAJqDI,EAAA,EAAAc,EAAArB,EAAA,EAAA,EAAA,eAAA,CAAA,EAEjDO,EAAA,CAAA,EAAAH,EAAA,WAAAO,EAAAW,KAAAC,SAAAZ,EAAAC,iBAAAD,EAAAa,QAAAC,aAAAC,SAAA,CAAA,EACAnB,EAAA,EAAAR,EAAA,IAAAC,EAAA,EAAA,EAAA,gBAAA,EAAA,GAAA,GD7BR,IAAa2B,IAAmC,IAAA,CAA1C,MAAOA,CAAmC,CAY5CC,YAAoBC,EAAwB,CAAxB,KAAAA,YAAAA,EATpB,KAAAP,KAAO,KAAKO,YAAYC,MAAM,CAC1BxB,KAAM,CAAC,GAAIyB,GAAWC,QAAQ,EAC9BnB,IAAK,CAAC,EAAE,EACRoB,MAAO,CAAC,EAAE,EACVzB,QAAS,KAAKqB,YAAYK,OAAe,CAAA,CAAE,EAC9C,CAI8C,CAE/CC,UAAQ,CACJ,KAAKC,aAAe,KAAKZ,QAAQa,SAAS,CAAC,GAAGD,aAC9C,QAAWE,KAAe,KAAKd,QAAQC,aAClC,KAAKH,KAAKiB,IAAI,SAAS,EAAiBC,WACrCF,EAAY7B,KACZ,IAAIgC,GAAY,GAAIV,GAAWC,QAAQ,CAAC,EAG1B,KAAKV,KAAKiB,IAAI,SAAS,EAC/BG,aAAaC,UAAUC,GAAQ,CACzC,IAAMC,EAAc,KAAKvB,KAAKiB,IAAI,MAAM,EAExC,GAAI,CADYO,OAAOC,OAAOH,CAAK,EAAEI,MAAMC,GAAKA,GAAK,IAAI,GACzCL,GAASC,GAAe,CAACA,EAAYK,MAAO,CACxD,IAAM5C,EAAOwC,OAAOK,QAAQP,CAAK,EAC5BQ,IACG,CAAC,CAACC,EAAWC,CAAQ,IACjB,KAAK9B,QAAQC,aACR8B,KAAKC,GAAMA,EAAG/C,OAAS4C,CAAS,GAC/B7C,QAAQ+C,KAAKE,GAAKA,EAAEC,KAAOJ,CAAQ,GAAGhD,IAAI,EAEvDqD,KAAK,GAAG,EACbd,EAAYe,SAAS,GAAG,KAAKpC,QAAQlB,IAAI,IAAIA,CAAI,EAAE,CACvD,CACoBwC,OAAOC,OAAOH,CAAK,EAAEI,MAAMC,GAAKA,GAAK,IAAI,IAEzD,KAAKrC,gBAAkB,KAAKY,QAAQa,SAASkB,KAAKN,GAC9CH,OAAOK,QAAQP,CAAK,EAAEI,MAClB,CAAC,CAACK,EAAWC,CAAQ,IACjBL,EAAEzC,QAAQ+C,KAAKE,GAAKA,EAAEI,UAAY,KAAKC,mBAAmBT,CAAS,CAAC,GAAGK,KACvEJ,CAAQ,CACf,EAGb,CAAC,CACL,CAEAlC,SAAO,CACH,GAAM,CAAEd,KAAAA,EAAMO,IAAAA,EAAKL,QAAAA,EAASyB,MAAAA,CAAK,EAAK,KAAKX,KAAKsB,MAChD,GAAI,CAACtC,GAAQ,CAACE,GAAWyB,GAAS,KAC9B,OAGJ,IAAM8B,EAAYjB,OAAOC,OAAOvC,CAAO,EAAEwD,OAAOC,qBAAkB,EAClE,KAAKC,YAAY,CACbC,UAAW,KAAK3C,QAAQkC,GACxB7C,IAAKA,GAAO,GACZoB,MAAOmC,OAAOnC,CAAK,EACnB8B,UAAAA,EACAM,aAAc,CACV,CACIC,aAAc,KAAK9C,QAAQ8C,aAC3BhE,KAAAA,EACH,EAER,CACL,CAEAa,QAAM,CACF,KAAK+C,YAAW,CACpB,CAEQK,mBAAmBb,EAAU,CACjC,OAAO,KAAKlC,QAAQC,aAAa8B,KAAKC,GAAMA,EAAGE,KAAOA,CAAE,GAAGjD,MAAQ,EACvE,CAEQqD,mBAAmBrD,EAAY,CACnC,OAAO,KAAKe,QAAQC,aAAa8B,KAAKC,GAAMA,EAAG/C,OAASA,CAAI,GAAGiD,IAAM,EACzE,iDAjFS/B,GAAmC6C,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAnC9C,EAAmC+C,UAAA,CAAA,CAAA,mCAAA,CAAA,EAAAC,WAAA,GAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,gBAAA,UAAA,EAAA,WAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,eAAA,UAAA,QAAA,iBAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,OAAA,EAAA,MAAA,EAAA,CAAA,EAAA,YAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,OAAA,kBAAA,MAAA,EAAA,CAAA,OAAA,OAAA,kBAAA,KAAA,EAAA,CAAA,OAAA,QAAA,kBAAA,QAAA,EAAA,cAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,YAAA,OAAA,YAAA,KAAA,WAAA,OAAA,EAAA,QAAA,iBAAA,EAAA,CAAA,eAAA,UAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,eAAA,UAAA,EAAA,GAAA,EAAA,kBAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,cAAA,EAAA,QAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICjBhDE,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,EAGAlF,EAAA,EAAA,OAAA,CAAA,EAAyB,EAAA,MAAA,CAAA,EAEjBiF,EAAA,EAAAE,GAAA,EAAA,EAAA,iBAAA,CAAA,EAA4F,EAAAC,GAAA,EAAA,EAAA,YAAA,CAAA,EAahGlF,EAAA,EACA+E,EAAA,EAAAI,GAAA,EAAA,EAAA,MAAA,CAAA,EAWArF,EAAA,EAAA,MAAA,CAAA,EAA4B,EAAA,iBAAA,CAAA,mBAEpBC,EAAA,EAAA,QAAA,CAAA,EACJC,EAAA,EACAF,EAAA,GAAA,iBAAA,CAAA,oBACIC,EAAA,GAAA,QAAA,CAAA,EACJC,EAAA,EACAF,EAAA,GAAA,iBAAA,CAAA,oBACIC,EAAA,GAAA,qBAAA,EAAA,EACJC,EAAA,EAAiB,EACf,EAEV+E,EAAA,GAAAK,GAAA,EAAA,EAAA,cAAA,EAAA,SAvCMhF,EAAA,EAAAH,EAAA,YAAA6E,EAAA3D,IAAA,EAEqEf,EAAA,CAAA,EAAAH,EAAA,UAAA6E,EAAAzD,QAAAC,YAAA,EAKvDlB,EAAA,EAAAH,EAAA,OAAA6E,EAAAzD,QAAAC,aAAAC,SAAA,CAAA,EASVnB,EAAA,EAAAH,EAAA,OAAA6E,EAAArE,eAAA,EAYcL,EAAA,CAAA,EAAAH,EAAA,QAAAJ,EAAA,EAAA,EAAA,aAAA,CAAA,EAGAO,EAAA,CAAA,EAAAH,EAAA,QAAAJ,EAAA,GAAA,GAAA,aAAA,CAAA,EAGAO,EAAA,CAAA,EAAAH,EAAA,QAAAJ,EAAA,GAAA,GAAA,eAAA,CAAA,EACqBO,EAAA,CAAA,EAAAH,EAAA,eAAA6E,EAAA7C,YAAA,mHDrBhCT,CAAmC,GAAA,EEChD,IAAA6D,GAAuB,qFChBfC,EAAA,EAAA,WAAA,CAAA,EAMIC,EAAA,YAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAaF,EAAAG,aAAAP,CAAA,CAAoB,CAAA,CAAA,EAEjCF,EAAA,EAAA,OAAA,CAAA,EAAoC,EAAA,QAAA,EAAA,CAAA,EAK5BC,EAAA,OAAA,SAAAS,EAAA,CAAA,IAAAC,EAAAR,EAAAC,CAAA,EAAAQ,MAAAN,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAQF,EAAAO,aAAAF,EAAAD,CAAA,CAAuB,CAAA,CAAA,EAAC,QAAA,SAAAA,EAAA,CAAAI,OAAAX,EAAAC,CAAA,EAAAI,EAAAE,EAAAK,aACD,EAAI,CAAA,CAAA,EALvCC,EAAA,EAME,EAENhB,EAAA,EAAA,OAAA,EAAA,EAGIC,EAAA,QAAA,SAAAS,EAAA,CAAA,IAAAC,EAAAR,EAAAC,CAAA,EAAAQ,MAAAN,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAW,SAAAN,EAAAD,CAAA,CAAmB,CAAA,CAAA,EAAgCQ,EAAA,CAAA,EAAiBF,EAAA,EAAO,sDAjBxFG,EAAA,WAAAC,GAAAd,EAAAe,YAAA,EAAyC,SAAAnB,EAAAoB,MAAA,EADzCC,EAAA,OAAArB,EAAAoB,OAAA,OAAA,OAAA,EAAyC,YAAAhB,EAAAkB,SAAA,EAMnCC,EAAA,EAAAF,EAAA,SAAAjB,EAAAoB,eAAAf,CAAA,EAIEc,EAAA,EAAAF,EAAA,UAAArB,EAAAyB,IAAA,EAOJF,EAAA,CAAA,EAAAN,EAAA,WAAA,CAAAjB,EAAAoB,QAAA,CAAApB,EAAA0B,EAAA,EAC8BL,EAAA,SAAAjB,EAAAoB,eAAAf,CAAA,EAA8Bc,EAAA,EAAAI,EAAA3B,EAAAyB,IAAA,6BArBxE3B,EAAA,EAAA,MAAA,CAAA,EACI8B,EAAA,EAAAC,GAAA,EAAA,GAAA,WAAA,CAAA,EAsBJf,EAAA,kBArB2BS,EAAA,EAAAF,EAAA,UAAAjB,EAAA0B,YAAA,GDiBxB,IAAMC,GAA8C,CACvDC,QAASC,GACTC,YAAaC,GAAW,IAAMC,EAAyB,EACvDC,MAAO,IAiBED,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CAiBlC,IAAIN,cAAY,CACZ,OAAO,KAAKQ,WAAa,KAAKC,SAAW,CAAA,CAC7C,CAEAC,YAAoBC,EAAiC,CAAjC,KAAAA,eAAAA,EApBX,KAAAnB,UAAY,GAIX,KAAAoB,IAAM,IAAIC,GACV,KAAAC,OAAS,IAAID,GACb,KAAAE,KAAO,IAAIF,GACZ,KAAAG,SAAW,GACpB,KAAAC,MAAQ,GACR,KAAAC,WAAa,GACb,KAAA7B,aAAe,GAEf,KAAAK,aAAe,EAQyC,CAExDyB,iBAAiBC,EAAO,CACpB,KAAKC,WAAaD,CACtB,CAEAE,kBAAkBF,EAAO,CACrB,KAAKG,UAAYH,CACrB,CAEAI,iBAAiBC,EAAmB,CAChC,KAAKT,SAAWS,EAChB,KAAKd,eAAee,aAAY,CACpC,CAEAC,WAAWC,EAAQ,CACf,KAAKpB,UAAYoB,GAAO,CAAA,CAC5B,CAEAC,OAAK,CACD,KAAKC,SAASC,cAAcF,MAAK,CACrC,CAEA5C,SAASL,EAAeoD,EAAiB,CACrC,IAAMC,EAAc,KAAKjC,aAAapB,CAAK,EAC3C,GAAI,CAACqD,EAAY3C,QAAU,CAAC2C,EAAYrC,GAAI,CACxCoC,EAAMjD,aAAe,GACrB,KAAKW,aAAed,EACpB,IAAMqC,EAAQ,KAAKiB,WAAWC,IAAIvD,CAAK,GAAGmD,cAC1CK,WAAW,IAAMnB,GAAOY,MAAK,CAAE,CACnC,CACJ,CAEAhD,aAAaD,EAAeoD,EAAiB,CACzC,IAAMC,EAAc,KAAKjC,aAAapB,CAAK,EACrCyD,EAAWL,EAAMM,OAA4BC,MAC/CN,IACII,IACAJ,EAAYtC,KAAO0C,EACnB,KAAKtB,KAAKyB,KAAK,CAAE5D,MAAAA,EAAO6D,OAAQR,CAAW,CAAE,GAEjD,KAAKvC,aAAe,GAE5B,CAEAjB,aAAagE,EAAc,CAClBA,EAAOnD,SACJ,KAAKkB,WACL,KAAKA,UAAY,KAAKA,WAAWkC,OAAOC,GAAKA,EAAEhD,OAAS8C,EAAO9C,IAAI,EACnE,KAAK0B,WAAW,KAAKb,SAAS,GAE9B,KAAKM,OAAO0B,KAAKC,CAAM,EAGnC,CAEAG,UAAUZ,EAAoB,CAC1B,OAAQA,EAAMa,IAAG,CACb,IAAK,IACL,IAAK,QACD,KAAKC,eAAc,EACnBd,EAAMe,eAAc,EACpB,MACJ,IAAK,YACG,KAAK1D,cACL,KAAK2D,iBAAgB,EACrB,KAAK3D,aAAe,IACb,KAAK4B,QAAU,KACtB,KAAK5B,aAAe,IAExB,MACJ,QACI,KAAKA,aAAe,EAC5B,CACJ,CAEA4D,YAAU,CACN,KAAK/B,WAAa,GAClB,KAAK4B,eAAc,CACvB,CAEQA,gBAAc,CAClB,IAAMrC,EAAU,KAAKyC,sBAAsB,KAAKjC,KAAK,EAAEyB,OAAOD,GAInD,EADU,KAAKhC,SAAW,KAAKD,YACpB2C,KAAKR,GAAKA,GAAGhD,OAAS8C,EAAO9C,IAAI,CACtD,EACD,GAAI,CAAC,KAAKa,WAAa,KAAKC,QACxB,QAAWgC,KAAUhC,EACjB,KAAKG,IAAI4B,KAAKC,CAAM,OAGxB,KAAKjC,aAAY4C,WAAO,CAAC,GAAG,KAAK5C,UAAW,GAAGC,CAAO,CAAC,EACvD,KAAKY,WAAW,KAAKb,SAAS,EAElC,KAAKS,MAAQ,EACjB,CAEQiC,sBAAsBjC,EAAa,CACvC,OAAOA,EACFoC,MAAM,OAAO,EACbC,IAAIC,GAAKA,EAAEC,KAAI,CAAE,EACjBd,OAAOa,GAAKA,IAAM,EAAE,EACpBD,IAAIC,IAAM,CAAE5D,KAAM4D,EAAGjE,OAAQ,EAAK,EAAG,CAC9C,CAEQ0D,kBAAgB,CACpB,GAAI,KAAKhD,aAAayD,OAAQ,CAC1B,IAAMhB,EAAS,KAAKzC,aAAa,KAAKA,aAAayD,OAAS,CAAC,EAC7D,KAAKhF,aAAagE,CAAM,CAC5B,CACJ,iDArISnC,GAAyBoD,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAzBrD,EAAyBsD,UAAA,CAAA,CAAA,wBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,qBAGKE,EAAU,8NANtC,CAAC/D,EAAiC,CAAC,CAAA,EAAAgE,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,WAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,QAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,QAAA,QAAA,OAAA,gBAAA,UAAA,UAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,WAAA,SAAA,YAAA,YAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,YAAA,OAAA,WAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,OAAA,OAAA,EAAA,OAAA,QAAA,SAAA,EAAA,CAAA,EAAA,cAAA,EAAA,QAAA,QAAA,CAAA,EAAAC,SAAA,SAAAN,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCrClD9F,EAAA,EAAA,MAAA,CAAA,EAAsDC,EAAA,QAAA,UAAA,CAAAE,EAAAkG,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAA/F,EAAS8F,EAAAzC,MAAA,CAAgB,CAAA,CAAA,EAC3E/B,EAAA,EAAA0E,GAAA,EAAA,EAAA,MAAA,CAAA,EAwBAxG,EAAA,EAAA,WAAA,EAAA,CAAA,EAEIC,EAAA,QAAA,SAAAS,EAAA,CAAAI,OAAAX,EAAAkG,CAAA,EAAA7F,EAASuF,EAAAnB,UAAAlE,CAAA,CAAiB,CAAA,CAAA,EAAC,QAAA,UAAA,CAAAI,OAAAX,EAAAkG,CAAA,EAAA7F,EAAAuF,EAAA7C,WACL,EAAI,CAAA,CAAA,EAAC,OAAA,UAAA,CAAApC,OAAAX,EAAAkG,CAAA,EAAA7F,EACnBuF,EAAAd,WAAA,CAAY,CAAA,CAAA,EACpBwB,GAAA,gBAAA,SAAA/F,EAAA,CAAAI,OAAAX,EAAAkG,CAAA,EAAAK,GAAAX,EAAA9C,MAAAvC,CAAA,IAAAqF,EAAA9C,MAAAvC,GAAAF,EAAAE,CAAA,CAAA,CAAA,EAEHM,EAAA,EAAW,QAhCWG,EAAA,QAAA4E,EAAA7C,UAAA,EACHzB,EAAA,EAAAF,EAAA,OAAA,EAAAwE,EAAA/D,aAAAyD,MAAA,EA6BhBhE,EAAA,EAAAkF,GAAA,UAAAZ,EAAA9C,KAAA,EACA1B,EAAA,WAAAwE,EAAA/C,QAAA;kFDSKV,CAAyB,GAAA,qCLtC9BsE,EAAA,EAAA,MAAA,EAAA,EAA0E,EAAA,iBAAA,EAAA,mBAElEA,EAAA,EAAA,QAAA,EAAA,EAAgBC,GAAA,gBAAA,SAAAC,EAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,OAAAC,GAAAL,EAAAM,KAAAP,CAAA,IAAAC,EAAAM,KAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAAhBS,EAAA,EAAiF,EAErFX,EAAA,EAAA,iBAAA,EAAA,mBACIA,EAAA,EAAA,yBAAA,GAAA,CAAA,EAKIY,EAAA,MAAA,SAAAV,EAAA,CAAA,IAAAW,EAAAT,EAAAC,CAAA,EAAAS,MAAAC,EAAAC,EAAA,EAAA,OAAAN,EAAOK,EAAAE,UAAAJ,EAAAX,EAAAO,IAAA,CAAyB,CAAA,CAAA,EAAC,SAAA,SAAAP,EAAA,CAAA,IAAAW,EAAAT,EAAAC,CAAA,EAAAS,MAAAC,EAAAC,EAAA,EAAA,OAAAN,EACvBK,EAAAG,aAAAL,EAAAX,CAAA,CAAuB,CAAA,CAAA,EACpCS,EAAA,EAAyB,EAE9BX,EAAA,EAAA,KAAA,EAAK,EAAA,SAAA,EAAA,EACiCY,EAAA,QAAA,UAAA,CAAA,IAAAT,EAAAC,EAAAC,CAAA,EAAAC,UAAAS,EAAAC,EAAA,EAAA,OAAAN,EAASK,EAAAI,kBAAAhB,CAAA,CAAwB,CAAA,CAAA,EAC/DiB,EAAA,GAAA,WAAA,EAAA,EACJT,EAAA,EAAS,EACP,4BAjBUU,EAAA,EAAAC,EAAA,QAAAC,EAAA,EAAA,EAAA,gBAAA,CAAA,EACIF,EAAA,CAAA,EAAAG,GAAA,UAAArB,EAAAM,IAAA,EAAqCa,EAAA,WAAA,CAAAnB,EAAAsB,KAAA,EAEzCJ,EAAA,EAAAC,EAAA,QAAAC,EAAA,EAAA,EAAA,uBAAA,CAAA,EAGRF,EAAA,CAAA,EAAAC,EAAA,UAAAnB,EAAAuB,MAAA,EAAwB,YAAAvB,EAAAM,IAAA,EACA,WAAAN,EAAAM,OAAA,EAAA,4BAuCxBkB,EAAA,CAAA,oBAAAC,EAAA,IAAAC,EAAAC,GAAA,GAAA,6BAKAH,EAAA,CAAA,uCAAAC,EAAA,IAAAG,EAAA,EAAA,EAAAC,EAAAC,UAAA,OAAA,EAAA,GAAA,6BAKAN,EAAA,CAAA,uCAAAC,EAAA,IAAAG,EAAA,EAAA,EAAAG,EAAAC,UAAA,OAAA,EAAA,GAAA,4BAKAR,EAAA,CAAA,oBAAAC,EAAA,IAAAQ,EAAA3B,KAAA,GAAA,4BAKAkB,EAAA,CAAA,oBAAAC,EAAA,IAAAS,EAAAC,IAAA,GAAA,6BAKAtC,EAAA,EAAA,WAAA,EAAA,EAGK2B,EAAA,CAAA,EAAiBhB,EAAA,sCADlBW,EAAA,YAAAiB,EAAAC,IAAA,EACCnB,EAAA,EAAAoB,EAAAC,EAAAjC,IAAA,sCAGDT,EAAA,EAAA,MAAA,EAAA,EAAyB,EAAA,YAAA,EAAA,EAMjBY,EAAA,SAAA,SAAAV,EAAA,CAAAE,EAAAuC,CAAA,EAAA,IAAAC,EAAA5B,EAAA,EAAA6B,KAAAN,EAAAvB,EAAA,EAAAV,UAAAS,EAAAC,EAAA,EAAA,OAAAN,EAAUK,EAAA+B,wBAAAF,EAAAd,GAAAS,EAAAT,GAAA5B,GAAA,KAAA,KAAAA,EAAA4B,EAAA,CAA+D,CAAA,CAAA,EAC5EnB,EAAA,EACDX,EAAA,EAAA,SAAA,EAAA,EAGIY,EAAA,QAAA,UAAA,CAAAR,EAAAuC,CAAA,EAAA,IAAAC,EAAA5B,EAAA,EAAA6B,KAAA9B,EAAAC,EAAA,CAAA,EAAA,OAAAN,EAASK,EAAAgC,mBAAAH,CAAA,CAA2B,CAAA,CAAA,EAGpCxB,EAAA,EAAA,WAAA,EAAA,EACJT,EAAA,EAAS,+CAbLU,EAAA,EAAAC,EAAA,QAAAiB,EAAAS,OAAA,EAQA3B,EAAA,EAAA4B,EAAA,UAAA,CAAA,EAAAlC,EAAAmC,sBAAAN,EAAAd,EAAA,GAAA,MAAAf,EAAAmC,sBAAAN,EAAAd,EAAA,EAAAS,EAAAT,EAAA,EAAA,EAEAR,EAAA,WAAA,EAAAP,EAAAmC,sBAAAN,EAAAd,EAAA,GAAA,MAAAf,EAAAmC,sBAAAN,EAAAd,EAAA,EAAAS,EAAAT,EAAA,EAAA,4BAlBZqB,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAGK,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,iDAFAhC,EAAA,OAAAP,EAAAwC,UAAAX,EAAAL,EAAAT,EAAA,CAAA,EAAyC,WAAA0B,CAAA,6BAHtDxD,EAAA,EAAA,iBAAA,EAAA,EACImD,EAAA,EAAAM,GAAA,EAAA,EAAA,aAAA,EA0BJ9C,EAAA,0BA3BkEW,EAAA,UAAAiB,EAAA9B,IAAA,EAA4B,KAAA8B,EAAAC,IAAA,6BA8BtFb,EAAA,CAAA,2CAAAC,EAAA,IAAAG,EAAA,EAAA,EAAA2B,EAAAC,MAAAD,EAAAE,YAAA,EAAA,GAAA,6BAKAjC,EAAA,CAAA,2CAAAC,EAAA,IAAAG,EAAA,EAAA,EAAA8B,EAAAC,aAAAD,EAAAD,YAAA,EAAA,GAAA,sCAKA5D,EAAA,EAAA,SAAA,EAAA,EAA6BY,EAAA,QAAA,UAAA,CAAA,IAAAmD,EAAA3D,EAAA4D,CAAA,EAAAnB,KAAA9B,EAAAC,EAAA,EAAA,OAAAN,EAASK,EAAAkD,cAAAF,CAAA,CAAsB,CAAA,CAAA,EACxD3C,EAAA,EAAA,WAAA,EAAA,EACJT,EAAA,GDzFd,IAAOuD,GAAP,KAAuB,CAUzBC,YAAYC,EAAiC,CACzC,QAAWC,KAAOC,OAAOC,KAAKH,CAAM,EAChC,KAAKC,CAAG,EAAID,EAAOC,CAAG,CAE9B,GAsBSG,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CAuBvCL,YACYM,EACAC,EACAC,EACAC,EACAC,EACAC,EAAiC,CALjC,KAAAL,MAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,qBAAAA,EACA,KAAAC,oBAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,eAAAA,EA5BZ,KAAAC,iBAAmB,GACnB,KAAAC,eAAiB,GAOjB,KAAAC,aAAe,IACf,KAAAC,YAAc,EACd,KAAAC,kBAAoB,IAAIC,GAAY,EAAE,EACtC,KAAAC,iBAAmB,IAAIC,GAAsB,CACzCC,YAAa,GACbC,cAAeA,CAACC,EAAGC,IAAMD,EAAE3D,KAAO4D,EAAE5D,GACpC6D,aAAc,GACjB,EACD,KAAAzC,sBAEI,CAAA,EACI,KAAA0C,SAAW,IAAIC,EAUpB,CAEHC,UAAQ,CACJ,KAAKC,aACA,KAAKtB,MAAMuB,SAASC,SAASC,IAAI,MAAM,GAAsBC,GAAoB,EACtF,KAAKzB,YAAY0B,SAASC,iBAAgB,EAAGC,QAAQC,UAAUC,GAAO,CAClE,KAAK5C,aAAe4C,EAAKC,cAAcC,mBAC3C,CAAC,EAED,IAAMC,EAAW,KAAKf,SAASgB,KAC3BC,EAAU,IACN,KAAKnC,YAAYoC,QAEZC,0BAA0B,KAAKtC,MAAMuC,QAAQhB,SAASC,SAASC,IAAI,IAAI,CAAE,EACzEe,UAAUT,GAAQA,EAAKM,OAAO,CAAC,EAExCI,GAAU,KAAKzC,MAAMuB,SAASQ,KAAKM,OAAO,CAAC,EAG/C,KAAKK,UAAYR,EAASC,KACtBC,EAAUC,GACN,KAAK3B,kBAAkBiC,aAAaR,KAChCM,GAAU,EAAE,EACZG,EAAIC,GACAA,EACMR,EAAQS,SAASC,OAAOC,GAAKA,EAAEhH,KAAKiH,YAAW,EAAGC,SAASL,EAAKI,YAAW,CAAE,CAAC,EAC9EZ,EAAQS,QAAQ,CACzB,CACJ,CACJ,EAEL,KAAKK,cAAgBjB,EAASC,KAAKS,EAAIP,GAAWA,EAAQe,YAAY,CAAC,EACvE,KAAKC,YAAc,KAAKX,UAAUP,KAAKS,EAAIE,GAAYA,EAASQ,MAAM,CAAC,EAEvEpB,EAASJ,UAAUyB,GAAI,CACnB,KAAKlB,QAAUkB,EACf,IAAMC,EAAmBD,EAAET,SAASF,IAAII,GAAKA,EAAEzE,QAAQqE,IAAIa,GAAUA,EAAOpG,EAAE,CAAC,EAAEqG,KAAI,EAC/EC,EAAwBJ,EAAET,SAASF,IAAII,GAAKA,EAAEzE,QAAQqE,IAAIa,GAAUA,EAAOG,OAAO,CAAC,EAAEF,KAAI,EAC/F,KAAKN,aAAeG,EAAEH,aAAaR,IAAIiB,IAAO,CAC1CxG,GAAIwG,EAAGxG,GACPL,MAAO,GACPhB,KAAM6H,EAAG7H,KACT8H,OAAQH,EAAsBT,SAASW,EAAGxG,EAAE,EAC5CJ,OAAQ4G,EAAGtF,QAAQqE,IAAImB,IAAM,CACzB1G,GAAI0G,EAAE1G,GACNrB,KAAM+H,EAAE/H,KACR8H,OAAQN,EAAiBN,SAASa,EAAE1G,EAAE,GACxC,GACJ,CACN,CAAC,CACL,CAEA2G,gBAAgBxD,EAAoB,CAChC,KAAKA,aAAeA,EACpB,KAAKC,YAAc,CACvB,CAEAwD,cAAcC,EAAY,CACtB,KAAKzD,YAAcyD,CACvB,CAEAC,cAAcC,EAA6B,CACvC,KAAK9D,iBAAmB,GACxB8D,EAAYC,QAAU,EAC1B,CAEAC,eAAa,CACT,MAAO,CAAC,KAAKhE,gBACjB,CAEAiE,gBAAc,CACV,KAAKnE,aACAoE,cAAcC,GAAyC,CACpDC,OAAQ,CACJpD,aAAc,KAAKA,cAE1B,EACAa,KACGC,EAAUuC,GACFA,EACO,KAAK1E,YAAYoC,QAAQuC,0BAA0BD,CAAM,EAAExC,KAC9DC,EAAU,CAAC,CAAEyC,yBAAAA,CAAwB,IACjC,KAAK5E,YAAYoC,QAAQyC,wBAAwB,CAC7CC,cAAeF,EAAyBxH,GACxC2H,UAAW,KAAK3C,QAAQhF,GAC3B,CAAC,CACL,EAGE4H,EAEd,CAAC,EAELnD,UAAU6C,GAAS,CAChB,KAAKxE,oBAAoB+E,QAAU,+BAAiC,CAChEC,OAAQ,qBACX,EACD,KAAKhE,SAASiE,KAAI,EAClB,KAAK/E,eAAegF,aAAY,CACpC,CAAC,CACT,CAEA3I,kBACI4I,EAA0F,CAE1F,IAAMjI,EAAKiI,EAAYjI,GACjBkI,EAAsB,KAAKlD,QAAQS,SAASC,OAAOC,GACrDA,EAAEzE,QAAQqE,IAAImB,GAAKA,EAAEH,OAAO,EAAEV,SAAS7F,CAAE,CAAC,EAC5CiG,OACF,KAAKlD,aACAoF,OAAO,CACJC,MAAS,8CACTC,KAAMH,EAAwB,mDAAsD,GACpFI,gBAAiB,CAAE3J,KAAMsJ,EAAYtJ,KAAM4J,MAAOL,CAAmB,EACrEM,QAAS,CACL,CAAEC,KAAM,YAAaC,MAAS,eAAgB,EAC9C,CAAED,KAAM,SAAUC,MAAS,gBAAkBC,YAAa,EAAI,CAAE,EAEvE,EACA7D,KACGC,EAAU6D,GACFA,EACO,KAAKhG,YAAYoC,QAAQ6D,6BAA6B,CACzDnB,cAAe1H,EACf2H,UAAW,KAAK3C,QAAQhF,GACxB8I,MAAO,GACV,EAEMlB,EAEd,CAAC,EAELnD,UAAU,CAAC,CAAEoE,6BAAAA,CAA4B,IAAM,CACxCA,EAA6BE,aAAe,WAC5C,KAAKjG,oBAAoB+E,QAAU,+BAAiC,CAChEC,OAAQ,qBACX,EACD,KAAKhE,SAASiE,KAAI,GACXc,EAA6BE,aAAe,2BACnD,KAAKjG,oBAAoBkG,MAAMH,EAA6BI,SAAW,EAAE,CAEjF,CAAC,CACT,CAEA9J,UAAUH,EAAekK,EAAkB,CACvC,IAAMC,EAAQ,KAAKpD,aAAa/G,CAAK,EACjCmK,GAASA,EAAMnJ,IACf,KAAK4C,YAAYoC,QACZoE,iBAAiB,CACdC,qBAAsBF,EAAMnJ,GAC5BU,QAAM4I,oBAAgBJ,EAAY,GAAG,EACrCK,aAAc,CAAC,CAAE5K,KAAMuK,EAAYjF,aAAc,KAAKA,YAAY,CAAE,EACvE,EACAQ,UAAU,CAAC,CAAE+E,oBAAAA,CAAmB,IAAM,CACnC,KAAK1G,oBAAoB+E,QAAU,+BAAiC,CAChEC,OAAQ,gBACX,EACD,KAAKhE,SAASiE,KAAI,CACtB,CAAC,CAEb,CAEA3I,aAAaJ,EAAe,CAAEgB,GAAAA,EAAIrB,KAAAA,CAAI,EAAgC,CAClE,IAAMsJ,EAAc,KAAKlC,aAAa/G,CAAK,EACvCiJ,GACA,KAAKlF,aACAoF,OAAO,CACJC,MAAS,wCACTE,gBAAiB,CAAE3J,KAAAA,CAAI,EACvB6J,QAAS,CACL,CAAEC,KAAM,YAAaC,MAAS,eAAgB,EAC9C,CAAED,KAAM,SAAUC,MAAS,gBAAkBC,YAAa,EAAI,CAAE,EAEvE,EACA7D,KACGC,EAAU6D,GACFA,EACO,KAAKhG,YAAYoC,QAAQyE,oBAAoBzJ,CAAE,EAE/C4H,EAEd,CAAC,EAELnD,UAAU,CAAC,CAAEgF,oBAAAA,CAAmB,IAAM,CAC/BA,EAAoBnC,SAAWoC,GAAeC,SAC9C,KAAK7G,oBAAoB+E,QAAU,+BAAiC,CAChEC,OAAQ,gBACX,EACDG,EAAYrI,OAASqI,EAAYrI,OAAO8F,OAAOC,GAAKA,EAAE3F,KAAOA,CAAE,EAC/D,KAAK8D,SAASiE,KAAI,GAElB,KAAKjF,oBAAoBkG,MAAMS,EAAoBR,SAAW,EAAE,CAExE,CAAC,CAEb,CAEAjI,wBAAwB4I,EAAmBlC,EAAuBmC,EAAiB,CAC1E,KAAKzI,sBAAsBwI,CAAS,IACrC,KAAKxI,sBAAsBwI,CAAS,EAAI,CAAA,GAExCC,EACA,KAAKzI,sBAAsBwI,CAAS,EAAElC,CAAa,EAAImC,EAEvD,OAAO,KAAKzI,sBAAsBwI,CAAS,EAAElC,CAAa,CAElE,CAEAzG,mBAAmB6I,EAAkF,CACjG,IAAMC,EAAY,CACd,GAAGD,EAAQ5I,QAAQqE,IAAImB,GAAKA,EAAE1G,EAAE,EAChC,GAAGwC,OAAO5C,OAAO,KAAKwB,sBAAsB0I,EAAQ9J,EAAE,CAAC,CAAC,EAE5D,KAAK4C,YAAYoC,QACZgF,sBAAsB,CACnB,CACIhK,GAAI8J,EAAQ9J,GACZ+J,aAAWE,WAAOF,CAAS,EAC9B,CACJ,EACAtF,UAAU,CAAC,CAAEuF,sBAAAA,CAAqB,IAAM,CACrC,KAAKlG,SAASiE,KAAI,CACtB,CAAC,CACT,CAEA5F,cAAc2H,EAAkF,CAC5F,KAAK/G,aACAoF,OAAO,CACJC,MAAS,yCACTE,gBAAiB,CAAE3J,KAAMmL,EAAQnL,IAAI,EACrC6J,QAAS,CACL,CAAEC,KAAM,YAAaC,MAAS,eAAgB,EAC9C,CAAED,KAAM,SAAUC,MAAS,gBAAkBC,YAAa,EAAI,CAAE,EAEvE,EACA7D,KACGC,EAAUmF,GACNA,EACM,KAAKrH,qBAAqBsH,qBAAqBL,EAAQ9J,GAAI,KAAKgF,QAAQhF,EAAE,EAC1E4H,EAAK,CACd,EAEJnD,UACG,IAAK,CACD,KAAK3B,oBAAoB+E,QAAU,+BAAiC,CAChEC,OAAQ,iBACX,EACD,KAAKhE,SAASiE,KAAI,CACtB,EACAqC,GAAM,CACF,KAAKtH,oBAAoBkG,MAAQ,6BAA+B,CAC5DlB,OAAQ,iBACX,CACL,CAAC,CAEb,CAEAuC,kBAAgB,CACZ,KAAKtH,aACAoE,cAAcmD,GAAqC,CAChDjD,OAAQ,CACJrC,QAAS,KAAKA,SAErB,EACAF,KACGC,EAAUuC,GACFA,EACO,KAAK1E,YAAYoC,QAAQuF,sBAAsB,CAACjD,CAAM,CAAC,EAEvDM,EAEd,CAAC,EAELnD,UAAU6C,GAAS,CAChB,KAAKxE,oBAAoB+E,QAAU,+BAAiC,CAChEC,OAAQ,iBACX,EACD,KAAKhE,SAASiE,KAAI,CACtB,CAAC,CACT,CAEAtG,UACIqI,EACAvD,EAAe,CAEf,OAAOuD,EAAQ5I,QAAQsJ,KAAK9D,GAAKA,EAAEH,UAAYA,CAAO,CAC1D,iDA5TS7D,GAA8B+H,EAAAC,EAAA,EAAAD,EAAAE,CAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,CAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,CAAA,CAAA,CAAA,+BAA9BrI,EAA8BsI,UAAA,CAAA,CAAA,6BAAA,CAAA,EAAAC,WAAA,GAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,4BAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,QAAA,gBAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,SAAA,OAAA,EAAA,OAAA,EAAA,CAAA,QAAA,MAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,OAAA,EAAA,CAAA,KAAA,8BAAA,EAAA,aAAA,qBAAA,QAAA,eAAA,aAAA,aAAA,EAAA,CAAA,EAAA,oBAAA,uBAAA,EAAA,CAAA,KAAA,KAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,KAAA,OAAA,EAAA,UAAA,UAAA,EAAA,CAAA,KAAA,MAAA,EAAA,UAAA,UAAA,EAAA,CAAA,EAAA,UAAA,KAAA,EAAA,QAAA,SAAA,EAAA,CAAA,KAAA,QAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,KAAA,iBAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,KAAA,SAAA,EAAA,UAAA,UAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,GAAA,OAAA,OAAA,EAAA,gBAAA,UAAA,UAAA,EAAA,CAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,EAAA,MAAA,SAAA,UAAA,YAAA,UAAA,EAAA,CAAA,EAAA,eAAA,OAAA,EAAA,OAAA,EAAA,CAAA,QAAA,OAAA,EAAA,CAAA,EAAA,UAAA,IAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,OAAA,QAAA,EAAA,CAAA,YAAA,OAAA,YAAA,KAAA,WAAA,OAAA,EAAA,SAAA,OAAA,EAAA,CAAA,EAAA,eAAA,OAAA,EAAA,QAAA,UAAA,EAAA,CAAA,QAAA,QAAA,EAAA,CAAA,EAAA,eAAA,EAAA,OAAA,EAAA,CAAA,QAAA,iBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC7D3CpN,EAAA,EAAA,gBAAA,EAAgB,EAAA,UAAA,EAERmD,EAAA,EAAAmK,GAAA,GAAA,GAAA,MAAA,CAAA,EAoBAtN,EAAA,EAAA,SAAA,CAAA,EAA4BY,EAAA,QAAA,UAAA,CAAA,OAASyM,EAAArE,eAAA,CAAgB,CAAA,EACjD5H,EAAA,EAAA,WAAA,CAAA,EACAO,EAAA,CAAA,mBACJhB,EAAA,EAAS,EAEbX,EAAA,EAAA,WAAA,CAAA,EAA6B,EAAA,MAAA,CAAA,EACP,EAAA,SAAA,CAAA,EACSY,EAAA,QAAA,UAAA,CAAA,OAASyM,EAAAlB,iBAAA,CAAkB,CAAA,EAC9C/K,EAAA,GAAA,WAAA,CAAA,EACAO,EAAA,EAAA,oBACJhB,EAAA,EAAS,EAEbX,EAAA,GAAA,mBAAA,CAAA,8BAMIY,EAAA,aAAA,SAAAV,EAAA,CAAA,OAAcmN,EAAA3E,cAAAxI,CAAA,CAAqB,CAAA,EAAC,qBAAA,SAAAA,EAAA,CAAA,OACdmN,EAAA5E,gBAAAvI,CAAA,CAAuB,CAAA,EAE7CkB,EAAA,GAAA,iBAAA,CAAA,oBAIApB,EAAA,GAAA,iBAAA,EAAA,oBACImD,EAAA,GAAAoK,GAAA,EAAA,EAAA,aAAA,EAGJ5M,EAAA,EACAX,EAAA,GAAA,iBAAA,EAAA,oBACImD,EAAA,GAAAqK,GAAA,EAAA,EAAA,aAAA,EAGJ7M,EAAA,EACAX,EAAA,GAAA,iBAAA,EAAA,oBACImD,EAAA,GAAAsK,GAAA,EAAA,EAAA,aAAA,EAGJ9M,EAAA,EACAX,EAAA,GAAA,iBAAA,EAAA,oBACImD,EAAA,GAAAuK,GAAA,EAAA,EAAA,aAAA,EAGJ/M,EAAA,EACAX,EAAA,GAAA,iBAAA,EAAA,oBACImD,EAAA,GAAAwK,GAAA,EAAA,EAAA,aAAA,EAGJhN,EAAA,EACAwC,EAAA,GAAAyK,GAAA,EAAA,EAAA,iBAAA,EAAA,gBA4BA5N,EAAA,GAAA,iBAAA,EAAA,oBACImD,EAAA,GAAA0K,GAAA,EAAA,EAAA,aAAA,EAGJlN,EAAA,EACAX,EAAA,GAAA,iBAAA,EAAA,oBACImD,EAAA,GAAA2K,GAAA,EAAA,EAAA,aAAA,EAGJnN,EAAA,EACAX,EAAA,GAAA,iBAAA,EAAA,oBACImD,EAAA,GAAA4K,GAAA,EAAA,EAAA,aAAA,EAKJpN,EAAA,EAAiB,EACF,EACZ,SApHgBU,EAAA,CAAA,EAAAC,EAAA,UAAA+L,EAAAxF,YAAA,EAsBnBxG,EAAA,CAAA,EAAAO,EAAA,IAAAL,EAAA,EAAA,GAAA,qCAAA,EAAA,GAAA,EAGEF,EAAA,CAAA,EAAAC,EAAA,WAAA,EAAA,EAIED,EAAA,CAAA,EAAAO,EAAA,IAAAL,EAAA,GAAA,GAAA,gCAAA,EAAA,GAAA,EAKJF,EAAA,CAAA,EAAAC,EAAA,QAAAC,EAAA,GAAA,GAAA8L,EAAAlG,SAAA,CAAA,EAA2B,eAAAkG,EAAApI,YAAA,EACE,aAAA1D,EAAA,GAAA,GAAA8L,EAAAvF,WAAA,CAAA,EACK,cAAAuF,EAAAnI,WAAA,EAM9B7D,EAAA,CAAA,EAAAC,EAAA,oBAAA+L,EAAAlI,iBAAA,EAAuC,wBAAA5D,EAAA,GAAA,GAAA,wBAAA,CAAA,EAG3BF,EAAA,CAAA,EAAAC,EAAA,UAAAC,EAAA,GAAA,GAAA,WAAA,CAAA,EAAmC,kBAAA,EAAA,EAKnCF,EAAA,CAAA,EAAAC,EAAA,UAAAC,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EAK3CF,EAAA,CAAA,EAAAC,EAAA,UAAAC,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EAK3CF,EAAA,CAAA,EAAAC,EAAA,UAAAC,EAAA,GAAA,GAAA,cAAA,CAAA,EAAsC,WAAA,EAAA,EAKtCF,EAAA,CAAA,EAAAC,EAAA,UAAAC,EAAA,GAAA,GAAA,aAAA,CAAA,EAAqC,WAAA,EAAA,EAKbF,EAAA,CAAA,EAAAC,EAAA,UAAAC,EAAA,GAAA,GAAA8L,EAAAzF,aAAA,CAAA,EA4BxBvG,EAAA,CAAA,EAAAC,EAAA,UAAAC,EAAA,GAAA,GAAA,cAAA,CAAA,EAAsC,kBAAA,EAAA,EAKtCF,EAAA,CAAA,EAAAC,EAAA,UAAAC,EAAA,GAAA,GAAA,uBAAA,CAAA,EAA+C,kBAAA,EAAA,EAK/CF,EAAA,CAAA,EAAAC,EAAA,UAAAC,EAAA,GAAA,GAAA,eAAA,CAAA,EAAuC,WAAA,EAAA;uFDjDtDiD,CAA8B,GAAA,EQtD3C,IAAawJ,IAAwB,IAAA,CAA/B,MAAOA,UAAgCC,EAA4D,CACrGC,YAAYC,EAAgBC,EAAwB,CAChD,MACID,EACA,CACIE,WAAY,UACZC,GAAI,GACJC,UAAW,GACXC,UAAW,GACXC,KAAM,GACNC,aAAc,GACdC,aAAc,CAAA,EACdC,SAAU,CAAA,GAEdN,GAAMF,EAAYS,QAAQC,0BAA0BR,CAAE,EAAES,UAAUC,GAAQA,EAAKH,OAAO,CAAC,CAE/F,iDAhBSb,GAAuBiB,GAAAC,EAAA,EAAAD,GAAAE,CAAA,CAAA,CAAA,CAAA,kCAAvBnB,EAAuBoB,QAAvBpB,EAAuBqB,UAAAC,WAFpB,MAAM,CAAA,CAAA,SAETtB,CAAwB,GAAA,ECQ9B,IAAMuB,GAAgBC,GAAsC,CAC/D,CACIC,KAAM,WACNC,UAAWC,GACXC,KAAM,CACFC,WAAY,eACZC,WAAc,uBAElBC,SAAUP,EAAYQ,iBAAiB,cAAc,GAEzD,CACIP,KAAM,YACNQ,WAAY,YAEhB,CACIR,KAAM,eACNC,UAAWC,GACXC,KAAM,CACFC,WAAY,iBACZC,WAAY,CAAEI,MAAS,sBAAwBC,KAAM,CAAC,MAAO,UAAU,CAAC,GAE5EJ,SAAU,CACN,CACIN,KAAM,kBACNC,UAAWU,GACXC,cAAe,CAACC,EAAwB,EACxCV,KAAM,CACFE,WAAYA,CAAC,CAAES,QAAAA,CAAO,IAAO,CACzB,CACIL,MAAO,GAAGK,EAAQC,IAAI,GACtBL,KAAM,CAAC,KAAK,GAEhB,CACID,MAAS,6BACTC,KAAM,CAAC,iBAAiB,EAC3B,GAGTM,QAAS,CACLF,QAAUG,GACNC,GAAOC,CAAW,EACbL,QAAQM,0BAA0BH,EAAMI,QAAQC,OAAOC,EAAE,EACzDC,UAAUrB,GAAQA,EAAKW,OAAO,IAG/C,GAAGf,EAAYQ,iBAAiB,gBAAgB,CAAC,GAGzD,CACIP,KAAM,mCACNC,UAAWC,GACXC,KAAM,CACFC,WAAY,yBACZC,WAAY,CAAEI,MAAS,sBAAwBC,KAAM,CAAC,MAAO,UAAU,CAAC,GAE5EJ,SAAUP,EAAYQ,iBAAiB,wBAAwB,GAEnE,CACIP,KAAM,uBACNC,UAAWwB,GACXT,QAASU,GAAkBC,EAAuB,EAClDf,cAAe,CAACC,EAAwB,EACxCV,KAAM,CACFE,WAAYuB,KAGpB,CACI5B,KAAM,SACNC,UAAWC,GACXC,KAAM,CACFC,WAAY,aACZC,WAAc,qBAElBC,SAAUP,EAAYQ,iBAAiB,YAAY,GAEvD,CACIP,KAAM,aACNC,UAAWC,GACXC,KAAM,CACFC,WAAY,eACZC,WAAY,CAAEI,MAAS,oBAAsBC,KAAM,CAAC,MAAO,QAAQ,CAAC,GAExEJ,SAAUP,EAAYQ,iBAAiB,cAAc,GAEzD,CACIP,KAAM,cACNC,UAAWC,GACXC,KAAM,CACFC,WAAY,kBACZC,WAAc,0BAElBC,SAAUP,EAAYQ,iBAAiB,iBAAiB,GAE5D,CACIP,KAAM,kBACNC,UAAWC,GACXC,KAAM,CACFC,WAAY,oBACZC,WAAY,CAAEI,MAAS,yBAA2BC,KAAM,CAAC,MAAO,aAAa,CAAC,GAElFJ,SAAUP,EAAYQ,iBAAiB,mBAAmB,GAE9D,CACIP,KAAM,SACNC,UAAWC,GACXC,KAAM,CACFC,WAAY,aACZC,WAAc,qBAElBC,SAAUP,EAAYQ,iBAAiB,YAAY,GAEvD,CACIP,KAAM,aACNC,UAAWC,GACXC,KAAM,CACFC,WAAY,eACZC,WAAY,CAAEI,MAAS,oBAAsBC,KAAM,CAAC,MAAO,QAAQ,CAAC,GAExEJ,SAAUP,EAAYQ,iBAAiB,cAAc,EACxD,EAGC,SAAUqB,GAA+BzB,EAAWmB,EAAW,CACjE,OAAOnB,EAAK0B,OAAOC,KACfC,EAAKF,GAAgB,CACjB,CACIpB,MAAS,sBACTC,KAAM,CAAC,MAAO,UAAU,GAE5B,CACID,MAAO,GAAGoB,EAAOd,IAAI,GACrBL,KAAM,CAAC,MAAO,WAAYY,EAAOC,EAAE,GAEvC,CACId,MAAS,6BACTC,KAAM,CAAC,SAAS,EACnB,CACJ,CAAC,CAEV,wBE1J4BsB,EAAA,CAAA,yBAAAC,EAAAC,EAAA,EAAA,EAAA,oBAAA,CAAA,qCAOxBC,EAAA,EAAA,SAAA,CAAA,EAAkCC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,OAAA,CAAQ,CAAA,CAAA,EAAEV,EAAA,CAAA,mBAAiCW,EAAA,EACtFR,EAAA,EAAA,SAAA,CAAA,EAEIC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAK,aAAA,CAAc,CAAA,CAAA,EAIvBZ,EAAA,CAAA,mBACJW,EAAA,oBARqDE,EAAA,EAAAZ,EAAAC,EAAA,EAAA,EAAA,eAAA,CAAA,EAIjDW,EAAA,CAAA,EAAAC,EAAA,WAAAP,EAAAQ,eAAAC,SAAA,CAAA,EAGAH,EAAA,EAAAI,EAAA,IAAAf,EAAA,EAAA,EAAA,oBAAA,EAAA,GAAA,GDOR,IAAagB,IAAyB,IAAA,CAAhC,MAAOA,CAAyB,CAOlCC,YAAoBC,EAAiC,CAAjC,KAAAA,eAAAA,EAJpB,KAAAL,eAA+B,CAAA,CAIyB,CAExDM,iBAAe,CACXC,WAAW,IAAM,KAAKC,SAASC,MAAK,EAAI,CAAC,CAC7C,CAEAZ,cAAY,CACR,KAAKa,YAAY,KAAKV,cAAc,CACxC,CAEAL,QAAM,CACF,KAAKe,YAAW,CACpB,iDAnBSP,GAAyBQ,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAzBT,EAAyBU,UAAA,CAAA,CAAA,wBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,MACvBE,GAA2B,CAAA,6RCtB1CC,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,EAEA/B,EAAA,EAAA,2BAAA,CAAA,EACIC,EAAA,uBAAA,SAAA+B,EAAA,CAAA,OAAAJ,EAAAhB,eAAAoB,CAAA,CAAA,EACHxB,EAAA,EAEDsB,EAAA,EAAAG,GAAA,EAAA,EAAA,cAAA,CAAA,0EDealB,CAAyB,GAAA,gFGf1BmB,EAAA,EAAA,SAAA,CAAA,EAGIC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,KAAA,CAAM,CAAA,CAAA,EAGfC,EAAA,CAAA,mBACJC,EAAA,oBAHIC,EAAA,WAAAN,EAAAO,WAAAC,SAAAR,EAAAO,WAAAE,QAAA,EAEAC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,eAAA,EAAA,GAAA,GDIT,IAAMC,GAAqBC;;;;;;;;;MAS5BC,EAAc;MACdC,EAAY;EAULC,IACT,IAAA,CADE,MAAOA,UACDC,EAAkE,CAU1EC,YACYC,EACEC,EACFC,EAA+B,CAEvC,MAAK,EAJG,KAAAF,oBAAAA,EACE,KAAAC,YAAAA,EACF,KAAAC,YAAAA,EAVH,KAAAC,aAAe,KAAKC,qBAAqB,OAAO,EACzD,KAAAjB,WAAa,IAAIkB,GAAU,CACvBC,KAAM,IAAIC,GAAY,EAAE,EACxBC,KAAM,IAAID,GAAY,CAAA,CAAc,EACpCJ,aAAc,KAAKD,YAAYO,MAAMC,GAAwB,KAAKP,YAAY,CAAC,EAClF,CAQD,CAEAQ,UAAQ,CACJ,KAAKC,KAAI,CACb,CAEAC,aAAW,CACP,KAAKC,QAAO,CAChB,CAEAC,cAAcC,EAAmD,CAC7D,KAAK7B,WAAW8B,IAAI,MAAM,GAAGC,SAASF,EAAMV,IAAI,EAChD,KAAKnB,WAAW8B,IAAI,MAAM,GAAGC,SAASF,EAAMR,IAAI,EAChD,KAAKrB,WAAWgC,YAAW,CAC/B,CAEApC,MAAI,CACA,KAAKkB,YAAYmB,QACZC,YAAY,CACTC,GAAI,KAAKA,GACThB,KAAM,KAAKnB,WAAWoC,MAAMjB,KAC5BE,KAAM,KAAKrB,WAAWoC,MAAMf,KAC5BL,aAAc,KAAKhB,WAAWoC,MAAMpB,aACvC,EACAqB,UACG,IAAK,CACD,KAAKxB,oBAAoByB,QAAU,+BAAiC,CAAEC,OAAQ,OAAO,CAAE,CAC3F,EACAC,GAAM,CACF,KAAK3B,oBAAoB4B,MAAQ,6BAA+B,CAC5DF,OAAQ,QACX,CACL,CAAC,CAEb,CAEUG,cACNH,EACAI,EAA0B,CAE1B,KAAK3C,WAAW8B,IAAI,MAAM,GAAGC,SAASQ,EAAOpB,IAAI,EACjD,KAAKnB,WAAW8B,IAAI,MAAM,GAAGC,SAASQ,EAAOlB,KAAKuB,IAAIC,GAAKA,EAAEV,EAAE,CAAC,EAC5D,KAAKnB,aAAa8B,QAClB,KAAKC,yBAAyB,KAAK/B,aAAc,KAAKhB,WAAW8B,IAAI,CAAC,cAAc,CAAC,EAAGS,CAAM,CAEtG,iDA9DS7B,GAAoBsC,EAAAC,CAAA,EAAAD,EAAAE,CAAA,EAAAF,EAAAG,EAAA,CAAA,CAAA,CAAA,+BAApBzC,EAAoB0C,UAAA,CAAA,CAAA,kBAAA,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,aAAA,cAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,WAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,cAAA,QAAA,WAAA,eAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,cAAA,EAAA,QAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICpCjCvE,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EAERyE,EAAA,EAAA,aAAA,EAEAzE,EAAA,EAAA,cAAA,EACIyE,EAAA,EAAA,uBAAA,CAAA,EACAC,EAAA,EAAAC,GAAA,EAAA,EAAA,SAAA,CAAA,EAQAF,EAAA,EAAA,+BAAA,CAAA,EACJhE,EAAA,EAAe,EACF,EAErBT,EAAA,EAAA,gBAAA,EAAgB,EAAA,oBAAA,CAAA,eAMRC,EAAA,cAAA,SAAA2E,EAAA,CAAA,OAAeJ,EAAAjC,cAAAqC,CAAA,CAAqB,CAAA,EALxCnE,EAAA,EAME,SAlBWK,EAAA,CAAA,EAAAJ,EAAA,mBAAAmE,EAAA,EAAAC,EAAA,CAAA,EAaThE,EAAA,CAAA,EAAAJ,EAAA,QAAAM,EAAA,EAAA,EAAAwD,EAAAO,OAAA,CAAA,EAAyB,WAAA,EAAA,EACR,eAAAP,EAAA7C,YAAA,EACY,mBAAA6C,EAAA7D,WAAA8B,IAAA,cAAA,CAAA;8FDcxBpB,CACT,GAAA,yDEVS2D,IACT,IAAA,CADE,MAAOA,UACDC,EAIP,CASDC,YACYC,EACAC,EACAC,EACRC,EACAC,EAAqB,CAErB,MAAMD,EAAQC,CAAK,EANX,KAAAJ,oBAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,YAAAA,EATZ,KAAAG,YAAc,IAAIC,GAAoCC,MAAS,EAC/D,KAAAC,cAAgB,IAAIF,GAA2CC,MAAS,EACxE,KAAAE,UAAY,GAYR,MAAMC,WACF,IAAIC,IAAgB,KAAKT,YAAYU,QAAQC,aAAa,GAAGF,CAAI,EAAEG,uBAAsB,EACzFC,GAAQA,EAAKC,OACb,CAACC,EAAMC,IAAQ,CACX,IAAMC,EAAa,KAAKd,YAAYe,MAC9BC,EAAO,KAAKb,cAAcY,OAAOE,IAAIC,GAAKA,EAAEH,KAAK,EACvD,MAAO,CACHI,QAASC,GAAAC,EAAA,CACLT,KAAAA,EACAC,KAAAA,GACIC,EACE,CACIQ,OAAQ,CACJC,KAAM,CAAEC,SAAUV,CAAU,IAGpC,CAAA,GATD,CAULW,KAAM,CACFC,UAAWC,GAAUC,MAEzBZ,KAAAA,EACAa,aAAcC,GAAgBC,MAG1C,EACA,CAAElB,KAAM,GAAID,KAAM,CAAC,CAAE,CAE7B,CAEAoB,UAAQ,CACJ,MAAMA,SAAQ,EACd,KAAKC,kBAAoBC,GAAc,KAAKC,cAAe,KAAKC,aAAc,KAAKC,WAAW,EAAEC,KAC5FrB,EAAI,CAAC,CAACsB,EAAcC,EAAaC,CAAU,KAAO,CAAEF,aAAAA,EAAcC,YAAAA,EAAaC,WAAAA,CAAU,EAAG,CAAC,EAEjG,KAAKzC,YAAYsC,KAAKI,GAAa,GAAG,EAAGC,GAAU,KAAKC,QAAQ,CAAC,EAAEC,UAAU,IAAM,KAAKC,QAAO,CAAE,EAEjG,KAAK3C,cAAcmC,KAAKK,GAAU,KAAKC,QAAQ,CAAC,EAAEC,UAAU,IAAM,KAAKC,QAAO,CAAE,EAChF,KAAKC,SAAW,KAAKlD,YAAYU,QAAQyC,WAAU,EAAGC,UAAUvC,GAAQA,EAAKM,KAAKkC,KAAK,CAC3F,CAEAC,cAAcC,EAAa,CACnBA,EAAMC,SACN,KAAKjD,UAAY,GACjB,KAAKP,YAAYU,QACZ+C,aAAaF,CAAK,EAClBd,KAAKiB,GAAS,IAAO,KAAKnD,UAAY,EAAM,CAAC,EAC7CyC,UAAU,CAAC,CAAES,aAAAA,CAAY,IAAM,CAC5B,IAAIE,EAAe,EACnB,QAAWC,KAAUH,EACjB,OAAQG,EAAOC,WAAU,CACrB,IAAK,QACDF,IACA,MACJ,IAAK,gBACD,KAAK7D,oBAAoBgE,MAAMF,EAAOG,OAAO,EAC7C,KACR,CAEA,EAAIJ,IACJ,MAAMV,QAAO,EACb,KAAKnD,oBAAoBkE,QAAU,qCAAuC,CACtEC,MAAON,EACV,EAET,CAAC,EAEb,CAEAO,aAAapD,EAAe,CACxB,KAAKqD,mBAAmBrD,EAAOM,IAAIgD,GAAKA,EAAEC,EAAE,CAAC,EACxC5B,KACG6B,EAAUC,GACFA,EAASX,SAAWY,GAAeC,QAC5B,CAAC,EAAI,EAEL,KAAKN,mBACRrD,EAAOM,IAAIgD,GAAKA,EAAEC,EAAE,EACpBE,EAASR,SAAW,EAAE,EACxBtB,KAAKrB,EAAIsD,GAAKA,EAAEd,SAAWY,GAAeC,OAAO,CAAC,CAE3D,CAAC,EAELzB,UACG,IAAK,CACD,KAAKlD,oBAAoBkE,QAAU,+BAAiC,CAChEW,OAAQ,SACX,EACD,KAAK1B,QAAO,CAChB,EACA2B,GAAM,CACF,KAAK9E,oBAAoBgE,MAAQ,6BAA+B,CAC5Da,OAAQ,SACX,CACL,CAAC,CAEb,CAEQR,mBAAmBU,EAAoBd,EAAgB,CAC3D,OAAO,KAAKhE,aACP+E,OAAO,CACJC,MAAS,gCACTC,gBAAiB,CACbf,MAAOY,EAASrB,QAEpByB,KAAMlB,EACNmB,QAAS,CACL,CAAEC,KAAM,YAAaC,MAAS,eAAgB,EAC9C,CAAED,KAAM,SAAUC,MAAS,gBAAkBC,YAAa,EAAI,CAAE,EAEvE,EACA5C,KACG6B,EAAUgB,GAAQA,EAAM,KAAKtF,YAAYU,QAAQwD,aAAaW,EAAU,CAAC,CAACd,CAAO,EAAIwB,EAAM,EAC3FnE,EAAIkE,GAAOA,EAAIpB,YAAY,CAAC,CAExC,iDAxISvE,GAAkB6F,EAAAC,CAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,CAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,CAAA,+BAAlBlG,EAAkBmG,UAAA,CAAA,CAAA,gBAAA,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,mBAAA,aAAA,MAAA,EAAA,CAAA,iBAAA,gBAAA,EAAA,cAAA,WAAA,EAAA,CAAA,EAAA,eAAA,SAAA,cAAA,WAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,EAAA,qBAAA,cAAA,EAAA,CAAA,EAAA,aAAA,cAAA,eAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC3B/BE,EAAA,EAAA,gBAAA,EAAgB,EAAA,MAAA,CAAA,EACM,EAAA,yBAAA,CAAA,eAGVC,EAAA,mBAAA,SAAAC,EAAA,CAAA,OAAoBH,EAAApG,YAAAwG,KAAAD,CAAA,CAAwB,CAAA,EAAC,aAAA,SAAAA,EAAA,CAAA,OAC/BH,EAAAjG,cAAAqG,KAAAD,CAAA,CAA0B,CAAA,EAExCF,EAAA,EAAA,uBAAA,CAAA,EACIC,EAAA,cAAA,SAAAC,EAAA,CAAA,OAAeH,EAAAjD,cAAAoD,CAAA,CAAqB,CAAA,EAGvCE,EAAA,EAAuB,EACH,EAE7BJ,EAAA,EAAA,oBAAA,CAAA,iEAIIC,EAAA,eAAA,SAAAC,EAAA,CAAA,OAAgBH,EAAArC,aAAAwC,CAAA,CAAoB,CAAA,EACvCE,EAAA,EAEDJ,EAAA,GAAA,MAAA,CAAA,EAA6B,GAAA,8BAAA,CAAA,gBAGrBC,EAAA,qBAAA,SAAAC,EAAA,CAAA,OAAsBH,EAAAM,gBAAAH,CAAA,CAAuB,CAAA,EAChDE,EAAA,EAEDJ,EAAA,GAAA,0BAAA,CAAA,4CAIIC,EAAA,aAAA,SAAAC,EAAA,CAAA,OAAcH,EAAAO,cAAAJ,CAAA,CAAqB,CAAA,EACtCE,EAAA,EAA0B,EACzB,SA9BEG,EAAA,CAAA,EAAAC,EAAA,OAAAC,EAAA,EAAA,EAAAV,EAAArD,QAAA,CAAA,EAMI6D,EAAA,CAAA,EAAAC,EAAA,YAAAT,EAAAhG,SAAA,EAMRwG,EAAA,EAAAC,EAAA,SAAAE,EAAA,EAAA,GAAAD,EAAA,EAAA,GAAAV,EAAAY,MAAA,EAAAF,EAAA,EAAA,GAAAV,EAAAnE,iBAAA,GAAAgF,EAAA,GAAAC,EAAA,CAAA,CAAA,EAA2E,cAAA,EAAA,EACvD,YAAAJ,EAAA,EAAA,GAAAG,EAAA,GAAAE,EAAA,CAAA,CAAA,EAOhBP,EAAA,CAAA,EAAAC,EAAA,eAAAC,EAAA,GAAA,GAAAV,EAAAjE,aAAA,CAAA,EAKAyE,EAAA,CAAA,EAAAC,EAAA,cAAAC,EAAA,GAAA,GAAAV,EAAAhE,YAAA,CAAA,EAAoC,eAAA0E,EAAA,GAAA,GAAAV,EAAAjE,aAAA,CAAA,EACE,aAAA2E,EAAA,GAAA,GAAAV,EAAA/D,WAAA,CAAA;0EDFrC7C,CACT,GAAA,yEG3BA4H,EAAA,CAAA,EAAkEC,EAAA,CAAA,8BAAAC,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,oCAAA,CAAA,0BAGnCH,EAAA,CAAA,yBAAAE,EAAAC,EAAA,EAAA,EAAA,oCAAA,CAAA,2BAH/BC,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAAkE,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,wBAAnDC,EAAA,OAAAC,EAAAC,oBAAA,EAA4B,WAAAC,CAAA,6BAsCvBX,EAAA,CAAA,mCAAAY,EAAA,IAAAC,EAAA,EAAA,EAAA,2BAAAC,EAAA,EAAAC,GAAAN,EAAAO,iBAAA,KAAA,KAAAP,EAAAO,gBAAAC,IAAA,CAAA,EAAA,GAAA,0BAGAjB,EAAA,CAAA,yBAAAY,EAAA,IAAAT,EAAA,EAAA,EAAA,6BAAA,EAAA,GAAA,4BAWAH,EAAA,CAAA,wDAAAY,EAAA,IAAAC,EAAA,EAAA,EAAAK,EAAAC,aAAAV,EAAAO,iBAAA,KAAA,KAAAP,EAAAO,gBAAAI,mBAAA,EAAA,GAAA,yBAE6BpB,EAAA,EAAA,KAAA,4BAPzCqB,EAAA,EAAA,IAAA,EAAiD,EAAA,IAAA,EACzCrB,EAAA,CAAA,EAAcsB,EAAA,EAClBD,EAAA,EAAA,IAAA,EAAIrB,EAAA,CAAA,wBAAqEsB,EAAA,EACzED,EAAA,EAAA,IAAA,EACIjB,EAAA,EAAAmB,GAAA,EAAA,EAAA,cAAA,EAAA,EAAqE,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAjB,CAAA,EAIzEe,EAAA,EAAK,uCAPDrB,EAAA,CAAA,EAAAC,EAAAgB,EAAAO,IAAA,EACAxB,EAAA,CAAA,EAAAC,EAAAW,EAAA,EAAA,EAAAK,EAAAQ,MAAAjB,EAAAkB,gBAAA,KAAA,KAAAlB,EAAAkB,eAAAP,mBAAA,CAAA,EAEanB,EAAA,CAAA,EAAAO,EAAA,OAAAC,EAAAO,eAAA,EAAwB,WAAAY,CAAA,6BAc7C5B,EAAA,CAAA,oCAAAY,EAAA,IAAAC,EAAA,EAAA,EAAA,kCAAAC,EAAA,EAAAe,GAAApB,EAAAO,iBAAA,KAAA,KAAAP,EAAAO,gBAAAC,IAAA,CAAA,EAAA,GAAA,0BAGAjB,EAAA,CAAA,yBAAAY,EAAA,IAAAT,EAAA,EAAA,EAAA,6BAAA,EAAA,GAAA,qCANRkB,EAAA,EAAA,SAAA,EAAA,EAAkCS,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAvB,EAAAwB,EAAA,EAAA,OAAAC,EAASzB,EAAA0B,OAAA,CAAQ,CAAA,CAAA,EAAEnC,EAAA,CAAA,mBAAiCsB,EAAA,EACtFD,EAAA,EAAA,SAAA,EAAA,EAAsBS,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAvB,EAAAwB,EAAA,EAAA,OAAAC,EAASzB,EAAA2B,OAAA,CAAQ,CAAA,CAAA,EACnChC,EAAA,EAAAiC,GAAA,EAAA,EAAA,cAAA,EAAA,EAA+D,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAA/B,CAAA,EAMnEe,EAAA,2BARqDrB,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,eAAA,CAAA,EACZF,EAAA,CAAA,EAAAO,EAAA,WAAA,CAAAC,EAAAO,eAAA,EACxBf,EAAA,EAAAO,EAAA,OAAAC,EAAAO,eAAA,EAAwB,WAAAuB,CAAA,GD1C7C,IAAaC,IAAsC,IAAA,CAA7C,MAAOA,CAAsC,CAc/C,IAAI9B,sBAAoB,CACpB,OAAO,KAAK+B,mBAAqB,IACrC,CAEAC,YAAoBC,EAAkCC,EAAwC,CAA1E,KAAAD,YAAAA,EAAkC,KAAAC,oBAAAA,EAZtD,KAAAC,mBAAqB,IAAIC,GAAmB,CAAC,EAC7C,KAAAC,yBAA2B,IAAID,EAWkE,CAEjGE,UAAQ,CACJ,IAAMC,EAAmB,KAAKN,YAAYO,OACrCC,WAAU,EACVC,UAAU,CAAC,CAAED,WAAAA,CAAU,IAAOA,EAAWE,eAAe,EACvDC,EAAe,KAAKX,YAAYY,SAASC,YAAW,EAAGJ,UAAUK,GAAQA,EAAKC,QAAQ,EAE5FC,GAAcV,EAAkBK,CAAY,EAAEM,UAAU,CAAC,CAACP,EAAiBK,CAAQ,IAAK,CAEpF,KAAK/B,eAAiB+B,EAASG,MAAMC,KAAKC,GAAKA,EAAEC,KAAOX,CAAe,EACvE,KAAKY,kBAAoBP,EAASG,KACtC,CAAC,EAED,KAAKd,yBAAyBmB,aAAaN,UAAUO,GAAM,CACvD,KAAKC,cAAcD,CAAG,CAC1B,CAAC,EAED,KAAKE,iBAAmBV,GACpBW,GAAK,KAAKC,eAAe,EAAE,CAAC,EAC5B,KAAK1B,mBAAmBqB,aAAaM,KAAKC,GAAU,CAAC,CAAC,CAAC,EACzDD,KACEE,EAAI,CAAC,CAACC,EAAUC,CAAM,IAClBD,EAASD,IAAIG,IAAM,CACfb,GAAIa,EAAEb,GACNvC,KAAMoD,EAAEpD,KACRC,MAAOmD,EAAEnD,MACTP,aAAc0D,EAAEnD,MAAQ,CAACkD,GAC3B,CAAC,CACN,CAET,CAEAR,cAAcU,EAAoB,CAC9B,KAAK9D,gBAAkB,KAAKiD,kBAAkBH,KAAKC,GAAKA,EAAEC,KAAOc,EAAW,CAAC,CAAC,CAClF,CAEA1C,QAAM,CACF,IAAMpB,EAAkB,KAAKA,gBACzBA,IACK,KAAKN,qBAcC,KAAK+B,mBACZ,KAAKE,YAAYoC,QACZC,wBAAwB,CACrBC,UAAWjE,EAAgBgD,GAC3BvB,kBAAmB,KAAKA,kBACxByC,YAAa,CAAC,KAAKrC,mBAAmBsC,MACzC,EACAvB,UAAU,IAAK,CACZ,KAAKhB,oBAAoBwC,QAAU,4CAA8C,CAC7EC,QAASrE,EAAgBC,KAEzBqE,MAAO,KAAK7C,kBAAmB8C,OAClC,EACD,KAAKC,YAAY,EAAI,CACzB,CAAC,EA3BL,KAAK7C,YAAYoC,QACZU,wBAAwB,CACrBR,UAAWjE,EAAgBgD,GAC3B0B,WAAY,KAAKA,WACjBR,YAAa,CAAC,KAAKrC,mBAAmBsC,MACzC,EACAvB,UAAU,IAAK,CACZ,KAAKhB,oBAAoBwC,QAAU,4CAA8C,CAC7EC,QAASrE,EAAgBC,KACzBqE,MAAO,KAAKI,WAAWH,OAC1B,EACD,KAAKC,YAAY,EAAI,CACzB,CAAC,EAkBjB,CAEArD,QAAM,CACF,KAAKqD,YAAW,CACpB,CAEcjB,eAAeoB,EAAY,QAAAC,GAAA,sBACrC,OACI,MAAMC,GACF,KAAKlD,YAAYoC,QAAQe,mBAAmB,CACxCC,eAAgBC,GAAgBC,GAChCC,OAAQ,CACJC,UAAW,CAAEC,GAAI,KAAKV,UAAU,EAChC1B,GAAI,CAAEoC,GAAI,KAAK3D,iBAAiB,GAEpCkD,KAAAA,EACH,EAAEU,OAAO,GAEhBC,gBAAgBzC,KACtB,mDA5GSrB,GAAsC+D,EAAAC,CAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,CAAA,+BAAtCjE,EAAsCkE,UAAA,CAAA,CAAA,uCAAA,CAAA,EAAAC,WAAA,GAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,WAAA,GAAA,EAAA,WAAA,wBAAA,oBAAA,aAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,WAAA,GAAA,OAAA,SAAA,MAAA,IAAA,MAAA,QAAA,EAAA,aAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,cAAA,EAAA,QAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,ICvBnD5G,EAAA,EAAA8G,GAAA,EAAA,EAAA,cAAA,CAAA,EAOA7F,EAAA,EAAA,MAAA,CAAA,EAAkB,EAAA,qBAAA,EACO,EAAA,OAAA,EACVrB,EAAA,CAAA,mBAAkCsB,EAAA,EACzC6F,EAAA,EAAA,iCAAA,CAAA,EAOJ7F,EAAA,EACA6F,EAAA,EAAA,MAAA,CAAA,EACA9F,EAAA,EAAA,qBAAA,EAAqB,EAAA,OAAA,EACVrB,EAAA,EAAA,oBAAmDsB,EAAA,EAC1D6F,EAAA,GAAA,QAAA,CAAA,EACJ7F,EAAA,EAAsB,EAG1BD,EAAA,GAAA,MAAA,CAAA,EAAmC,GAAA,QAAA,CAAA,EACErB,EAAA,EAAA,oBAAiDsB,EAAA,EAClFD,EAAA,GAAA,QAAA,EAAA,EAAqB,GAAA,OAAA,EACV,GAAA,IAAA,EACC,GAAA,IAAA,EACIrB,EAAA,EAAA,oBAA+BsB,EAAA,EACnCD,EAAA,GAAA,IAAA,EACIrB,EAAA,EAAA,iEAIJsB,EAAA,EACAD,EAAA,GAAA,IAAA,EACIjB,EAAA,GAAAgH,GAAA,EAAA,EAAA,cAAA,EAAA,EAA+D,GAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAA9G,CAAA,EAMnEe,EAAA,EAAK,EACJ,EAETD,EAAA,GAAA,OAAA,EACIjB,EAAA,GAAAkH,GAAA,GAAA,EAAA,KAAA,EAAA,gBAUJhG,EAAA,EAAQ,EACJ,EAGZlB,EAAA,GAAAmH,GAAA,EAAA,EAAA,cAAA,EAAA,oBArDetH,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,GAAA,gBAAA,CAAA,EAGHF,EAAA,CAAA,EAAAO,EAAA,WAAA,EAAA,EAAkB,wBAAA,EAAA,EACa,oBAAAyG,EAAAO,iBAAA,EACQ,cAAAP,EAAAlE,wBAAA,EAMpC9C,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,iCAAA,CAAA,EAC2CF,EAAA,CAAA,EAAAO,EAAA,cAAAyG,EAAApE,kBAAA,EAKrB5C,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,+BAAA,CAAA,EAIjBF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,aAAA,CAAA,EAEAF,EAAA,CAAA,EAAAW,EAAA,IAAAC,EAAA,GAAA,GAAA,2BAAAC,EAAA,GAAAC,GAAAZ,EAAA,GAAA,GAAAA,EAAA,GAAA,GAAA8G,EAAAtF,gBAAA,KAAA,KAAAsF,EAAAtF,eAAAV,IAAA,CAAA,CAAA,CAAA,EAAA,GAAA,EAMahB,EAAA,CAAA,EAAAO,EAAA,OAAAyG,EAAAjG,eAAA,EAAwB,WAAAyG,CAAA,EAUzBxH,EAAA,CAAA,EAAAO,EAAA,UAAAL,EAAA,GAAA,GAAA8G,EAAA5C,gBAAA,CAAA;mHDzBnB7B,CAAsC,GAAA,EEVnD,IAAAkF,GAAuB,SEXhB,IAAMC,GAAwCC;;;;;;;;;;;;;;;;;;;EAqBxCC,GAAwCD;;;;;;;;;;;;;;;;;;;;EAsBxCE,GAAuBF;;;;;;;;;;;;EAcvBG,GAAuBH;;;;;;;;;;;;yBD1DhCI,EAAA,CAAA,yBAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,2BAAA,EAAA;CAAA,4BAmBYC,EAAA,EAAA,MAAA,EAAA,EAAkCH,EAAA,CAAA,EAAcI,EAAA,4BAAdC,EAAA,EAAAC,EAAAC,EAAAC,GAAA,sCAGlCL,EAAA,EAAA,uBAAA,EAAA,EAGIM,EAAA,SAAA,UAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAN,EAAAO,EAAA,EAAAD,UAAAE,EAAAD,EAAA,CAAA,EAAA,OAAAE,EAAUD,EAAAE,iBAAAV,EAAAG,EAAAQ,EAAA,CAAqC,CAAA,CAAA,EAClDd,EAAA,4BAFGe,EAAA,aAAAT,CAAA,6BARZP,EAAA,EAAA,IAAA,EAA+B,EAAA,KAAA,EAAA,EACG,EAAA,KAAA,EACrBH,EAAA,CAAA,EAAeI,EAAA,EACpBgB,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,EAAA,EACJjB,EAAA,EACAD,EAAA,EAAA,KAAA,EAAA,EACIiB,EAAA,EAAAE,GAAA,EAAA,EAAA,uBAAA,EAAA,EAKJlB,EAAA,EAAK,0BATIC,EAAA,CAAA,EAAAC,EAAAC,EAAAgB,IAAA,EACClB,EAAA,EAAAc,EAAA,OAAAZ,EAAAC,GAAA,EAIqBH,EAAA,CAAA,EAAAc,EAAA,UAAAZ,EAAAiB,WAAA,6BAT3CrB,EAAA,EAAA,QAAA,CAAA,EAAmE,EAAA,OAAA,EAE3DiB,EAAA,EAAAK,GAAA,EAAA,EAAA,KAAA,CAAA,EAaJrB,EAAA,EAAQ,kBAbiBC,EAAA,CAAA,EAAAc,EAAA,UAAAJ,EAAAW,KAAA,0BAiBzBvB,EAAA,EAAA,MAAA,EAAA,EACAwB,EAAA,EAAA,aAAA,EACAvB,EAAA,sCAIAD,EAAA,EAAA,SAAA,EAAA,EAAkCM,EAAA,QAAA,UAAA,CAAAE,EAAAiB,CAAA,EAAA,IAAAb,EAAAD,EAAA,EAAA,OAAAE,EAASD,EAAAc,OAAA,CAAQ,CAAA,CAAA,EAAE7B,EAAA,CAAA,mBAAiCI,EAAA,EACtFD,EAAA,EAAA,SAAA,EAAA,EAEIM,EAAA,QAAA,UAAA,CAAAE,EAAAiB,CAAA,EAAA,IAAAb,EAAAD,EAAA,EAAA,OAAAE,EAASD,EAAAe,eAAA,CAAgB,CAAA,CAAA,EAIzB9B,EAAA,CAAA,mBACJI,EAAA,oBARqDC,EAAA,EAAAC,EAAAJ,EAAA,EAAA,EAAA,eAAA,CAAA,EAIjDG,EAAA,CAAA,EAAAc,EAAA,WAAAJ,EAAAgB,eAAAC,SAAA,GAAAjB,EAAAkB,qBAAA,EAAA,EAGA5B,EAAA,EAAAJ,EAAA,IAAAC,EAAA,EAAA,EAAA,eAAA,EAAA,GAAA,GDDR,IAAagC,IAAiC,IAAA,CAAxC,MAAOA,CAAiC,CAW1CC,YACYC,EACAC,EAAoC,CADpC,KAAAD,YAAAA,EACA,KAAAC,kBAAAA,EAVZ,KAAAC,KAA8B,UAE9B,KAAAC,MAAwC,UAExC,KAAAR,eAAuC,CAAA,EACvC,KAAAL,MAA4B,CAAA,EAC5B,KAAAO,mBAAqB,EAKlB,CAEHO,UAAQ,CACJ,IAAMC,EACF,KAAKH,OAAS,UACR,KAAKF,YACAM,MAGCC,GAAuC,CACrCC,IAAK,KAAKA,KAAO,CAAA,EACpB,EACAC,UAAU,CAAC,CAAEC,SAAAA,CAAQ,IAClBA,EAASpB,MAAMqB,IAAIC,GAAMC,GAAAC,EAAA,GAAKF,GAAL,CAAQxB,YAAa,CAAC,GAAGwB,EAAExB,WAAW,CAAC,EAAG,CAAC,EAE5E,KAAKY,YACAM,MAGCS,GAAuC,CACrCP,IAAK,KAAKA,KAAO,CAAA,EACpB,EACAC,UAAU,CAAC,CAAEO,gBAAAA,CAAe,IACzBA,EAAgB1B,MAAMqB,IAAIC,GAAMC,GAAAC,EAAA,GAAKF,GAAL,CAAQxB,YAAa,CAAC,GAAGwB,EAAExB,WAAW,CAAC,EAAG,CAAC,EAE7F,KAAK6B,aAAeZ,EAAWa,UAAU,CACrCC,KAAM7B,GAAQ,CACV,KAAKA,MAAQA,EACb,KAAKa,MAAQ,QACb,KAAKF,kBAAkBmB,aAAY,CACvC,EACH,CACL,CAEAC,aAAW,CACP,KAAKJ,cAAcK,YAAW,CAClC,CAEA7B,QAAM,CACF,KAAK8B,YAAW,CACpB,CAEA1C,iBAAiB2C,EAAwBC,EAAoB,CACzDD,EAAKpC,YAAcoC,EAAKpC,YAAYsC,OAAOC,GAAMA,EAAG7C,KAAO2C,CAAY,EACvE,KAAK5B,mBAAqB,EAC9B,CAEAH,gBAAc,CACV,IAAMkC,EAAwB,KAAKjC,eAAegB,IAAIkB,GAAMA,EAAG/C,EAAE,EACjE,YAAKqB,MAAQ,UAET,KAAKD,OAAS,UACR,KAAKF,YAAY8B,OACbC,GACA,CACIC,MAAO,KAAK1C,OAAOqB,IAAIsB,IAAY,CAC/BnD,GAAImD,EAAQnD,GACZoD,iBAAeC,WAAO,CAClB,GAAGF,EAAQ7C,YAAYuB,IAAIgB,GAAMA,EAAG7C,EAAE,EACtC,GAAG8C,CAAqB,CAC3B,GACH,EACL,EAEL,KAAK5B,YAAY8B,OACbM,GACA,CACIJ,MAAO,KAAK1C,OAAOqB,IAAIsB,IAAY,CAC/BnD,GAAImD,EAAQnD,GACZoD,iBAAeC,WAAO,CAClB,GAAGF,EAAQ7C,YAAYuB,IAAIgB,GAAMA,EAAG7C,EAAE,EACtC,GAAG8C,CAAqB,CAC3B,GACH,EACL,GAEFV,UAAUmB,GAAS,CAC5B,KAAKd,YAAY,KAAK5B,cAAc,CACxC,CAAC,CACL,iDA7FSG,GAAiCwC,EAAAC,CAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAAjC1C,EAAiC2C,UAAA,CAAA,CAAA,kCAAA,CAAA,EAAAC,WAAA,GAAAC,MAAA,GAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,QAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,QAAA,QAAA,EAAA,OAAA,UAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,cAAA,EAAA,CAAA,QAAA,MAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,SAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,SAAA,YAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,cAAA,EAAA,QAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC9C9C/D,EAAA,EAAAiE,GAAA,EAAA,EAAA,cAAA,CAAA,EAIAlF,EAAA,EAAA,MAAA,CAAA,EAAkB,EAAA,MAAA,CAAA,EACW,EAAA,MAAA,CAAA,EAEjBH,EAAA,CAAA,mBACJI,EAAA,EACAD,EAAA,EAAA,2BAAA,CAAA,EACIM,EAAA,uBAAA,SAAA6E,EAAA,CAAAC,OAAA5E,EAAA6E,CAAA,EAAAxE,EAAAoE,EAAArD,eAAAuD,CAAA,CAAA,CAAA,EACHlF,EAAA,EAA2B,EAC1B,EAGVgB,EAAA,EAAAqE,GAAA,EAAA,EAAA,QAAA,CAAA,EAAmE,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,EAkBzC,GAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,qBA1BdvF,EAAA,CAAA,EAAAJ,EAAA,IAAAC,EAAA,EAAA,EAAA,yBAAA,EAAA,GAAA,EAQUG,EAAA,CAAA,EAAAc,EAAA,OAAAiE,EAAA7C,QAAA,SAAA,EAA2B,WAAAsD,CAAA;8GD+BpC3D,CAAiC,GAAA,gFI3CtC4D,GAAA,CAAA,2BAoBQC,EAAA,CAAA,oBAAAC,EAAA,IAAAC,EAAAC,GAAA,GAAA,6BAKAH,EAAA,CAAA,uCAAAC,EAAA,IAAAG,EAAA,EAAA,EAAAC,EAAAC,UAAA,OAAA,EAAA,GAAA,6BAKAN,EAAA,CAAA,uCAAAC,EAAA,IAAAG,EAAA,EAAA,EAAAG,EAAAC,UAAA,OAAA,EAAA,GAAA,6BAKAC,EAAA,EAAA,IAAA,EAAA,EACK,EAAA,MAAA,EAAMT,EAAA,CAAA,EAAkBU,EAAA,EACxBC,EAAA,EAAA,WAAA,EAAA,EACHD,EAAA,qBAHsBE,EAAA,aAAAC,EAAA,EAAAC,GAAAC,EAAAC,SAAA,CAAA,EACbC,EAAA,CAAA,EAAAC,EAAAH,EAAAI,IAAA,4BAOXnB,EAAA,CAAA,oBAAAC,EAAA,IAAAmB,EAAAC,IAAA,GAAA,GDNhB,IAAaC,IAA2B,IAAA,CAAlC,MAAOA,CAA2B,CAqBpCC,YAAoBC,EAA+BC,EAAwBC,EAAwB,CAA/E,KAAAF,MAAAA,EAA+B,KAAAC,OAAAA,EAAwB,KAAAC,YAAAA,EAhBlE,KAAAC,sBAAwB,GAOjC,KAAAC,kBAAoB,IAAIC,GAAmB,EAAE,EAC7C,KAAAC,UAAY,GACJ,KAAAC,oBAAsB,IAAIC,GAAwB,EAAE,EACpD,KAAAC,gBAAkB,IAAID,GAAwB,EAAE,EAChD,KAAAE,eAAiB,IAAIF,GAA8C,CAAA,CAAE,EACrE,KAAAG,uBAAyB,IAAIH,GAAyB,EAAI,EAC1D,KAAAI,SAAW,IAAIJ,GAAyB,EAAI,EAC5C,KAAAK,SAAW,IAAIC,EAE+E,CAEtGC,UAAQ,CACJ,KAAKC,qBAAuB,KAAKhB,MAAMiB,cAAcC,KACjDC,EAAIC,GAAOA,EAAIC,IAAI,cAAc,CAAC,EAClCF,EAAIG,GAAUA,EAAW,CAACA,EAAL,CAAU,EAC/BC,GAAU,CAAC,EACXC,GAAoB,CAAE,EAG1B,KAAKC,sBAAwB,KAAKzB,MAAMiB,cAAcC,KAClDC,EAAIC,GAAOA,EAAIC,IAAI,iBAAiB,CAAC,EACrCF,EAAIO,GAAaA,EAAe,CAACA,EAAN,EAAc,EACzCH,GAAU,EAAE,EACZC,GAAoB,CAAE,EAG1B,IAAMG,EAAc,KAAKvB,kBAAkBwB,aAAaV,KACpDW,GAAa,GAAG,EAChBC,GAAI,IAAM,KAAKC,sBAAsB,CAAC,CAAC,EACvCR,GAAU,EAAE,CAAC,EAGXb,EAAiB,KAAKA,eAAesB,aAAY,EAAGd,KACtDe,GAAO,IAAM,KAAK9B,qBAAqB,EACvC2B,GAAI,IAAM,KAAKC,sBAAsB,CAAC,CAAC,EACvCR,GAAU,CAAA,CAAE,CAAC,EAGXZ,EAAyB,KAAKA,uBAAuBqB,aAAY,EAAGd,KACtEe,GAAO,IAAM,KAAKC,gBAAkB,IAAI,EACxCV,GAAoB,EACpBM,GAAI,IAAM,KAAKC,sBAAsB,CAAC,CAAC,EACvCR,GAAU,EAAI,CAAC,EAcbY,EAXeC,GACjB,KAAK7B,oBACL,KAAKE,gBACL,KAAKO,qBACL,KAAKS,sBACLE,EACAjB,EACAC,EACA,KAAKC,QAAQ,EAGgBM,KAC7BmB,GAAU,KAAKxB,QAAQ,EACvBiB,GAAI,IAAO,KAAKxB,UAAY,EAAK,EACjCuB,GAAa,EAAE,EACfS,EAAU,CAAC,CAAC3D,EAAI4D,EAAUC,EAAaC,EAAcC,EAAYC,EAAST,EAAc,IAAK,CACzF,IAAMU,GAAOH,EACPI,IAAQL,EAAc,GAAKC,EACjC,GAAIE,EAAQG,QAAU,KAAK3C,sBAAuB,CAC9C,IAAM4C,GAAeL,EACd,CAAE/C,KAAM,CAAEqD,SAAUN,CAAU,CAAE,EACjCO,OACN,OAAO,KAAK/C,YAAYgD,WACnBC,0BACG,CACIZ,SAAAA,EACAI,QAAAA,EACAT,eAAAA,IAEJ,CACIU,KAAAA,GACAC,KAAAA,GACAZ,OAAQc,GACX,EAEJK,UAAUC,IAAQA,GAAKF,yBAAyB,EAChDjC,KAAKoC,GAAW,IAAMC,GAAG,CAAEC,MAAO,CAAA,EAAIC,WAAY,CAAC,CAAE,CAAC,CAAC,CAChE,KAAO,QAAI9E,EACA,KAAKuB,YAAYgD,WACnBQ,sBAAsB/E,EAAIiE,GAAMC,GAAMH,CAAU,EAChDU,UAAUC,IAAQA,GAAKH,YAAYS,eAAe,EAEhDJ,GAAG,IAAI,CAEtB,CAAC,EACDzB,GAAI,IAAO,KAAKxB,UAAY,EAAM,EAClCsD,GAAS,IAAO,KAAKtD,UAAY,EAAM,CAAC,EAG5C,KAAKuD,UAAY1B,EAAYjB,KAAKC,EAAI2C,GAAWA,EAASA,EAAON,MAAQ,CAAA,CAAG,CAAC,EAC7E,KAAKO,oBAAsB5B,EAAYjB,KAAKC,EAAI2C,GAAWA,EAASA,EAAOL,WAAa,CAAE,CAAC,CAC/F,CAEAO,YAAYC,EAAsB,CAC1B,iBAAkBA,GAClB,KAAK1D,oBAAoB2D,KAAKD,EAAQE,aAAaC,YAAY,EAE/D,aAAcH,GACd,KAAKxD,gBAAgByD,KAAKD,EAAQ1B,SAAS6B,YAAY,EAEvD,mBAAoBH,GACpB,KAAKtD,uBAAuBuD,KAAKD,EAAQ/B,eAAekC,YAAY,EAEpE,mBAAoBH,GAChB,KAAKI,gBACL,KAAK3D,eAAewD,KAAK,KAAKG,cAAc,CAGxD,CAEAC,aAAW,CACP,KAAKzD,SAASqD,KAAI,EAClB,KAAKrD,SAAS0D,SAAQ,CAC1B,CAEAxC,sBAAsBT,EAAY,CAC9B,KAAKkD,SAAS,eAAgBlD,CAAI,CACtC,CAEAmD,wBAAwB/C,EAAe,CACnC,KAAK8C,SAAS,kBAAmB9C,CAAO,CAC5C,CAEAgD,SAAO,CACH,KAAK9D,SAASsD,KAAK,EAAI,CAC3B,CAEQM,SAASG,EAAaC,EAAU,CACpC,KAAK3E,OAAO4E,SAAS,CAAC,IAAI,EAAG,CACzBC,WAAY,KAAK9E,MACjB+E,YAAa,CACT,CAACJ,CAAG,EAAGC,GAEXI,oBAAqB,QACrBC,WAAY,GACf,CACL,iDAzJSnF,GAA2BoF,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,CAAA,CAAA,CAAA,CAAA,+BAA3BvF,EAA2BwF,UAAA,CAAA,CAAA,yBAAA,CAAA,EAAAC,eAAA,SAAAC,EAAAC,EAAAC,EAAA,IAAAF,EAAA,QAMtBG,GAAW,CAAA,s1BC9C7B1G,EAAA,EAAA,MAAA,CAAA,EACIE,EAAA,EAAA,MAAA,CAAA,EACAF,EAAA,EAAA,MAAA,CAAA,EACI2G,EAAA,EAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,eAGJ3G,EAAA,EACAD,EAAA,EAAA,mBAAA,CAAA,sDAOI6G,EAAA,aAAA,SAAAC,EAAA,CAAA,OAAcN,EAAA1D,sBAAAgE,CAAA,CAA6B,CAAA,EAAC,qBAAA,SAAAA,EAAA,CAAA,OACtBN,EAAAhB,wBAAAsB,CAAA,CAA+B,CAAA,EAErD5G,EAAA,GAAA,iBAAA,CAAA,oBAIAF,EAAA,GAAA,iBAAA,CAAA,oBACI2G,EAAA,GAAAI,GAAA,EAAA,EAAA,aAAA,EAGJ9G,EAAA,EACAD,EAAA,GAAA,iBAAA,CAAA,oBACI2G,EAAA,GAAAK,GAAA,EAAA,EAAA,aAAA,EAGJ/G,EAAA,EACAD,EAAA,GAAA,iBAAA,CAAA,oBACI2G,EAAA,GAAAM,GAAA,EAAA,EAAA,aAAA,EAGJhH,EAAA,EACAD,EAAA,GAAA,iBAAA,CAAA,oBACI2G,EAAA,GAAAO,GAAA,EAAA,EAAA,aAAA,EAMJjH,EAAA,EACAD,EAAA,GAAA,iBAAA,EAAA,oBACI2G,EAAA,GAAAQ,GAAA,EAAA,EAAA,aAAA,EAGJlH,EAAA,EAAiB,EACF,SAhDQO,EAAA,EAAA4G,EAAA,UAAAZ,EAAAnF,SAAA,EAGlBb,EAAA,CAAA,EAAAL,EAAA,mBAAAqG,EAAAa,cAAA,EAAkC,0BAAAjH,EAAA,GAAAkH,GAAAC,EAAA,EAAA,GAAAf,EAAA1B,mBAAA,CAAA,CAAA,EAKvCtE,EAAA,CAAA,EAAA4G,EAAA,UAAAZ,EAAAnF,SAAA,EACAlB,EAAA,QAAAoH,EAAA,EAAA,GAAAf,EAAA5B,SAAA,CAAA,EAA2B,eAAA2C,EAAA,EAAA,GAAAf,EAAAhE,qBAAA,CAAA,EACmB,aAAA+E,EAAA,EAAA,GAAAf,EAAA1B,mBAAA,CAAA,EACJ,cAAAyC,EAAA,EAAA,GAAAf,EAAAzE,oBAAA,CAAA,EAMtCvB,EAAA,CAAA,EAAAL,EAAA,oBAAAqG,EAAArF,iBAAA,EAAuC,wBAAAoG,EAAA,GAAA,GAAA,wBAAA,CAAA,EAG3B/G,EAAA,CAAA,EAAAL,EAAA,UAAAoH,EAAA,GAAA,GAAA,WAAA,CAAA,EAAmC,kBAAA,EAAA,EAKnC/G,EAAA,CAAA,EAAAL,EAAA,UAAAoH,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EAK3C/G,EAAA,CAAA,EAAAL,EAAA,UAAAoH,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EAK3C/G,EAAA,CAAA,EAAAL,EAAA,UAAAoH,EAAA,GAAA,GAAA,aAAA,CAAA,EAAqC,WAAA,EAAA,EAQrC/G,EAAA,CAAA,EAAAL,EAAA,UAAAoH,EAAA,GAAA,GAAA,aAAA,CAAA,EAAqC,WAAA,EAAA;qGDJhD1G,CAA2B,GAAA,+VGxCxC2G,EAAA,EAAA,gCAAA,EAAA,iBAEIC,EAAA,UAAAC,EAAAC,OAAA,EAAmB,cAAAD,EAAAE,EAAA,sCAUPC,EAAA,EAAA,KAAA,EAAA,EAAmD,EAAA,MAAA,EAAA,EAE3CL,EAAA,EAAA,MAAA,EAAA,EACAK,EAAA,EAAA,QAAA,EAAA,EAIIC,EAAA,SAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAN,EAAAO,EAAA,EAAA,OAAAC,EAAUR,EAAAS,iBAAA,CAAkB,CAAA,CAAA,EAJhCC,EAAA,EAKE,EACA,oBAHEC,EAAA,CAAA,EAAAZ,EAAA,UAAAC,EAAAY,kBAAA,KAAA,KAAAZ,EAAAY,iBAAAC,2BAAA,CAAA,yBAsBIf,EAAA,EAAA,WAAA,EAAA,wBACAA,EAAA,EAAA,WAAA,EAAA,wBACAA,EAAA,EAAA,WAAA,EAAA,4BAEJK,EAAA,EAAA,MAAA,EAAA,EAA+CW,EAAA,CAAA,EAAoBJ,EAAA,uBAApBC,EAAA,EAAAI,EAAAC,EAAAC,SAAA,sCANnDd,EAAA,EAAA,MAAA,EAAA,EAAqD,EAAA,SAAA,EAAA,EACzCC,EAAA,QAAA,UAAA,CAAA,IAAAY,EAAAX,EAAAa,CAAA,EAAAC,KAAA,OAAAX,EAASQ,EAAAI,gBAAA,CAAsB,CAAA,CAAA,EACnCC,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAA8D,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EACF,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAEhEd,EAAA,EACAW,EAAA,EAAAI,GAAA,EAAA,EAAA,MAAA,EAAA,EACJf,EAAA,uBAN6CC,EAAA,EAAAe,EAAA,SAAAV,EAAAC,SAAA,EAC1BN,EAAA,EAAAZ,EAAA,OAAA,CAAAiB,EAAAC,SAAA,EACAN,EAAA,EAAAZ,EAAA,OAAAiB,EAAAC,YAAA,KAAA,EACAN,EAAA,EAAAZ,EAAA,OAAAiB,EAAAC,YAAA,MAAA,EAEUN,EAAA,EAAAZ,EAAA,OAAAiB,EAAAC,SAAA,6BArBrCd,EAAA,EAAA,IAAA,EAGC,EAAA,MAAA,EAAA,EACsD,EAAA,yBAAA,EAAA,EAQ9C,EAAA,MAAA,EACSW,EAAA,CAAA,EAAoBJ,EAAA,EAAO,EAErCW,EAAA,EAAAM,GAAA,EAAA,EAAA,MAAA,EAAA,EAQJjB,EAAA,EAAM,gCArBNgB,EAAA,SAAAE,EAAAC,MAAA,EAE0BlB,EAAA,EAAAZ,EAAA,UAAA6B,EAAAE,KAAA,EAElBnB,EAAA,EAAAZ,EAAA,aAAAC,EAAAE,EAAA,EAAiB,WAAA0B,EAAA1B,EAAA,EACK,QAAA,EAAA,EAEV,SAAA,GAAA,EAINS,EAAA,CAAA,EAAAI,EAAAa,EAAAG,OAAA,EAEJpB,EAAA,EAAAZ,EAAA,OAAA6B,EAAAI,IAAA,yBAoCNC,GAAA,CAAA,wBACAA,GAAA,CAAA,2BAGQnC,EAAA,EAAA,yBAAA,EAAA,gCAEIC,EAAA,kBAAAmC,CAAA,EAAgC,UAAAlC,EAAAC,OAAA,4BAIpCH,EAAA,EAAA,yBAAA,EAAA,kBAEIC,EAAA,UAAAC,EAAAC,OAAA,6BAVZkC,EAAA,CAAA,EACIhC,EAAA,EAAA,MAAA,EAAA,EACIkB,EAAA,EAAAe,GAAA,EAAA,EAAA,yBAAA,EAAA,EAKC,EAAAC,GAAA,EAAA,EAAA,yBAAA,EAAA,EAMDvC,EAAA,EAAA,+BAAA,EAAA,EAIJY,EAAA,uBAdiCC,EAAA,CAAA,EAAAZ,EAAA,UAAAC,EAAAC,QAAAqC,aAAA,EAMxB3B,EAAA,EAAAZ,EAAA,OAAAC,EAAAC,QAAAsC,MAAA,EAKD5B,EAAA,EAAAZ,EAAA,UAAAC,EAAAC,OAAA,EAAmB,cAAAD,EAAAE,EAAA,sCA/B3CC,EAAA,EAAA,IAAA,EAAuE,EAAA,KAAA,EAAA,EAKlE,EAAA,SAAA,EAAA,mBAIOC,EAAA,QAAA,UAAA,CAAAC,EAAAmC,CAAA,EAAA,IAAAxC,EAAAO,EAAA,EAAA,OAAAC,EAASR,EAAAyC,sBAAA,CAAuB,CAAA,CAAA,EAGhC3C,EAAA,EAAA,WAAA,EAAA,EACJY,EAAA,EACAP,EAAA,EAAA,MAAA,EAAA,EACIkB,EAAA,EAAAqB,GAAA,EAAA,EAAA,eAAA,EAAA,EAA4D,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EACL,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAoB3DlC,EAAA,EAAM,EACL,oBAjCDC,EAAA,EAAAe,EAAA,SAAA1B,EAAA6C,mBAAA,uEAIIlC,EAAA,EAAAe,EAAA,SAAA1B,EAAA6C,mBAAA,EAEA9C,EAAA,QAAA+C,EAAA,EAAA,GAAA,+BAAA,CAAA,EAI4BnC,EAAA,CAAA,EAAAe,EAAA,SAAA,CAAA1B,EAAA6C,mBAAA,EACblC,EAAA,EAAAZ,EAAA,mBAAAC,EAAA+C,iBAAA,KAAA,KAAA/C,EAAA+C,gBAAAC,QAAA,EACArC,EAAA,EAAAZ,EAAA,mBAAAC,EAAAiD,oBAAA,EACAtC,EAAA,EAAAZ,EAAA,OAAAC,EAAAC,OAAA,6BA6B3BkC,EAAA,CAAA,EAcIF,GAAA,EAAA,EAAA,wDACItB,EAAA,EAAAZ,EAAA,mBAAAmD,CAAA,EAAqC,0BAAAC,GAAA,EAAAC,GAAAC,EAAAC,CAAA,CAAA,6BAKzCnD,EAAA,EAAA,IAAA,EAA2B,EAAA,IAAA,EAEnBL,EAAA,EAAA,wBAAA,EAAA,EACJY,EAAA,EAAK,kBAFDC,EAAA,uEACuBA,EAAA,EAAAZ,EAAA,kBAAAC,EAAAuD,eAAA,sCAQ3CpD,EAAA,EAAA,8BAAA,EAAA,EAGIC,EAAA,qBAAA,SAAAoD,EAAA,CAAAnD,EAAAoD,CAAA,EAAA,IAAAzD,EAAAO,EAAA,EAAA,OAAAC,EAAsBR,EAAA0D,mBAAAC,KAAAH,CAAA,CAA+B,CAAA,CAAA,EACxD9C,EAAA,oBAFGX,EAAA,eAAAC,EAAA4D,YAAA,6BAGJzD,EAAA,EAAA,MAAA,EAAA,EACIW,EAAA,CAAA,mBACJJ,EAAA,kBADIC,EAAA,EAAAkD,EAAA,IAAAC,EAAA,EAAA,EAAA,qBAAAC,GAAA,EAAAC,GAAAhE,EAAAiE,aAAAjE,EAAAkE,WAAAlE,EAAAmE,UAAA,CAAA,EAAA,GAAA,sCAGJhE,EAAA,EAAA,0BAAA,EAAA,EAMIC,EAAA,aAAA,SAAAoD,EAAA,CAAAnD,EAAA+D,CAAA,EAAA,IAAApE,EAAAO,EAAA,EAAA,OAAAC,EAAcR,EAAAqE,WAAAV,KAAAH,CAAA,CAAuB,CAAA,CAAA,EACxC9C,EAAA,oBALGX,EAAA,KAAAC,EAAAE,EAAA,EAAS,cAAAF,EAAAsE,WAAA,EACkB,eAAAtE,EAAA4D,YAAA,EACE,aAAA5D,EAAAmE,UAAA,sCAQ7BhE,EAAA,EAAA,KAAA,EAAA,EAIC,EAAA,MAAA,EAAA,EACqB,EAAA,MAAA,EAAA,mBAEVL,EAAA,EAAA,WAAA,EAAA,EACJY,EAAA,EACAP,EAAA,EAAA,QAAA,EAAA,EAIIC,EAAA,QAAA,SAAAoD,EAAA,CAAAnD,EAAAkE,CAAA,EAAA,IAAAC,EAAAjE,EAAA,EAAAkE,KAAAzE,EAAAO,EAAA,EAAA,OAAAC,EAASR,EAAA0E,WAAAF,EAAAhB,CAAA,CAAwB,CAAA,CAAA,EAJrC9C,EAAA,EAKE,EACA,+BAbNgB,EAAA,SAAA1B,EAAA2E,cAAA3E,EAAA4E,cAAAJ,EAAAtE,EAAA,CAAA,EAI2CS,EAAA,CAAA,EAAAZ,EAAA,QAAA+C,EAAA,EAAA,EAAA,4BAAA,CAAA,EAMnCnC,EAAA,CAAA,EAAAZ,EAAA,UAAAC,EAAAY,kBAAA,KAAA,KAAAZ,EAAAY,iBAAAiE,WAAAL,CAAA,CAAA,yBAaAvC,GAAA,CAAA,4BAHJE,EAAA,CAAA,EAGId,EAAA,EAAAyD,GAAA,EAAA,EAAA,eAAA,EAAA,qCACKnE,EAAA,EAAAZ,EAAA,oBAAAgF,EAAAC,OAAAC,SAAA,EAGvB,0BAAAC,EAAA,EAAAC,GAAAX,CAAA,CAAA,EAAuD,4BAAAO,EAAAK,QAAA,yBAKrCnD,GAAA,CAAA,2BAAAZ,EAAA,EAAAgE,GAAA,EAAA,EAAA,eAAA,EAAA,oDACKtF,EAAA,mBAAAuF,EAAAtC,QAAA,EAAmC,0BAAAG,GAAA,EAAAoC,GAAAf,EAAAgB,CAAA,CAAA,6BAlBpDrF,EAAA,EAAA,IAAA,EAGC,EAAA,MAAA,EAAA,EAEOkB,EAAA,EAAAoE,GAAA,EAAA,EAAA,eAAA,EAAA,EAEC,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,EAcLjF,EAAA,EAAM,kDAnBNgB,EAAA,SAAA1B,EAAA2E,cAAA3E,EAAA4E,cAAAJ,EAAAtE,EAAA,CAAA,EAE0BS,EAAA,EAAAZ,EAAA,UAAAuF,EAAAxD,KAAA,EAEjBnB,EAAA,EAAAZ,EAAA,OAAAC,EAAA4F,iBAAAC,IAAAP,EAAApF,EAAA,CAAA,EAAsC,WAAA4F,CAAA,yBAoBnD7D,GAAA,CAAA,4BADJE,EAAA,CAAA,EACId,EAAA,EAAA0E,GAAA,EAAA,EAAA,eAAA,EAAA,0DACKpF,EAAA,EAAAZ,EAAA,mBAAAmD,CAAA,EAAoC,0BAAAC,GAAA,EAAAoC,GAAAS,EAAAR,EAAA,CAAA,CAAA,6BA7C7CrF,EAAA,EAAA,KAAA,GAAA,CAAA,EACIkB,EAAA,EAAA4E,GAAA,EAAA,EAAA,KAAA,EAAA,EAIC,EAAAC,GAAA,EAAA,EAAA,KAAA,EAAA,EAoCDpG,EAAA,EAAA,IAAA,EACJY,EAAA,EACAW,EAAA,EAAA8E,GAAA,EAAA,EAAA,eAAA,EAAA,qCA3C2BpG,EAAA,cAAAoD,GAAA,EAAAiD,GAAAZ,EAAAhB,CAAA,CAAA,EAElB7D,EAAA,CAAA,EAAAZ,EAAA,OAAAC,EAAAY,gBAAA,EAiBkBD,EAAA,EAAAZ,EAAA,UAAAC,EAAAqG,oBAAA,EAsBnB1F,EAAA,EAAAe,EAAA,SAAA1B,EAAA2E,cAAA3E,EAAA4E,cAAAJ,EAAAtE,EAAA,CAAA,EAEgCS,EAAA,EAAAZ,EAAA,UAAAC,EAAAsG,kBAAA9B,CAAA,CAAA,GDrK5C,IAAa+B,IACT,IAAA,CADE,MAAOA,UACDC,EAAwC,CAYhDC,YACcC,EACAC,EAAwB,CAElC,MAAMD,EAAmBC,CAAW,EAH1B,KAAAD,kBAAAA,EACA,KAAAC,YAAAA,EAVJ,KAAAC,YAAc,IAAIC,GAM5B,KAAAC,SAAsB,CAAA,EACtB,KAAAlC,cAA0C,CAAA,EAoC1C,KAAAmC,cAAgB,CAACC,EAAevC,IACR,KAAKwC,SAASC,eAAc,EAAGF,CAAK,GACpCG,KAAKC,WAAWC,WAAa5C,EAAK0C,KAAKC,WAAWC,QAhC1E,CAEAC,YAAYC,EAAsB,CAE9B,GADA,MAAMD,YAAYC,CAAO,EACrBA,EAAQC,gBAAkBD,EAAQE,MAAO,CACzC,IAAMC,EAAwC,CAAA,EAC9C,QAAWN,KAAc,KAAKK,OAAS,CAAA,EAAI,CACvCC,EAAeC,KAAKP,CAAU,EAC9B,IAAMQ,EAAuB,KAAKtB,kBAAkBc,CAAU,EAC9DM,EAAeC,KAAK,GAAGC,EAAqBC,KAAI,CAAE,CACtD,CACAH,EAAeI,QAAQ,CAACV,EAAYJ,IAAW,KAAKpC,cAAcwC,EAAWlH,EAAE,EAAI8G,CAAM,CAC7F,CACJ,CAEAe,iBAAe,CACX,KAAKC,kBAAkBT,QAAQU,UAAWC,GAA2B,CACjE,KAAKjB,SAASC,eAAc,EAAGY,QAAQrD,GAAQ,KAAKwC,SAASkB,WAAW1D,CAAI,CAAC,EAC7E,QAAW2D,KAAOF,EAAIG,QAAO,EACzBD,EAAIE,cAAgB,KAAKrB,SACzBmB,EAAIG,SAASC,mBAAmB,KAAKvB,SAASwB,YAAY,EAC1D,KAAKxB,SAASyB,QAAQN,CAAG,CAEjC,CAAC,CACL,CAEA9B,kBAAkB7B,EAAyB,CACvC,OAAO,KAAK+C,gBAAgBmB,OAAOC,GAAKA,EAAEvB,WAAa5C,EAAKvE,EAAE,GAAK,CAAA,CACvE,CAOA2I,OACIC,EAGE,CAEF,IAAMC,EAAaD,EAAMrE,KAAK0C,KAAKC,WAAW4B,YAAYzG,SAAW,EAC/D0G,EAAkBF,GAAc,KAAKzE,YAAc,GAAK,KAAKV,aAAe,EAC5EyD,EAAWyB,EAAMrE,KAAK0C,KAAKC,WAAWC,SACtC6B,EAAc,KAAKzB,MAAM0B,UAAUC,GAAKA,EAAElJ,KAAOmH,CAAQ,EACzDgC,EAAgBJ,EAAkBH,EAAMQ,aAAeJ,EAAc,EAO3E,GANA,KAAKtC,YAAYjD,KAAK,CAClB4F,aAAcT,EAAMrE,KAAK0C,KAAKC,WAAWlH,GACzC8G,MAAOqC,EACPhC,SAAUyB,EAAMrE,KAAK0C,KAAKC,WAAWC,SACxC,EAEG0B,EACA,KAAKtB,MAAQ,CAAC,GAAG,KAAKA,KAAK,EAC3B,KAAKA,MAAM+B,OAAOV,EAAMW,cAAe,CAAC,EACxC,KAAKhC,MAAM+B,OAAOV,EAAMQ,aAAc,EAAGR,EAAMrE,KAAK0C,KAAKC,UAAU,MAChE,CACH,IAAMsC,EAAS,KAAKjC,MAAMkC,KAAKP,GAAKA,EAAElJ,KAAOmH,CAAQ,EACrD,GAAIqC,EAAQ,CACR,IAAMlC,EAAiB,KAAKlB,kBAAkBoD,CAAM,EAC9CE,EAAwBX,EAAkBH,EAAMW,cAAgBP,EAAc,EACpF1B,EAAegC,OAAOI,EAAuB,CAAC,EAC9CpC,EAAegC,OAAOV,EAAMQ,aAAc,EAAGR,EAAMrE,KAAK0C,KAAKC,UAAU,CAC3E,CACJ,CACA,KAAKV,kBAAkBmD,aAAY,CACvC,iDApFStD,GAA4BuD,EAAAC,EAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,CAAA,+BAA5BzD,EAA4B0D,UAAA,CAAA,CAAA,2BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,OAM1BE,GAAW,CAAA,UAIiBC,EAAO,w4EC3ClDjJ,EAAA,EAAAkJ,GAAA,EAAA,EAAA,gCAAA,CAAA,EAKApK,EAAA,EAAA,MAAA,CAAA,EAA2B,EAAA,MAAA,CAAA,EAEnBqK,GAAA,CAAA,EACJ9J,EAAA,EACAP,EAAA,EAAA,QAAA,CAAA,EAAkD,EAAA,OAAA,EACqB,EAAA,KAAA,CAAA,EAE3DkB,EAAA,EAAAoJ,GAAA,EAAA,EAAA,KAAA,CAAA,EAAmD,EAAAC,GAAA,EAAA,EAAA,KAAA,CAAA,EAoCnDvK,EAAA,EAAA,IAAA,EAAI,GAAA,MAAA,EAAA,EAC2B,GAAA,8BAAA,EAAA,gBAInBC,EAAA,UAAA,SAAAoD,EAAA,CAAAmH,OAAAtK,EAAAuK,CAAA,EAAApK,EAAW4J,EAAAS,gBAAArH,CAAA,CAAuB,CAAA,CAAA,EAAC,eAAA,UAAA,CAAAmH,OAAAtK,EAAAuK,CAAA,EAAApK,EACnB4J,EAAAU,eAAA,CAAgB,CAAA,CAAA,EACnCpK,EAAA,EAA8B,EAC7B,EACL,EAETW,EAAA,GAAA0J,GAAA,EAAA,GAAA,KAAA,EAAA,EAuCJrK,EAAA,EACAP,EAAA,GAAA,QAAA,EAAA,EAGIC,EAAA,qBAAA,SAAAoD,EAAA,CAAAmH,OAAAtK,EAAAuK,CAAA,EAAApK,EAAsB4J,EAAAvB,OAAArF,CAAA,CAAc,CAAA,CAAA,EAGpCnC,EAAA,GAAA2J,GAAA,EAAA,EAAA,eAAA,EAAA,mBAmBA7I,EAAA,EAAA,EACId,EAAA,GAAA4J,GAAA,EAAA,EAAA,KAAA,EAAA,MAMRvK,EAAA,EAAQ,EACJ,EAEZP,EAAA,GAAA,MAAA,EAAA,EACIkB,EAAA,GAAA6J,GAAA,EAAA,EAAA,8BAAA,EAAA,EAIC,GAAAC,GAAA,EAAA,EAAA,MAAA,EAAA,EACoD,GAAAC,GAAA,EAAA,EAAA,0BAAA,EAAA,EAYzD1K,EAAA,EAEAW,EAAA,GAAAgK,GAAA,EAAA,EAAA,cAAA,KAAA,EAAA1F,CAAA,QAzJK5F,EAAA,OAAAqK,EAAAnK,OAAA,EAQeU,EAAA,CAAA,EAAAe,EAAA,YAAA0I,EAAAkB,aAAA,EACL3K,EAAA,EAAAe,EAAA,iBAAA0I,EAAAxJ,kBAAA,KAAA,KAAAwJ,EAAAxJ,iBAAA2K,UAAAhJ,MAAA,EAEM5B,EAAA,CAAA,EAAAZ,EAAA,OAAAqK,EAAAxJ,gBAAA,EAYkBD,EAAA,EAAAZ,EAAA,UAAAqK,EAAA/D,oBAAA,EA2BX1F,EAAA,CAAA,EAAAZ,EAAA,aAAA+C,EAAA,GAAA,GAAAsH,EAAAoB,WAAA,CAAA,EAAkC,UAAApB,EAAAqB,aAAA,EAQ7C9K,EAAA,CAAA,EAAAZ,EAAA,OAAAqK,EAAArH,iBAAAqH,EAAAnH,uBAAAmH,EAAAnK,SAAA,KAAA,KAAAmK,EAAAnK,QAAAsC,OAAA,EA4CL5B,EAAA,EAAAZ,EAAA,2BAAAqK,EAAArD,aAAA,EAKJpG,EAAA,EAAAZ,EAAA,UAAA+D,EAAA,GAAA,GAAAsG,EAAA3C,MAAAiE,GAAA,GAAAC,GAAAvB,EAAAxG,aAAAwG,EAAA9F,YAAA8F,EAAAjG,WAAAiG,EAAAlK,EAAA,CAAA,CAAA,EAQH,eAAAkK,EAAAwB,UAAAC,KAAAzB,CAAA,CAAA,EASgBzJ,EAAA,CAAA,EAAAZ,EAAA,OAAA,EAAAqK,EAAA3C,OAAA,MAAA2C,EAAA3C,MAAAlF,OAAA,EAWZ5B,EAAA,CAAA,EAAAZ,EAAA,OAAAqK,EAAAjG,UAAA,EAICxD,EAAA,EAAAZ,EAAA,OAAAqK,EAAAjG,UAAA,EAKDxD,EAAA,EAAAZ,EAAA,OAAAqK,EAAAjG,UAAA;;uGDhHIoC,CACT,GAAA,EEAJ,IAAAuF,GAAgC,0MCtBpBC,EAAA,EAAA,SAAA,EAAA,EAGIC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,OAAA,CAAQ,CAAA,CAAA,EAGjBC,EAAA,CAAA,mBACJC,EAAA,oBAHIC,EAAA,WAAAN,EAAAO,WAAAC,SAAAR,EAAAO,WAAAE,QAAA,EAEAC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,eAAA,EAAA,GAAA,sCAGAhB,EAAA,EAAA,SAAA,EAAA,EAGIC,EAAA,QAAA,UAAA,CAAAC,EAAAe,CAAA,EAAA,IAAAb,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAc,KAAA,CAAM,CAAA,CAAA,EAGfV,EAAA,CAAA,mBACJC,EAAA,qBAHIC,EAAA,YAAAN,EAAAO,WAAAC,SAAAR,EAAAO,WAAAE,WAAA,CAAAT,EAAAe,cAAA,CAAA,EAEAL,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,eAAA,EAAA,GAAA,4BANJI,EAAA,EAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,iBACKX,EAAA,mBAAAN,EAAAkB,gBAAA,0BA0BOC,EAAA,CAAA,EAA6Df,EAAA,CAAA,8BAAAM,EAAA,EAAAU,EAAAR,EAAA,EAAA,EAAA,gBAAA,CAAA,0BAGvCR,EAAA,CAAA,yBAAAgB,EAAAR,EAAA,EAAA,EAAA,iBAAA,CAAA,4BAKtChB,EAAA,EAAA,UAAA,EACIyB,EAAA,EAAA,uBAAA,EAAA,EACJhB,EAAA,qBAD0BK,EAAA,EAAAJ,EAAA,SAAAgB,CAAA,0BAQd1B,EAAA,EAAA,IAAA,EAAA,EAA2DQ,EAAA,CAAA,mBAEzDC,EAAA,SAFCC,EAAA,aAAAiB,EAAA,EAAAC,EAAA,CAAA,EAAwDd,EAAA,EAAAU,EAAAR,EAAA,EAAA,EAAA,yBAAA,CAAA,6BAG3DhB,EAAA,EAAA,IAAA,EAAA,EAGKQ,EAAA,CAAA,mBAAiCC,EAAA,4BAFlCC,EAAA,aAAAmB,EAAA,EAAAC,GAAAC,EAAAC,EAAA,CAAA,EAEClB,EAAA,EAAAU,EAAAR,EAAA,EAAA,EAAAe,EAAAE,IAAA,CAAA,6BAELV,EAAA,CAAA,EAA6Bf,EAAA,CAAA,iDAAAM,EAAA,EAAAU,EAAAR,EAAA,EAAA,EAAAe,EAAAE,IAAA,CAAA,6BATjCjC,EAAA,EAAA,IAAA,EACIoB,EAAA,EAAAc,GAAA,EAAA,EAAA,IAAA,EAAA,EAA2D,EAAAC,GAAA,EAAA,EAAA,IAAA,EAAA,EAMtD,EAAAC,GAAA,EAAA,EAAA,eAAA,EAAA,EAGT3B,EAAA,+BATgDK,EAAA,EAAAJ,EAAA,OAAA2B,CAAA,EAKvCvB,EAAA,EAAAJ,EAAA,OAAA,CAAA2B,GAAA,CAAAC,CAAA,EAGUxB,EAAA,EAAAJ,EAAA,OAAA4B,CAAA,6BAZ/BtC,EAAA,EAAA,gBAAA,EACK,EAAA,MAAA,EAAA,EAAuB,EAAA,KAAA,EAAA,EAEhBoB,EAAA,EAAAmB,GAAA,EAAA,EAAA,KAAA,EAAA,EAWJ9B,EAAA,EAAK,EACH,qBAZ6BK,EAAA,CAAA,EAAAJ,EAAA,UAAA8B,EAAAC,WAAA,6BAmDnCzC,EAAA,EAAA,WAAA,EAAA,mBAKIyB,EAAA,EAAA,2BAAA,EAAA,uBAMJhB,EAAA,kBARIC,EAAA,QAAAM,EAAA,EAAA,EAAA,sBAAA,CAAA,EAIIF,EAAA,CAAA,EAAAJ,EAAA,eAAAN,EAAAsC,YAAA,EAA6B,wBAAAtC,EAAAO,WAAAgC,IAAA,cAAA,CAAA,EAC2B,WAAA,CAAA3B,EAAA,EAAA,EAAAZ,EAAAkB,gBAAA,CAAA,0BA4BhDC,EAAA,CAAA,EAAsEf,EAAA,CAAA,8BAAAM,EAAA,EAAAU,EAAAR,EAAA,EAAA,EAAA,qCAAA,CAAA,0BAG9CR,EAAA,CAAA,yBAAAgB,EAAAR,EAAA,EAAA,EAAA,gCAAA,CAAA,qCAOhCO,EAAA,CAAA,EACIvB,EAAA,EAAA,yBAAA,EAAA,uBACIC,EAAA,SAAA,UAAA,CAAA,IAAA2C,EAAA1C,EAAA2C,CAAA,EAAAC,MAAA1C,EAAAC,EAAA,EAAA,OAAAC,EAAUF,EAAA2C,aAAAH,CAAA,CAAe,CAAA,CAAA,EAM5BnC,EAAA,gDALGK,EAAA,EAAAJ,EAAA,WAAAkC,CAAA,EAAc,YAAAI,CAAA,EACM,sBAAA5C,EAAA6C,oBAAAD,CAAA,CAAA,EAC+B,kBAAAJ,CAAA,EAC9B,WAAA,CAAA5B,EAAA,EAAA,EAAAZ,EAAAkB,gBAAA,CAAA,sCAarBtB,EAAA,EAAA,SAAA,EAAA,EAIIC,EAAA,QAAA,UAAA,CAAA,IAAAiD,EAAAhD,EAAAiD,CAAA,EAAAC,UAAAhD,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAiD,UAAAH,CAAA,CAAiB,CAAA,CAAA,EAE1B1C,EAAA,CAAA,EACJC,EAAA,4BADIK,EAAA,EAAAC,EAAA,IAAAmC,EAAAI,YAAA,GAAA,6BAdhBtD,EAAA,EAAA,KAAA,EAA0C,EAAA,cAAA,EACxB,EAAA,SAAA,EAAA,EAENyB,EAAA,EAAA,WAAA,EAAA,EACAzB,EAAA,EAAA,MAAA,EAAMQ,EAAA,CAAA,mBAA2CC,EAAA,EACjDgB,EAAA,EAAA,WAAA,EAAA,EACJhB,EAAA,EACAT,EAAA,EAAA,oBAAA,EAAA,EACIoB,EAAA,EAAAmC,GAAA,EAAA,EAAA,SAAA,EAAA,EAQJ9C,EAAA,EAAoB,EACT,kBAbDK,EAAA,CAAA,EAAAU,EAAAR,EAAA,EAAA,EAAA,yBAAA,CAAA,EAKiBF,EAAA,CAAA,EAAAJ,EAAA,UAAAN,EAAAoD,UAAA,sCAsB3BxD,EAAA,EAAA,MAAA,EAAA,EAAkB,EAAA,MAAA,EAAA,EAEVQ,EAAA,CAAA,oCAGJC,EAAA,EACAT,EAAA,EAAA,sBAAA,EAA6E,EAAA,QAAA,EAAA,EAOrEC,EAAA,gBAAA,UAAA,CAAAC,EAAAuD,CAAA,EAAA,IAAArD,EAAAC,EAAA,EAAA,OAAAC,EAAiBF,EAAAsD,kBAAA,CAAmB,CAAA,CAAA,EANxCjD,EAAA,EAQAT,EAAA,EAAA,OAAA,EAAOQ,EAAA,CAAA,mBAAiDC,EAAA,EAAQ,EAC7C,sCAdnBK,EAAA,CAAA,EAAA6C,GAAA,IAAA3C,EAAA,EAAA,EAAA,6BAAA,EAAA,KAAA4C,EAAA,EAAA,GAAA,uBAAA/B,EAAA,GAAAgC,GAAAC,CAAA,CAAA,EAAA,IAAA,EAIkBhD,EAAA,CAAA,EAAAiD,EAAA,YAAAC,EAAA5D,EAAAO,WAAAgC,IAAA,SAAA,IAAA,KAAA,KAAAqB,EAAAnD,QAAA,EAIdC,EAAA,EAAAJ,EAAA,iBAAAiB,EAAA,GAAAsC,EAAA,CAAA,EAAuC,YAAAC,EAAA9D,EAAAO,WAAAgC,IAAA,SAAA,IAAA,KAAA,KAAAuB,EAAArD,QAAA,EACS,UAAAT,EAAA+D,WAAA,EAI7CrD,EAAA,CAAA,EAAAU,EAAAR,EAAA,EAAA,GAAA,+BAAA,CAAA,GDjLhC,IAAMoD,GAA0BC;;;;;;MAMjCC,EAAmB;EAUZC,IACT,IAAA,CADE,MAAOA,UACDC,EAA4E,CAwBpFC,YACYC,EACEC,EACFC,EACAC,EACAC,EACAC,EAAwC,CAEhD,MAAK,EAPG,KAAAL,eAAAA,EACE,KAAAC,YAAAA,EACF,KAAAC,YAAAA,EACA,KAAAC,oBAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,oBAAAA,EA3BZ,KAAArC,aAAe,KAAKsC,qBAAqB,YAAY,EACrD,KAAArE,WAAa,KAAKiE,YAAYK,MAAM,CAChChD,KAAM,CAAC,GAAIiD,GAAWC,QAAQ,EAC9BC,KAAM,CAAC,GAAIC,GAAwB,wBAAwB,CAAC,EAC5D/B,YAAa,GACbgC,QAAS,GACTC,eAAgB,GAChBC,QAAS,KAAKZ,YAAYa,MAAM,CAAA,CAAE,EAClC/C,aAAc,KAAKkC,YAAYK,MAAMS,GAAwB,KAAKhD,YAAY,CAAC,EAClF,EACD,KAAAiD,aAA4D,CAAA,EAC5D,KAAAH,QAAmC,CAAA,EACnC,KAAAhC,WAAgD,CAAA,EAGhD,KAAAW,YAAc,GAEL,KAAA7C,iBAAmB,CAACsE,EAAWC,cAAeD,EAAWE,gBAAgB,EAC1E,KAAAC,eAAiB,IAAIC,GAYzB,KAAK7B,YAAc,KAAKY,oBAAoBpC,IAAI,+BAA+B,GAAK,EACxF,CAEAsD,UAAQ,CACJ,KAAKC,KAAI,EACT,KAAKvB,YAAYwB,WAAWC,qBAAoB,EAAGC,QAAQC,UAAUC,GAAM,CACvE,KAAK/C,WAAa+C,EAAIC,iBAC1B,CAAC,EACD,IAAMC,EAAmB,KAAK9F,WAAWgC,IAAI,SAAS,EAChD+D,EAAwB,KAAK/F,WAAWgC,IAAI,gBAAgB,EAClE,KAAKgE,gBAAkBD,EAAsBE,aAAaC,KAAKC,GAAoB,CAAE,EACrF,KAAKC,gBAAkBC,GAAMP,EAAiBQ,cAAe,KAAKlB,cAAc,EAAEc,KAC9EK,GAAa,GAAG,EAChBC,GAAO,IAAMV,EAAiBW,OAAO,EACrCC,EAAI,IACA,KAAKC,sBAAsB,KAAK9B,QAASiB,EAAiBc,KAAK,EAAEJ,OAAOK,GAAU,CAG9E,QAAWC,KAAOD,EAAQE,UACtB,GAAID,EAAIF,QAAU,GACd,MAAO,GAGf,MAAO,EACX,CAAC,CAAC,CACL,EAEL,KAAKI,UAAY,KAAKC,MAAMC,SAAShB,KACjCQ,EAAIS,GAAMA,EAAGnF,IAAI,UAAU,GAAKoF,MAAS,EACzCC,EAAUC,GACFA,EACOC,GAAGD,CAAQ,EAEX,KAAKE,QAAQtB,KAAKQ,EAAIlB,GAAcA,EAAWiC,QAAQpG,EAAE,CAAC,CAExE,CAAC,CAEV,CAEAqG,aAAW,CACP,KAAKC,QAAO,CAChB,CAEArF,oBAAoBuE,EAA8B,CAC9C,OAAO,KAAKhE,WAAW+E,KAAKC,GAAKA,EAAEC,OAASjB,EAAQiB,IAAI,CAC5D,CAEAtH,eAAa,CACT,MAAO,CAAC,CAACuH,OAAOC,OAAO,KAAKhD,YAAY,EAAEiD,MAC9C,CAKAC,WAAWC,EAAiB,CACxB,IAAMC,EAAc,KAAKpI,WAAWgC,IAAI,CAAC,MAAM,CAAC,EAC1CqG,EAAqB,KAAKC,OAASC,GAAgB,KAAKD,OAAQ,KAAKE,YAAY,EAAIpB,OACrFqB,EAAqB,CAACJ,GAAsB,CAACA,EAAmB5D,KAClE2D,GAAeA,EAAYlI,UAAYuI,GACvCL,EAAYM,YAASC,oBAAgB,GAAGR,CAAS,GAAI,GAAG,CAAC,CAEjE,CAEAzF,UAAUkG,EAAuC,CAC7C,IAAMC,EAAe,KAAK7I,WAAWgC,IAAI,SAAS,EAC5C8G,EAAWF,EAAiBG,KAAKC,OACnC,CAACC,EAAQnC,IAASoC,GAAAC,EAAA,GACXF,GADW,CAEd,CAACnC,EAAIxF,IAAI,EAAG8H,GAAkBtC,EAAIF,KAAK,IAE3C,CAAA,CAAE,EAENiC,EAAaQ,KACT,KAAKpF,YAAYqF,QAAQ,CACrBxB,KAAMc,EAAiBd,KACvBiB,KAAMD,EACT,CAAC,EAEN,KAAKjE,QAAQwE,KAAK,CACdvB,KAAMc,EAAiBd,KACvBiB,KAAMH,EAAiBG,KAAKrC,IAAI6C,IAAM,CAAEjI,KAAMiI,EAAEjI,KAAMsF,MAAOwC,GAAkBG,EAAE3C,KAAK,CAAC,EAAG,EAC7F,CACL,CAEAxE,aAAaD,EAAa,CACtB,IAAM0G,EAAe,KAAK7I,WAAWgC,IAAI,SAAS,EAC9CG,IAAU,KACV0G,EAAaW,SAASrH,CAAK,EAC3B0G,EAAaY,YAAW,EACxBZ,EAAaa,cAAa,EAC1B,KAAK7E,QAAQ8E,OAAOxH,EAAO,CAAC,EAC5B,KAAKiD,eAAewE,KAAI,EAEhC,CAEAhK,QAAM,CACF,GAAI,CAAC,KAAKI,WAAW6J,MACjB,OAEJ,IAAMC,EAAQ,KAAKC,qBACf,CACI1I,GAAI,GACJ2I,UAAW,GACXC,UAAW,GACXzB,aAAc,KAAKA,aACnBlH,KAAM,GACNmD,KAAM,GACNyF,UAAW,GACXpI,YAAa,CAAA,EACba,YAAa,GACbwH,cAAe,KACfC,OAAQ,CAAA,EACRC,aAAc,CAAA,EACdzF,eAAgB,GAChBC,QAAS,CAAA,EACT4C,OAAQ,CAAA,EACR6C,SAAU,MAEd,KAAKtK,WACL,KAAKwI,YAAY,EAEflB,EAAW,KAAKL,MAAMsD,SAASrD,SAASlF,IAAI,UAAU,EACxDsF,IACAwC,EAAMxC,SAAWA,GAErB,KAAKtD,YAAYwB,WAAWgF,iBAAiBV,CAAK,EAAEnE,UAChD8E,GAAO,CACH,KAAKvG,oBAAoBwG,QAAU,+BAAiC,CAChEpC,OAAQ,aACX,EACD,KAAKtD,aAAe,CAAA,EACpB,KAAKhF,WAAW2K,eAAc,EAC9B,KAAK5G,eAAe6G,aAAY,EAChC,KAAKC,OAAOC,SAAS,CAAC,MAAOL,EAAKD,iBAAiBnJ,EAAE,EAAG,CAAE0J,WAAY,KAAK9D,KAAK,CAAE,CACtF,EACA+D,GAAM,CACF,KAAK9G,oBAAoB+G,MAAQ,6BAA+B,CAC5D3C,OAAQ,aACX,CACL,CAAC,CAET,CAEA/H,MAAI,CACA2K,GAAc,KAAK1D,QAAS,KAAK2D,aAAa,EACzCjF,KACGkF,GAAK,CAAC,EACNC,GAAS,CAAC,CAACC,EAAU9C,CAAY,IAAK,CAClC,IAAMsB,EAAQ,KAAKC,qBACfuB,EACA,KAAKtL,WACLwI,CAAY,EAEhB,OAAO,KAAKxE,YAAYwB,WAAW+F,iBAAiBzB,CAAK,CAC7D,CAAC,CAAC,EAELnE,UACG,IAAK,CACD,KAAKX,aAAe,CAAA,EACpB,KAAKhF,WAAW2K,eAAc,EAC9B,KAAK5G,eAAe6G,aAAY,EAChC,KAAK1G,oBAAoBwG,QAAU,+BAAiC,CAChEpC,OAAQ,aACX,EACD,KAAKkD,kBAAkBC,QAAO,CAClC,EACAT,GAAM,CACF,KAAK9G,oBAAoB+G,MAAQ,6BAA+B,CAC5D3C,OAAQ,aACX,CACL,CAAC,CAEb,CAEAoD,eAAa,CACT,OAAO,MAAMA,cAAa,GAAM,CAAC,KAAK1G,aAAaoF,QAAU,CAAC,KAAKpF,aAAamF,aACpF,CAEApH,mBAAiB,CACb,KAAKS,YAAc,CAAC,KAAKA,YACzB,KAAKY,oBAAoBuH,IAAI,gCAAiC,KAAKnI,WAAW,CAClF,CAEAoI,UAAUzJ,EAAe0J,EAA2B,CAChD,OAAOC,KAAKC,UAAUF,CAAI,CAC9B,CAKUG,cAAc1D,EAA4BE,EAA0B,CAC1E,IAAMH,EAAqBE,GAAgBD,EAAQE,CAAY,EAE/D,KAAKxI,WAAWiM,WAAW,CACvB3K,KAAM+G,EAAqBA,EAAmB/G,KAAO,GACrDmD,KAAM4D,EAAqBA,EAAmB5D,KAAO,GACrD9B,YAAa0F,EAAqBA,EAAmB1F,YAAc,GACnEgC,QAAS,CAAC2D,EAAO4B,UACjBtF,eAAgB0D,EAAO1D,eAC1B,EAED,IAAMsH,EAAY,KAAKlM,WAAWgC,IAAI,SAAS,EAC3CkK,EAAUjE,SAAWK,EAAOzD,QAAQoD,SACpCiE,EAAUC,MAAK,EACf,KAAKtH,QAAU,CAAA,EACfyD,EAAOzD,QAAQuH,QAAQvE,GAAK,KAAKnF,UAAUmF,CAAC,CAAC,GAG7C,KAAK9F,aAAakG,QAClB,KAAKoE,yBACD,KAAKtK,aACL,KAAK/B,WAAWgC,IAAI,CAAC,cAAc,CAAC,EACpCsG,EACAD,CAAkB,CAG9B,CAMQ0B,qBACJuB,EACAgB,EACA9D,EAA0B,CAE1B,IAAM+D,EAAkBC,GAA0B,CAC9CC,aAAcnB,EACdoB,cAAeJ,EAAK1F,MACpB+F,kBAAmB,KAAK5K,aACxByG,aAAAA,EACAoE,mBAAoB,CAChBpE,aAAAA,EACAlH,KAAMgK,EAAShK,MAAQ,GACvBmD,KAAM6G,EAAS7G,MAAQ,GACvB9B,YAAa2I,EAAS3I,aAAe,IAE5C,EACD,OAAOuG,GAAAC,EAAA,GACAoD,GADA,CAEHM,SAAU,KAAK7H,aAAaoF,QAAQ1D,IAAI6C,GAAKA,EAAElI,EAAE,EACjDyL,gBAAiB,KAAK9H,aAAamF,eAAe9I,GAClD6I,UAAW,CAACoC,EAAK1F,MAAMjC,QACvBE,QAAS,KAAK8B,sBAAsB,KAAK9B,QAAS,KAAK7E,WAAW4G,MAAM/B,OAAO,GAEvF,CAKQ8B,sBACJoG,EACAC,EAAwB,CAExB,OAAOD,EAAWrG,IAAI,CAACuG,EAAGC,KAAO,CAC7BpF,KAAMmF,EAAEnF,KACRf,UAAWgB,OAAOoF,QAAQH,EAAoBE,CAAC,EAAEnE,IAAI,EAAErC,IAAI,CAAC,CAACpF,EAAMsF,CAAK,EAAGwG,KAAO,CAC9E9L,KAAAA,EACAsF,MAAOyG,GAAqBzG,CAAK,GACnC,GACJ,CACN,iDAxSShD,GAAyB0J,EAAAC,EAAA,EAAAD,EAAAE,CAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,CAAA,EAAAJ,EAAAK,EAAA,EAAAL,EAAAM,EAAA,CAAA,CAAA,CAAA,+BAAzBhK,EAAyBiK,UAAA,CAAA,CAAA,uBAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,8uECzDtC1O,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EACI,EAAA,aAAA,EACC,EAAA,wBAAA,CAAA,yCAKLC,EAAA,qBAAA,SAAA2O,EAAA,CAAAC,OAAA3O,EAAA4O,CAAA,EAAAxO,EAAsBqO,EAAAI,YAAAH,CAAA,CAAmB,CAAA,CAAA,EAC5CnO,EAAA,EAAwB,EAE7BT,EAAA,EAAA,cAAA,EACIyB,EAAA,EAAA,uBAAA,CAAA,EACAL,EAAA,EAAA4N,GAAA,EAAA,EAAA,SAAA,CAAA,gBAQA5N,EAAA,GAAA6N,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,EAUAzN,EAAA,GAAA,+BAAA,CAAA,EACJhB,EAAA,EAAe,EACF,EAErBT,EAAA,GAAA,OAAA,CAAA,EAA4C,GAAA,wBAAA,EAChB,GAAA,yBAAA,EACK,GAAA,UAAA,EACX,GAAA,iBAAA,CAAA,oBAEFA,EAAA,GAAA,oBAAA,EACIyB,EAAA,GAAA,QAAA,CAAA,wBAOAzB,EAAA,GAAA,QAAA,EAAA,EACIoB,EAAA,GAAA+N,GAAA,EAAA,EAAA,eAAA,EAAA,EAA6D,GAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAF,CAAA,EAIjEzO,EAAA,EAAQ,EACS,EACR,EAErBW,EAAA,GAAAiO,GAAA,EAAA,EAAA,WAAA,EAAA,gBAGJ5O,EAAA,EAEAW,EAAA,GAAAkO,GAAA,EAAA,EAAA,iBAAA,EAAA,gBAkBAtP,EAAA,GAAA,gBAAA,EAAgB,GAAA,UAAA,EACF,GAAA,MAAA,EAAA,EACiB,GAAA,iBAAA,EAAA,oBAEfA,EAAA,GAAA,QAAA,EAAA,wBAKIC,EAAA,QAAA,SAAA2O,EAAA,CAAAC,OAAA3O,EAAA4O,CAAA,EAAAxO,EAASqO,EAAA9F,WAAA+F,EAAAW,OAAAhI,KAAA,CAA+B,CAAA,CAAA,EAL5C9G,EAAA,EAME,EAENT,EAAA,GAAA,iBAAA,EAAA,sCAKIyB,EAAA,GAAA,QAAA,EAAA,wBAMJhB,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,oBAKIyB,EAAA,GAAA,uBAAA,EAAA,wBAIJhB,EAAA,EAAiB,EACf,EAEVW,EAAA,GAAAoO,GAAA,EAAA,EAAA,WAAA,EAAA,EAYA/N,EAAA,GAAA,mCAAA,EAAA,EAKAzB,EAAA,GAAA,WAAA,EAAA,oBACIA,EAAA,GAAA,aAAA,EAAA,EAIIC,EAAA,SAAA,SAAA2O,EAAA,CAAAC,OAAA3O,EAAA4O,CAAA,EAAAxO,EAAAqO,EAAAhJ,aAAAiJ,CAAA,CAAA,CAAA,EACHnO,EAAA,EAAa,EAElBT,EAAA,GAAA,WAAA,EAAA,oBACIA,EAAA,GAAA,iBAAA,EAAA,oBACIA,EAAA,GAAA,oBAAA,EACIyB,EAAA,GAAA,QAAA,EAAA,wBAOAzB,EAAA,GAAA,QAAA,EAAA,EACIoB,EAAA,GAAAqO,GAAA,EAAA,EAAA,eAAA,EAAA,EAAsE,GAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAR,CAAA,EAM1EzO,EAAA,EAAQ,EACS,EAEzBT,EAAA,GAAA,MAAA,EAAA,EACIoB,EAAA,GAAAuO,GAAA,EAAA,EAAA,eAAA,EAAA,EAUJlP,EAAA,EACAW,EAAA,GAAAwO,GAAA,GAAA,EAAA,MAAA,EAAA,EAmBJnP,EAAA,EAEAT,EAAA,GAAA,WAAA,EAAA,oBACIA,EAAA,GAAA,0BAAA,GAAA,CAAA,4CAQIoB,EAAA,GAAAyO,GAAA,GAAA,GAAA,aAAA,EAoBJpP,EAAA,EAA0B,EACnB,EACE,EACI,sCA7NbK,EAAA,CAAA,EAAAJ,EAAA,WAAAM,EAAA,EAAA,GAAA2N,EAAAmB,MAAA,CAAA,EAA2B,yBAAA9O,EAAA,EAAA,GAAA2N,EAAAoB,mBAAA,CAAA,EAC2B,sBAAA/O,EAAA,EAAA,GAAA2N,EAAA7C,aAAA,CAAA,EASrDhL,EAAA,CAAA,EAAAJ,EAAA,OAAAM,EAAA,GAAA,GAAA2N,EAAAmB,MAAA,CAAA,EAAsB,WAAAE,CAAA,EAoBpBlP,EAAA,CAAA,EAAAJ,EAAA,YAAAiO,EAAAhO,UAAA,EAIaG,EAAA,CAAA,EAAAJ,EAAA,QAAAM,EAAA,GAAA,GAAA,oBAAA,CAAA,EAOJF,EAAA,CAAA,EAAAJ,EAAA,cAAA,CAAAM,EAAA,GAAA,GAAA2N,EAAArN,gBAAA,CAAA,EAGeR,EAAA,CAAA,EAAAJ,EAAA,OAAAiO,EAAAhO,WAAA4G,MAAAjC,OAAA,EAAgC,WAAA2K,CAAA,EAQpDnP,EAAA,CAAA,EAAAJ,EAAA,OAAAM,EAAA,GAAA,GAAA2N,EAAAxG,OAAA,CAAA,EAKErH,EAAA,CAAA,EAAAJ,EAAA,OAAAM,EAAA,GAAA,GAAA2N,EAAAxG,OAAA,CAAA,EAqBWrH,EAAA,CAAA,EAAAJ,EAAA,QAAAM,EAAA,GAAA,GAAA,aAAA,CAAA,EAKRF,EAAA,CAAA,EAAAJ,EAAA,WAAA,CAAAM,EAAA,GAAA,GAAA2N,EAAArN,gBAAA,CAAA,EAKJR,EAAA,CAAA,EAAAJ,EAAA,QAAAM,EAAA,GAAA,GAAA,cAAA,CAAA,EAAoC,SAAAa,EAAA,GAAAqO,GAAAlP,EAAA,GAAA,GAAA,4BAAA,CAAA,CAAA,EAQhCF,EAAA,CAAA,EAAAJ,EAAA,WAAA,CAAAM,EAAA,GAAA,GAAA2N,EAAArN,gBAAA,CAAA,EAKJR,EAAA,CAAA,EAAAJ,EAAA,QAAAM,EAAA,GAAA,GAAA,oBAAA,CAAA,EAKIF,EAAA,CAAA,EAAAJ,EAAA,WAAA,CAAAM,EAAA,GAAA,GAAA2N,EAAArN,gBAAA,CAAA,EAOXR,EAAA,CAAA,EAAAJ,EAAA,OAAAiO,EAAAjM,aAAAkG,MAAA,EAYD9H,EAAA,EAAAJ,EAAA,UAAAiO,EAAAxG,OAAA,EAAmB,aAAAwG,EAAAhO,UAAA,EAGbG,EAAA,EAAAJ,EAAA,QAAAM,EAAA,GAAA,GAAA,gBAAA,CAAA,EAEFF,EAAA,CAAA,EAAAJ,EAAA,SAAAiO,EAAA1F,QAAA,KAAA,KAAA0F,EAAA1F,OAAA8B,MAAA,EAAyB,gBAAA4D,EAAA1F,QAAA,KAAA,KAAA0F,EAAA1F,OAAA6B,aAAA,EACc,oBAAA6D,EAAArN,gBAAA,EAKrCR,EAAA,EAAAJ,EAAA,QAAAM,EAAA,GAAA,GAAA,iBAAA,CAAA,EACUF,EAAA,CAAA,EAAAJ,EAAA,QAAAM,EAAA,GAAA,GAAA,4BAAA,CAAA,EAOJF,EAAA,CAAA,EAAAJ,EAAA,cAAA,CAAAM,EAAA,GAAA,GAAA2N,EAAArN,gBAAA,CAAA,EAGeR,EAAA,CAAA,EAAAJ,EAAA,OAAAiO,EAAAhO,WAAA4G,MAAAhC,cAAA,EAAuC,WAAA4K,CAAA,EAU7BrP,EAAA,CAAA,EAAAJ,EAAA,UAAAiO,EAAAnJ,OAAA,EAAY,eAAAmJ,EAAApC,SAAA,EAW3CzL,EAAA,EAAAJ,EAAA,mBAAAiO,EAAArN,gBAAA,EAqBAR,EAAA,EAAAJ,EAAA,QAAAM,EAAA,GAAA,GAAA,iBAAA,CAAA,EAAuC,WAAA,EAAA,EAEzCF,EAAA,CAAA,EAAAJ,EAAA,eAAAiO,EAAA3M,EAAA,EAAmB,WAAAhB,EAAA,GAAA,GAAA2N,EAAAhH,SAAA,CAAA,EACW,iBAAA3G,EAAA,GAAA,GAAA2N,EAAA5H,eAAA,CAAA,EACY,iBAAA/F,EAAA,GAAA,GAAA2N,EAAAhI,eAAA,CAAA,EACA,wBAAAgI,EAAAxK,WAAA;mGD7IjDI,CACT,GAAA,EEhDJ,IAAa6L,IAAwB,IAAA,CAA/B,MAAOA,CAAwB,CACjCC,UAAUC,EAAoD,CAC1D,OAAOA,GAAOC,YAAYC,MAAM,EAAG,EAAE,CACzC,iDAHSJ,EAAwB,CAAA,6DAAxBA,EAAwBK,KAAA,GAAAC,WAAA,EAAA,CAAA,CAAA,SAAxBN,CAAwB,GAAA,8CETjCO,EAAA,CAAA,yBAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,0BAAA,EAAA;CAAA,2BAmBQF,EAAA,CAAA,oBAAAC,EAAA,IAAAE,EAAAC,GAAA,GAAA,4BAMAC,EAAA,EAAA,WAAA,EAAA,uBAEIC,EAAA,cAAAC,IAAA,CAAA,yBASAF,EAAA,EAAA,WAAA,EAAA,wBACAA,EAAA,EAAA,WAAA,EAAA,qCANJG,EAAA,EAAA,SAAA,EAAA,EAGIC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,KAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAE,eAAAL,CAAA,CAA0B,CAAA,CAAA,EAEnCM,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAAsE,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAE1EC,EAAA,+BAF8BC,EAAA,EAAAC,EAAA,OAAA,CAAAR,EAAAS,YAAAC,SAAAb,EAAAR,EAAA,CAAA,EACKkB,EAAA,EAAAC,EAAA,OAAAR,EAAAS,YAAAC,SAAAb,EAAAR,EAAA,CAAA,0BAEnCI,EAAA,EAAA,SAAA,EAAA,EACIH,EAAA,EAAA,WAAA,EAAA,EACJgB,EAAA,sCAjBAhB,EAAA,EAAA,MAAA,CAAA,EACAa,EAAA,EAAAQ,GAAA,EAAA,EAAA,WAAA,CAAA,EAKC,EAAAC,GAAA,EAAA,EAAA,SAAA,CAAA,EAKA,EAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,EAODpB,EAAA,EAAA,SAAA,EAAA,EAA6BC,EAAA,QAAA,UAAA,CAAA,IAAAG,EAAAF,EAAAmB,CAAA,EAAAf,KAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAe,YAAAlB,CAAA,CAAuB,CAAA,CAAA,EACzDJ,EAAA,EAAA,MAAA,EAAMR,EAAA,CAAA,mBAAwEqB,EAAA,EAAO,iCAnBpFE,EAAA,UAAA,UAAAhB,CAAA,EAKAe,EAAA,EAAAC,EAAA,OAAA,EAAAX,EAAAmB,UAAA,MAAAnB,EAAAmB,SAAAC,SAAApB,EAAAqB,WAAA,IAAA,EAIAX,EAAA,EAAAC,EAAA,OAAAX,EAAAmB,UAAA,KAAA,KAAAnB,EAAAmB,SAAAC,MAAA,EAMsCV,EAAA,EAAAC,EAAA,OAAAX,EAAAqB,WAAA,IAAA,EAIjCX,EAAA,CAAA,EAAAY,EAAAC,EAAA,EAAA,EAAA,6BAAAC,EAAA,EAAAC,GAAAzB,EAAA0B,IAAA,CAAA,CAAA,6BASE9B,EAAA,EAAA,KAAA,EAAsC,EAAA,OAAA,EAAA,EACVR,EAAA,EAAA,GAAA,EAACqB,EAAA,EAAOrB,EAAA,CAAA,EACpCqB,EAAA,0BADoCC,EAAA,CAAA,EAAArB,EAAA,GAAAsC,EAAAD,KAAA,GAAA,6BAFxCE,EAAA,CAAA,EACItB,EAAA,EAAAuB,GAAA,EAAA,EAAA,MAAA,EAAA,2BAAsBnB,EAAA,EAAAC,EAAA,UAAAmB,CAAA,0BAI1BlC,EAAA,EAAA,OAAA,EAAA,EAAoDR,EAAA,EAAA,GAAA,EAACqB,EAAA,6BANzDmB,EAAA,CAAA,EACItB,EAAA,EAAAyB,GAAA,EAAA,EAAA,eAAA,EAAA,EAAyC,EAAAC,GAAA,EAAA,EAAA,OAAA,EAAA,yBAA1BtB,EAAA,EAAAC,EAAA,OAAAmB,EAAAV,MAAA,EAKUV,EAAA,EAAAC,EAAA,OAAA,CAAAmB,EAAAV,MAAA,6BAPjCxB,EAAA,EAAA,MAAA,EAAA,EACIU,EAAA,EAAA2B,GAAA,EAAA,EAAA,eAAA,EAAA,8BAQJxB,EAAA,qBARmBC,EAAA,EAAAC,EAAA,OAAArB,EAAA,EAAA,EAAA4C,CAAA,CAAA,4BAanB9C,EAAA,CAAA,oBAAAC,EAAA,IAAA8C,EAAAC,KAAA,GAAA,GDnDZ,IAAaC,IAA8B,IAAA,CAArC,MAAOA,CAA8B,CAavCC,YAAoBC,EAAkCC,EAAwB,CAA1D,KAAAD,YAAAA,EAAkC,KAAAC,YAAAA,EATtD,KAAAC,kBAAoB,IAAIC,GAAY,EAAE,EAGtC,KAAAC,aAAe,IAAIC,GAAgB,CAAC,EACpC,KAAAC,cAAgB,IAAID,GAAgB,EAAE,EACtC,KAAAE,aAAe,IAAIC,GACnB,KAAAnC,YAAwB,CAAA,CAGyD,CAEjFoC,UAAQ,CACJ,IAAMC,EAAuB,KAAKV,YAAYW,WAAWC,eAAc,EAEjEC,EAAc,KAAKX,kBAAkBY,aAAaC,KACpDC,GAAa,GAAG,EAChBC,GAAoB,EACpBC,GAAU,EAAE,CAAC,EAEXd,EAAe,KAAKA,aAAaW,KAAKE,GAAoB,CAAE,EAC5DX,EAAgB,KAAKA,cAAcS,KAAKE,GAAoB,CAAE,EACpEE,GAAcN,EAAaT,EAAcE,CAAa,EAAEc,UACpD,CAAC,CAACC,EAAYC,EAAaC,CAAY,IAAK,CACxC,IAAMC,EAAeH,IAAe,GACpCX,EAAqBe,IAAIC,QAAQ,CAC7BC,QAAS,CACLC,MAAON,EAAc,GAAKC,EAC1BM,KAAMN,EACNO,OAAQ,CACJ3C,KAAM,CAAE4C,SAAUV,CAAU,GAEhCG,aAAAA,GAEP,CACL,CAAC,EAGL,IAAMQ,EAAoB,KAAKhC,YAAYW,WACtCC,eAAe,CACZiB,KAAM,EACNL,aAAc,GACjB,EACAS,UAAUC,GAAQA,EAAKC,YAAYC,MAAM,CAAC,EAAEtD,QAAQ,EAEzD,KAAKuD,OAASlB,GACVT,EAAqB4B,UAAU,CAAC,CAAEH,YAAAA,CAAW,IAAOA,CAAW,EAC/DH,CAAiB,EACnBjB,KACEwB,EAAI,CAAC,CAACJ,EAAaK,CAAgB,IAAM,CACrC,GAAIA,EACE,CACI,CACIvF,GAAIuF,EACJrD,KAAM,KAAKc,YAAYwC,UAAU,yBAAyB,EAC1D5C,KAAM,GACNf,SAAU,KACV4D,SAAU,EACVC,cAAe,KACf/D,SAAU,CAAA,EACVgE,YAAa,CAAA,EACbC,UAAW,GACXC,UAAW,GACXC,UAAW,GAC0C,EAE7D,CAAA,EACN,GAAGZ,EAAYC,KAAK,CACvB,CAAC,EAEN,KAAKY,YAActC,EAAqB4B,UAAUJ,GAAQA,EAAKC,YAAYc,UAAU,EAErF,KAAKC,gBAAkB,KAAK3C,aAAaQ,KACrCoC,GAAIC,GAAQ,KAAK/E,YAAc+E,CAAI,EACnCC,EAAUC,GACFA,EAAIzE,OACG,KAAKmB,YAAYW,WACnBC,eAAe,CACZiB,KAAM,IACNC,OAAQ,CACJhD,SAAU,CAAEyE,GAAID,CAAG,GAE1B,EACAhB,UAAUJ,GAAQA,EAAKC,YAAYC,KAAK,EAEtCoB,GAAG,CAAA,CAAE,CAEnB,CAAC,CAEV,CAEA1F,eAAe6C,EAAyD,CACpE,IAAItC,EAAc,KAAKA,YAClBA,EAAYC,SAASqC,EAAW1D,EAAE,EAGnCoB,EAAcA,EAAYyD,OAAO7E,GAAMA,IAAO0D,EAAW1D,EAAE,EAF3DoB,EAAYoF,KAAK9C,EAAW1D,EAAE,EAIlC,KAAKsD,aAAamD,KAAKrF,CAAW,CACtC,iDAtGSyB,GAA8B6D,EAAAC,CAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAA9B/D,EAA8BgE,UAAA,CAAA,CAAA,6BAAA,CAAA,EAAAC,WAAA,GAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,KAAA,uBAAA,EAAA,OAAA,EAAA,aAAA,qBAAA,QAAA,iBAAA,eAAA,aAAA,aAAA,EAAA,CAAA,EAAA,oBAAA,uBAAA,EAAA,CAAA,KAAA,KAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,KAAA,OAAA,EAAA,UAAA,UAAA,EAAA,CAAA,KAAA,aAAA,EAAA,SAAA,EAAA,CAAA,KAAA,OAAA,EAAA,SAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,QAAA,cAAA,QAAA,cAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,4BAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,QAAA,4BAAA,WAAA,GAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,OAAA,EAAA,CAAA,QAAA,cAAA,EAAA,aAAA,EAAA,CAAA,EAAA,cAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,QAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,QAAA,EAAA,CAAA,QAAA,aAAA,EAAA,CAAA,WAAA,GAAA,EAAA,cAAA,eAAA,EAAA,CAAA,QAAA,SAAA,EAAA,UAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,WAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICb3CrG,EAAA,EAAAuG,GAAA,EAAA,EAAA,cAAA,CAAA,EAGAjH,EAAA,EAAA,4BAAA,CAAA,mEAQIC,EAAA,aAAA,SAAAiH,EAAA,CAAA,OAAcF,EAAAjE,aAAAsD,KAAAa,CAAA,CAAyB,CAAA,EAAC,qBAAA,SAAAA,EAAA,CAAA,OAClBF,EAAA/D,cAAAoD,KAAAa,CAAA,CAA0B,CAAA,EAEhDrH,EAAA,EAAA,iBAAA,CAAA,mBAIAG,EAAA,EAAA,iBAAA,CAAA,oBACIU,EAAA,GAAAyG,GAAA,EAAA,EAAA,aAAA,EAGJtG,EAAA,EACAb,EAAA,GAAA,iBAAA,CAAA,oBACIU,EAAA,GAAA0G,GAAA,EAAA,GAAA,aAAA,EAuBJvG,EAAA,EACAb,EAAA,GAAA,iBAAA,CAAA,oBACIU,EAAA,GAAA2G,GAAA,EAAA,EAAA,aAAA,EAYJxG,EAAA,EACAb,EAAA,GAAA,iBAAA,CAAA,oBACIU,EAAA,GAAA4G,GAAA,EAAA,EAAA,aAAA,EAGJzG,EAAA,EAAiB,SA5DjBC,EAAA,EAAAC,EAAA,QAAArB,EAAA,EAAA,GAAAsH,EAAAhC,MAAA,CAAA,EAAwB,iBAAAtF,EAAA,EAAA,GAAAsH,EAAAnB,eAAA,CAAA,EACkB,eAAAnG,EAAA,EAAA,GAAAsH,EAAA/D,aAAA,CAAA,EACJ,aAAAvD,EAAA,EAAA,GAAAsH,EAAArB,WAAA,CAAA,EACJ,cAAAjG,EAAA,EAAA,GAAAsH,EAAAjE,YAAA,CAAA,EAM9BjC,EAAA,CAAA,EAAAC,EAAA,oBAAAiG,EAAAnE,iBAAA,EAAuC,wBAAAnD,EAAA,EAAA,GAAA,uBAAA,CAAA,EAG3BoB,EAAA,CAAA,EAAAC,EAAA,UAAArB,EAAA,GAAA,GAAA,WAAA,CAAA,EAAmC,kBAAA,EAAA,EAKnCoB,EAAA,CAAA,EAAAC,EAAA,UAAArB,EAAA,GAAA,GAAA,aAAA,CAAA,EAAqC,WAAA,EAAA,EAyBrCoB,EAAA,CAAA,EAAAC,EAAA,UAAArB,EAAA,GAAA,GAAA,mBAAA,CAAA,EAcAoB,EAAA,CAAA,EAAAC,EAAA,UAAArB,EAAA,GAAA,GAAA,aAAA,CAAA;8FDjDP+C,CAA8B,GAAA,EESpC,IAAM8E,GAA8BC,GAEzC,CACEC,SAAU,kBACVC,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWC,gBAAgB,GACpDH,EAAgBC,SAASC,EAAWE,aAAa,EACrDC,YAAaC,GAAQA,EAAKC,KAC1BC,WAAYA,CAACC,EAAaC,IACtBD,EAAYE,WAAWC,kBAAkBF,CAAG,EAAEG,KAAKC,EAAIC,GAAOA,EAAIH,iBAAiB,CAAC,EAC3F,EAEYI,GAAoF,CAC7FlB,SAAU,kBACVmB,MAAS,2BACTC,KAAM,cACNnB,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWiB,aAAa,GACjDnB,EAAgBC,SAASC,EAAWkB,gBAAgB,EACxDC,QAASA,CAAC,CAAEC,SAAAA,EAAUC,UAAAA,EAAWC,cAAAA,EAAeC,eAAAA,CAAc,IAAM,CAChE,IAAMC,EAAeJ,EAASK,IAAIC,EAAY,EACxCnB,EAAca,EAASK,IAAIE,CAAW,EACtCC,EAAsBR,EAASK,IAAII,CAAmB,EAC5DL,EACKM,cAAcC,GAAgC,CAC3CC,KAAM,KACNC,SAAU,GACb,EACAtB,KACGuB,EAAUC,GAAS,CACf,GAAIA,EAAQ,CACR,IAAMC,EAAgCf,EAAUT,IAAIyB,IAAM,CACtDC,aAAcD,EAAEE,GAChBC,SAAUL,EAAOI,GACjBE,MAAO,GACT,EACF,OAAOlC,EAAYE,WAAWiC,eAAeN,CAAM,CACvD,KACI,QAAOO,EAEf,CAAC,CAAC,EAELC,UAAUT,GAAS,CAChBP,EAAoBiB,QAAU,mCAAqC,CAC/DC,MAAOzB,EAAU0B,OACpB,EACDxB,EAAc,EACdD,EAAc0B,QAAO,CACzB,CAAC,CACT,GAGSC,GAAuCC,GAElD,CACEtD,SAAU,kBACVC,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWiB,aAAa,GACjDnB,EAAgBC,SAASC,EAAWkB,gBAAgB,EACxDf,YAAaC,GAAQA,EAAKC,KAC1B8C,oBAAqBA,CAAC5C,EAAa6C,EAAeC,IAC9CA,EAAWzC,IAAI0C,GACX/C,EAAYE,WACP8C,2BAA2B,CACxBH,cAAAA,EACAE,UAAAA,EACH,EACA3C,KAAKC,EAAIC,GAAOA,EAAI0C,0BAA0B,CAAC,CAAC,EAEhE,EAEYC,GAAyCC,GAEpD,CACE7D,SAAU,kBACVC,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWE,aAAa,GACjDJ,EAAgBC,SAASC,EAAWC,gBAAgB,EACxDE,YAAaC,GAAQA,EAAKC,KAC1BqD,sBAAuBA,CAACnD,EAAa6C,EAAeE,IAChD/C,EAAYE,WACPkD,6BAA6B,CAC1BL,UAAWA,EACXF,cAAAA,EACH,EACAzC,KAAKC,EAAIC,GAAOA,EAAI8C,4BAA4B,CAAC,EAC7D,EAEYC,GAGT,CACAhE,SAAU,kBACVmB,MAAS,mBACTC,KAAM,OACNG,QAASA,CAAC,CAAEC,SAAAA,EAAUC,UAAAA,EAAWC,cAAAA,EAAeC,eAAAA,CAAc,IAAM,CAC3CH,EAASK,IAAIC,EAAY,EAEzCI,cAAc+B,GAA+E,CAC1FC,OAAQ,CACJC,SAAU1C,EACV2C,WAAY,aACZC,MAAS,gCACTC,cAAeC,GAAUA,EAAO9D,MAEvC,EACAuC,UAAUT,GAAS,CACZA,IACAZ,EAAc,EACdD,EAAc0B,QAAO,EAE7B,CAAC,CACT,4JE3HQoB,EAAA,EAAA,IAAA,CAAA,EAKIC,EAAA,EAAA,WAAA,CAAA,EACAC,EAAA,CAAA,mBACJC,EAAA,SAJIC,EAAA,aAAAC,EAAA,EAAAC,EAAA,CAAA,EAGAC,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,+BAAA,EAAA,GAAA,4BAkCIP,EAAA,CAAA,oBAAAM,EAAA,IAAAE,EAAAC,GAAA,GAAA,6BASAT,EAAA,CAAA,uCAAAM,EAAA,IAAAI,EAAA,EAAA,EAAAC,EAAAC,UAAA,OAAA,EAAA,GAAA,6BASAZ,EAAA,CAAA,uCAAAM,EAAA,IAAAI,EAAA,EAAA,EAAAG,EAAAC,UAAA,OAAA,EAAA,GAAA,4BASAd,EAAA,CAAA,oBAAAM,EAAA,IAAAS,EAAAC,SAAA,GAAA,4BAUAjB,EAAA,EAAA,WAAA,EAAA,uBAEIkB,EAAA,cAAAC,IAAA,CAAA,yBASAnB,EAAA,EAAA,WAAA,EAAA,wBACAA,EAAA,EAAA,WAAA,EAAA,qCANJD,EAAA,EAAA,SAAA,EAAA,EAGIqB,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,KAAAC,EAAAF,EAAA,CAAA,EAAA,OAAAG,EAASD,EAAAE,eAAAL,CAAA,CAA0B,CAAA,CAAA,EAEnCM,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAAsE,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAE1E7B,EAAA,gCAF8BI,EAAA,EAAAH,EAAA,OAAA,CAAAuB,EAAAM,YAAAC,SAAAV,EAAAb,EAAA,CAAA,EACKJ,EAAA,EAAAH,EAAA,OAAAuB,EAAAM,YAAAC,SAAAV,EAAAb,EAAA,CAAA,6BAbnCV,EAAA,EAAA,MAAA,EAAA,EACA6B,EAAA,EAAAK,GAAA,EAAA,EAAA,WAAA,EAAA,EAKC,EAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,EASDpC,EAAA,EAAA,IAAA,EAAA,EACK,EAAA,MAAA,EAAME,EAAA,CAAA,EAAqBC,EAAA,EAC5BF,EAAA,EAAA,WAAA,EAAA,EACJE,EAAA,+BAlBKC,EAAA,UAAA,UAAAgB,CAAA,EAKAb,EAAA,EAAAH,EAAA,OAAA,EAAAoB,EAAAa,UAAA,MAAAb,EAAAa,SAAAC,OAAA,EAIA/B,EAAA,EAAAH,EAAA,OAAAoB,EAAAa,UAAA,KAAA,KAAAb,EAAAa,SAAAC,MAAA,EAMmB/B,EAAA,EAAAH,EAAA,aAAAmC,EAAA,EAAAC,GAAAhB,EAAAb,EAAA,CAAA,EACbJ,EAAA,CAAA,EAAAkC,EAAAjB,EAAAkB,IAAA,6BAUC1C,EAAA,EAAA,KAAA,EAAsC,EAAA,OAAA,EAAA,EACVE,EAAA,EAAA,GAAA,EAACC,EAAA,EAAOD,EAAA,CAAA,EACpCC,EAAA,0BADoCI,EAAA,CAAA,EAAAC,EAAA,GAAAmC,EAAAD,KAAA,GAAA,6BAFxCE,EAAA,CAAA,EACId,EAAA,EAAAe,GAAA,EAAA,EAAA,MAAA,EAAA,2BAAsBtC,EAAA,EAAAH,EAAA,UAAA0C,CAAA,0BAI1B9C,EAAA,EAAA,OAAA,EAAA,EAAoDE,EAAA,EAAA,GAAA,EAACC,EAAA,6BANzDyC,EAAA,CAAA,EACId,EAAA,EAAAiB,GAAA,EAAA,EAAA,eAAA,EAAA,EAAyC,EAAAC,GAAA,EAAA,EAAA,OAAA,EAAA,yBAA1BzC,EAAA,EAAAH,EAAA,OAAA0C,EAAAR,MAAA,EAKU/B,EAAA,EAAAH,EAAA,OAAA,CAAA0C,EAAAR,MAAA,6BAPjCtC,EAAA,EAAA,MAAA,EAAA,EACI8B,EAAA,EAAAmB,GAAA,EAAA,EAAA,eAAA,EAAA,8BAQJ9C,EAAA,qBARmBI,EAAA,EAAAH,EAAA,OAAAK,EAAA,EAAA,EAAAyC,CAAA,CAAA,4BAanBhD,EAAA,CAAA,oBAAAM,EAAA,IAAA2C,EAAAC,KAAA,GAAA,0BAKApD,EAAA,EAAA,WAAA,EAAA,EAA2DE,EAAA,CAAA,mBAErDC,EAAA,SAFqDI,EAAA,EAAAkC,EAAAhC,EAAA,EAAA,EAAA,gBAAA,CAAA,0BAG3DT,EAAA,EAAA,WAAA,EAAA,EAA4DE,EAAA,CAAA,mBAEtDC,EAAA,SAFsDI,EAAA,EAAAkC,EAAAhC,EAAA,EAAA,EAAA,eAAA,CAAA,4BAH5DqB,EAAA,EAAAuB,GAAA,EAAA,EAAA,WAAA,EAAA,EAA2D,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,oBAAhDlD,EAAA,OAAAmD,EAAAC,SAAA,EAGAjD,EAAA,EAAAH,EAAA,OAAA,CAAAmD,EAAAC,SAAA,6BAOXxD,EAAA,EAAA,IAAA,EAAA,EAKC,EAAA,MAAA,EACSE,EAAA,CAAA,mBAAwCC,EAAA,EAC9CF,EAAA,EAAA,WAAA,EAAA,EACJE,EAAA,qBANIC,EAAA,aAAAmC,EAAA,EAAAC,GAAAD,EAAA,EAAAkB,GAAAC,EAAA/C,EAAA,CAAA,CAAA,EAAkD,cAAAN,EAAA,EAAAsD,EAAA,CAAA,EAI5CpD,EAAA,CAAA,EAAAkC,EAAAhC,EAAA,EAAA,EAAA,sBAAA,CAAA,4BAKlBR,EAAA,EAAA,8BAAA,EAAA,gCAEIG,EAAA,cAAAwD,CAAA,EAA2B,QAAAjC,EAAAkC,KAAA,sCA/HnC7D,EAAA,EAAA,4BAAA,CAAA,gFAUIqB,EAAA,aAAA,SAAAyC,EAAA,CAAAxC,EAAAyC,CAAA,EAAA,IAAApC,EAAAF,EAAA,EAAA,OAAAG,EAAcD,EAAAqC,cAAAF,CAAA,CAAqB,CAAA,CAAA,EAAC,qBAAA,SAAAA,EAAA,CAAAxC,EAAAyC,CAAA,EAAA,IAAApC,EAAAF,EAAA,EAAA,OAAAG,EACdD,EAAAsC,gBAAAH,CAAA,CAAuB,CAAA,CAAA,EAAC,cAAA,SAAAA,EAAA,CAAAxC,EAAAyC,CAAA,EAAA,IAAApC,EAAAF,EAAA,EAAA,OAAAG,EAC/BD,EAAAuC,YAAAJ,CAAA,CAAmB,CAAA,CAAA,EAAC,uBAAA,SAAAA,EAAA,CAAAxC,EAAAyC,CAAA,EAAA,IAAApC,EAAAF,EAAA,EAAA,OAAAG,EACXD,EAAAwC,kBAAAL,CAAA,CAAyB,CAAA,CAAA,EAEjD7D,EAAA,EAAA,uBAAA,CAAA,EAIwB,EAAA,iBAAA,EAAA,mBAKxBD,EAAA,GAAA,iBAAA,EAAA,oBACI8B,EAAA,GAAAsC,GAAA,EAAA,EAAA,aAAA,EAGJjE,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBAKI8B,EAAA,GAAAuC,GAAA,EAAA,EAAA,aAAA,EAGJlE,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBAKI8B,EAAA,GAAAwC,GAAA,EAAA,EAAA,aAAA,EAGJnE,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBAKI8B,EAAA,GAAAyC,GAAA,EAAA,EAAA,aAAA,EAGJpE,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBAKI8B,EAAA,GAAA0C,GAAA,EAAA,EAAA,aAAA,EAqBJrE,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACI8B,EAAA,GAAA2C,GAAA,EAAA,EAAA,aAAA,EAYJtE,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACI8B,EAAA,GAAA4C,GAAA,EAAA,EAAA,aAAA,EAGJvE,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACI8B,EAAA,GAAA6C,GAAA,EAAA,EAAA,aAAA,EAQJxE,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACI8B,EAAA,GAAA8C,GAAA,EAAA,GAAA,aAAA,EAWJzE,EAAA,EACA2B,EAAA,GAAA+C,GAAA,EAAA,EAAA,8BAAA,EAAA,EAKJ1E,EAAA,oBAhIIC,EAAA,KAAAuB,EAAAmD,eAAA,EAAsB,QAAArE,EAAA,EAAA,GAAAkB,EAAAoD,MAAA,CAAA,EACE,iBAAAtE,EAAA,EAAA,GAAAkB,EAAAqD,eAAA,CAAA,EACkB,eAAAvE,EAAA,EAAA,GAAAkB,EAAAsD,aAAA,CAAA,EACJ,aAAAxE,EAAA,EAAA,GAAAkB,EAAAuD,WAAA,CAAA,EACJ,cAAAzE,EAAA,EAAA,GAAAkB,EAAAwD,YAAA,CAAA,EACE,UAAAxD,EAAAyD,OAAA,EACjB,cAAA3E,EAAA,EAAA,GAAAkB,EAAA0D,sBAAA,CAAA,EASf9E,EAAA,CAAA,EAAAH,EAAA,gBAAAuB,CAAA,EAAsB,mBAAAA,EAAA2D,gBAAA,EAItB/E,EAAA,EAAAH,EAAA,oBAAAuB,EAAA4D,iBAAA,EAAuC,wBAAA9E,EAAA,EAAA,GAAA,uBAAA,CAAA,EAG3BF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,WAAA,CAAA,EAAmC,kBAAA,EAAA,EAM/CF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EACnB,OAAAkB,EAAAkC,MAAA2B,IAAA,WAAA,CAAA,EAQxBjF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EACnB,OAAAkB,EAAAkC,MAAA2B,IAAA,WAAA,CAAA,EAQxBjF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,iBAAA,CAAA,EAAyC,kBAAA,EAAA,EACjB,OAAAkB,EAAAkC,MAAA2B,IAAA,UAAA,CAAA,EAQxBjF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,aAAA,CAAA,EAAqC,WAAA,EAAA,EACnB,OAAAkB,EAAAkC,MAAA2B,IAAA,MAAA,CAAA,EAyBNjF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,mBAAA,CAAA,EAcAF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,aAAA,CAAA,EAAqC,OAAAkB,EAAAkC,MAAA2B,IAAA,MAAA,CAAA,EAKrCjF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,mBAAA,CAAA,EAUAF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,sBAAA,CAAA,EAA8C,WAAA,EAAA,EAclCF,EAAA,CAAA,EAAAH,EAAA,UAAAuB,EAAA8D,YAAA,6BAOhC7C,EAAA,CAAA,EACI3C,EAAA,EAAA,0BAAA,EAAA,oCAAyBM,EAAA,EAAAH,EAAA,eAAAK,EAAA,EAAA,EAAAkB,EAAA+D,mBAAA,CAAA,6BAD7B5D,EAAA,EAAA6D,GAAA,EAAA,EAAA,eAAA,EAAA,+BAAevF,EAAA,OAAAK,EAAA,EAAA,EAAAkB,EAAA+D,mBAAA,CAAA,GDxIvB,IAAaE,IACT,IAAA,CADE,MAAOA,UACDC,EAAuE,CAuC/EC,YACcC,EACFC,EAAwC,CAEhD,MAAK,EAHK,KAAAD,YAAAA,EACF,KAAAC,oBAAAA,EAlCZ,KAAA/D,YAAwB,CAAA,EACxB,KAAA6C,gBAAkB,kBACT,KAAAW,aAAe,KAAKQ,qBAAqB,YAAY,EACrD,KAAAb,QAAU,KAAKc,uBAAsB,EACzCC,YAAW,EACXC,eAAc,EACdC,UAAU,CACP3D,KAAM,OACN4D,MAAS,cACTC,KAAM,CAAEC,KAAM,MAAM,EACpBC,YAAa,OAChB,EACAJ,UAAU,CACP3D,KAAM,aACN6D,KAAM,CAAEC,KAAM,SAAS,EACvBF,MAAS,oBACTI,cAAeC,IAAU,CACrBnD,UAAW,CAAEoD,GAAI,CAACD,CAAK,IAE9B,EACAE,sBAAsB,KAAKpB,YAAY,EACvCqB,eAAe,KAAKC,KAAK,EACrB,KAAAlD,MAAQ,KAAKmD,qBAAoB,EACrCC,YAAY,WAAY,KAAK,EAC7BC,QAAQ,CAAExE,KAAM,WAAW,CAAE,EAC7BwE,QAAQ,CAAExE,KAAM,WAAW,CAAE,EAC7BwE,QAAQ,CAAExE,KAAM,MAAM,CAAE,EACxBwE,QAAQ,CAAExE,KAAM,MAAM,CAAE,EACxBwE,QAAQ,CAAExE,KAAM,UAAU,CAAE,EAC5ByE,oBAAoB,KAAK1B,YAAY,EACrCqB,eAAe,KAAKC,KAAK,EAO1B,MAAMK,UAAU,CACZC,SAAUC,GACVC,SAAUC,GAAQA,EAAKC,YACvBC,aAAcA,CAACC,EAAMC,IAAS,CAC1B,IAAMC,EACF,KAAKtC,kBAAkBoB,QAAU,IAAM,KAAKvB,QAAQ0C,cAAcxF,SAAW,EACvE,GACAyF,OACV,MAAO,CACHC,QAAS,CACLL,KAAAA,EACAM,KAAML,EACNM,OAAQC,EAAA,CACJzF,KAAM,CAAE0F,SAAU,KAAK7C,kBAAkBoB,KAAK,GAC3C,KAAKvB,QAAQiD,kBAAiB,GAErCR,aAAAA,EACAS,KAAM,KAAKzE,MAAM0E,gBAAe,GAG5C,EACAC,qBAAsB,CAAC,KAAKpD,QAAQqD,aAAc,KAAK5E,MAAM4E,YAAY,EAC5E,CACL,CAEAC,UAAQ,CACJ,MAAMA,SAAQ,EACd,KAAKhD,oBAAsB,KAAKqB,MAAM4B,SAASC,KAC3CC,EAAIC,GAAMA,EAAGtD,IAAI,UAAU,CAAC,EAC5BuD,GAAoB,CAAE,EAE1B,IAAMC,EAAe,KAAKjC,MAAMkC,cAAcL,KAC1CC,EAAIK,GAAOA,EAAI1D,IAAI,UAAU,CAAC,EAC9BuD,GAAoB,EACpBF,EAAIM,GAAQA,EAAMA,EAAIC,MAAM,GAAG,EAAI,CAAA,CAAG,CAAC,EAE3CJ,EAAaJ,KAAKS,GAAU,KAAKC,QAAQ,CAAC,EAAEC,UAAUJ,GAAM,CACxD,KAAKlH,YAAckH,CACvB,CAAC,EACD,KAAKnE,gBAAkBwE,GAAcR,EAAc,KAAKS,QAAQ,EAAEb,KAC9Dc,EAAU,CAAC,CAACP,CAAG,IACPA,EAAI7G,OACG,KAAKyD,YAAY4D,WACnBC,eAAe,CACZ3B,KAAM,IACNC,OAAQ,CACJ2B,SAAU,CAAEC,GAAIX,CAAG,GAE1B,EACAY,UAAUvC,GAAQA,EAAKC,YAAYuC,KAAK,EAEtCC,GAAG,CAAA,CAAE,CAEnB,CAAC,EAGN,KAAKC,uBAAyBV,GAC1B,KAAK9D,oBACL,KAAKX,OACL,KAAKC,eAAe,EACtB4D,KACEC,EAAI,CAAC,CAAClI,EAAI8G,EAAa0C,CAAc,IAAK,CACtC,GAAIxJ,EAAI,CACJ,IAAMyJ,EAAQ,CAAC,GAAG3C,EAAa,GAAG0C,CAAc,EAAEE,KAAKC,GAAKA,EAAE3J,KAAOA,CAAE,EACvE,OAAOyJ,EAAQA,EAAM1H,KAAO,EAChC,CACA,MAAO,EACX,CAAC,CAAC,EAEN,KAAK2C,uBAAyBmE,GAC1B,KAAK9D,oBACL,KAAKX,OACL,KAAKC,eAAe,EACtB4D,KACEC,EAAI,CAAC,CAAClI,EAAI8G,EAAa0C,CAAc,IAAK,CACtC,GAAIxJ,EAAI,CACJ,IAAM4J,EAAqC,CAAA,EAC3C,QAAWZ,KAAclC,EAAa,CAClC8C,EAAeC,KAAKb,CAAU,EAC9B,IAAMc,EAAuBN,EAAejC,OACxCoC,GAAKA,EAAET,UAAYS,EAAET,WAAaF,EAAWhJ,EAAE,EAEnD4J,EAAeC,KAAK,GAAGC,CAAoB,CAC/C,CACA,OAAOF,EAAeG,UAAUJ,GAAKA,EAAE3J,KAAOA,CAAE,CACpD,CACA,MAAO,EACX,CAAC,CAAC,CAEV,CAEAuD,YAAYyG,EAA2B,CACnC,KAAK5E,YAAY4D,WAAWiB,eAAe,CAACD,CAAK,CAAC,EAAEpB,UAAU,CAC1DsB,KAAMA,IAAK,CACP,KAAK7E,oBAAoB8E,QAAU,6BAA8B,EACjE,KAAKC,QAAO,CAChB,EACAC,MAAOC,GAAM,CACT,KAAKjF,oBAAoBgF,MAAQ,kCAAmC,CACxE,EACH,CACL,CAEAE,eAAa,CACT,IAAMC,EAAShD,EAAA,GAAK,KAAKpB,MAAMqE,SAASD,QACxC,OAAOA,EAAOE,SACd,KAAKC,OAAOC,SAAS,CAAC,KAAMJ,CAAM,EAAG,CAAEK,WAAY,KAAKzE,MAAO0E,oBAAqB,UAAU,CAAE,CACpG,CAEAC,YAAYC,EAAkB,CAC1B,KAAK5F,YAAY6F,OAAOC,mBAAmBF,CAAI,EAAEpC,UAAS,CAC9D,CAEA1H,eAAe8H,EAAyD,CACpE,IAAI1H,EAAc,KAAKA,YAClBA,EAAYC,SAASyH,EAAWhJ,EAAE,EAGnCsB,EAAcA,EAAYiG,OAAOvH,GAAMA,IAAOgJ,EAAWhJ,EAAE,EAF3DsB,EAAYuI,KAAKb,EAAWhJ,EAAE,EAIlC,KAAK2K,OAAOC,SAAS,CAAC,IAAI,EAAG,CACzBO,YAAa,CACTC,SAAU9J,EAAYiG,OAAOvH,GAAM,CAAC,CAACA,CAAE,EAAEqL,KAAK,GAAG,GAErDP,oBAAqB,QACrBD,WAAY,KAAKzE,MACpB,CACL,iDA5KSnB,GAAuBqG,EAAAC,CAAA,EAAAD,EAAAE,CAAA,CAAA,CAAA,CAAA,+BAAvBvG,EAAuBwG,UAAA,CAAA,CAAA,qBAAA,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,EAAA,qBAAA,yBAAA,qBAAA,EAAA,CAAA,aAAA,iBAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,eAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,oBAAA,GAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,cAAA,EAAA,YAAA,EAAA,CAAA,QAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,aAAA,qBAAA,cAAA,uBAAA,KAAA,QAAA,iBAAA,eAAA,aAAA,cAAA,UAAA,aAAA,EAAA,CAAA,aAAA,kBAAA,EAAA,gBAAA,kBAAA,EAAA,CAAA,EAAA,oBAAA,uBAAA,EAAA,CAAA,KAAA,KAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,WAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,OAAA,EAAA,UAAA,WAAA,MAAA,EAAA,CAAA,KAAA,aAAA,EAAA,SAAA,EAAA,CAAA,KAAA,OAAA,EAAA,UAAA,MAAA,EAAA,CAAA,KAAA,aAAA,EAAA,SAAA,EAAA,CAAA,KAAA,gBAAA,EAAA,UAAA,UAAA,EAAA,CAAA,EAAA,cAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,QAAA,cAAA,QAAA,cAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,4BAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,YAAA,EAAA,CAAA,QAAA,aAAA,EAAA,CAAA,QAAA,cAAA,EAAA,aAAA,EAAA,CAAA,EAAA,cAAA,gBAAA,EAAA,OAAA,EAAA,CAAA,QAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,QAAA,EAAA,CAAA,QAAA,aAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,YAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,SAAA,EAAA,CAAA,YAAA,SAAA,EAAA,CAAA,sBAAA,QAAA,EAAA,eAAA,gBAAA,EAAA,aAAA,aAAA,EAAA,CAAA,QAAA,YAAA,EAAA,CAAA,EAAA,cAAA,OAAA,EAAA,CAAA,EAAA,cAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICtBpC5M,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EACI,EAAA,aAAA,EACC,EAAA,wBAAA,CAAA,4BAILqB,EAAA,qBAAA,SAAAyC,EAAA,CAAA,OAAsB+I,EAAAnB,YAAA5H,CAAA,CAAmB,CAAA,EAC5C3D,EAAA,EAAwB,EAE7BH,EAAA,EAAA,cAAA,EACIC,EAAA,EAAA,uBAAA,CAAA,EACA6B,EAAA,EAAAgL,GAAA,EAAA,EAAA,IAAA,CAAA,EAQA7M,EAAA,EAAA,+BAAA,CAAA,EACJE,EAAA,EAAe,EACF,EAErBH,EAAA,GAAA,iBAAA,CAAA,gBAA+DqB,EAAA,eAAA,UAAA,CAAA,OAAgBwL,EAAA3B,cAAA,CAAe,CAAA,EAC1FpJ,EAAA,GAAAiL,GAAA,GAAA,GAAA,cAAA,CAAA,EAA8B,GAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,gBA0IlC7M,EAAA,SA9JgBI,EAAA,CAAA,EAAAH,EAAA,yBAAAK,EAAA,EAAA,EAAAoM,EAAAI,mBAAA,CAAA,EAAsD,sBAAAxM,EAAA,EAAA,EAAAoM,EAAAK,gBAAA,CAAA,EASrD3M,EAAA,CAAA,EAAAH,EAAA,mBAAAC,EAAA,GAAA8M,EAAA,CAAA,EAUD5M,EAAA,CAAA,EAAAH,EAAA,iBAAAK,EAAA,GAAA,EAAAoM,EAAAnH,mBAAA,CAAA,EAsImBnF,EAAA,CAAA,EAAAH,EAAA,iBAAAK,EAAA,GAAA,GAAAoM,EAAA3C,sBAAA,CAAA;8FDvItBtE,CACT,GAAA,EEXJ,IAAawH,IAAqB,IAAA,CAA5B,MAAOA,CAAqB,CAS9BC,aAAA,CARQ,KAAAC,iBAAqF,CAAA,EAErF,KAAAC,YAAc,IAAIC,GAClB,KAAAC,SAAW,IAAID,GAMnB,KAAKE,WAAa,KAAKH,YAAYI,aAAY,EAC/C,KAAKC,QAAU,KAAKH,SAASE,aAAY,CAC7C,CAEAE,aAAW,CACP,KAAKN,YAAYO,SAAQ,EACzB,KAAKL,SAASK,SAAQ,CAC1B,CAEAC,kBAAkBC,EAAiC,CAC/C,KAAKC,eAAiBD,CAC1B,CAEAE,eAAa,CACT,KAAKZ,iBAAmB,CAAA,CAC5B,CAEAa,iBAAiBC,EAA6B,CAC1C,OAAI,KAAKd,iBAAiBe,SAAW,IACjC,KAAKf,iBAAmB,KAAKgB,0BAAyB,GAEnD,KAAKhB,iBAAiBiB,OACzBC,GACIA,EAAKC,KAAOL,EAAWK,IACvB,CAACD,EAAKE,eAAeC,IAAIP,EAAWK,EAAE,GACtCD,EAAKC,KAAOL,EAAWQ,QAAQH,EAAE,CAE7C,CAEAI,OAAOC,EAAmE,CACtE,IAAMN,EAAOM,EAAMN,KAAKO,KAElBC,EADYF,EAAMG,UAAUF,KACJN,GAC9B,GAAIO,GAAe,KACf,MAAM,IAAIE,MAAM,mDAAmD,EAEvE,KAAK3B,YAAY4B,KAAK,CAClBC,aAAcZ,EAAKC,GACnBY,SAAUL,EACVM,MAAOR,EAAMS,aAChB,CACL,CAEAC,OAAOV,EAAqB,CACxB,KAAKvB,YAAY4B,KAAKL,CAAK,CAC/B,CAEAW,SAAShB,EAAU,CACf,KAAKhB,SAAS0B,KAAKV,CAAE,CACzB,CAEQH,2BAAyB,CAC7B,IAAMoB,EAAQA,CACVC,EACAC,EACAlB,EACAmB,IACA,CACA,IAAMC,EAAOF,EAAWG,OAAOJ,EAAKK,IAAI,EACxCH,OAAAA,EAAOI,KAAK,CAAEH,KAAMA,EAAKI,MAAM,CAAC,EAAEC,KAAK,KAAK,GAAK,OAAQ1B,GAAIkB,EAAKlB,GAAIC,eAAAA,CAAc,CAAE,EACtFiB,EAAKS,SAASC,QAAQC,GAClBZ,EAAMY,EAAOR,EAAM,IAAIS,IAAY,CAAC,GAAG7B,EAAgBiB,EAAKlB,EAAE,CAAC,EAAGoB,CAAM,CAAC,EAEtEA,CACX,EACA,OAAOH,EAAM,KAAKzB,eAAgB,CAAA,EAAI,IAAIsC,IAAe,CAAA,CAAE,CAC/D,iDA5ESnD,EAAqB,CAAA,kCAArBA,EAAqBoD,QAArBpD,EAAqBqD,SAAA,CAAA,CAAA,SAArBrD,CAAqB,GAAA,uOEuBdsD,EAAA,EAAA,WAAA,EAAA,wBACAA,EAAA,EAAA,WAAA,EAAA,qCAPJC,EAAA,EAAA,SAAA,EAAA,EAIIC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAE,eAAAL,CAAA,CAA0B,CAAA,CAAA,EAEnCM,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAAoE,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAExEC,EAAA,oCANIC,EAAA,WAAAP,EAAAQ,SAAA,EAI0BC,EAAA,EAAAF,EAAA,OAAA,CAAAV,EAAAa,UAAA,CAAAV,EAAAQ,SAAA,EACKC,EAAA,EAAAF,EAAA,OAAAV,EAAAa,UAAAV,EAAAQ,SAAA,yBAG/BhB,EAAA,EAAA,MAAA,EAAA,yBAKRC,EAAA,EAAA,UAAA,EAAuCkB,EAAA,CAAA,mBAAmCL,EAAA,SAAnCG,EAAA,EAAAG,EAAAC,EAAA,EAAA,EAAA,iBAAA,CAAA,0BAavCpB,EAAA,EAAA,MAAA,EAAA,EACID,EAAA,EAAA,WAAA,EAAA,EACJc,EAAA,6BAMQb,EAAA,EAAA,IAAA,EAAA,EAKID,EAAA,EAAA,WAAA,EAAA,EACAmB,EAAA,CAAA,mBACJL,EAAA,4BALIC,EAAA,aAAAO,EAAA,EAAAC,GAAAD,EAAA,EAAAE,GAAAnB,EAAAoB,EAAA,CAAA,CAAA,EAIAR,EAAA,CAAA,EAAAS,EAAA,IAAAL,EAAA,EAAA,EAAA,+BAAA,EAAA,GAAA,sCAwBJpB,EAAA,EAAA,SAAA,EAAA,eAIIC,EAAA,QAAA,UAAA,CAAA,IAAAyB,EAAAxB,EAAAyB,CAAA,EAAArB,UAAAF,EAAAC,EAAA,EAAAC,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAqB,KAAAxB,EAAAsB,EAAAF,EAAA,CAAyB,CAAA,CAAA,EAGlCxB,EAAA,EAAA,MAAA,EAAA,EAA0B,EAAA,MAAA,EAAA,EAElBD,EAAA,EAAA,WAAA,EAAA,EACJc,EAAA,EACAb,EAAA,EAAA,MAAA,EAAA,EACIkB,EAAA,CAAA,EACJL,EAAA,EAAM,EACJ,mCATNC,EAAA,WAAA,CAAAM,EAAA,EAAA,EAAAb,EAAAsB,oBAAA,CAAA,EAOQb,EAAA,CAAA,EAAAS,EAAA,IAAAC,EAAAI,KAAA,GAAA,4BAiBxB/B,EAAA,EAAA,2BAAA,EAAA,iCAEIe,EAAA,YAAAP,EAAAQ,SAAA,EAAuB,iBAAAX,CAAA,EACM,qBAAAG,EAAAwB,kBAAA,EACY,mBAAAxB,EAAAyB,gBAAA,sCAxHjDhC,EAAA,EAAA,MAAA,CAAA,EAMC,EAAA,MAAA,CAAA,EAKI,EAAA,KAAA,EACQ,EAAA,QAAA,CAAA,EAKGC,EAAA,QAAA,SAAAgC,EAAA,CAAA,IAAA7B,EAAAF,EAAAgC,CAAA,EAAA5B,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAyB,iBAAAG,gBAAA/B,EAAA6B,CAAA,CAAoD,CAAA,CAAA,EAJjEpB,EAAA,EAKE,EAENb,EAAA,EAAA,MAAA,CAAA,EACIU,EAAA,EAAA0B,GAAA,EAAA,EAAA,SAAA,CAAA,EAKC,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,EAODpB,EAAA,CAAA,EACJL,EAAA,EACAd,EAAA,EAAA,MAAA,CAAA,EACAW,EAAA,GAAA6B,GAAA,EAAA,EAAA,WAAA,EAAA,EACAvC,EAAA,GAAA,IAAA,EAAA,EAKID,EAAA,GAAA,WAAA,EAAA,EACAmB,EAAA,EAAA,oBACJL,EAAA,EACAb,EAAA,GAAA,IAAA,EAAA,EACID,EAAA,GAAA,WAAA,EAAA,EACAmB,EAAA,EAAA,oBACJL,EAAA,EACAH,EAAA,GAAA8B,GAAA,EAAA,EAAA,MAAA,EAAA,EAGAxC,EAAA,GAAA,cAAA,EAAc,GAAA,SAAA,EAAA,EACqCC,EAAA,QAAA,UAAA,CAAA,IAAAG,EAAAF,EAAAgC,CAAA,EAAA5B,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAkC,iBAAArC,CAAA,CAA4B,CAAA,CAAA,EAChFL,EAAA,GAAA,WAAA,EAAA,EACJc,EAAA,EACAb,EAAA,GAAA,oBAAA,EAAA,EACIU,EAAA,GAAAgC,GAAA,EAAA,EAAA,IAAA,EAAA,EAQA3C,EAAA,GAAA,MAAA,EAAA,EACAC,EAAA,GAAA,SAAA,EAAA,gBAIIC,EAAA,QAAA,UAAA,CAAA,IAAA0C,EAAAzC,EAAAgC,CAAA,EAAA9B,EAAAuC,EAAArC,UAAAsC,EAAAD,EAAAE,MAAAtC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAuC,OAAA1C,EAAAwC,CAAA,CAAqB,CAAA,CAAA,EAE9B7C,EAAA,GAAA,WAAA,EAAA,EACAmB,EAAA,EAAA,oBACJL,EAAA,EACAb,EAAA,GAAA,SAAA,EAAA,gBAMIC,EAAA,QAAA,UAAA,CAAA,IAAA8C,EAAA7C,EAAAgC,CAAA,EAAA9B,EAAA2C,EAAAzC,UAAAsC,EAAAG,EAAAF,MAAAtC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAAyC,SAAA5C,EAAAwC,CAAA,CAAuB,CAAA,CAAA,EAEhC7C,EAAA,GAAA,WAAA,EAAA,EACAmB,EAAA,EAAA,oBACJL,EAAA,EACAb,EAAA,GAAA,KAAA,EAAA,EAA4BkB,EAAA,EAAA,oBAAmCL,EAAA,EAC/DH,EAAA,GAAAuC,GAAA,EAAA,EAAA,SAAA,EAAA,EAgBAlD,EAAA,GAAA,MAAA,EAAA,EACAC,EAAA,GAAA,SAAA,EAAA,gBAGIC,EAAA,QAAA,UAAA,CAAA,IAAAG,EAAAF,EAAAgC,CAAA,EAAA5B,UAAAC,EAAAF,EAAA,EAAA,OAAAG,EAASD,EAAA2C,OAAA9C,EAAAoB,EAAA,CAAqB,CAAA,CAAA,EAG9BzB,EAAA,GAAA,WAAA,EAAA,EACAmB,EAAA,EAAA,oBACJL,EAAA,EAAS,EACO,EACT,EAEnBH,EAAA,GAAAyC,GAAA,EAAA,EAAA,2BAAA,EAAA,EAOJtC,EAAA,mDAzHIuC,EAAA,UAAAhD,EAAAiD,SAAA,EAGAvC,EAAA,cAAAV,CAAA,EAKIY,EAAA,EAAAoC,EAAA,SAAAhD,EAAAoB,KAAAjB,EAAAwB,kBAAA,EADAjB,EAAA,UAAA,SAAAP,EAAA+C,KAAA,EAOQtC,EAAA,CAAA,EAAAF,EAAA,UAAAP,EAAAyB,iBAAAuB,WAAAnD,CAAA,CAAA,EAQCY,EAAA,CAAA,EAAAF,EAAA,OAAAV,EAAAoD,UAAA,KAAA,KAAApD,EAAAoD,SAAAC,MAAA,EAAmC,WAAAC,CAAA,EASxC1C,EAAA,CAAA,EAAAS,EAAA,IAAArB,EAAAuD,KAAA,GAAA,EAGO3C,EAAA,CAAA,EAAAF,EAAA,OAAAV,EAAAiD,SAAA,EAGPrC,EAAA,EAAAF,EAAA,aAAAO,EAAA,GAAAuC,GAAAvC,EAAA,GAAAwC,GAAAzD,EAAAoB,EAAA,CAAA,CAAA,EAIAR,EAAA,CAAA,EAAAS,EAAA,IAAAL,EAAA,GAAA,GAAA,uBAAA,EAAA,GAAA,EAE2BJ,EAAA,CAAA,EAAAF,EAAA,aAAAO,EAAA,GAAAyC,GAAA1D,EAAAoB,EAAA,CAAA,EAE3BR,EAAA,CAAA,EAAAS,EAAA,IAAAL,EAAA,GAAA,GAAA,aAAA,EAAA,GAAA,EAEoCJ,EAAA,CAAA,EAAAF,EAAA,mBAAAiD,EAAA,GAAAC,EAAA,CAAA,EAW3BhD,EAAA,CAAA,EAAAF,EAAA,mBAAAiD,EAAA,GAAAE,EAAA,CAAA,EASDjD,EAAA,CAAA,EAAAF,EAAA,WAAA8B,IAAA,GAAA,CAAAxB,EAAA,GAAA,GAAAb,EAAAsB,oBAAA,CAAA,EAIAb,EAAA,CAAA,EAAAS,EAAA,IAAAL,EAAA,GAAA,GAAA,iBAAA,EAAA,GAAA,EAKAJ,EAAA,CAAA,EAAAF,EAAA,WAAA8B,IAAArC,EAAA2D,eAAAV,SAAAC,OAAA,GAAA,CAAArC,EAAA,GAAA,GAAAb,EAAAsB,oBAAA,CAAA,EAMAb,EAAA,CAAA,EAAAS,EAAA,IAAAL,EAAA,GAAA,GAAA,mBAAA,EAAA,GAAA,EAEwBJ,EAAA,CAAA,EAAAG,EAAAC,EAAA,GAAA,GAAA,iBAAA,CAAA,EAIPJ,EAAA,CAAA,EAAAF,EAAA,UAAAP,EAAA4D,aAAA,EAkBjBnD,EAAA,CAAA,EAAAF,EAAA,WAAA,CAAAM,EAAA,GAAA,GAAAb,EAAA6D,oBAAA,CAAA,EAGApD,EAAA,CAAA,EAAAS,EAAA,IAAAL,EAAA,GAAA,GAAA,eAAA,EAAA,GAAA,EAMXJ,EAAA,CAAA,EAAAF,EAAA,OAAAV,EAAAa,UAAAV,EAAAQ,SAAA,GDhGb,IAAasD,IAA2B,IAAA,CAAlC,MAAOA,CAA2B,CAYpCC,YACoCC,EACxBC,EACAC,EACAC,EACAC,EACAC,EAAoC,CALZ,KAAAL,OAAAA,EACxB,KAAAC,YAAAA,EACA,KAAAC,sBAAAA,EACA,KAAAC,OAAAA,EACA,KAAAC,MAAAA,EACA,KAAAC,kBAAAA,EAjBZ,KAAAtB,MAAQ,EAIC,KAAAvC,UAAY,GAIrB,KAAAoD,cAAqD,CAAA,EAW7CI,IACA,KAAKjB,MAAQiB,EAAOjB,MAAQ,EAEpC,CAEAuB,UAAQ,CACJ,KAAKC,WAAa,KAAKZ,eAAeP,MAAQ,SAC9C,IAAMoB,EAAe,KAAKP,YAAYQ,OACjCC,WAAU,EACVC,UAAUC,GAAQA,EAAKF,WAAWG,WAAW,EAC7CC,KAAKC,GAAY,CAAC,CAAC,EACxB,KAAKzD,qBAAuBkD,EAAaM,KACrCE,EACIC,GACIA,EAAMC,SAASC,EAAWC,aAAa,GAAKH,EAAMC,SAASC,EAAWE,gBAAgB,CAAC,CAC9F,EAEL,KAAKxB,qBAAuBW,EAAaM,KACrCE,EACIC,GACIA,EAAMC,SAASC,EAAWG,aAAa,GAAKL,EAAMC,SAASC,EAAWI,gBAAgB,CAAC,CAC9F,EAEL,KAAKC,aAAe,KAAK/D,kBAAkBgE,kBAAkBC,UAAU,IACnE,KAAKrB,kBAAkBsB,aAAY,CAAE,CAE7C,CAEAC,YAAYC,EAAsB,CAC9B,IAAMC,EAAkBD,EAAQ,UAC5BC,GACIA,EAAgBC,gBAAkB,IAAQD,EAAgBE,eAAiB,IAC3E,KAAKrC,eAAeV,SAASgD,QAAQC,GAAMA,EAAExF,SAAW,EAAM,CAG1E,CAEAyF,aAAW,CACP,KAAKX,cAAcY,YAAW,CAClC,CAEAC,UAAU/D,EAAegE,EAAuB,CAC5C,OAAOA,EAAKrF,EAChB,CAEAf,eAAeqG,EAAuC,CAClDA,EAAW7F,SAAW,CAAC6F,EAAW7F,SAClC,IAAI8F,EAAc,KAAKpC,MAAMqC,SAASC,cAAcC,IAAI,UAAU,GAAGC,MAAM,GAAG,GAAK,CAAA,EAC/EL,EAAW7F,SACX8F,EAAYK,KAAKN,EAAWtF,EAAE,EAE9BuF,EAAcA,EAAYM,OAAO7F,GAAMA,IAAOsF,EAAWtF,EAAE,EAE/D,KAAKkD,OAAO4C,SAAS,CAAC,IAAI,EAAG,CACzBC,YAAa,CACTtG,SAAU8F,EAAYM,OAAO7F,GAAM,CAAC,CAACA,CAAE,EAAEgG,KAAK,GAAG,GAErDC,oBAAqB,QACrBC,WAAY,KAAK/C,MACpB,CACL,CAEAlC,iBAAiBqE,EAA6B,CAC1C,KAAK3C,cAAgB,KAAKM,sBAAsBhC,iBAAiBqE,CAAU,CAC/E,CAEAlF,KAAKkF,EAA+Ba,EAAgB,CAChD,KAAKlD,sBAAsBmD,OAAO,CAC9B/E,MAAO,EACP8E,SAAAA,EACAE,aAAcf,EAAWtF,GAC5B,CACL,CAEAsB,OAAOgE,EAA+BgB,EAAoB,CACjDhB,EAAWvC,QAGhB,KAAKE,sBAAsBmD,OAAO,CAC9B/E,MAAOiF,EAAe,EACtBH,SAAUb,EAAWvC,OAAO/C,GAC5BqG,aAAcf,EAAWtF,GAC5B,CACL,CAEAwB,SAAS8D,EAA+BgB,EAAoB,CACnDhB,EAAWvC,QAGhB,KAAKE,sBAAsBmD,OAAO,CAC9B/E,MAAOiF,EAAe,EACtBH,SAAUb,EAAWvC,OAAO/C,GAC5BqG,aAAcf,EAAWtF,GAC5B,CACL,CAEAuG,KAAKC,EAAmE,CACpEC,GAAgB,KAAK/D,eAAeV,SAAUwE,EAAME,cAAeF,EAAMF,YAAY,EACrF,KAAKrD,sBAAsB0D,OAAOH,CAAK,CAC3C,CAEA9E,OAAO1B,EAAU,CACb,KAAKiD,sBAAsB2D,SAAS5G,CAAE,CAC1C,iDA3HS6C,GAA2BgE,EAAAhE,EAAA,EAAA,EAAAgE,EAAAC,CAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,EAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,CAAA,+BAA3BrE,EAA2BsE,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAA1E,eAAA,iBAAAnC,mBAAA,qBAAAhB,UAAA,YAAAiB,iBAAA,kBAAA,EAAA6G,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,WAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,CAAA,cAAA,GAAA,EAAA,YAAA,EAAA,qBAAA,kBAAA,qBAAA,EAAA,CAAA,QAAA,aAAA,UAAA,GAAA,EAAA,UAAA,cAAA,EAAA,QAAA,UAAA,cAAA,EAAA,CAAA,UAAA,GAAA,EAAA,aAAA,EAAA,aAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,CAAA,OAAA,WAAA,cAAA,GAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,4BAAA,EAAA,WAAA,QAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,WAAA,EAAA,MAAA,WAAA,SAAA,EAAA,YAAA,EAAA,CAAA,QAAA,WAAA,EAAA,CAAA,EAAA,MAAA,WAAA,SAAA,EAAA,YAAA,EAAA,CAAA,QAAA,MAAA,EAAA,CAAA,QAAA,cAAA,gBAAA,GAAA,EAAA,kBAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,cAAA,EAAA,OAAA,EAAA,CAAA,QAAA,mBAAA,EAAA,CAAA,cAAA,cAAA,EAAA,CAAA,QAAA,gBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,OAAA,SAAA,kBAAA,GAAA,EAAA,QAAA,UAAA,EAAA,CAAA,QAAA,UAAA,EAAA,CAAA,QAAA,YAAA,EAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,OAAA,SAAA,kBAAA,GAAA,EAAA,WAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,SAAA,EAAA,QAAA,UAAA,EAAA,CAAA,QAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,iBAAA,qBAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,cAAA,gBAAA,EAAA,QAAA,UAAA,EAAA,CAAA,QAAA,SAAA,EAAA,MAAA,EAAA,CAAA,QAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,QAAA,EAAA,CAAA,QAAA,aAAA,EAAA,CAAA,EAAA,sBAAA,EAAA,CAAA,gBAAA,GAAA,EAAA,aAAA,EAAA,CAAA,QAAA,cAAA,OAAA,IAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,CAAA,QAAA,MAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,QAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,YAAA,iBAAA,qBAAA,kBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC7BxCpJ,EAAA,EAAA,MAAA,EAAA,CAAA,eAMIC,EAAA,qBAAA,SAAAgC,EAAA,CAAAqH,OAAApJ,EAAAqJ,CAAA,EAAA/I,EAAsB6I,EAAAtB,KAAA9F,CAAA,CAAY,CAAA,CAAA,EAElCvB,EAAA,EAAA8I,GAAA,GAAA,GAAA,MAAA,CAAA,EA4HJ3I,EAAA,QAhIIC,EAAA,kBAAAuI,EAAAnF,cAAA,EAAkC,sBAAA,CAAA9C,EAAA,EAAA,EAAAiI,EAAAxH,oBAAA,CAAA,EAOPb,EAAA,CAAA,EAAAF,EAAA,UAAAuI,EAAAnF,eAAAV,QAAA,EAA4B,eAAA6F,EAAAzC,SAAA,8DDkB9CvC,EAA2BoF,EAAAC,CAAA,EAAAC,OAAA,CAAA;wEAAA,EAAAC,gBAAA,CAAA,CAAA,CAAA,SAA3BvF,CAA2B,GAAA,EErBlC,SAAUwF,GACZC,EACAC,EACAC,EAAwB,CAAA,EAAE,CAE1B,IAAMC,EAAoC,CAAA,EACpCC,EAA2C,CAAA,EAC3CC,EAAkBC,GAAUL,CAAY,EAG9C,QAAWM,KAAQP,EACfI,EAAUG,EAAKC,EAAE,EAAIC,GAAAC,EAAA,GAAMH,GAAN,CAAoBI,SAAU,CAAA,CAAE,GAGzD,QAAWH,KAAMR,EAAMY,IAAIC,GAAKA,EAAEL,EAAE,EAChC,GAAIJ,EAAUU,eAAeN,CAAE,EAAG,CAC9B,IAAMO,EAAaX,EAAUI,CAAE,EAC/BO,EAAWC,SAAWX,EAAgBY,IAAIT,CAAE,GAAGQ,UAAYd,EAAYgB,SAASV,CAAE,EAClF,IAAMW,EAASJ,EAAWI,OAC1B,GAAI,CAACA,EACD,SAGiB,CAACf,EAAUe,EAAOX,EAAE,EAQrCL,EAAciB,KAAKL,CAAU,EANzBX,EAAUe,EAAOX,EAAE,EACnBJ,EAAUe,EAAOX,EAAE,EAAEG,SAASS,KAAKL,CAAU,EAE7CX,EAAUe,EAAOX,EAAE,EAAI,CAAEG,SAAU,CAACI,CAAU,CAAC,CAK3D,CAIJ,MAAO,CAAEP,GADML,EAAckB,OAASlB,EAAc,CAAC,EAAEgB,OAAQX,GAAKc,OAC/CX,SAAUR,CAAa,CAChD,CAOA,SAASG,GAA+BiB,EAAkB,CACtD,IAAMC,EAAU,IAAIC,IACpB,SAASC,EAAMnB,EAAiB,CAC5BiB,EAAQG,IAAIpB,EAAKC,GAAID,CAAI,EACzBA,EAAKI,SAASiB,QAAQF,CAAK,CAC/B,CACA,OAAIH,GACAG,EAAMH,CAAmB,EAEtBC,CACX,0BE/DAK,EAAA,EAAA,2BAAA,CAAA,iBAGIC,EAAA,YAAAC,EAAAC,SAAA,EAAuB,iBAAAD,EAAAE,cAAA,EACU,mBAAAF,EAAAG,gBAAA,EACI,qBAAAH,EAAAI,kBAAA,GDmBzC,IAAaC,IAAuB,IAAA,CAA9B,MAAOA,CAAuB,CAUhCC,YAAoBC,EAA4C,CAA5C,KAAAA,sBAAAA,EAPX,KAAAN,UAAY,GACZ,KAAAO,YAAwB,CAAA,EAEvB,KAAAC,UAAY,IAAIC,GAChB,KAAAC,iBAAmB,IAAID,EAGkC,CAEnEE,YAAYC,EAAsB,CAC1B,gBAAiBA,GAAW,KAAKC,cACjC,KAAKZ,eAAiBa,GAAY,KAAKD,YAAa,KAAKZ,eAAgB,KAAKM,WAAW,EACzF,KAAKD,sBAAsBS,kBAAkB,KAAKd,cAAc,EAChE,KAAKK,sBAAsBU,cAAa,EAEhD,CAEAC,UAAQ,CACJ,KAAKX,sBAAsBY,WAAWC,UAAUC,GAAS,KAAKZ,UAAUa,KAAKD,CAAK,CAAC,EACnF,KAAKd,sBAAsBgB,QAAQH,UAAUI,GAAM,KAAKb,iBAAiBW,KAAKE,CAAE,CAAC,CACrF,iDAvBSnB,GAAuBoB,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAAvBrB,EAAuBsB,UAAA,CAAA,CAAA,qBAAA,CAAA,EAAAC,OAAA,CAAAd,YAAA,cAAAV,mBAAA,qBAAAH,UAAA,YAAAO,YAAA,cAAAL,iBAAA,kBAAA,EAAA0B,QAAA,CAAApB,UAAA,YAAAE,iBAAA,kBAAA,EAAAmB,WAAA,GAAAC,SAAA,CAAAC,GAHrB,CAACN,EAAqB,CAAC,EAAAO,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,mBAAA,GAAA,EAAA,YAAA,iBAAA,mBAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,GAAA,EAAA,YAAA,iBAAA,mBAAA,oBAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GCrBtCE,EAAA,EAAAC,GAAA,EAAA,EAAA,2BAAA,CAAA,OACK1C,EAAA,OAAAwC,EAAArC,cAAA,sEDuBQG,CAAuB,GAAA,yBGvBhCqC,EAAA,CAAA,yBAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,mDAAA,EAAA;CAAA,4BAIAC,EAAA,EAAA,IAAA,EAAqCH,EAAA,CAAA,EAAsCI,EAAA,0BAAtCC,EAAA,EAAAC,GAAA,GAAAC,EAAAC,KAAA,KAAAD,EAAAE,IAAA,GAAA,sCAGrCN,EAAA,EAAA,SAAA,CAAA,EAAkCO,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,OAAA,CAAQ,CAAA,CAAA,EAAEhB,EAAA,CAAA,mBAAiCI,EAAA,EACtFD,EAAA,EAAA,SAAA,CAAA,EAAsBO,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAI,QAAA,CAAS,CAAA,CAAA,EACpCjB,EAAA,CAAA,mBACJI,EAAA,QAHqDC,EAAA,EAAAa,EAAAhB,EAAA,EAAA,EAAA,eAAA,CAAA,EAEjDG,EAAA,CAAA,EAAAJ,EAAA,IAAAC,EAAA,EAAA,EAAA,gBAAA,EAAA,GAAA,GDAR,IAAaiB,IAAqC,IAAA,CAA5C,MAAOA,CAAqC,CAPlDC,aAAA,CASI,KAAAC,SAA8E,CAAA,EAE9EJ,SAAO,CACH,KAAKK,YAAY,EAAI,CACzB,CAEAN,QAAM,CACF,KAAKM,YAAW,CACpB,iDAVSH,EAAqC,CAAA,+BAArCA,EAAqCI,UAAA,CAAA,CAAA,qCAAA,CAAA,EAAAC,WAAA,GAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,cAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICVlDE,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,EAGAhC,EAAA,CAAA,mBACAG,EAAA,EAAA,IAAA,EACI4B,EAAA,EAAAE,GAAA,EAAA,EAAA,KAAA,CAAA,EACJ7B,EAAA,EACA2B,EAAA,EAAAG,GAAA,EAAA,EAAA,cAAA,CAAA,SAJA7B,EAAA,EAAAJ,EAAA;EAAAC,EAAA,EAAA,EAAA,kDAAA,EAAA;CAAA,EAE4BG,EAAA,CAAA,EAAA8B,EAAA,UAAAL,EAAAT,QAAA,yEDKfF,CAAqC,GAAA,EENlD,IAAAiB,GAAgC,gCCH5BC,EAAA,CAAA,yBAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,4BAAA,EAAA;CAAA,qCAkBAC,EAAA,EAAA,SAAA,CAAA,EAAkCC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,OAAA,CAAQ,CAAA,CAAA,EAAEV,EAAA,CAAA,mBAAiCW,EAAA,EACtFR,EAAA,EAAA,SAAA,CAAA,EAAsBC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAK,QAAA,CAAS,CAAA,CAAA,EACpCZ,EAAA,CAAA,mBACJW,EAAA,oBAHqDE,EAAA,EAAAC,EAAAZ,EAAA,EAAA,EAAA,eAAA,CAAA,EACaW,EAAA,CAAA,EAAAE,EAAA,WAAAR,EAAAS,KAAAC,OAAA,EAC9DJ,EAAA,EAAAZ,EAAA,IAAAC,EAAA,EAAA,EAAA,gBAAA,EAAA,GAAA,GDRR,IAAagB,IAA+B,IAAA,CAAtC,MAAOA,CAA+B,CAQxCC,YAAoBC,EAAwB,CAAxB,KAAAA,YAAAA,EALpB,KAAAJ,KAAO,KAAKI,YAAYC,MAAM,CAC1BC,KAAM,CAAC,GAAIC,GAAWC,QAAQ,EAC9BC,KAAM,CAAC,GAAIF,GAAWC,QAAQ,EACjC,CAE8C,CAE/CE,YAAU,CACN,IAAMC,EAAc,KAAKX,KAAKY,IAAI,MAAM,EAClCC,EAAc,KAAKb,KAAKY,IAAI,MAAM,EACpCD,GAAeE,GAAeA,EAAYC,UAC1CD,EAAYE,YAASC,oBAAgB,GAAGL,EAAYM,KAAK,GAAI,GAAG,CAAC,CAEzE,CAEArB,SAAO,CACH,GAAM,CAAEU,KAAAA,EAAMG,KAAAA,CAAI,EAAK,KAAKT,KAAKiB,MAC7B,CAACX,GAAQ,CAACG,GAGd,KAAKS,YAAY,CACbC,QAAS,KAAKA,QACdV,KAAAA,EACAW,aAAc,CAAC,CAAEC,aAAc,KAAKA,aAAcf,KAAAA,CAAI,CAAE,EAC3D,CACL,CAEAZ,QAAM,CACF,KAAKwB,YAAW,CACpB,iDAhCShB,GAA+BoB,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAA/BrB,EAA+BsB,UAAA,CAAA,CAAA,+BAAA,CAAA,EAAAC,WAAA,GAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,KAAA,OAAA,OAAA,OAAA,kBAAA,OAAA,EAAA,OAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,KAAA,OAAA,OAAA,OAAA,kBAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,cAAA,EAAA,QAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICb5CE,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,EAGA9C,EAAA,EAAA,MAAA,CAAA,EAA0C,EAAA,iBAAA,CAAA,mBAElCA,EAAA,EAAA,QAAA,CAAA,EAAoDC,EAAA,QAAA,UAAA,CAAA,OAAS2C,EAAArB,WAAA,CAAY,CAAA,EAAzEf,EAAA,EAA6E,EAEjFR,EAAA,EAAA,iBAAA,CAAA,mBAII+C,EAAA,EAAA,QAAA,CAAA,EAKJvC,EAAA,EAAiB,EAErBqC,EAAA,EAAAG,GAAA,EAAA,EAAA,cAAA,CAAA,SAfuBtC,EAAA,EAAAE,EAAA,YAAAgC,EAAA/B,IAAA,EACHH,EAAA,EAAAE,EAAA,QAAAb,EAAA,EAAA,EAAA,aAAA,CAAA,EAIZW,EAAA,CAAA,EAAAE,EAAA,QAAAb,EAAA,EAAA,EAAA,aAAA,CAAA,0FDKKgB,CAA+B,GAAA,EEkB5C,IAAAkC,GAA0B,SAC1BC,GAAgC,SAChCC,GAAmC,sMCpBvBC,EAAA,EAAA,SAAA,EAAA,EAGIC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,OAAA,CAAQ,CAAA,CAAA,EAGjBC,EAAA,CAAA,mBACJC,EAAA,oBAHIC,EAAA,WAAAN,EAAAO,WAAAC,SAAAR,EAAAO,WAAAE,QAAA,EAEAC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,eAAA,EAAA,GAAA,sCAGAhB,EAAA,EAAA,SAAA,EAAA,EAGIC,EAAA,QAAA,UAAA,CAAAC,EAAAe,CAAA,EAAA,IAAAb,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAc,KAAA,CAAM,CAAA,CAAA,EAGfV,EAAA,CAAA,mBACJC,EAAA,qBAHIC,EAAA,WAAAN,EAAAO,WAAAC,SAAAR,EAAAO,WAAAE,QAAA,EAEAC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,eAAA,EAAA,GAAA,4BANJG,EAAA,EAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,iBACKV,EAAA,mBAAAN,EAAAiB,gBAAA,0BA0BOC,EAAA,CAAA,EAAoEd,EAAA,CAAA,8BAAAM,EAAA,EAAAS,EAAAP,EAAA,EAAA,EAAA,gBAAA,CAAA,0BAG9CR,EAAA,CAAA,yBAAAe,EAAAP,EAAA,EAAA,EAAA,iBAAA,CAAA,2BAMlCQ,EAAA,EAAA,uBAAA,EAAA,oBAAwDd,EAAA,SAAAe,CAAA,6BAyB5DzB,EAAA,EAAA,WAAA,EAAA,mBACIwB,EAAA,EAAA,2BAAA,EAAA,uBAMJf,EAAA,kBAPUC,EAAA,QAAAM,EAAA,EAAA,EAAA,sBAAA,CAAA,EAGFF,EAAA,CAAA,EAAAJ,EAAA,eAAAN,EAAAsB,YAAA,EAA6B,wBAAAtB,EAAAO,WAAAgB,IAAA,oBAAA,CAAA,EACiC,WAAA,CAAAX,EAAA,EAAA,EAAAZ,EAAAiB,gBAAA,CAAA,6BAiB9DG,EAAA,EAAA,QAAA,EAAA,oCAGId,EAAA,cAAAN,EAAAwB,aAAA,EAA6B,cAAAZ,EAAA,EAAA,EAAA,wBAAA,CAAA,0BAWrBM,EAAA,CAAA,EACItB,EAAA,EAAA,IAAA,EAAIQ,EAAA,CAAA,mBAAwCC,EAAA,aAAxCK,EAAA,CAAA,EAAAS,EAAAP,EAAA,EAAA,EAAA,sBAAA,CAAA,6BAkCRhB,EAAA,EAAA,KAAA,EAAA,EACIwB,EAAA,EAAA,2BAAA,EAAA,uBASJf,EAAA,mCAPQK,EAAA,EAAAJ,EAAA,eAAAN,EAAAyB,iBAAA,EAAkC,UAAA,EAAA,EAClB,wBAAAzB,EAAAO,WAAAgB,IAAAG,EAAA,EAAAC,GAAAC,EAAAC,EAAA,CAAA,CAAA,EAGf,WAAA,CAAAjB,EAAA,EAAA,EAAAZ,EAAAiB,gBAAA,CAAA,sCAnCbrB,EAAA,EAAA,KAAA,EAAA,EAaC,EAAA,KAAA,EAAA,EAEOwB,EAAA,EAAA,kBAAA,EAAA,EACJf,EAAA,EACAT,EAAA,EAAA,KAAA,EAAA,EAAyB,EAAA,QAAA,EAAA,uBAKjBC,EAAA,QAAA,SAAAiC,EAAA,CAAA,IAAAF,EAAA9B,EAAAiC,CAAA,EAAAC,UAAAhC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAiC,gBAAAL,EAAAM,KAAAJ,EAAAK,OAAAC,MAAAR,EAAAC,EAAA,CAA0D,CAAA,CAAA,EAJvExB,EAAA,EAKE,EAENT,EAAA,EAAA,KAAA,EAAA,EACIwB,EAAA,EAAA,QAAA,EAAA,EACJf,EAAA,EACAU,EAAA,EAAAsB,GAAA,EAAA,EAAA,KAAA,EAAA,EAWAzC,EAAA,EAAA,KAAA,EAAA,EAAyB,GAAA,cAAA,EACP,GAAA,SAAA,EAAA,EAENwB,EAAA,GAAA,WAAA,EAAA,EACJf,EAAA,EACAT,EAAA,GAAA,oBAAA,EAAA,EAA8C,GAAA,SAAA,EAAA,wBAItCC,EAAA,QAAA,UAAA,CAAA,IAAA+B,EAAA9B,EAAAiC,CAAA,EAAAC,UAAAhC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAsC,iBAAAV,EAAAC,EAAA,CAA0B,CAAA,CAAA,EAInCT,EAAA,GAAA,WAAA,EAAA,EACAhB,EAAA,EAAA,oBACJC,EAAA,EAAS,EACO,EACT,EACd,mCA7CLC,EAAA,YAAAN,EAAAO,WAAAgB,IAAAG,EAAA,GAAAa,GAAAX,EAAAC,EAAA,CAAA,CAAA,EAGqBnB,EAAA,CAAA,EAAAJ,EAAA,SAAAsB,CAAA,EAMblB,EAAA,CAAA,EAAAJ,EAAA,WAAA,CAAAM,EAAA,EAAA,EAAAZ,EAAAiB,gBAAA,CAAA,EAOMP,EAAA,CAAA,EAAAJ,EAAA,OAAAN,EAAAyB,kBAAAe,MAAA,EAqBE9B,EAAA,CAAA,EAAAJ,EAAA,WAAA,CAAAM,EAAA,GAAA,EAAAZ,EAAAiB,gBAAA,CAAA,EAIAP,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,eAAA,EAAA,GAAA,sCAnEhCM,EAAA,CAAA,EACItB,EAAA,EAAA,QAAA,EAAA,EAA8D,EAAA,OAAA,EACnD,EAAA,IAAA,EAECwB,EAAA,EAAA,IAAA,EACAxB,EAAA,EAAA,IAAA,EAAIQ,EAAA,CAAA,mBAA+BC,EAAA,EACnCT,EAAA,EAAA,IAAA,EAAIQ,EAAA,CAAA,oBAA+BC,EAAA,EACnCU,EAAA,GAAA0B,GAAA,EAAA,EAAA,eAAA,EAAA,EAGArB,EAAA,GAAA,IAAA,EACJf,EAAA,EAAK,EAETT,EAAA,GAAA,OAAA,EACImB,EAAA,GAAA2B,GAAA,GAAA,GAAA,KAAA,EAAA,mBA2DJrC,EAAA,EAAQ,EAEZT,EAAA,GAAA,MAAA,EAAA,EAAgC,GAAA,8BAAA,EAAA,EAGxBC,EAAA,qBAAA,SAAAiC,EAAA,CAAAhC,EAAA6C,CAAA,EAAA,IAAA3C,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAsBF,EAAA4C,gBAAAd,CAAA,CAAuB,CAAA,CAAA,EAChDzB,EAAA,EACDT,EAAA,GAAA,0BAAA,EAAA,EAIIC,EAAA,aAAA,SAAAiC,EAAA,CAAAhC,EAAA6C,CAAA,EAAA,IAAA3C,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAcF,EAAA6C,eAAAf,CAAA,CAAsB,CAAA,CAAA,EACvCzB,EAAA,EAA0B,kCAhFfK,EAAA,CAAA,EAAAS,EAAAP,EAAA,EAAA,EAAA,aAAA,CAAA,EACAF,EAAA,CAAA,EAAAS,EAAAP,EAAA,GAAA,GAAA,aAAA,CAAA,EACWF,EAAA,CAAA,EAAAJ,EAAA,OAAAN,EAAAyB,kBAAAe,MAAA,EAW5B9B,EAAA,CAAA,EAAAJ,EAAA,UAAAwC,EAAA,GAAA,GAAAC,EAAAC,GAAA,GAAAC,GAAAjD,EAAAkD,YAAAlD,EAAAmD,aAAAnD,EAAAoD,UAAA,CAAA,CAAA,EA2DS1C,EAAA,CAAA,EAAAJ,EAAA,eAAAN,EAAAmD,YAAA,EAIAzC,EAAA,EAAAJ,EAAA,cAAAN,EAAAkD,WAAA,EAA2B,eAAAlD,EAAAmD,YAAA,EACE,aAAAnD,EAAAoD,UAAA,sCAOrCxD,EAAA,EAAA,SAAA,EAAA,EAIIC,EAAA,QAAA,UAAA,CAAAC,EAAAuD,CAAA,EAAA,IAAArD,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAsD,cAAA,CAAe,CAAA,CAAA,EAExBlC,EAAA,EAAA,WAAA,EAAA,EACAhB,EAAA,CAAA,mBACJC,EAAA,QADIK,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,yBAAA,EAAA,GAAA,6BA7GZhB,EAAA,EAAA,WAAA,EAAA,mBAKImB,EAAA,EAAAwC,GAAA,EAAA,EAAA,cAAA,EAAA,EAA6B,EAAAC,GAAA,GAAA,GAAA,eAAA,EAAA,eAgG7B5D,EAAA,EAAA,KAAA,EACImB,EAAA,EAAA0C,GAAA,EAAA,EAAA,SAAA,EAAA,EASJpD,EAAA,EAAM,kBA7GNC,EAAA,QAAAM,EAAA,EAAA,EAAA,sBAAA,CAAA,EAA4C,WAAA,EAAA,EAW7BF,EAAA,CAAA,EAAAJ,EAAA,OAAAM,EAAA,EAAA,EAAAZ,EAAA0D,OAAA,CAAA,EA4FNhD,EAAA,CAAA,EAAAJ,EAAA,mBAAAqD,EAAA,EAAAC,EAAA,CAAA,GDpKlB,IAAMC,GAAqBC;;;;;;MAM5BC,EAA8B;EAcvBC,IACT,IAAA,CADE,MAAOA,UACDC,EAAgE,CA4BxEC,YACYC,EACEC,EACFC,EACAC,EACAC,EAA0B,CAElC,MAAK,EANG,KAAAJ,eAAAA,EACE,KAAAC,YAAAA,EACF,KAAAC,YAAAA,EACA,KAAAC,oBAAAA,EACA,KAAAC,aAAAA,EA9BH,KAAAjD,aAAe,KAAKkD,qBAAqB,OAAO,EAChD,KAAA/C,kBAAoB,KAAK+C,qBAAqB,YAAY,EACnE,KAAAjE,WAAa,KAAK8D,YAAYI,MAAM,CAChCC,MAAO,KAAKL,YAAYI,MAAM,CAC1BvC,KAAM,CAAC,GAAIyC,GAAWC,QAAQ,EAC9BC,KAAM,GACNC,QAAS,GACTxD,aAAc,KAAK+C,YAAYI,MAAMM,GAAwB,KAAKzD,YAAY,CAAC,EAClF,EACD0D,OAAQ,KAAKX,YAAYY,OAOvB,CAAA,CAAE,EACP,EACD,KAAA/B,YAAc,EACd,KAAAC,aAAe,GACf,KAAAC,WAAa,EACb,KAAA5B,cAAgB,IAAI0D,GAAY,EAAE,EAClC,KAAAxB,QAAU,IAAIyB,GAA6B,CAAA,CAAE,EACpC,KAAAlE,iBAAmB,CAACmE,EAAWC,cAAeD,EAAWE,WAAW,CAU7E,CAEAC,UAAQ,CACJ,KAAKC,KAAI,EACT,KAAKhE,cAAciE,aACdC,KAAKC,GAAa,GAAG,EAAGC,GAAU,KAAKC,QAAQ,CAAC,EAChDC,UAAUC,GAAa,CACpB,KAAK7C,YAAc,EACnB,KAAK8C,iBAAiB,KAAK9C,YAAa,KAAKC,aAAc4C,CAAU,CACzE,CAAC,CACT,CAEAE,aAAW,CACP,KAAKC,QAAO,CAChB,CAEAC,WAAWC,EAAqBC,EAAiB,CAC7C,GAAI,CAACD,EAAa,CACd,IAAME,EAAc,KAAK/F,WAAWgB,IAAI,CAAC,QAAS,MAAM,CAAC,EACrD+E,GAAeA,EAAY7F,UAC3B6F,EAAYC,YAASC,oBAAgBH,EAAW,GAAG,CAAC,CAE5D,CACJ,CAEApE,gBAAgBmE,EAAqBC,EAAmBI,EAAe,CACnE,GAAI,CAACL,EAAa,CACd,IAAME,EAAc,KAAK/F,WAAWgB,IAAI,CAAC,SAAUkF,EAAS,MAAM,CAAC,EAC/DH,GAAeA,EAAY7F,UAC3B6F,EAAYC,YAASC,oBAAgBH,EAAW,GAAG,CAAC,CAE5D,CACJ,CAEAK,sBAAsBC,EAAe9B,EAAY,CAC7C,MAAO,CAAC,CAAC,KAAKtE,WAAWgB,IAAI,CAAC,SAAUoF,EAAO,eAAgB9B,CAAI,CAAC,CACxE,CAEAvB,eAAa,CACT,KAAKiB,aACAqC,cAAcC,GAAiC,CAC5CC,OAAQ,CACJC,aAAc,KAAKA,aACnBC,QAAS,KAAKnF,IAErB,EACA6D,KACGuB,EAAUC,GACDA,EAGM,KAAK9C,YAAYM,MAAMyC,kBAAkB,CAACD,CAAM,CAAC,EAFjDE,EAId,CAAC,EAELtB,UAAUoB,GAAS,CACZA,EAAOC,oBACP,KAAK7C,oBAAoB+C,QAAU,+BAAiC,CAChEC,OAAQ,aACX,EACD,KAAKpE,YAAc,EACnB,KAAK8C,iBAAiB,KAAK9C,YAAa,KAAKC,YAAY,EAEjE,CAAC,CACT,CAEAhD,QAAM,CACF,IAAMoH,EAAY,KAAKhH,WAAWgB,IAAI,OAAO,EAC7C,GAAI,CAACgG,GAAa,CAACA,EAAUC,MACzB,OAEJ,IAAMC,EAAW,KAAKC,gBAClB,CACI7F,GAAI,GACJ8F,UAAW,GACXC,UAAW,GACXC,UAAW,GACXd,aAAc,KAAKA,aACnBlC,KAAM,GACN3C,KAAM,GACN4F,aAAc,CAAA,GAElBP,EACA,KAAKR,YAAY,EAErB,KAAK3C,YAAYM,MAAMqD,YAAYN,CAAQ,EAAE3B,UACzCkC,GAAO,CACH,KAAK1D,oBAAoB+C,QAAU,+BAAiC,CAAEC,OAAQ,OAAO,CAAE,EACvF,KAAK/G,WAAW0H,eAAc,EAC9B,KAAK9D,eAAe+D,aAAY,EAChC,KAAKC,OAAOC,SAAS,CAAC,MAAOJ,EAAKD,YAAYlG,EAAE,EAAG,CAAEwG,WAAY,KAAKC,KAAK,CAAE,CACjF,EACAC,GAAM,CACF,KAAKjE,oBAAoBkE,MAAQ,6BAA+B,CAC5DlB,OAAQ,QACX,CACL,CAAC,CAET,CAEAxG,MAAI,CACA,IAAM2H,EAAmB,KAAKlI,WAAWgB,IACrC,QAAQ,EAEZmH,GAAc,KAAKC,QAAS,KAAKC,aAAa,EACzClD,KACGmD,GAAK,CAAC,EACNC,GAAS,CAAC,CAACpE,EAAOqC,CAAY,IAAK,CAC/B,IAAMQ,EAAY,KAAKhH,WAAWgB,IAC9B,OAAO,EAELwH,EAA2C,CAAA,EAEjD,GAAIxB,GAAaA,EAAUC,MAAO,CAC9B,IAAMwB,EAAoB,KAAKtB,gBAC3BhD,EACA6C,EACAR,CAAY,EAEZiC,GACAD,EAAiBE,KAAK,KAAK7E,YAAYM,MAAMwE,YAAYF,CAAiB,CAAC,CAEnF,CACA,GAAIP,GAAoBA,EAAiBjB,MAAO,CAC5C,IAAM2B,EAAgB,KAAKC,sBAAsBX,EAAkB1B,CAAY,EAC3EoC,EAAc3G,QACduG,EAAiBE,KAAK,KAAK7E,YAAYM,MAAM2E,kBAAkBF,CAAa,CAAC,CAErF,CACA,OAAOG,GAASP,CAAgB,CACpC,CAAC,CAAC,EAELjD,UACG,IAAK,CACD,KAAKvF,WAAW0H,eAAc,EAC9B,KAAK9D,eAAe+D,aAAY,EAChC,KAAK5D,oBAAoB+C,QAAU,+BAAiC,CAAEC,OAAQ,OAAO,CAAE,CAC3F,EACAiB,GAAM,CACF,KAAKjE,oBAAoBkE,MAAQ,6BAA+B,CAC5DlB,OAAQ,QACX,CACL,CAAC,CAEb,CAEAhF,iBAAiBiH,EAAoB,CACjC,KAAKC,mBAAmBD,CAAY,EAC/B7D,KACGuB,EAAUwC,GACFA,EAASvC,SAAWwC,GAAeC,QAC5B,CAAC,EAAI,EAEL,KAAKH,mBAAmBD,EAAcE,EAASG,SAAW,EAAE,EAAElE,KACjEmE,EAAIC,GAAKA,EAAE5C,SAAWwC,GAAeC,OAAO,CAAC,CAGxD,EACD1C,EAAU8C,GACNA,EACM,KAAK3F,YAAY4F,MAAMC,GAAwB,CAC3CpI,GAAI,KAAKA,GACZ,EAAEqI,QACH,CAAA,CAAE,CACX,EAEJpE,UACG,IAAK,CACD,KAAKxB,oBAAoB+C,QAAU,+BAAiC,CAChEC,OAAQ,aACX,EACD,KAAKtB,iBAAiB,KAAK9C,YAAa,KAAKC,aAAc,KAAK3B,cAAcY,KAAK,CACvF,EACAmG,GAAM,CACF,KAAKjE,oBAAoBkE,MAAQ,6BAA+B,CAC5DlB,OAAQ,aACX,CACL,CAAC,CAEb,CAEQkC,mBAAmBD,EAAsBK,EAAgB,CAC7D,OAAO,KAAKrF,aACP4F,OAAO,CACJC,MAAS,qCACTC,KAAMT,EACNU,QAAS,CACL,CAAEC,KAAM,YAAaC,MAAS,eAAgB,EAC9C,CAAED,KAAM,SAAUC,MAAS,gBAAkBC,YAAa,EAAI,CAAE,EAEvE,EACA/E,KACGuB,EAAUC,GACNA,EAAS,KAAK9C,YAAYM,MAAMgG,kBAAkB,CAACnB,CAAY,EAAG,CAAC,CAACK,CAAO,EAAIxC,EAAK,EAExFyC,EAAI3C,GAAUA,EAAOwD,kBAAkB,CAAC,CAAC,CAAC,CAEtD,CAEU7H,eAAe8H,EAAe,CACpC,KAAKzH,YAAcyH,EACnB,KAAK3E,iBAAiB,KAAK9C,YAAa,KAAKC,aAAc,KAAK3B,cAAcY,KAAK,CACvF,CAEUQ,gBAAgBO,EAAoB,CAC1C,KAAKA,aAAeA,EACpB,KAAK6C,iBAAiB,KAAK9C,YAAa,KAAKC,aAAc,KAAK3B,cAAcY,KAAK,CACvF,CAEQ4D,iBAAiB9C,EAAqBC,EAAsB4C,EAA0B,CAC1F,KAAK3B,YACA4F,MAAyDnG,GAAoB,CAC1EhC,GAAI,KAAKA,GACT+I,sBAAuBC,EAAA,CACnBhC,KAAM1F,EACN2H,MAAO5H,EAAc,GAAKC,EAC1B4H,KAAM,CACFpD,UAAWqD,aAAUC,OAErBlF,EAAa,CAAEmF,OAAQ,CAAErG,KAAM,CAAEsG,SAAUpF,CAAU,CAAE,CAAE,EAAK,CAAA,GAEzE,EACAmE,QAAQpE,UAAU,CAAC,CAAEpB,MAAAA,CAAK,IAAM,CACzBA,IACA,KAAKhB,QAAQ0H,KAAK,CAAC,GAAG1G,EAAM2G,UAAUC,KAAK,CAAC,EAC5C,KAAKlI,WAAasB,EAAM2G,UAAUjI,WAClC,KAAKmI,wBAAwB7G,EAAO,KAAKqC,YAAY,EAE7D,CAAC,CACT,CAKUyE,cAAc9G,EAAmCqC,EAA0B,CACjF,IAAM0E,EAAqBC,GAAgBhH,EAAOqC,CAAY,EAE9D,KAAKxG,WAAWoL,WAAW,CACvBjH,MAAO,CACHxC,KAAMwC,EAAMxC,KACZ4C,QAAS,CAACJ,EAAMmD,UAChBhD,KAAM4G,GAAoB5G,MAAQ,IAEzC,EAEG,KAAKvD,aAAakB,QAClB,KAAKoJ,yBACD,KAAKtK,aACL,KAAKf,WAAWgB,IAAI,CAAC,QAAS,cAAc,CAAC,EAC7CmD,EACA+G,CAAkB,EAG1B,KAAK/H,QAAQ0H,KAAK,CAAC,GAAG1G,EAAM2G,UAAUC,KAAK,CAAC,EAC5C,KAAKlI,WAAasB,EAAM2G,UAAUjI,WAClC,KAAKmI,wBAAwB7G,EAAOqC,CAAY,CACpD,CAEQwE,wBAAwB7G,EAAmCqC,EAA0B,CACzF,IAAM8E,EAAyB,KAAKtL,WAAWgB,IAAI,QAAQ,EAC3DmD,EAAM2G,UAAUC,MAAMQ,QAAQ1J,GAAQ,CAClC,IAAM2J,EAAmBL,GAAgBtJ,EAAO2E,CAAY,EACtDtC,EAAQ,CACV5C,GAAIO,EAAMP,GACVK,KAAME,EAAMF,KACZ2C,KAAMkH,EAAmBA,EAAiBlH,KAAO,IAEjDmH,EAAeH,EAAuBtK,IAAIa,EAAMP,EAAE,EAOtD,GANKmK,EAIDA,EAAaL,WAAWlH,CAAK,GAH7BuH,EAAe,KAAK3H,YAAYI,MAAMA,CAAK,EAC3CoH,EAAuBI,WAAW7J,EAAMP,GAAImK,CAAY,GAIxD,KAAKvK,kBAAkBe,OAAQ,CAC/B,IAAI0J,EAAyBF,EAAazK,IAAI,CAAC,cAAc,CAAC,EAQ9D,GALK2K,IACDA,EAAyB,IAAIC,GAAiB,CAAA,CAAE,EAChDH,EAAaC,WAAW,eAAgBC,CAAsB,GAG9DA,EACA,QAAWE,KAAY,KAAK3K,kBAAmB,CAC3C,IAAM4K,EAAMD,EAASvH,KACfyH,EACFF,EAAS7B,OAAS,eACXwB,GAAsCzK,eAAe+K,CAAG,EACxDjK,EAAcd,aAAa+K,CAAG,EACnCE,GAAUL,EAAuB3K,IAAI8K,CAAG,EAC1CE,GACAA,GAAQhG,SAAS+F,CAAU,EAE3BJ,EAAuBD,WAAWI,EAAK,IAAIG,GAAmBF,CAAU,CAAC,CAEjF,CAER,CACJ,CAAC,CACL,CAMQ5E,gBACJhD,EACA+H,EACA1F,EAA0B,CAE1B,IAAM2F,EAAQC,GAA0B,CACpCC,aAAclI,EACdmI,cAAeJ,EAAerK,MAC9B0K,kBAAmB,KAAKxL,aACxByF,aAAAA,EACAgG,mBAAoB,CAChBhG,aAAAA,EACAlC,KAAMH,EAAMG,MAAQ,IAE3B,EACD6H,OAAAA,EAAM7E,UAAY,CAAC4E,EAAerK,MAAM0C,QACjC4H,CACX,CAMQtD,sBACJ4D,EACAjG,EAA0B,CAM1B,OAJyBkG,OAAOjI,OAAOgI,EAAgBE,QAAQ,EAC1DhC,OAAOiC,GAAKA,EAAE3F,KAAK,EACnBqC,IAAIsD,GAAKA,EAAE/K,KAAK,EAGhByH,IAAI,CAACzH,EAAOgL,IACTT,GAA0B,CACtBC,aAAcxK,EACdyK,cAAezK,EACf0K,kBAAmB,KAAKrL,kBACxBsF,aAAAA,EACAgG,mBAAoB,CAChBhG,aAAAA,EACAlC,KAAM,IAEb,CAAC,EAELqG,OAAOmC,qBAAkB,CAClC,iDApYSrJ,GAAoBsJ,EAAAC,EAAA,EAAAD,EAAAE,CAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,CAAA,EAAAJ,EAAAK,EAAA,CAAA,CAAA,CAAA,+BAApB3J,EAAoB4J,UAAA,CAAA,CAAA,kBAAA,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,eAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,CAAA,EAAA,qBAAA,WAAA,yBAAA,qBAAA,EAAA,CAAA,aAAA,cAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,WAAA,QAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,OAAA,EAAA,WAAA,EAAA,CAAA,gBAAA,OAAA,EAAA,CAAA,MAAA,aAAA,EAAA,OAAA,EAAA,CAAA,OAAA,WAAA,YAAA,GAAA,kBAAA,UAAA,KAAA,aAAA,EAAA,aAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,KAAA,OAAA,OAAA,OAAA,kBAAA,OAAA,EAAA,QAAA,UAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,KAAA,OAAA,OAAA,OAAA,kBAAA,OAAA,EAAA,UAAA,EAAA,CAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,aAAA,eAAA,EAAA,UAAA,YAAA,EAAA,CAAA,EAAA,QAAA,WAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,cAAA,EAAA,QAAA,UAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,WAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,QAAA,EAAA,eAAA,wBAAA,UAAA,EAAA,CAAA,EAAA,QAAA,UAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,SAAA,QAAA,aAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,OAAA,OAAA,EAAA,OAAA,EAAA,cAAA,aAAA,EAAA,CAAA,gBAAA,SAAA,EAAA,oBAAA,OAAA,EAAA,CAAA,QAAA,cAAA,EAAA,YAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,qBAAA,cAAA,EAAA,CAAA,EAAA,aAAA,cAAA,eAAA,YAAA,EAAA,CAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,OAAA,OAAA,kBAAA,OAAA,EAAA,QAAA,UAAA,EAAA,CAAA,OAAA,OAAA,kBAAA,MAAA,EAAA,CAAA,QAAA,GAAA,EAAA,MAAA,EAAA,CAAA,OAAA,SAAA,qBAAA,GAAA,EAAA,aAAA,EAAA,CAAA,QAAA,mBAAA,EAAA,CAAA,cAAA,cAAA,EAAA,CAAA,OAAA,SAAA,kBAAA,GAAA,EAAA,gBAAA,EAAA,QAAA,UAAA,EAAA,CAAA,QAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,EAAA,EAAA,CAAA,aAAA,aAAA,EAAA,eAAA,UAAA,wBAAA,UAAA,EAAA,CAAA,OAAA,SAAA,EAAA,SAAA,MAAA,EAAA,OAAA,EAAA,CAAA,QAAA,KAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC3DjCxO,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EACI,EAAA,aAAA,EACC,EAAA,wBAAA,CAAA,yCAKLC,EAAA,qBAAA,SAAAiC,EAAA,CAAAwM,OAAAxO,EAAAyO,CAAA,EAAArO,EAAsBmO,EAAAG,YAAA1M,CAAA,CAAmB,CAAA,CAAA,EAC5CzB,EAAA,EAAwB,EAG7BT,EAAA,EAAA,cAAA,EACIwB,EAAA,EAAA,uBAAA,CAAA,EACAL,EAAA,EAAA0N,GAAA,EAAA,EAAA,SAAA,CAAA,gBAQA1N,EAAA,GAAA2N,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,EAUAvN,EAAA,GAAA,+BAAA,CAAA,EACJf,EAAA,EAAe,EACF,EAErBT,EAAA,GAAA,OAAA,CAAA,EAA4C,GAAA,wBAAA,EAChB,GAAA,0BAAA,CAAA,EAC2B,GAAA,UAAA,EACjC,GAAA,iBAAA,CAAA,oBAEFA,EAAA,GAAA,oBAAA,EACIwB,EAAA,GAAA,QAAA,CAAA,wBAOAxB,EAAA,GAAA,QAAA,CAAA,EACImB,EAAA,GAAA6N,GAAA,EAAA,EAAA,eAAA,EAAA,EAAoE,GAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAF,CAAA,EAIxEtO,EAAA,EAAQ,EACS,EACR,EAErBT,EAAA,GAAA,UAAA,EACImB,EAAA,GAAA+N,GAAA,EAAA,EAAA,uBAAA,EAAA,gBACJzO,EAAA,EAAW,EAEfT,EAAA,GAAA,gBAAA,EAAgB,GAAA,WAAA,CAAA,EACoB,GAAA,MAAA,EAAA,EACL,GAAA,iBAAA,EAAA,oBAEfA,EAAA,GAAA,QAAA,EAAA,wBAKIC,EAAA,QAAA,SAAAiC,EAAA,CAAAwM,OAAAxO,EAAAyO,CAAA,EAAArO,EAASmO,EAAAlI,WAAAkI,EAAA/G,QAAA,KAAA,KAAA+G,EAAA/G,OAAApF,KAAAJ,EAAAK,OAAAC,KAAA,CAA6C,CAAA,CAAA,EAL1D/B,EAAA,EAME,EAENT,EAAA,GAAA,iBAAA,EAAA,oBACIwB,EAAA,GAAA,QAAA,EAAA,wBAMJf,EAAA,EAAiB,EACf,EAEVU,EAAA,GAAAgO,GAAA,EAAA,EAAA,WAAA,EAAA,EASA3N,EAAA,GAAA,mCAAA,EAAA,EAMAL,EAAA,GAAAiO,GAAA,EAAA,EAAA,WAAA,EAAA,gBAiHJ3O,EAAA,EAAiB,EACI,8BAhNbK,EAAA,CAAA,EAAAJ,EAAA,WAAAM,EAAA,EAAA,GAAAyN,EAAAY,MAAA,CAAA,EAA2B,yBAAArO,EAAA,EAAA,GAAAyN,EAAAa,mBAAA,CAAA,EAC2B,sBAAAtO,EAAA,EAAA,GAAAyN,EAAAzF,aAAA,CAAA,EAUrDlI,EAAA,CAAA,EAAAJ,EAAA,OAAAM,EAAA,GAAA,GAAAyN,EAAAY,MAAA,CAAA,EAAsB,WAAAE,CAAA,EAoBpBzO,EAAA,CAAA,EAAAJ,EAAA,YAAA+N,EAAA9N,UAAA,EAIaG,EAAA,CAAA,EAAAJ,EAAA,QAAAM,EAAA,GAAA,GAAA,oBAAA,CAAA,EAKJF,EAAA,CAAA,EAAAJ,EAAA,cAAA,CAAAM,EAAA,GAAA,GAAAyN,EAAApN,gBAAA,CAAA,EAKeP,EAAA,CAAA,EAAAJ,EAAA,OAAA+N,EAAA9N,WAAA6B,MAAAsC,OAAA,KAAA,KAAA2J,EAAA9N,WAAA6B,MAAAsC,MAAAI,OAAA,EAAuC,WAAAsK,CAAA,EAS3C1O,EAAA,CAAA,EAAAJ,EAAA,OAAAM,EAAA,GAAA,GAAAyN,EAAA1F,OAAA,CAAA,EAMHjI,EAAA,CAAA,EAAAJ,EAAA,QAAAM,EAAA,GAAA,GAAA,aAAA,CAAA,EAKRF,EAAA,CAAA,EAAAJ,EAAA,WAAA,CAAAM,EAAA,GAAA,GAAAyN,EAAApN,gBAAA,CAAA,EAIQP,EAAA,CAAA,EAAAJ,EAAA,QAAAM,EAAA,GAAA,GAAA,aAAA,CAAA,EAIRF,EAAA,CAAA,EAAAJ,EAAA,WAAA,CAAAM,EAAA,GAAA,GAAAyN,EAAApN,gBAAA,CAAA,EAMwCP,EAAA,CAAA,EAAAJ,EAAA,OAAA+N,EAAA/M,aAAAkB,MAAA,EAWpD9B,EAAA,EAAAJ,EAAA,UAAA+N,EAAA1F,OAAA,EAAmB,aAAA0F,EAAA9N,UAAA,EAKlBG,EAAA,EAAAJ,EAAA,OAAA,CAAAM,EAAA,GAAA,GAAAyN,EAAAY,MAAA,CAAA;8FDxCJjL,CACT,GAAA,EE3CJ,IAAAqL,GAAuB,SAMhB,IAAMC,GAAyBC,GAA4D,CAC9FC,SAAU,aACVC,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWC,WAAW,GAC/CH,EAAgBC,SAASC,EAAWE,aAAa,EACrDC,YAAaC,GAAQA,EAAKC,KAC1BC,gBAAiBA,CAACC,EAAUH,IAAS,CAAC,CAACG,EAASC,QAChDC,WAAYA,CAACC,EAAaC,EAAKC,IAC3BF,EAAYG,MAAMC,aAAaH,EAAKC,CAAQ,EAAEG,KAAKC,EAAIC,GAAOA,EAAIH,YAAY,CAAC,EACtF,EAEYI,GAAkCC,GAE7C,CACEvB,SAAU,aACVC,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWoB,aAAa,GACjDtB,EAAgBC,SAASC,EAAWqB,WAAW,EACnDlB,YAAaC,GAAQA,EAAKC,KAC1BiB,oBAAqBA,CAACZ,EAAaa,EAAUC,IACzCA,EAAWR,IAAIS,GACXf,EAAYG,MACPa,sBAAsB,CACnBH,SAAAA,EACAE,UAAAA,EACH,EACAV,KAAKC,EAAIC,GAAOA,EAAIS,qBAAqB,CAAC,CAAC,EAE3D,EAEYC,GAAoCC,GAG/C,CACEhC,SAAU,aACVC,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWE,aAAa,GACjDJ,EAAgBC,SAASC,EAAWC,WAAW,EACnDE,YAAaC,GAAQA,EAAKC,KAC1BwB,sBAAuBA,CAACnB,EAAaa,EAAUE,EAAWb,IACtDF,EAAYG,MACPiB,wBAAwB,CACrBL,UAAWA,EACXF,SAAAA,EACAQ,MAAOnB,EACV,EACAG,KAAKC,EAAIC,GAAOA,EAAIa,uBAAuB,CAAC,EACrDE,cAAeC,GAAWA,EAAOC,aAAe,kBAAoBD,EAAOzB,QAAU2B,OACxF,EAEYC,GAGT,CACAxC,SAAU,aACVyC,MAAS,8BACTC,mBAAoBA,CAAC,CAAEC,SAAAA,CAAQ,IAAOC,GAA6BD,EAASE,IAAIC,CAAW,CAAC,EAC5FC,KAAM,SACNC,UAAW,aACX/C,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWqB,WAAW,GAC/CvB,EAAgBC,SAASC,EAAWoB,aAAa,EACrDyB,UAAWA,CAAC,CAAEN,SAAAA,CAAQ,IAAOO,GAA2BP,EAASE,IAAIC,CAAW,CAAC,EACjFK,QAASA,CAAC,CAAER,SAAAA,EAAUS,UAAAA,EAAWC,cAAAA,EAAeC,eAAAA,CAAc,IAAM,CAChE,IAAMC,EAAeZ,EAASE,IAAIW,EAAY,EACxC1C,EAAc6B,EAASE,IAAIC,CAAW,EACtCW,EAAsBd,EAASE,IAAIa,CAAmB,EAEtDC,EAAmB7C,EAAY8C,OAChCC,WAAU,EACVC,UAAU,CAAC,CAAED,WAAAA,CAAU,IAAOA,EAAWE,eAAe,EAE7D,SAASC,EAAmBrC,EAAoBf,EAAgB,CAC5D,OAAO2C,EACFU,OAAO,CACJC,MAAS,8BACTC,gBAAiB,CACbC,MAAOhB,EAAUiB,QAErBC,KAAM1D,EAAU,KAAO,KACvB2D,KAAM3D,EACN4D,QAAS,CACL,CAAEC,KAAM,YAAahC,MAAS,eAAgB,EAC9C,CACIgC,KAAM,SACNhC,MAAO7B,EAAY,sBAA2B,gBAC9C8D,YAAa,GAChB,EAER,EACAvD,KACGwD,EAAUtD,GACNA,EACMsC,EAAiBxC,KACbwD,EAAUZ,GACNA,EACMjD,EAAYG,MAAMiB,wBAAwB,CACtCL,UAAWkC,EACXpC,SAAAA,EACAQ,MAAO,CAAC,CAACvB,EACZ,EACDgE,EAAK,EAEfxD,EAAIyD,GAAQA,EAAK3C,uBAAuB,CAAC,EAE7C0C,EAAK,CACd,CAEb,CAEAZ,KAAmBc,WAAO1B,EAAUhC,IAAI2D,GAAKA,EAAEC,EAAE,CAAC,CAAC,EAC9C7D,KACGwD,EAAUtC,GAAS,CACf,IAAI4C,EAAe7B,EAAUiB,OACvBa,EAAmB,CAAA,EACnBC,EAAqB,CAAA,EACvBC,GAAI,EACR,QAAW5E,MAAQ6B,EACX7B,GAAK8B,aAAe,oBACpB4C,EAAOG,KAAK7E,GAAKI,OAAO,EACxBuE,EAASE,KAAKjC,EAAUgC,EAAC,GAAGJ,EAAE,EAC9BC,KAEJG,KAEJ,MAAI,GAAID,EAASd,OACNL,EAAmBmB,EAAUD,EAAOI,KAAK;CAAI,CAAC,EAAEnE,KACnDC,EAAImE,IAAU,CACV,IAAMC,GAAkBD,GAAQE,OAC5BC,IAAKA,GAAEpD,aAAe,iBAAiB,EACzC+B,OACF,OAAOjB,EAAUiB,OAASmB,EAC9B,CAAC,CAAC,EAGCG,GAAGV,CAAY,CAE9B,CAAC,EACDN,EAAUM,GACNA,EACMrC,GAA6B9B,CAAW,EAAE8E,KAAK,CAAC,CAAEC,YAAAA,CAAW,KAAQ,CACjEA,YAAAA,EACAZ,aAAAA,GACF,EACFL,EAAK,CACd,EAEJkB,UAAU,CAAC,CAAEb,aAAAA,EAAcY,YAAAA,CAAW,IAAM,CACrCZ,IACA5B,EAAc0C,QAAO,EACrBzC,EAAc,EACdG,EAAoBuC,QAAU,oDAAsD,CAChF5B,MAAOa,EACPY,YAAAA,EACH,EAET,CAAC,CACT,GAGSI,GAGT,CACAjG,SAAU,aACVyC,MAAS,mBACTM,KAAM,OACNI,QAASA,CAAC,CAAER,SAAAA,EAAUS,UAAAA,EAAWC,cAAAA,EAAeC,eAAAA,CAAc,IAAM,CAC3CX,EAASE,IAAIW,EAAY,EAEzC0C,cAAcC,GAAqE,CAChFC,OAAQ,CACJC,SAAUjD,EACVkD,WAAY,QACZpC,MAAS,2BACTqC,cAAeC,GAAUA,EAAO/F,MAEvC,EACAqF,UAAUzD,GAAS,CACZA,IACAiB,EAAc,EACdD,EAAc0C,QAAO,EAE7B,CAAC,CACT,wGEpMQU,EAAA,EAAA,IAAA,EAAA,EAKIC,EAAA,EAAA,WAAA,EAAA,EACAC,EAAA,CAAA,mBACJC,EAAA,SALIC,EAAA,aAAAC,EAAA,EAAAC,EAAA,CAAA,EAIAC,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,0BAAA,EAAA,GAAA,4BA6BJP,EAAA,CAAA,oBAAAM,EAAA,IAAAE,EAAAC,GAAA,GAAA,6BASAT,EAAA,CAAA,uCAAAM,EAAA,IAAAI,EAAA,EAAA,EAAAC,EAAAC,UAAA,OAAA,EAAA,GAAA,6BASAZ,EAAA,CAAA,uCAAAM,EAAA,IAAAI,EAAA,EAAA,EAAAG,EAAAC,UAAA,OAAA,EAAA,GAAA,6BAKAhB,EAAA,EAAA,IAAA,EAAA,EACK,EAAA,MAAA,EAAME,EAAA,CAAA,EAAgBC,EAAA,EACvBF,EAAA,EAAA,WAAA,EAAA,EACJE,EAAA,qBAHwBC,EAAA,aAAAa,EAAA,EAAAC,GAAAC,EAAAR,EAAA,CAAA,EACbJ,EAAA,CAAA,EAAAa,EAAAD,EAAAE,IAAA,4BAOXnB,EAAA,CAAA,oBAAAM,EAAA,IAAAc,EAAAC,KAAA,GAAA,0BAKAvB,EAAA,EAAA,WAAA,EAAA,EAAsDE,EAAA,CAAA,mBAEpDC,EAAA,SAFoDI,EAAA,EAAAa,EAAAX,EAAA,EAAA,EAAA,gBAAA,CAAA,0BAGtDT,EAAA,EAAA,WAAA,EAAA,EAAuDE,EAAA,CAAA,mBAErDC,EAAA,SAFqDI,EAAA,EAAAa,EAAAX,EAAA,EAAA,EAAA,eAAA,CAAA,4BAHvDe,EAAA,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,EAAsD,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,oBAA3CtB,EAAA,OAAAuB,EAAAC,SAAA,EAGArB,EAAA,EAAAH,EAAA,OAAA,CAAAuB,EAAAC,SAAA,4BAQP3B,EAAA,EAAA,uBAAA,EAAA,yBAEIG,EAAA,aAAAyB,CAAA,EAAoB,YAAA,EAAA,EACD,mBAAA,EAAA,6BAGvB7B,EAAA,EAAA,UAAA,EACIE,EAAA,CAAA,EACJC,EAAA,uBADII,EAAA,EAAAC,EAAA,UAAAsB,EAAAC,UAAAC,WAAAF,EAAAC,UAAAE,MAAAC,OAAA,GAAA,6BAOAC,EAAA,CAAA,EACIlC,EAAA,EAAA,WAAA,EAAA,EACAC,EAAA,CAAA,kCAAAK,EAAA,CAAA,EAAAC,EAAA,IAAAsB,EAAAC,UAAAC,WAAAI,EAAAC,aAAA,GAAA,yBAGApC,EAAA,EAAA,WAAA,EAAA,qCAVRD,EAAA,EAAA,SAAA,EAAA,EAGIsC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAV,EAAAW,EAAA,EAAAC,KAAAN,EAAAK,EAAA,EAAA,OAAAE,EAASP,EAAAQ,mBAAAd,CAAA,CAAyB,CAAA,CAAA,EAElCN,EAAA,EAAAqB,GAAA,EAAA,EAAA,eAAA,EAAA,EAAkG,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,EAOtG5C,EAAA,sCAPmBI,EAAA,EAAAH,EAAA,QAAAgC,EAAAY,aAAAlB,EAAAnB,EAAA,GAAA,GAAAmB,EAAAC,UAAAE,MAAAC,MAAA,EAAoE,WAAAe,CAAA,6BAf3FjD,EAAA,EAAA,MAAA,EAAA,EACIwB,EAAA,EAAA0B,GAAA,EAAA,EAAA,uBAAA,EAAA,eAMA1B,EAAA,EAAA2B,GAAA,EAAA,EAAA,WAAA,EAAA,EAAwI,EAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,EAgB5IjD,EAAA,2BArB0BI,EAAA,EAAAH,EAAA,UAAAiD,GAAA,EAAA,EAAAvB,EAAAC,UAAAE,MAAA,EAAAG,EAAAY,aAAAlB,EAAAnB,EAAA,GAAA,CAAA,CAAA,EAKXJ,EAAA,CAAA,EAAAH,EAAA,OAAAgC,EAAAY,aAAAlB,EAAAnB,EAAA,EAAAmB,EAAAC,UAAAC,aAAAI,EAAAY,aAAAlB,EAAAnB,EAAA,GAAA,KAAAmB,EAAAC,UAAAE,MAAAC,MAAA,EAKN3B,EAAA,EAAAH,EAAA,OAAA0B,EAAAC,UAAAE,MAAAC,OAAAE,EAAAC,YAAA,4BAcjBpC,EAAA,EAAA,8BAAA,EAAA,+BAAsEG,EAAA,cAAAkD,CAAA,EAA2B,QAAAlB,EAAAmB,KAAA,GDzG9F,IAAMC,GAAmBC;;;;;;;;;MAS1BC,EAA8B;EASvBC,IACT,IAAA,CADE,MAAOA,UACDC,EAA6D,CAgCrEC,YAAsBC,EAAwB,CAC1C,MAAK,EADa,KAAAA,YAAAA,EA7Bb,KAAAzB,aAAe,EACxB,KAAAW,aAAyC,CAAA,EAEzC,KAAAe,gBAAkB,aACT,KAAAC,aAAe,KAAKC,qBAAqB,OAAO,EAChD,KAAAC,QAAU,KAAKC,uBAAsB,EACzCC,YAAW,EACXC,eAAc,EACdC,UAAU,CACPjD,KAAM,aACNkD,KAAM,CAAEC,KAAM,SAAS,EACvBC,MAAS,oBACTC,cAAeC,IAAU,CACrB/C,UAAW,CAAEgD,GAAI,CAACD,CAAK,IAE9B,EACAE,sBAAsB,KAAKb,YAAY,EACvCc,eAAe,KAAKC,KAAK,EAErB,KAAAxB,MAAQ,KAAKyB,qBAAoB,EACrCC,YAAY,YAAa,MAAM,EAC/BC,QAAQ,CAAE7D,KAAM,IAAI,CAAE,EACtB6D,QAAQ,CAAE7D,KAAM,WAAW,CAAE,EAC7B6D,QAAQ,CAAE7D,KAAM,WAAW,CAAE,EAC7B6D,QAAQ,CAAE7D,KAAM,MAAM,CAAE,EACxB6D,QAAQ,CAAE7D,KAAM,MAAM,CAAE,EACxB8D,oBAAoB,KAAKnB,YAAY,EACrCc,eAAe,KAAKC,KAAK,EAI1B,MAAMK,UAAU,CACZC,SAAUC,GACVC,SAAUC,GAAQA,EAAKC,OACvBC,aAAcA,CAACC,EAAMC,KAAU,CAC3BC,QAAS,CACLF,KAAAA,EACAC,KAAAA,EACAE,OAAQC,EAAA,CACJ1E,KAAM,CACF2E,SAAU,KAAKC,kBAAkBtB,QAElC,KAAKT,QAAQgC,kBAAiB,GAErCC,KAAM,KAAK5C,MAAM6C,gBAAe,GAEpCC,sBAAuB,CACnBT,KAAM,OAGdU,qBAAsB,CAAC,KAAKpC,QAAQqC,aAAc,KAAKhD,MAAMgD,YAAY,EAC5E,CACL,CAEA3D,mBAAmB4D,EAA0C,CACrD,KAAKxD,aAAawD,EAAM7F,EAAE,IAAM6F,EAAMzE,UAAUE,MAAMC,OACtD,KAAKc,aAAawD,EAAM7F,EAAE,EAAI,KAAK0B,aAEnC,KAAKW,aAAawD,EAAM7F,EAAE,EAAI6F,EAAMzE,UAAUE,MAAMC,MAE5D,CAEAuE,YAAYlF,EAAkB,CAC1B,KAAKuC,YAAY4C,OAAOC,mBAAmBpF,CAAI,EAAEqF,UAAS,CAC9D,iDApESjD,GAAkBkD,EAAAC,CAAA,CAAA,CAAA,CAAA,+BAAlBnD,EAAkBoD,UAAA,CAAA,CAAA,gBAAA,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,WAAA,EAAA,EAAA,CAAA,EAAA,qBAAA,yBAAA,qBAAA,EAAA,CAAA,aAAA,YAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,OAAA,EAAA,aAAA,qBAAA,uBAAA,KAAA,QAAA,eAAA,aAAA,cAAA,SAAA,EAAA,CAAA,aAAA,aAAA,EAAA,gBAAA,kBAAA,EAAA,CAAA,EAAA,oBAAA,uBAAA,EAAA,CAAA,KAAA,KAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,OAAA,EAAA,UAAA,WAAA,MAAA,EAAA,CAAA,KAAA,OAAA,EAAA,SAAA,EAAA,CAAA,KAAA,aAAA,EAAA,SAAA,EAAA,CAAA,KAAA,SAAA,EAAA,SAAA,EAAA,CAAA,EAAA,cAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,MAAA,cAAA,EAAA,YAAA,EAAA,CAAA,QAAA,MAAA,EAAA,CAAA,EAAA,eAAA,EAAA,YAAA,EAAA,CAAA,QAAA,aAAA,EAAA,CAAA,YAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,SAAA,EAAA,CAAA,YAAA,SAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,aAAA,YAAA,mBAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,QAAA,eAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,aAAA,YAAA,kBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,QAAA,OAAA,EAAA,CAAA,EAAA,cAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC/B/BvH,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EACI,EAAA,aAAA,EACC,EAAA,wBAAA,CAAA,4BAILsC,EAAA,qBAAA,SAAAmF,EAAA,CAAA,OAAsBD,EAAAf,YAAAgB,CAAA,CAAmB,CAAA,EAC5CtH,EAAA,EAAwB,EAE7BH,EAAA,EAAA,cAAA,EACIC,EAAA,EAAA,uBAAA,CAAA,EACAuB,EAAA,EAAAkG,GAAA,EAAA,EAAA,IAAA,CAAA,EAQAzH,EAAA,EAAA,+BAAA,CAAA,EACJE,EAAA,EAAe,EACF,EAErBH,EAAA,GAAA,mBAAA,CAAA,0DAQIsC,EAAA,aAAA,SAAAmF,EAAA,CAAA,OAAcD,EAAAG,cAAAF,CAAA,CAAqB,CAAA,EAAC,qBAAA,SAAAA,EAAA,CAAA,OACdD,EAAAI,gBAAAH,CAAA,CAAuB,CAAA,EAAC,uBAAA,SAAAA,EAAA,CAAA,OACtBD,EAAAK,kBAAAJ,CAAA,CAAyB,CAAA,EAEjDxH,EAAA,GAAA,uBAAA,CAAA,EAIwB,GAAA,iBAAA,CAAA,oBAKxBD,EAAA,GAAA,iBAAA,CAAA,oBACIwB,EAAA,GAAAsG,GAAA,EAAA,EAAA,aAAA,EAGJ3H,EAAA,EACAH,EAAA,GAAA,iBAAA,CAAA,oBAKIwB,EAAA,GAAAuG,GAAA,EAAA,EAAA,aAAA,EAGJ5H,EAAA,EACAH,EAAA,GAAA,iBAAA,CAAA,oBAKIwB,EAAA,GAAAwG,GAAA,EAAA,EAAA,aAAA,EAGJ7H,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACIwB,EAAA,GAAAyG,GAAA,EAAA,EAAA,aAAA,EAMJ9H,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACIwB,EAAA,GAAA0G,GAAA,EAAA,EAAA,aAAA,EAGJ/H,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACIwB,EAAA,GAAA2G,GAAA,EAAA,EAAA,aAAA,EAQJhI,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACIwB,EAAA,GAAA4G,GAAA,EAAA,EAAA,aAAA,EA0BJjI,EAAA,EACAqB,EAAA,GAAA6G,GAAA,EAAA,EAAA,8BAAA,EAAA,EACJlI,EAAA,SAnHgBI,EAAA,CAAA,EAAAH,EAAA,yBAAAK,EAAA,EAAA,GAAA+G,EAAAc,mBAAA,CAAA,EAAsD,sBAAA7H,EAAA,EAAA,GAAA+G,EAAAe,gBAAA,CAAA,EAUrDhI,EAAA,CAAA,EAAAH,EAAA,mBAAAC,EAAA,GAAAmI,EAAA,CAAA,EAWbjI,EAAA,CAAA,EAAAH,EAAA,KAAAoH,EAAAzD,eAAA,EAAsB,QAAAtD,EAAA,GAAA,GAAA+G,EAAAiB,MAAA,CAAA,EACE,eAAAhI,EAAA,GAAA,GAAA+G,EAAAkB,aAAA,CAAA,EACc,aAAAjI,EAAA,GAAA,GAAA+G,EAAAmB,WAAA,CAAA,EACJ,cAAAlI,EAAA,GAAA,GAAA+G,EAAAoB,YAAA,CAAA,EACE,UAAApB,EAAAtD,OAAA,EAQhC3D,EAAA,CAAA,EAAAH,EAAA,gBAAAoH,CAAA,EAAsB,mBAAAA,EAAAqB,gBAAA,EAItBtI,EAAA,EAAAH,EAAA,oBAAAoH,EAAAvB,iBAAA,EAAuC,wBAAAxF,EAAA,GAAA,GAAA,wBAAA,CAAA,EAG3BF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,WAAA,CAAA,EAAmC,kBAAA,EAAA,EAAiC,OAAA+G,EAAAjE,MAAAuF,IAAA,IAAA,CAAA,EAMhFvI,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EACnB,OAAA+G,EAAAjE,MAAAuF,IAAA,WAAA,CAAA,EAQxBvI,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EACnB,OAAA+G,EAAAjE,MAAAuF,IAAA,WAAA,CAAA,EAOZvI,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,aAAA,CAAA,EAAqC,WAAA,EAAA,EAA6B,OAAA+G,EAAAjE,MAAAuF,IAAA,MAAA,CAAA,EAQlEvI,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,aAAA,CAAA,EAKAF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,mBAAA,CAAA,EAUAF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,gBAAA,CAAA,EA4BqCF,EAAA,CAAA,EAAAH,EAAA,UAAAoH,EAAAxD,YAAA;0EDvF5CL,CACT,GAAA,EEvBJ,IAAAoF,GAAwC,uECTxCC,EAAA,EAAA,MAAA,CAAA,EAA8D,EAAA,MAAA,CAAA,EACxC,EAAA,OAAA,EACPC,EAAA,CAAA,mBAAkCC,EAAA,EACzCF,EAAA,EAAA,QAAA,EAAA,CAAA,EAIIG,GAAA,gBAAA,SAAAC,EAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,OAAAC,GAAAL,EAAAM,KAAAP,CAAA,IAAAC,EAAAM,KAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAGAS,EAAA,gBAAA,SAAAT,EAAA,CAAAE,EAAAC,CAAA,EAAA,IAAAO,EAAAC,EAAA,EAAA,EAAAC,EAAAC,EAAA,EAAA,OAAAL,EAAiBI,EAAAE,YAAAd,EAAAU,CAAA,CAA8C,CAAA,CAAA,EAPnEZ,EAAA,EAQE,EAENF,EAAA,EAAA,MAAA,CAAA,EAAoB,EAAA,OAAA,EACTC,EAAA,CAAA,oBAAyCC,EAAA,EAChDF,EAAA,GAAA,yBAAA,GAAA,CAAA,EAEIG,GAAA,gBAAA,SAAAC,EAAA,CAAA,IAAAC,EAAAC,EAAAC,CAAA,EAAAC,UAAAC,OAAAC,GAAAL,EAAAc,OAAAf,CAAA,IAAAC,EAAAc,OAAAf,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EACAS,EAAA,gBAAA,UAAA,CAAAP,EAAAC,CAAA,EAAA,IAAAS,EAAAC,EAAA,EAAA,OAAAL,EAAiBI,EAAAI,iBAAA,CAAkB,CAAA,CAAA,EAAC,OAAA,UAAA,CAAAd,EAAAC,CAAA,EAAA,IAAAS,EAAAC,EAAA,EAAA,OAAAL,EAC5BI,EAAAI,iBAAA,CAAkB,CAAA,CAAA,EAG7BlB,EAAA,EAAyB,EAE9BF,EAAA,GAAA,MAAA,EAAA,EAA0B,GAAA,SAAA,EAAA,oBAIlBa,EAAA,QAAA,UAAA,CAAA,IAAAR,EAAAC,EAAAC,CAAA,EAAAC,UAAAQ,EAAAC,EAAA,EAAA,OAAAL,EAASI,EAAAK,aAAAhB,EAAAM,IAAA,CAAwB,CAAA,CAAA,EAEjCW,EAAA,GAAA,WAAA,EAAA,EACJpB,EAAA,EAAS,EACP,4BA9BKqB,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,gBAAA,CAAA,EAKHF,EAAA,CAAA,EAAAG,GAAA,UAAArB,EAAAM,IAAA,EAOGY,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,EAAA,uBAAA,CAAA,EAGHF,EAAA,CAAA,EAAAG,GAAA,UAAArB,EAAAc,MAAA,EAGAQ,EAAA,YAAAtB,EAAAM,IAAA,EAAwB,WAAAN,EAAAM,OAAA,EAAA,EAOxBY,EAAA,CAAA,EAAAI,EAAA,QAAAF,EAAA,GAAA,GAAA,uBAAA,CAAA,0BAaRzB,EAAA,EAAA,YAAA,EAAA,EAA0G,EAAA,gBAAA,EACtF,EAAA,OAAA,EAAA,EAERC,EAAA,CAAA,mBACJC,EAAA,EAAO,EACM,SALiDyB,EAAA,mBAAA,EAAA,EAG1DJ,EAAA,CAAA,EAAAK,EAAA,IAAAH,EAAA,EAAA,EAAA,yDAAA,EAAA,GAAA,6BAQAzB,EAAA,EAAA,SAAA,EAAA,EACIC,EAAA,CAAA,EACJC,EAAA,0BAFgDyB,EAAA,QAAAE,EAAAC,EAAA,EAC5CP,EAAA,EAAAK,EAAA,IAAAC,EAAAlB,KAAA,GAAA,sCAHZX,EAAA,EAAA,iBAAA,EAAA,mBACIA,EAAA,EAAA,SAAA,EAAA,EAAQG,GAAA,gBAAA,SAAAC,EAAA,CAAAE,EAAAyB,CAAA,EAAA,IAAAf,EAAAC,EAAA,CAAA,EAAAR,OAAAC,GAAAM,EAAAgB,wBAAA5B,CAAA,IAAAY,EAAAgB,wBAAA5B,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EACJ6B,EAAA,EAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,EAGJhC,EAAA,EAAS,+BALiCyB,EAAA,QAAAF,EAAA,EAAA,EAAA,+BAAA,CAAA,EAClCF,EAAA,CAAA,EAAAG,GAAA,UAAAV,EAAAgB,uBAAA,EACyBT,EAAA,EAAAI,EAAA,UAAAQ,CAAA,0BAWzBnC,EAAA,EAAA,IAAA,EAAgCC,EAAA,CAAA,mBAAiCC,EAAA,SAAjCqB,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,eAAA,CAAA,0BAChCzB,EAAA,EAAA,IAAA,EAAgCC,EAAA,CAAA,mBAAmCC,EAAA,SAAnCqB,EAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,iBAAA,CAAA,0BAWpCzB,EAAA,EAAA,IAAA,EACIsB,EAAA,EAAA,QAAA,EAAA,EACJpB,EAAA,6BACAF,EAAA,EAAA,IAAA,EACIC,EAAA,CAAA,EACJC,EAAA,4BADIqB,EAAA,EAAAK,EAAA,IAAAQ,EAAAjB,OAAAkB,KAAA,GAAA,EAAA,GAAA,6BATRrC,EAAA,EAAA,KAAA,EAAA,EAKIiC,EAAA,EAAAK,GAAA,EAAA,EAAA,KAAA,CAAA,EAAgC,EAAAC,GAAA,EAAA,EAAA,KAAA,CAAA,EAMhCvC,EAAA,EAAA,IAAA,EAAI,EAAA,gBAAA,EAEIsB,EAAA,EAAA,QAAA,EAAA,mBACJpB,EAAA,EAAiB,EAErBF,EAAA,EAAA,IAAA,EAAI,EAAA,gBAAA,EAEIsB,EAAA,EAAA,qBAAA,EAAA,EAIJpB,EAAA,EAAiB,EAErBF,EAAA,GAAA,IAAA,EAAI,GAAA,gBAAA,EAEIsB,EAAA,GAAA,QAAA,EAAA,EACJpB,EAAA,EAAiB,EAChB,iCA1BLsC,EAAA,WAAA,EAAAxB,EAAAyB,kBAAAL,EAAAN,EAAA,EAAAY,MAAAC,OAAA,EACAhB,EAAA,YAAAX,EAAAyB,kBAAAL,EAAAN,EAAA,CAAA,EAEKP,EAAA,EAAAI,EAAA,OAAA,EAAAX,EAAA4B,SAAAC,MAAA,EAGAtB,EAAA,EAAAI,EAAA,OAAA,EAAAX,EAAA4B,SAAAC,MAAA,EAK4CtB,EAAA,CAAA,EAAAI,EAAA,cAAAF,EAAA,EAAA,EAAA,aAAA,CAAA,EAOrCF,EAAA,CAAA,EAAAI,EAAA,eAAAX,EAAA8B,YAAA,6BA/BxB9C,EAAA,EAAA,MAAA,EAAA,EAAgE,EAAA,QAAA,EAAA,EACvC,EAAA,OAAA,EACV,EAAA,IAAA,EAECiC,EAAA,EAAAc,GAAA,EAAA,EAAA,KAAA,CAAA,EAAgC,EAAAC,GAAA,EAAA,EAAA,KAAA,CAAA,EAEhChD,EAAA,EAAA,IAAA,EAAIC,EAAA,CAAA,mBAA+BC,EAAA,EACnCF,EAAA,EAAA,IAAA,EAAIC,EAAA,EAAA,oBAAiCC,EAAA,EACrCF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAyCC,EAAA,EAAK,EACjD,EAET+B,EAAA,GAAAgB,GAAA,GAAA,EAAA,KAAA,EAAA,EA8BJ/C,EAAA,EAAQ,mBArCSqB,EAAA,CAAA,EAAAI,EAAA,OAAA,EAAAX,EAAA4B,SAAAC,MAAA,EACAtB,EAAA,EAAAI,EAAA,OAAA,EAAAX,EAAA4B,SAAAC,MAAA,EACDtB,EAAA,CAAA,EAAAC,EAAAC,EAAA,EAAA,EAAA,aAAA,CAAA,EACAF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,EAAA,eAAA,CAAA,EACAF,EAAA,CAAA,EAAAC,EAAAC,EAAA,GAAA,GAAA,uBAAA,CAAA,EAIYF,EAAA,CAAA,EAAAI,EAAA,UAAAX,EAAA4B,QAAA,EAAa,eAAA5B,EAAAkC,SAAA,6BA/BjDC,EAAA,CAAA,EACIlB,EAAA,EAAAmB,GAAA,EAAA,EAAA,YAAA,EAAA,EAQApD,EAAA,EAAA,MAAA,EAAA,EACIiC,EAAA,EAAAoB,GAAA,EAAA,EAAA,iBAAA,EAAA,EAOJnD,EAAA,EAEA+B,EAAA,EAAAqB,GAAA,GAAA,GAAA,MAAA,EAAA,yBAlBY/B,EAAA,EAAAI,EAAA,OAAAQ,EAAAU,SAAA,CAAA,EASStB,EAAA,CAAA,EAAAI,EAAA,OAAAQ,EAAAU,MAAA,EASUtB,EAAA,EAAAI,EAAA,OAAA,EAAAQ,EAAAU,MAAA,GD3CnC,IAAMU,GAAuB,sBAoBhBC,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAiBzCC,YACYC,EACAC,EAAwB,CADxB,KAAAD,YAAAA,EACA,KAAAC,YAAAA,EAlBF,KAAAC,eAAiB,IAAIC,GAE/B,KAAAC,aAA0F,CAAA,EAG1F,KAAArB,kBAQI,CAAA,EAEJ,KAAAT,wBAAyC,IAItC,CAEH+B,UAAQ,CACJ,KAAKL,YAAYM,SAASC,iBAAgB,EAAGC,QAAQC,UAAUC,GAAO,CAClE,KAAKtB,aAAesB,EAAKC,cAAcC,mBAC3C,CAAC,EACD,KAAKC,gBAAkB,KAAKb,YACvBc,MAAMC,GAA8B,CACjCC,QAAS,CACLC,KAAM,KAEb,EACAC,uBAAsB,EACtBC,UAAU,CAAC,CAAEC,eAAAA,CAAc,IAAOA,EAAeC,KAAK,EACtDC,KACGC,GAAIF,GAAQ,CACJA,EAAMlC,SACN,KAAKb,wBAA0B+C,EAAM,CAAC,EAAEjD,GACxC,KAAKoD,aAAY,EAEzB,CAAC,CAAC,EAGV,KAAK9D,iBAAgB,CACzB,CAEA+D,WAAS,CACL,KAAKrB,aAAasB,KAAK,CAAEzE,KAAM,GAAIQ,OAAQ,CAAA,CAAE,CAAE,EAC/C,IAAMkE,EAAQ,KAAKvB,aAAajB,OAAS,EACzCyC,WAAW,IAAK,CACE,KAAKC,gBAAgBC,IAAIH,CAAK,GAAGI,eACxCC,MAAK,CAChB,CAAC,CACL,CAEArE,aAAaV,EAAY,CACrB,KAAKmD,aAAe,KAAKA,aAAa6B,OAAOC,GAAKA,EAAEjF,OAASA,CAAI,EACjE,KAAKS,iBAAgB,CACzB,CAEAA,kBAAgB,CAEZ,IAAMyE,EADmB,KAAK/B,aAAagC,OAAO,CAACC,EAAKC,IAAUD,EAAMC,EAAM7E,OAAO0B,OAAQ,CAAC,EAExF,KAAKiB,aAAamC,IAAIL,GAAKA,EAAEzE,OAAO8E,IAAIC,GAAKA,EAAEvF,IAAI,CAAC,EACpD,CAAC,CAAC4C,EAAoB,CAAC,EAC7B,KAAKX,YAAWuD,4BAAwBN,CAAM,EAAEI,IAAI9E,IAAW,CAAEW,GAAIX,EAAOkB,KAAK,GAAG,EAAGlB,OAAAA,CAAM,EAAG,EAEhG,KAAKyB,SAASwD,QAAQ,CAACC,EAAShB,IAAS,CACrC,GAAI,CAAC,KAAK5C,kBAAkB4D,EAAQvE,EAAE,EAAG,CACrC,IAAMwE,EAAY,KAAK3C,YAAY4C,YAAYP,MAAM,CACjDQ,aAAc,CAACH,EAAQlF,MAAM,EAC7BwB,QAAS,GACT8D,MAAO,KAAKC,gBAAgBL,EAAQvE,GAAI,QAAS,CAAC,EAClD6E,IAAK,KAAKD,gBAAgBL,EAAQvE,GAAI,MAAO,EAAE,EAC/C8E,MAAO,KAAKF,gBAAgBL,EAAQvE,GAAI,QAAS,CAAC,EACrD,EACDwE,EAAUO,aAAa1C,UAAU,IAAM,KAAKe,aAAY,CAAE,EACtDG,IAAU,IACViB,EAAUd,IAAI,OAAO,GAAGqB,aAAa1C,UAAUzB,GAAQ,CACnD,KAAKoE,qBAAqB,QAASR,EAAUd,IAAI,OAAO,CAAC,CAC7D,CAAC,EACDc,EAAUd,IAAI,KAAK,GAAGqB,aAAa1C,UAAUzB,GAAQ,CACjD,KAAKoE,qBAAqB,MAAOR,EAAUd,IAAI,KAAK,CAAC,CACzD,CAAC,EACDc,EAAUd,IAAI,OAAO,GAAGqB,aAAa1C,UAAUzB,GAAQ,CACnD,KAAKoE,qBAAqB,QAASR,EAAUd,IAAI,OAAO,CAAC,CAC7D,CAAC,GAEL,KAAK/C,kBAAkB4D,EAAQvE,EAAE,EAAIwE,CACzC,CACJ,CAAC,EACD,KAAKpB,aAAY,CACrB,CAEAhC,UAAUmC,EAAegB,EAA2C,CAChE,OAAOA,EAAQlF,OAAOkB,KAAK,GAAG,CAClC,CAEAnB,YAAY6F,EAAsBC,EAAoD,CAClFD,EAAME,eAAc,EACpBF,EAAMG,gBAAe,EACrBF,EAA0BtB,MAAK,CACnC,CAEAoB,qBAAqBK,EAAkCC,EAAmC,CACjFA,GAGLC,OAAOlG,OAAO,KAAKsB,iBAAiB,EAAE2D,QAAQE,GAAY,CACtD,IAAMgB,EAA2BhB,EAAUd,IAAI2B,CAAK,EAChDG,GAA4BA,EAAyBC,UACrDD,EAAyBE,SAASJ,EAAY1E,MAAO,CAAE+E,UAAW,EAAK,CAAE,CAEjF,CAAC,CACL,CAEAvC,cAAY,CACR,IAAMwC,EAAmB,KAAK9E,SACzBqD,IAAIC,GAAK,KAAKzD,kBAAkByD,EAAEpE,EAAE,EAAEY,KAA4B,EAClEiD,OAAOO,GAAKA,EAAEvD,OAAO,EAC1B,KAAKiB,eAAe+D,KAAK,CACrB9B,OAAQ,KAAK/B,aAAamC,IAAI2B,IAAO,CAAEjH,KAAMiH,EAAGjH,KAAMQ,OAAQyG,EAAGzG,OAAO8E,IAAIC,GAAKA,EAAEvF,IAAI,CAAC,EAAG,EAC3FiC,SAAU8E,EAEVG,gBAAiB,KAAK7F,wBACzB,CACL,CAEQ0E,gBACJoB,EACAC,EACArF,EAA6B,CAE7B,OAAOoF,IAAcvE,GACd,KAAKd,kBAAkBc,EAAoB,EAAEiC,IAAIuC,CAAI,GAAGrF,MACzDA,CACV,iDAxISc,GAAgCwE,EAAAC,CAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAAhC1E,EAAgC2E,UAAA,CAAA,CAAA,+BAAA,CAAA,EAAAC,UAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,WAEAE,EAAU,mvCCrCvDtG,EAAA,EAAAuG,GAAA,GAAA,GAAA,MAAA,CAAA,EAkCAxI,EAAA,EAAA,SAAA,CAAA,EAA4Ba,EAAA,QAAA,UAAA,CAAA,OAASyH,EAAAnD,UAAA,CAAW,CAAA,EAC5C7D,EAAA,EAAA,WAAA,CAAA,EACArB,EAAA,CAAA,mBACJC,EAAA,EAEA+B,EAAA,EAAAwG,GAAA,EAAA,EAAA,eAAA,CAAA,sBAvCuB9G,EAAA,UAAA2G,EAAAxE,YAAA,EAoCnBvC,EAAA,CAAA,EAAAK,EAAA,IAAAH,EAAA,EAAA,EAAA,oBAAA,EAAA;CAAA,EAGWF,EAAA,CAAA,EAAAI,EAAA,OAAAF,EAAA,EAAA,EAAA6G,EAAA/D,eAAA,CAAA;yFDJFf,CAAgC,GAAA,EEP7C,IAAAkF,GAAgC,SAChCC,GAAqC,SACrCC,GAAuB,+FG3BXC,EAAA,EAAA,wBAAA,EAAA,4BAGuBC,EAAA,qBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAAsBF,EAAAG,YAAAN,CAAA,CAAmB,CAAA,CAAA,EAC/DO,EAAA,oBAHsBC,EAAA,yBAAAC,EAAA,EAAA,EAAAN,EAAAO,mBAAA,CAAA,EAAsD,sBAAAD,EAAA,EAAA,EAAAN,EAAAQ,gBAAA,CAAA,4BAiC7EC,EAAA,CAAA,oBAAAC,EAAA,IAAAC,EAAAC,GAAA,GAAA,6BASAH,EAAA,CAAA,uCAAAC,EAAA,IAAAG,EAAA,EAAA,EAAAC,EAAAC,UAAA,OAAA,EAAA,GAAA,6BASAN,EAAA,CAAA,uCAAAC,EAAA,IAAAG,EAAA,EAAA,EAAAG,EAAAC,UAAA,OAAA,EAAA,GAAA,6BAMIC,EAAA,EAAA,MAAA,EAAA,yCAEIb,EAAA,MAAAQ,EAAA,EAAA,EAAAM,EAAA,MAAA,EAAAC,EAAA,0BAGAzB,EAAA,EAAA,MAAA,EAAA,EACIuB,EAAA,EAAA,WAAA,EAAA,EACJd,EAAA,6BARRT,EAAA,EAAA,MAAA,EAAA,EACI0B,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,EAAA,EAGE,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,EAMNpB,EAAA,4BARSqB,EAAA,EAAApB,EAAA,OAAAqB,EAAAC,aAAA,EAA4B,WAAAC,CAAA,6BAarCjC,EAAA,EAAA,IAAA,EAAA,EAGC,EAAA,MAAA,EAAMc,EAAA,CAAA,EAAkBL,EAAA,EAErBc,EAAA,EAAA,WAAA,EAAA,EAEJd,EAAA,qBALIC,EAAA,aAAAwB,GAAA,EAAAC,GAAAC,EAAAC,UAAAD,EAAAnB,EAAA,CAAA,EACGa,EAAA,CAAA,EAAAQ,EAAAF,EAAAG,IAAA,4BASPzB,EAAA,CAAA,oBAAAC,EAAA,IAAAyB,EAAAC,IAAA,GAAA,0BAKAzC,EAAA,EAAA,WAAA,EAAA,EAAsDc,EAAA,CAAA,mBAGtDL,EAAA,SAHsDqB,EAAA,EAAAf,EAAA,GAAAJ,EAAA,EAAA,EAAA,gBAAA,EAAA,GAAA,0BAItDX,EAAA,EAAA,WAAA,EAAA,EAAuDc,EAAA,CAAA,mBAGvDL,EAAA,SAHuDqB,EAAA,EAAAf,EAAA,GAAAJ,EAAA,EAAA,EAAA,iBAAA,EAAA,GAAA,4BAJvDe,EAAA,EAAAgB,GAAA,EAAA,EAAA,WAAA,EAAA,EAAsD,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,oBAA3CjC,EAAA,OAAAkC,EAAAC,OAAA,EAIAf,EAAA,EAAApB,EAAA,OAAA,CAAAkC,EAAAC,OAAA,6BAYX/B,EAAA,CAAA,2CAAAC,EAAA,IAAAG,EAAA,EAAA,EAAA4B,EAAAC,MAAAD,EAAAE,YAAA,EAAA,GAAA,6BAMAlC,EAAA,CAAA,2CAAAC,EAAA,IAAAG,EAAA,EAAA,EAAA+B,EAAAC,aAAAD,EAAAD,YAAA,EAAA,GAAA,6BAWchD,EAAA,EAAA,OAAA,EAAA,EACLc,EAAA,CAAA,EAA2CL,EAAA,4BAA3CqB,EAAA,EAAAf,EAAA,IAAAoC,EAAAC,eAAA,aAAA,6BANTpD,EAAA,EAAA,WAAA,EAAA,EAAkG,EAAA,MAAA,EAAA,EACrE,EAAA,KAAA,EAEjBc,EAAA,CAAA,EAEEY,EAAA,EAAA2B,GAAA,EAAA,EAAA,OAAA,EAAA,EAGN5C,EAAA,EAAM,EACJ,0BAT+CC,EAAA,QAAAyC,EAAAG,eAAA,KAAA,KAAAH,EAAAG,cAAAf,IAAA,EAG7CT,EAAA,CAAA,EAAAf,EAAA,IAAAoC,EAAAI,YAAA,EAAA,EAEsBzB,EAAA,EAAApB,EAAA,OAAAyC,EAAAC,cAAA,4BALlC1B,EAAA,EAAA8B,GAAA,EAAA,EAAA,WAAA,EAAA,oBAAiC9C,EAAA,UAAA+C,EAAAC,WAAA,4BAazCnC,EAAA,EAAA,8BAAA,EAAA,+BAAgEb,EAAA,cAAAiD,CAAA,EAAqB,QAAAtD,EAAAuD,KAAA,GDtHzF,IAAaC,IACT,IAAA,CADE,MAAOA,UACDC,EAAiF,CA2DzFC,aAAA,CACI,MAAK,EAxDA,KAAAC,mBAAqB,GAC9B,KAAAC,eAAiB,uBAER,KAAAC,aAAe,KAAKC,qBAAqB,gBAAgB,EACzD,KAAAC,QAAU,KAAKC,uBAAsB,EACzCC,YAAW,EACXC,eAAc,EACdC,WAAW,CACR,CACIjC,KAAM,OACNkC,KAAM,CAAEC,KAAM,MAAM,EACpBC,MAAS,cACTC,YAAa,QAEjB,CACIrC,KAAM,UACNkC,KAAM,CAAEC,KAAM,SAAS,EACvBC,MAAS,iBACTC,YAAa,WAEjB,CACIrC,KAAM,MACNkC,KAAM,CAAEC,KAAM,MAAM,EACpBC,MAAS,cACTC,YAAa,OAEjB,CACIrC,KAAM,QACNkC,KAAM,CAAEC,KAAM,SAAUG,UAAW,UAAU,EAC7CF,MAAS,eACTC,YAAa,SAEjB,CACIrC,KAAM,eACNkC,KAAM,CAAEC,KAAM,SAAUG,UAAW,UAAU,EAC7CF,MAAS,wBACTC,YAAa,eAChB,CACJ,EACAE,sBAAsB,KAAKZ,YAAY,EACvCa,eAAe,KAAKC,KAAK,EAErB,KAAApB,MAAQ,KAAKqB,qBAAoB,EACrCC,SAAS,CACN,CAAE3C,KAAM,IAAI,EACZ,CAAEA,KAAM,WAAW,EACnB,CAAEA,KAAM,WAAW,EACnB,CAAEA,KAAM,MAAM,EACd,CAAEA,KAAM,KAAK,EACb,CAAEA,KAAM,OAAO,EACf,CAAEA,KAAM,cAAc,CAAE,CAC3B,EACA4C,oBAAoB,KAAKjB,YAAY,EACrCa,eAAe,KAAKC,KAAK,EAI1B,KAAKI,UAAU,CACXC,SAAUC,GACVC,SAAUC,GAAQA,EAAKC,gBACvBC,aAAcA,CAACC,EAAMC,IAAQ,CACzB,IAAMC,EAAa,KAAKC,kBAAkBC,MACpCC,EAA6C,CAAEC,KAAM,CAAA,CAAE,EACvDC,EAAc,KAAK9B,QAAQ+B,kBAAiB,EAClD,OAAIC,OAAOC,KAAKH,CAAW,EAAEI,QACzBN,EAAYC,MAAMM,KAAKL,CAAW,EAElCL,GACAG,EAAYC,MAAMM,KAAK,CACnBC,IAAK,CACD,CACIjE,KAAM,CAAEkE,SAAUZ,CAAU,GAEhC,CACIpD,IAAK,CAAEgE,SAAUZ,CAAU,EAC9B,EAER,EAED,KAAKxD,WACL2D,EAAYC,MAAMM,KAAK,CACnBlE,UAAW,CACPqE,GAAI,KAAKrE,WAEhB,EAEE,CACHsE,QAAS,CACLhB,KAAAA,EACAC,KAAAA,EACAgB,OAAQZ,EACRa,KAAM,KAAKjD,MAAMkD,gBAAe,GAG5C,EACAC,qBAAsB,CAAC,KAAKnD,MAAMoD,aAAc,KAAK5C,QAAQ4C,YAAY,EAC5E,CACL,iDAtGSnD,EAA2B,CAAA,+BAA3BA,EAA2BoD,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAA7E,UAAA,YAAA2B,mBAAA,qBAAAmD,YAAA,aAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,yBAAA,sBAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,OAAA,EAAA,aAAA,qBAAA,KAAA,QAAA,eAAA,aAAA,cAAA,SAAA,EAAA,CAAA,aAAA,uBAAA,EAAA,gBAAA,kBAAA,EAAA,CAAA,EAAA,oBAAA,uBAAA,EAAA,CAAA,KAAA,KAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,QAAA,EAAA,SAAA,EAAA,CAAA,KAAA,OAAA,EAAA,UAAA,WAAA,MAAA,EAAA,CAAA,KAAA,MAAA,EAAA,UAAA,MAAA,EAAA,CAAA,KAAA,UAAA,EAAA,SAAA,EAAA,CAAA,KAAA,QAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,iBAAA,EAAA,UAAA,MAAA,EAAA,CAAA,KAAA,gBAAA,EAAA,UAAA,iBAAA,EAAA,CAAA,EAAA,cAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,qBAAA,yBAAA,qBAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,QAAA,QAAA,OAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,YAAA,EAAA,CAAA,QAAA,aAAA,EAAA,CAAA,YAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,SAAA,EAAA,CAAA,YAAA,SAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,OAAA,QAAA,EAAA,CAAA,QAAA,OAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,cAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICfxC3H,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EACI,EAAA,aAAA,EAER0B,EAAA,EAAAmG,GAAA,EAAA,EAAA,wBAAA,CAAA,EAKJpH,EAAA,EACAT,EAAA,EAAA,cAAA,EACIuB,EAAA,EAAA,uBAAA,CAAA,EAAsD,EAAA,+BAAA,CAAA,EAE1Dd,EAAA,EAAe,EACF,EAErBT,EAAA,EAAA,mBAAA,CAAA,wDAQIC,EAAA,aAAA,SAAAC,EAAA,CAAA,OAAc0H,EAAAE,cAAA5H,CAAA,CAAqB,CAAA,EAAC,qBAAA,SAAAA,EAAA,CAAA,OACd0H,EAAAG,gBAAA7H,CAAA,CAAuB,CAAA,EAE7CqB,EAAA,GAAA,uBAAA,CAAA,EAIE,GAAA,iBAAA,CAAA,oBAKFvB,EAAA,GAAA,iBAAA,CAAA,oBACI0B,EAAA,GAAAsG,GAAA,EAAA,EAAA,aAAA,EAGJvH,EAAA,EACAT,EAAA,GAAA,iBAAA,CAAA,oBAKI0B,EAAA,GAAAuG,GAAA,EAAA,EAAA,aAAA,EAGJxH,EAAA,EACAT,EAAA,GAAA,iBAAA,CAAA,oBAKI0B,EAAA,GAAAwG,GAAA,EAAA,EAAA,aAAA,EAGJzH,EAAA,EACAT,EAAA,GAAA,iBAAA,CAAA,oBACI0B,EAAA,GAAAyG,GAAA,EAAA,EAAA,aAAA,EAaJ1H,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,oBACI0B,EAAA,GAAA0G,GAAA,EAAA,EAAA,aAAA,EAUJ3H,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,oBACI0B,EAAA,GAAA2G,GAAA,EAAA,EAAA,aAAA,EAGJ5H,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,oBACI0B,EAAA,GAAA4G,GAAA,EAAA,EAAA,aAAA,EAUJ7H,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,oBAKI0B,EAAA,GAAA6G,GAAA,EAAA,EAAA,aAAA,EAGJ9H,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,oBAEI0B,EAAA,GAAA8G,GAAA,EAAA,EAAA,aAAA,EAGJ/H,EAAA,EAEAT,EAAA,GAAA,iBAAA,EAAA,oBACI0B,EAAA,GAAA+G,GAAA,EAAA,EAAA,aAAA,EAaJhI,EAAA,EACAiB,EAAA,GAAAgH,GAAA,EAAA,EAAA,8BAAA,EAAA,EACJjI,EAAA,SAnIoCqB,EAAA,CAAA,EAAApB,EAAA,OAAA,CAAAkH,EAAA5D,kBAAA,EAOFlC,EAAA,CAAA,EAAApB,EAAA,aAAAkH,EAAA3D,cAAA,EACQnC,EAAA,EAAApB,EAAA,aAAAkH,EAAA3D,cAAA,EAMtCnC,EAAA,EAAApB,EAAA,KAAAkH,EAAAT,aAAA,sBAAA,EAA4C,QAAAxG,EAAA,EAAA,GAAAiH,EAAAe,MAAA,CAAA,EACpB,eAAAhI,EAAA,EAAA,GAAAiH,EAAAgB,aAAA,CAAA,EACc,aAAAjI,EAAA,GAAA,GAAAiH,EAAAiB,WAAA,CAAA,EACJ,cAAAlI,EAAA,GAAA,GAAAiH,EAAAkB,YAAA,CAAA,EACE,UAAAlB,EAAAxD,OAAA,EAOhCtC,EAAA,CAAA,EAAApB,EAAA,gBAAAkH,CAAA,EAAsB,mBAAAA,EAAAmB,gBAAA,EAItBjH,EAAA,EAAApB,EAAA,oBAAAkH,EAAA9B,iBAAA,EAAuC,wBAAAnF,EAAA,GAAA,GAAA,wCAAA,CAAA,EAG3BmB,EAAA,CAAA,EAAApB,EAAA,UAAAC,EAAA,GAAA,GAAA,WAAA,CAAA,EAAmC,kBAAA,EAAA,EAAiC,OAAAiH,EAAAhE,MAAAoF,IAAA,IAAA,CAAA,EAMhFlH,EAAA,CAAA,EAAApB,EAAA,UAAAC,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EACnB,OAAAiH,EAAAhE,MAAAoF,IAAA,WAAA,CAAA,EAQxBlH,EAAA,CAAA,EAAApB,EAAA,UAAAC,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EACnB,OAAAiH,EAAAhE,MAAAoF,IAAA,WAAA,CAAA,EAOZlH,EAAA,CAAA,EAAApB,EAAA,UAAAC,EAAA,GAAA,GAAA,cAAA,CAAA,EAeAmB,EAAA,CAAA,EAAApB,EAAA,UAAAC,EAAA,GAAA,GAAA,cAAA,CAAA,EAAsC,WAAA,EAAA,EAA6B,OAAAiH,EAAAhE,MAAAoF,IAAA,MAAA,CAAA,EAYnElH,EAAA,CAAA,EAAApB,EAAA,UAAAC,EAAA,GAAA,GAAA,aAAA,CAAA,EAAqC,OAAAiH,EAAAhE,MAAAoF,IAAA,KAAA,CAAA,EAKrClH,EAAA,CAAA,EAAApB,EAAA,UAAAC,EAAA,GAAA,GAAA,gBAAA,CAAA,EAaZmB,EAAA,CAAA,EAAApB,EAAA,UAAAC,EAAA,GAAA,GAAA,cAAA,CAAA,EAAsC,kBAAA,EAAA,EACd,OAAAiH,EAAAhE,MAAAoF,IAAA,OAAA,CAAA,EAOZlH,EAAA,CAAA,EAAApB,EAAA,UAAAC,EAAA,GAAA,GAAA,uBAAA,CAAA,EAA+C,OAAAiH,EAAAhE,MAAAoF,IAAA,cAAA,CAAA,EAO/ClH,EAAA,CAAA,EAAApB,EAAA,UAAAC,EAAA,GAAA,GAAA,uBAAA,CAAA,EAA+C,kBAAA,EAAA,EAehBmB,EAAA,CAAA,EAAApB,EAAA,UAAAkH,EAAA1D,YAAA;oFDtHtCL,CACT,GAAA,8IDFQoF,EAAA,EAAA,SAAA,EAAA,EAGIC,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAG,OAAA,CAAQ,CAAA,CAAA,EAGjBC,EAAA,CAAA,mBACJC,EAAA,oBAHIC,EAAA,WAAAN,EAAAO,WAAAC,SAAAR,EAAAO,WAAAE,UAAAT,EAAAU,qBAAAC,SAAAC,SAAA,CAAA,EAEAC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,eAAA,EAAA,GAAA,sCAGAnB,EAAA,EAAA,SAAA,EAAA,EAGIC,EAAA,QAAA,UAAA,CAAAC,EAAAkB,CAAA,EAAA,IAAAhB,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAiB,KAAA,CAAM,CAAA,CAAA,EAGfb,EAAA,CAAA,mBACJC,EAAA,qBAHIC,EAAA,YAAAN,EAAAO,WAAAC,SAAAR,EAAAO,WAAAE,WAAA,CAAAT,EAAAkB,cAAA,CAAA,EAEAL,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,eAAA,EAAA,GAAA,4BANJI,EAAA,EAAAC,GAAA,EAAA,EAAA,SAAA,EAAA,iBACKd,EAAA,mBAAAN,EAAAqB,iBAAA,6BAkBDzB,EAAA,EAAA,oBAAA,EACI0B,EAAA,EAAA,QAAA,EAAA,EAMA1B,EAAA,EAAA,OAAA,EAAOQ,EAAA,CAAA,mBAAkCC,EAAA,EAAQ,kBAF7CQ,EAAA,EAAAP,EAAA,cAAAN,EAAAO,WAAAgB,IAAAC,EAAA,EAAAC,EAAA,CAAA,CAAA,EAEGZ,EAAA,CAAA,EAAAa,EAAAX,EAAA,EAAA,EAAA,gBAAA,CAAA,sCAUKnB,EAAA,EAAA,WAAA,EAAA,EAGIC,EAAA,YAAA,UAAA,CAAAC,EAAA6B,CAAA,EAAA,IAAAC,EAAA3B,EAAA,EAAA4B,UAAA7B,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAaF,EAAA8B,kBAAAF,EAAAG,EAAA,CAA6B,CAAA,CAAA,EAE1CT,EAAA,EAAA,oBAAA,EAAA,EACAlB,EAAA,CAAA,4BACJC,EAAA,8BAFuBQ,EAAA,EAAAP,EAAA,cAAAsB,EAAAI,IAAA,EACnBnB,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAAa,EAAAI,IAAA,EAAA,GAAA,6BAPRC,EAAA,CAAA,EACId,EAAA,EAAAe,GAAA,EAAA,EAAA,WAAA,EAAA,qCACKrB,EAAA,EAAAP,EAAA,OAAA,CAAAN,EAAAmC,iBAAAP,EAAAI,IAAA,CAAA,sCALrBpC,EAAA,EAAA,eAAA,EAA0C,EAAA,MAAA,EAAA,EACD,EAAA,MAAA,EAAA,EAE7BuB,EAAA,EAAAiB,GAAA,EAAA,EAAA,eAAA,EAAA,eAUJ/B,EAAA,EACAT,EAAA,EAAA,SAAA,EAAA,EAA6BC,EAAA,QAAA,UAAA,CAAAC,EAAAuC,CAAA,EAAA,IAAArC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAsC,gBAAA,CAAiB,CAAA,CAAA,EACnDhB,EAAA,EAAA,WAAA,EAAA,EACAlB,EAAA,CAAA,mBACJC,EAAA,EAAS,EACP,qBAfoCQ,EAAA,CAAA,EAAAP,EAAA,UAAAS,EAAA,EAAA,EAAAf,EAAAuC,gBAAA,CAAA,EAalC1B,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,0BAAA,EAAA,GAAA,0BAjBhBnB,EAAA,EAAA,WAAA,EAAA,mBACIuB,EAAA,EAAAqB,GAAA,EAAA,EAAA,gBAAA,EAAA,EAoBJnC,EAAA,QArB6BC,EAAA,QAAAS,EAAA,EAAA,EAAA,iBAAA,CAAA,yBADjCkB,EAAA,CAAA,EACId,EAAA,EAAAsB,GAAA,EAAA,EAAA,WAAA,EAAA,iCAyBI7C,EAAA,EAAA,WAAA,EAAA,EAKIQ,EAAA,CAAA,EACJC,EAAA,0BAJIC,EAAA,YAAAoC,EAAAV,IAAA,EAA8B,SAAA,EAAA,EAG9BnB,EAAA,EAAAC,EAAA,IAAA4B,EAAAC,KAAA,GAAA,0BAIJ/C,EAAA,EAAA,IAAA,EAAA,EACI0B,EAAA,EAAA,WAAA,EAAA,EACAlB,EAAA,CAAA,mBACJC,EAAA,SAHGC,EAAA,aAAAkB,EAAA,EAAAoB,EAAA,CAAA,EAEC/B,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,sBAAA,EAAA,GAAA,6BAbZnB,EAAA,EAAA,WAAA,EAAA,mBACIA,EAAA,EAAA,MAAA,EAAA,EACIuB,EAAA,EAAA0B,GAAA,EAAA,EAAA,WAAA,EAAA,cAOJxC,EAAA,EACAT,EAAA,EAAA,KAAA,EACIuB,EAAA,EAAA2B,GAAA,EAAA,EAAA,IAAA,EAAA,EAIJzC,EAAA,EAAM,kBAfoCC,EAAA,QAAAS,EAAA,EAAA,EAAA,yBAAA,CAAA,EAGVF,EAAA,CAAA,EAAAP,EAAA,UAAAyC,EAAA,EAAA,EAAA/C,EAAAgD,QAAA,KAAA,KAAAhD,EAAAgD,OAAAC,aAAA,IAAA,CAAA,EAQ6BpC,EAAA,CAAA,EAAAP,EAAA,mBAAAN,EAAAqB,iBAAA,sCAQzDzB,EAAA,EAAA,uBAAA,EAAA,uBAIIC,EAAA,SAAA,UAAA,CAAA,IAAAqD,EAAApD,EAAAqD,CAAA,EAAAtB,UAAA7B,EAAAC,EAAA,EAAA,OAAAC,EAAUF,EAAAoD,wBAAAF,EAAAnB,EAAA,CAAsC,CAAA,CAAA,EACnD1B,EAAA,kCAHGC,EAAA,aAAA4C,CAAA,EAAyB,YAAAnC,EAAA,EAAA,EAAAf,EAAAqB,iBAAA,CAAA,sCAM7BzB,EAAA,EAAA,SAAA,EAAA,EAGIC,EAAA,QAAA,UAAA,CAAAC,EAAAuD,CAAA,EAAA,IAAArD,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAsD,wBAAA,CAAyB,CAAA,CAAA,EAElChC,EAAA,EAAA,WAAA,EAAA,EACAlB,EAAA,CAAA,mBACJC,EAAA,QADIQ,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,oBAAA,EAAA,GAAA,6BAIZnB,EAAA,EAAA,UAAA,EACI0B,EAAA,EAAA,uBAAA,EAAA,EACJjB,EAAA,qBAD0BQ,EAAA,EAAAP,EAAA,SAAAiD,CAAA,0BAkBd3D,EAAA,EAAA,KAAA,EAA2E,EAAA,sBAAA,EAEnE0B,EAAA,EAAA,QAAA,EAAA,EAMA1B,EAAA,EAAA,OAAA,EAAOQ,EAAA,CAAA,mBAA4DC,EAAA,EAAQ,EACxD,SADZQ,EAAA,CAAA,EAAAa,EAAAX,EAAA,EAAA,EAAA,0CAAA,CAAA,6BA6B3BnB,EAAA,EAAA,WAAA,EAAA,mBACI0B,EAAA,EAAA,2BAAA,EAAA,uBAMJjB,EAAA,kBAPUC,EAAA,QAAAS,EAAA,EAAA,EAAA,sBAAA,CAAA,EAGFF,EAAA,CAAA,EAAAP,EAAA,eAAAN,EAAAwD,YAAA,EAA6B,wBAAAxD,EAAAO,WAAAgB,IAAA,cAAA,CAAA,EAC2B,WAAA,CAAAR,EAAA,EAAA,EAAAf,EAAAqB,iBAAA,CAAA,sCAmB5DzB,EAAA,EAAA,KAAA,EAA8C,EAAA,gCAAA,EAAA,EAEtCC,EAAA,iBAAA,SAAA4D,EAAA,CAAA3D,EAAA4D,CAAA,EAAA,IAAA1D,EAAAC,EAAA,EAAA,OAAAC,EAAAF,EAAAU,qBAAA+C,CAAA,CAAA,CAAA,EACHpD,EAAA,EAAgC,4BAGjCiB,EAAA,EAAA,2BAAA,EAAA,iBACIhB,EAAA,YAAAN,EAAA+B,EAAA,EAAqB,qBAAA,EAAA,0BAK7BnC,EAAA,EAAA,MAAA,EAAA,EAAqD,EAAA,IAAA,EAAA,EAE7C0B,EAAA,EAAA,WAAA,EAAA,EACAlB,EAAA,CAAA,mBAA2CC,EAAA,EAC9C,SAHiBQ,EAAA,EAAAP,EAAA,aAAAkB,EAAA,EAAAmC,EAAA,CAAA,EAEd9C,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,GDnKjB,IAAM6C,GAAqBC;;;;;;MAM5BC,EAAuB;EAUhBC,IACT,IAAA,CADE,MAAOA,UACDC,EAAoE,CAmB5EC,YACYC,EACAC,EACAC,EACAC,EACEC,EACFC,EAAiC,CAEzC,MAAK,EAPG,KAAAL,qBAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,oBAAAA,EACE,KAAAC,YAAAA,EACF,KAAAC,eAAAA,EAtBH,KAAAf,aAAe,KAAKgB,qBAAqB,SAAS,EAC3D,KAAAjE,WAAa,KAAK4D,YAAYM,MAAM,CAChCC,QAAS,GACT/B,KAAM,CAAC,GAAIgC,GAAWC,QAAQ,EAC9BC,uBAAwB,GACxBC,KAAM,CAAC,GAAIC,GAAwB,wBAAwB,CAAC,EAC5DC,YAAa,GACbC,cAAe,CAAC,CAAA,CAAc,EAC9BzB,aAAc,KAAKW,YAAYM,MAAMS,GAAwB,KAAK1B,YAAY,CAAC,EAClF,EACD,KAAA2B,aAA+B,CAAA,EAG/B,KAAAzE,qBAAoD,CAAE0E,OAAQ,CAAA,EAAIzE,SAAU,CAAA,EAAI0E,gBAAiB,EAAE,EACnF,KAAAhE,kBAAoB,CAACiE,EAAWC,cAAeD,EAAWE,aAAa,CAWvF,CAEAC,UAAQ,CACJ,KAAKC,KAAI,EAET,IAAMC,EAAsB,KAAKC,OAAOC,KACpCC,EAAUC,GACCA,EAAQC,GAAG,CAAA,CAAE,EAAI,KAAKC,QAAQJ,KAAKK,EAAIC,GAAWA,EAAQC,WAAW,CAAC,CAChF,CAAC,EAIAC,EAFe,KAAK9F,WAEoBgB,IAAI,eAAe,EAAG+E,aAAaT,KAC7EU,GAAoB,EACpBT,EAAUU,GACN,KAAKlC,YAAYmC,MACZC,eAAe,CAAEC,OAAQ,CAAE5E,GAAI,CAAE6E,GAAIJ,CAAG,CAAE,CAAE,CAAE,EAC9CK,UAAU,CAAC,CAAET,YAAAA,CAAW,IAAOA,EAAYU,KAAK,CAAC,EAE1DC,GAAY,CAAC,CAAC,EAElB,KAAKC,aAAeC,GAChBtB,EAAoBE,KAAKqB,GAAK,CAAC,CAAC,EAChCvB,EAAoBE,KAAKC,EAAU,IAAMO,CAAwB,CAAC,CAAC,EAEvE,KAAK9D,iBAAmB,KAAK0D,QAAQJ,KAAKK,EAAIiB,GAAKA,EAAEC,QAAQ,CAAC,CAClE,CAEAC,aAAW,CACP,KAAKC,QAAO,CAChB,CAEAnF,iBAAiBoF,EAAmB,CAChC,OAAOA,IAAgBC,uBAC3B,CAEAlF,iBAAe,CACX,KAAKC,iBACAsD,KACGqB,GAAK,CAAC,EACNpB,EAAUsB,GACN,KAAKhD,aAAaqD,cAAcC,GAAwC,CACpEC,KAAM,KACNC,OAAQ,CACJC,WAAY,CAAC,KAAK9F,EAAE,EACpB+F,kBAAmBV,EAASlB,IAAI6B,GAAKA,EAAEhG,EAAE,GAEhD,CAAC,CACL,EAEJiG,UAAS,CAClB,CAEAlG,kBAAkBmG,EAAiB,CAC/BC,GAAKC,GAA6B,KAAK7D,YAAa2D,CAAS,CAAC,EACzDpC,KACGC,EAAU,CAAC,CAAEyB,YAAAA,CAAW,IACpB,KAAKnD,aAAagE,OAAO,CACrBC,MAAS,sCACTC,QAAS,CACL,CAAEC,KAAM,YAAaC,MAAS,eAAgB,EAC9C,CACID,KAAM,SACNC,MAAS,8BACTC,gBAAiB,CAAElB,YAAAA,CAAW,EAC9BmB,YAAa,GAChB,EAER,CAAC,EAEN5C,EAAU6C,GACNA,EACM,KAAKrE,YAAY6B,QAAQyC,0BAA0B,CAC/CX,UAAAA,EACAJ,WAAY,CAAC,KAAK9F,EAAE,EACvB,EACD8G,EAAK,CACd,EAEJb,UACG,IAAK,CACD,KAAK3D,oBAAoByE,QAAU,oDAAqD,CAC5F,EACAC,GAAM,CACF,KAAK1E,oBAAoB2E,MAAQ,kDAAmD,CACxF,CAAC,CAEb,CAEAC,uBAAuBC,EAA+B,CAClD,OAAO,KAAK9E,aACPqD,cAAcC,GAAwC,CACnDC,KAAM,KACNC,OAAQ,CACJC,WAAY,CAAC,KAAK9F,EAAE,EACpBoH,kBAAmB,CAACD,EAAQnH,EAAE,EAC9B+F,kBAAmBoB,EAAQ9B,SAASlB,IAAI6B,GAAKA,EAAEhG,EAAE,GAExD,EACAiG,UAAS,CAClB,CAEAoB,yBAAyB,CAAEnB,UAAAA,EAAWiB,QAAAA,CAAO,EAA0D,CACnGhB,GAAKC,GAA6B,KAAK7D,YAAa2D,CAAS,CAAC,EACzDpC,KACGC,EAAU,CAAC,CAAEyB,YAAAA,CAAW,IACpB,KAAKnD,aAAagE,OAAO,CACrBC,MAAS,8CACTC,QAAS,CACL,CAAEC,KAAM,YAAaC,MAAS,eAAgB,EAC9C,CACID,KAAM,SACNC,MAAS,8BACTC,gBAAiB,CAAElB,YAAAA,CAAW,EAC9BmB,YAAa,GAChB,EAER,CAAC,EAEN5C,EAAU6C,GACNA,EACM,KAAKrE,YAAY6B,QAAQkD,0BAA0B,CAC/CpB,UAAAA,EACAkB,kBAAmB,CAACD,EAAQnH,EAAE,EACjC,EACD8G,EAAK,CACd,EAEJb,UACG,IAAK,CACD,KAAK3D,oBAAoByE,QAAU,oDAAqD,CAC5F,EACAC,GAAM,CACF,KAAK1E,oBAAoB2E,MAAQ,kDAAmD,CACxF,CAAC,CAEb,CAEA9H,eAAa,CACT,MAAO,CAAC,CAACoI,OAAOC,OAAO,KAAKpE,YAAY,EAAEvE,MAC9C,CAKA4I,WAAWC,EAAiB,CACxB,IAAMC,EAAc,KAAKnJ,WAAWgB,IAAI,MAAM,EACxCoI,EAAqB,KAAK3G,OAAS4G,GAAgB,KAAK5G,OAAQ,KAAK6G,YAAY,EAAIC,OACrFC,EAAqB,CAACJ,GAAsB,CAACA,EAAmB7E,KAClE4E,GAAeA,EAAYjJ,UAAYsJ,GACvCL,EAAYM,YAASC,oBAAgB,GAAGR,CAAS,GAAI,GAAG,CAAC,CAEjE,CAEAnG,yBAAuB,CACnB,KAAK4G,uBAAsB,EAAGlC,UAAU/C,GAAgB,CACpD,GAAIA,EAAe,CACf,IAAMkF,EAAuB,KAAK5J,WAAW6J,SAASnF,cAChDoF,EAAuBF,EAAqBG,OAAS,CAAA,EAC3DH,EAAqBH,YAASO,WAAO,CAAC,GAAGF,EAAsB,GAAGpF,CAAa,CAAC,CAAC,EACjFkF,EAAqBK,YAAW,CACpC,CACJ,CAAC,CACL,CAEApH,wBAAwBqH,EAAoB,CACxC,IAAMN,EAAuB,KAAK5J,WAAW6J,SAASnF,cAChDoF,EAAuBF,EAAqBG,OAAS,CAAA,EAC3DH,EAAqBH,SAASK,EAAqB1D,OAAO5E,GAAMA,IAAO0I,CAAY,CAAC,EACpFN,EAAqBK,YAAW,CACpC,CAEQN,wBAAsB,CAC1B,OAAO,KAAK9F,aACPqD,cAAciD,GAA2B,CACtC/C,KAAM,KACNgD,SAAU,GACb,EACA9E,KAAKK,EAAIE,GAAeA,GAAeA,EAAYF,IAAI0E,GAAKA,EAAE7I,EAAE,CAAC,CAAC,CAC3E,CAEA5B,QAAM,CACF,IAAM0K,EAAe,KAAKtK,WAC1B,GAAI,CAACsK,EAAaC,MACd,OAGJ,IAAMC,EAAa,KAAKC,kBACpB,CACIjJ,GAAI,GACJkJ,UAAW,GACXC,UAAW,GACXxG,QAAS,GACTmF,aAAc,KAAKA,aACnBlH,KAAM,GACNmC,KAAM,GACNqG,cAAe,KACfC,OAAQ,CAAA,EACRpG,YAAa,GACbqG,aAAc,CAAA,EACdpI,aAAc,CAAA,EACdmD,YAAa,CAAA,EACbgB,SAAU,CAAA,GAEdyD,EACA,KAAKhB,YAAY,EAErB,KAAK3F,qBACAoH,0BAA0BP,EAAY,KAAKrK,qBAAsB,KAAKmJ,YAAY,EAClF7B,UACG,CAAC,CAAEuD,sBAAAA,EAAuBC,UAAAA,CAAS,IAAM,CACrC,KAAKnH,oBAAoByE,QAAU,+BAAiC,CAChE9F,OAAQ,UACX,EACD,KAAKmC,aAAe,CAAA,EACpB,KAAK5E,WAAWkL,eAAc,EAC9B,KAAKC,OAAOC,SAAS,CAAC,MAAOH,CAAS,EAAG,CAAEI,WAAY,KAAKC,KAAK,CAAE,CACvE,EACA9C,GAAM,CAEF+C,QAAQ9C,MAAMD,CAAG,EACjB,KAAK1E,oBAAoB2E,MAAQ,6BAA+B,CAC5DhG,OAAQ,UACX,CACL,CAAC,CAEb,CAEA/B,MAAI,CACA8K,GAAc,KAAK9F,QAAS,KAAK+F,aAAa,EACzCnG,KACGqB,GAAK,CAAC,EACN+E,GAAS,CAAC,CAAC9F,EAAS0D,CAAY,IAAK,CACjC,IAAMgB,EAAe,KAAKtK,WACtB2L,EACAC,EAEJ,OAAItB,EAAaC,OAAS,KAAK5J,cAAa,KACxCgL,EAAe,KAAKlB,kBAChB7E,EACA0E,EACAhB,CAAY,GAIb,KAAK3F,qBAAqBkI,cAAc,CAC3CjG,QAAAA,EACA0D,aAAAA,EACAwC,WAAY,KAAK9L,WAAWgB,IAAI,CAAC,wBAAwB,CAAC,GAAG+I,OAAS,GACtE4B,aAAAA,EACAC,cAAAA,EACH,CACL,CAAC,CAAC,EAELnE,UACGsE,GAAS,CACL,KAAKC,oBAAoBD,CAAM,EAC/B,KAAK/L,WAAWkL,eAAc,EAC9B,KAAKtG,aAAe,CAAA,EACpB,KAAKd,oBAAoByE,QAAU,+BAAiC,CAChE9F,OAAQ,UACX,EACD,KAAKuB,eAAeiI,aAAY,CACpC,EACAzD,GAAM,CACF,KAAK1E,oBAAoB2E,MAAQ,6BAA+B,CAC5DhG,OAAQ,UACX,CACL,CAAC,CAEb,CAEAyJ,eAAa,CACT,OAAO,MAAMA,cAAa,GAAM,CAAC,KAAKtH,aAAaiG,QAAU,CAAC,KAAKjG,aAAagG,aACpF,CAKUuB,cACNvG,EACA0D,EAA0B,CAE1B,IAAMF,EAAqBC,GAAgBzD,EAAS0D,CAAY,EAChE,KAAKtJ,WAAWoM,WAAW,CACvBjI,QAASyB,EAAQzB,QACjB/B,KAAMgH,EAAqBA,EAAmBhH,KAAO,GACrDmC,KAAM6E,EAAqBA,EAAmB7E,KAAO,GACrDE,YAAa2E,EAAqBA,EAAmB3E,YAAc,GACnEC,cAAekB,EAAQC,YAAYF,IAAI0G,GAAMA,EAAG7K,EAAE,EACrD,EAEG,KAAKyB,aAAa5C,QAClB,KAAKiM,yBACD,KAAKrJ,aACL,KAAKjD,WAAWgB,IAAI,CAAC,cAAc,CAAC,EACpC4E,EACAwD,CAAkB,CAG9B,CAMQqB,kBACJ7E,EACA2G,EACAjD,EAA0B,CAE1B,IAAMkD,EAAiBC,GAA0B,CAC7CC,aAAc9G,EACd+G,cAAeJ,EAAiBxC,MAChC6C,kBAAmB,KAAK3J,aACxBqG,aAAAA,EACAuD,mBAAoB,CAChBvD,aAAAA,EACAlH,KAAMwD,EAAQxD,MAAQ,GACtBmC,KAAMqB,EAAQrB,MAAQ,GACtBE,YAAamB,EAAQnB,aAAe,IAE3C,EACD,OAAOqI,GAAAC,EAAA,GACAP,GADA,CAEHQ,SAAU,KAAKpI,aAAaiG,QAAQlF,IAAIsH,GAAKA,EAAEzL,EAAE,EACjD0L,gBAAiB,KAAKtI,aAAagG,eAAepJ,GAClDkD,cAAe6H,EAAiB1C,SAASnF,cAAc6F,MACjDgC,EAAiBxC,MAAMrF,cACvB6E,QAEd,CAKQyC,oBAAoBmB,EAAqE,CAC7F,IAAMC,EAAcD,EAAQ,CAAC,EACvBhE,EAAc,KAAKnJ,WAAWgB,IAAI,CAAC,UAAW,MAAM,CAAC,EAE3D,SAASqM,EAAiBC,EAAU,CAChC,OAAOA,EAAMC,eAAe,eAAe,CAC/C,CAEIpE,GAAekE,EAAiBD,CAAW,GAC3CjE,EAAYM,SAAS2D,EAAYvB,cAActH,KAAM,CAAEiJ,UAAW,EAAK,CAAE,CAEjF,iDAxXShK,GAAsBiK,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,CAAA,EAAAJ,EAAAK,CAAA,EAAAL,EAAAM,EAAA,CAAA,CAAA,CAAA,+BAAtBvK,EAAsBwK,UAAA,CAAA,CAAA,qBAAA,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,eAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,OAAA,cAAA,EAAA,CAAA,EAAA,qBAAA,WAAA,yBAAA,qBAAA,EAAA,CAAA,aAAA,gBAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,WAAA,QAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,OAAA,EAAA,WAAA,EAAA,CAAA,MAAA,aAAA,EAAA,OAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,aAAA,YAAA,SAAA,EAAA,QAAA,SAAA,EAAA,CAAA,QAAA,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,OAAA,SAAA,SAAA,GAAA,SAAA,kDAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,KAAA,OAAA,OAAA,OAAA,kBAAA,OAAA,EAAA,QAAA,UAAA,EAAA,CAAA,MAAA,OAAA,EAAA,QAAA,QAAA,EAAA,CAAA,KAAA,OAAA,OAAA,OAAA,kBAAA,OAAA,EAAA,UAAA,EAAA,CAAA,MAAA,OAAA,EAAA,iBAAA,EAAA,QAAA,QAAA,EAAA,CAAA,kBAAA,cAAA,EAAA,UAAA,EAAA,CAAA,aAAA,iBAAA,EAAA,UAAA,YAAA,EAAA,CAAA,EAAA,SAAA,SAAA,gBAAA,mBAAA,EAAA,CAAA,EAAA,QAAA,UAAA,EAAA,CAAA,EAAA,OAAA,UAAA,EAAA,CAAA,QAAA,OAAA,EAAA,MAAA,EAAA,CAAA,EAAA,MAAA,cAAA,EAAA,QAAA,UAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,WAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,OAAA,WAAA,YAAA,GAAA,OAAA,UAAA,EAAA,aAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,2BAAA,EAAA,CAAA,EAAA,OAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,OAAA,EAAA,CAAA,QAAA,QAAA,EAAA,CAAA,OAAA,eAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,eAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,YAAA,SAAA,EAAA,QAAA,SAAA,EAAA,CAAA,QAAA,oBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,YAAA,QAAA,EAAA,CAAA,EAAA,eAAA,OAAA,EAAA,YAAA,EAAA,CAAA,QAAA,QAAA,EAAA,CAAA,EAAA,SAAA,aAAA,WAAA,EAAA,CAAA,EAAA,eAAA,OAAA,EAAA,OAAA,EAAA,CAAA,QAAA,MAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,GAAA,OAAA,WAAA,KAAA,cAAA,kBAAA,wBAAA,EAAA,CAAA,aAAA,UAAA,EAAA,eAAA,wBAAA,UAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,cAAA,+BAAA,EAAA,YAAA,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,SAAA,EAAA,YAAA,EAAA,CAAA,QAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WC7DnCnP,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EACI,EAAA,aAAA,EAER0B,EAAA,EAAA,MAAA,CAAA,EACA1B,EAAA,EAAA,wBAAA,CAAA,yCAIIC,EAAA,qBAAA,SAAA4D,EAAA,CAAAwL,OAAAnP,EAAAoP,CAAA,EAAAhP,EAAsB8O,EAAAG,YAAA1L,CAAA,CAAmB,CAAA,CAAA,EAC5CpD,EAAA,EAAwB,EAG7BT,EAAA,EAAA,cAAA,EACI0B,EAAA,EAAA,uBAAA,CAAA,EACAH,EAAA,GAAAiO,GAAA,EAAA,EAAA,SAAA,CAAA,gBAQAjO,EAAA,GAAAkO,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,EAUAhO,EAAA,GAAA,+BAAA,CAAA,EACJjB,EAAA,EAAe,EACF,EAGrBT,EAAA,GAAA,OAAA,CAAA,EAA4C,GAAA,wBAAA,EAChB,GAAA,yBAAA,EACK,GAAA,UAAA,EACX,GAAA,iBAAA,CAAA,oBAEFuB,EAAA,GAAAoO,GAAA,EAAA,EAAA,qBAAA,CAAA,EASJlP,EAAA,EAAiB,EAErBc,EAAA,GAAAqO,GAAA,EAAA,EAAA,eAAA,CAAA,gBAwBArO,EAAA,GAAAsO,GAAA,EAAA,EAAA,WAAA,EAAA,EAiBA7P,EAAA,GAAA,WAAA,EAAA,oBACIA,EAAA,GAAA,MAAA,EAAA,EACIuB,EAAA,GAAAuO,GAAA,EAAA,EAAA,uBAAA,EAAA,gBAMJrP,EAAA,EACAT,EAAA,GAAA,KAAA,EACIuB,EAAA,GAAAwO,GAAA,EAAA,EAAA,SAAA,EAAA,EAQJtP,EAAA,EAAM,EAEVc,EAAA,GAAAyO,GAAA,EAAA,EAAA,WAAA,CAAA,gBAGJvP,EAAA,EAEAT,EAAA,GAAA,gBAAA,EACI0B,EAAA,GAAA,SAAA,EAAA,EACA1B,EAAA,GAAA,UAAA,EAAU,GAAA,MAAA,EAAA,EACiB,GAAA,KAAA,EACd,GAAA,iBAAA,EAAA,oBAEGA,EAAA,GAAA,QAAA,EAAA,wBAKIC,EAAA,QAAA,SAAA4D,EAAA,CAAAwL,OAAAnP,EAAAoP,CAAA,EAAAhP,EAAS8O,EAAAxF,WAAA/F,EAAAoM,OAAAvF,KAAA,CAA+B,CAAA,CAAA,EAL5CjK,EAAA,EAME,EAENc,EAAA,GAAA2O,GAAA,EAAA,EAAA,MAAA,CAAA,gBAWJzP,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,sCAKI0B,EAAA,GAAA,QAAA,EAAA,wBAMJjB,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,sCAMI0B,EAAA,GAAA,uBAAA,EAAA,wBAIJjB,EAAA,EAAiB,EACf,EAEVc,EAAA,GAAA4O,GAAA,EAAA,EAAA,WAAA,EAAA,EAQAzO,EAAA,GAAA,mCAAA,EAAA,EAKA1B,EAAA,GAAA,WAAA,EAAA,oBACIA,EAAA,GAAA,aAAA,EAAA,EAIIC,EAAA,SAAA,SAAA4D,EAAA,CAAAwL,OAAAnP,EAAAoP,CAAA,EAAAhP,EAAA8O,EAAA7J,aAAA1B,CAAA,CAAA,CAAA,EACHpD,EAAA,EAAa,EAGlBT,EAAA,GAAA,WAAA,EAAA,kCACIuB,EAAA,GAAA6O,GAAA,EAAA,EAAA,MAAA,EAAA,gBAKA7O,EAAA,GAAA8O,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAX,CAAA,EAA0B,GAAAY,GAAA,EAAA,EAAA,MAAA,EAAA,gBAa9B7P,EAAA,EAAW,EACE,EACI,gCAhNbQ,EAAA,CAAA,EAAAP,EAAA,WAAAS,EAAA,EAAA,GAAAiO,EAAApJ,MAAA,CAAA,EAA2B,yBAAA7E,EAAA,EAAA,GAAAiO,EAAAmB,mBAAA,CAAA,EAC2B,sBAAApP,EAAA,EAAA,GAAAiO,EAAAhD,aAAA,CAAA,EAUrDnL,EAAA,CAAA,EAAAP,EAAA,OAAAS,EAAA,GAAA,GAAAiO,EAAApJ,MAAA,CAAA,EAAsB,WAAAwK,CAAA,EAqBpBvP,EAAA,CAAA,EAAAP,EAAA,YAAA0O,EAAAzO,UAAA,EAIaM,EAAA,CAAA,EAAAP,EAAA,QAAAS,EAAA,GAAA,GAAA,oBAAA,CAAA,EACSF,EAAA,CAAA,EAAAP,EAAA,mBAAA0O,EAAA3N,iBAAA,EAWdR,EAAA,EAAAP,EAAA,OAAA,CAAAS,EAAA,GAAA,GAAAiO,EAAApJ,MAAA,CAAA,EAwBJ/E,EAAA,CAAA,EAAAP,EAAA,OAAA0O,EAAAhM,QAAA,KAAA,KAAAgM,EAAAhM,OAAAC,aAAArC,MAAA,EAiBDC,EAAA,EAAAP,EAAA,QAAAS,EAAA,GAAA,GAAA,gBAAA,CAAA,EAGyBF,EAAA,CAAA,EAAAP,EAAA,UAAAS,EAAA,GAAA,GAAAiO,EAAAhI,YAAA,CAAA,EAStBnG,EAAA,CAAA,EAAAP,EAAA,mBAAA0O,EAAA3N,iBAAA,EAQFR,EAAA,EAAAP,EAAA,OAAAS,EAAA,GAAA,GAAAiO,EAAA/I,OAAA,CAAA,EAUiBpF,EAAA,CAAA,EAAAP,EAAA,QAAAS,EAAA,GAAA,GAAA,sBAAA,CAAA,EAKRF,EAAA,CAAA,EAAAP,EAAA,WAAA,CAAAS,EAAA,GAAA,GAAAiO,EAAA3N,iBAAA,CAAA,EAIFR,EAAA,CAAA,EAAAP,EAAA,OAAAS,EAAA,GAAA,GAAAiO,EAAApJ,MAAA,IAAA,MAAAyK,EAAArB,EAAAzO,WAAAgB,IAAAC,EAAA,GAAA8O,EAAA,CAAA,IAAA,KAAA,KAAAD,EAAAvF,MAAA,EAaNjK,EAAA,CAAA,EAAAP,EAAA,QAAAS,EAAA,GAAA,GAAA,cAAA,CAAA,EAAoC,SAAAwP,EAAA,GAAAC,GAAAzP,EAAA,GAAA,GAAA,4BAAA,CAAA,CAAA,EAQhCF,EAAA,CAAA,EAAAP,EAAA,WAAA,CAAAS,EAAA,GAAA,GAAAiO,EAAA3N,iBAAA,CAAA,EAKJR,EAAA,CAAA,EAAAP,EAAA,QAAAS,EAAA,GAAA,GAAA,oBAAA,CAAA,EAA0C,SAAAwP,EAAA,GAAAC,GAAAzP,EAAA,GAAA,GAAA,4BAAA,CAAA,CAAA,EAMtCF,EAAA,CAAA,EAAAP,EAAA,WAAA,CAAAS,EAAA,GAAA,GAAAiO,EAAA3N,iBAAA,CAAA,EAKwCR,EAAA,CAAA,EAAAP,EAAA,OAAA0O,EAAAxL,aAAA5C,MAAA,EAUpDC,EAAA,EAAAP,EAAA,UAAA0O,EAAA/I,OAAA,EAAmB,aAAA+I,EAAAzO,UAAA,EAGbM,EAAA,EAAAP,EAAA,QAAAS,EAAA,GAAA,GAAA,gBAAA,CAAA,EAEFF,EAAA,CAAA,EAAAP,EAAA,SAAA0O,EAAA7J,aAAAiG,SAAA4D,EAAAhM,QAAA,KAAA,KAAAgM,EAAAhM,OAAAoI,OAAA,EAAgD,gBAAA4D,EAAA7J,aAAAgG,gBAAA6D,EAAAhM,QAAA,KAAA,KAAAgM,EAAAhM,OAAAmI,cAAA,EACqB,oBAAA6D,EAAA3N,iBAAA,EAMnER,EAAA,EAAAP,EAAA,QAAAS,EAAA,GAAA,GAAA,0BAAA,CAAA,EAAgD,WAAAA,EAAA,GAAA,GAAAiO,EAAApJ,MAAA,CAAA,EAChD/E,EAAA,CAAA,EAAAP,EAAA,OAAAS,EAAA,GAAA,GAAAiO,EAAApJ,MAAA,CAAA,EAAsB,WAAA6K,CAAA,EAYT5P,EAAA,CAAA,EAAAP,EAAA,OAAAS,EAAA,GAAA,GAAAiO,EAAApJ,MAAA,IAAA,EAAA;gGDhJtB7B,CACT,GAAA,EIhDJ,IAAA2M,GAAuB,SAShB,IAAMC,GAGT,CACAC,SAAU,eACVC,MAAS,gBACTC,KAAM,QACNC,UAAW,YACXC,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWC,aAAa,GACjDH,EAAgBC,SAASC,EAAWE,aAAa,EACrDC,QAASA,CAAC,CAAEC,SAAAA,EAAUC,UAAAA,EAAWC,cAAAA,EAAeC,eAAAA,CAAc,IAAM,CAChE,IAAMC,EAAeJ,EAASK,IAAIC,EAAY,EACxCC,EAAcP,EAASK,IAAIG,CAAW,EACtCC,EAAsBT,EAASK,IAAIK,CAAmB,EAC5DN,EACKO,OAAO,CACJC,MAAS,uCACTC,gBAAiB,CACbC,MAAOb,EAAUc,QAErBC,QAAS,CACL,CAAEC,KAAM,YAAa3B,MAAS,eAAgB,EAC9C,CAAE2B,KAAM,SAAU3B,MAAS,gBAAkB4B,YAAa,EAAI,CAAE,EAEvE,EACAC,KACGC,EAAUC,GACNA,EAAWd,EAAYe,QAAQC,kBAAeC,WAAOvB,EAAUwB,IAAIC,GAAKA,EAAEC,EAAE,CAAC,CAAC,EAAIC,EAAK,CAC1F,EAEJC,UAAUC,GAAS,CAChB,IAAIC,EAAU,EACRC,EAAmB,CAAA,EACzB,QAAWC,KAAQH,EAAOP,eAClBU,EAAKH,SAAWI,GAAeC,QAC/BJ,IACOE,EAAKG,SACZJ,EAAOK,KAAKJ,EAAKG,OAAO,EAG5B,EAAIL,GACJtB,EAAoB6B,QAAU,8CAAgD,CAC1ExB,MAAOiB,EACV,EAED,EAAIC,EAAOjB,QACXN,EAAoB8B,MAAMP,EAAOQ,KAAK;CAAI,CAAC,EAE/CtC,EAAcuC,QAAO,EACrBtC,EAAc,CAClB,CAAC,CACT,GAGSuC,GAGT,CACArD,SAAU,eACVC,MAAS,2BACTC,KAAM,SACNE,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAW+C,aAAa,GACjDjD,EAAgBC,SAASC,EAAWgD,aAAa,EACrDC,UAAWA,CAAC,CAAE7C,SAAAA,CAAQ,IAAO8C,GAAe9C,EAASK,IAAIG,CAAW,CAAC,EACrET,QAASA,CAAC,CAAEC,SAAAA,EAAUC,UAAAA,EAAWE,eAAAA,CAAc,IAAM,CAC5BH,EAASK,IAAIC,EAAY,EAEzCyC,cAAcC,GAAwC,CACnDC,KAAM,KACNC,OAAQ,CACJC,cAAY3B,WAAOvB,EAAUwB,IAAIC,GAAKA,EAAEC,EAAE,CAAC,EAC3CyB,kBAAmB,CAAA,GAE1B,EACAvB,UAAUC,GAAS,CACZA,GACA3B,EAAc,CAEtB,CAAC,CACT,GAGSkD,GAAsCC,GAEjD,CACEjE,SAAU,eACVI,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAW+C,aAAa,GACjDjD,EAAgBC,SAASC,EAAWgD,aAAa,EACrDW,YAAatB,GAAQA,EAAKuB,KAC1BC,sBAAuBA,CAAClD,EAAa4C,EAAYO,IAC7CnD,EAAYe,QACPqC,0BAA0B,CACvBD,UAAWA,EACXP,WAAAA,EACH,EACAhC,KAAKM,EAAImC,GAAOA,EAAID,yBAAyB,CAAC,EAC1D,EAEYE,GAGT,CACAxE,SAAU,eACVC,MAAS,4BACTC,KAAM,MACNE,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAW+C,aAAa,GACjDjD,EAAgBC,SAASC,EAAWgD,aAAa,EACrD7C,QAASA,CAAC,CAAEC,SAAAA,EAAUC,UAAAA,EAAWC,cAAAA,EAAeC,eAAAA,CAAc,IAAM,CAChE,IAAMC,EAAeJ,EAASK,IAAIC,EAAY,EACxCG,EAAsBT,EAASK,IAAIK,CAAmB,EACtDoD,EAAO,UACPC,KAAMvC,WAAOvB,EAAUwB,IAAIC,GAAKA,EAAEC,EAAE,CAAC,EAC3C,OAAOvB,EACF2C,cAAciB,GAAmC,CAC9Cf,KAAM,KACNC,OAAQ,CACJY,KAAAA,EACAC,IAAAA,GAEP,EACAlC,UAAUC,GAAS,CACZA,IACArB,EAAoB6B,QAAU,oCAAsC,CAChExB,MAAOb,EAAUc,OACjBkD,OAAQH,IAAS,UAAY,WAAa,kBAC7C,EACD3D,EAAc,EAEtB,CAAC,CACT,GAGS+D,GAGT,CACA7E,SAAU,eACVC,MAAS,mBACTC,KAAM,OACNQ,QAASA,CAAC,CAAEC,SAAAA,EAAUC,UAAAA,EAAWC,cAAAA,EAAeC,eAAAA,CAAc,IAAM,CAC3CH,EAASK,IAAIC,EAAY,EAEzCyC,cAAcoB,GAAyE,CACpFjB,OAAQ,CACJkB,SAAUnE,EACVoE,WAAY,UACZzD,MAAS,6BACT0D,cAAeL,GAAUA,EAAOT,MAEvC,EACA3B,UAAUC,GAAS,CACZA,IACA3B,EAAc,EACdD,EAAcuC,QAAO,EAE7B,CAAC,CACT,4HE5KQ8B,EAAA,EAAA,IAAA,EAAA,EAKIC,EAAA,EAAA,WAAA,EAAA,EACAC,EAAA,CAAA,mBACJC,EAAA,SALIC,EAAA,aAAAC,EAAA,EAAAC,EAAA,CAAA,EAIAC,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,4BAAA,EAAA,GAAA,4BAkCJP,EAAA,CAAA,oBAAAM,EAAA,IAAAE,EAAAC,GAAA,GAAA,6BASAT,EAAA,CAAA,uCAAAM,EAAA,IAAAI,EAAA,EAAA,EAAAC,EAAAC,UAAA,OAAA,EAAA,GAAA,6BASAZ,EAAA,CAAA,uCAAAM,EAAA,IAAAI,EAAA,EAAA,EAAAG,EAAAC,UAAA,OAAA,EAAA,GAAA,6BAMIf,EAAA,EAAA,MAAA,EAAA,yCAEIG,EAAA,MAAAQ,EAAA,EAAA,EAAAK,EAAA,MAAA,EAAAC,EAAA,0BAGAlB,EAAA,EAAA,MAAA,EAAA,EACIC,EAAA,EAAA,WAAA,EAAA,EACJE,EAAA,6BARRH,EAAA,EAAA,MAAA,EAAA,EACImB,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,EAAA,EAGE,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,EAMNnB,EAAA,4BARSI,EAAA,EAAAH,EAAA,OAAAmB,EAAAC,aAAA,EAA4B,WAAAC,CAAA,6BAarCzB,EAAA,EAAA,IAAA,EAAA,EACK,EAAA,MAAA,EAAME,EAAA,CAAA,EAAkBC,EAAA,EACxBF,EAAA,EAAA,WAAA,EAAA,EACHE,EAAA,qBAHsBC,EAAA,aAAAsB,EAAA,EAAAC,GAAAC,EAAAjB,EAAA,CAAA,EACbJ,EAAA,CAAA,EAAAsB,EAAAD,EAAAE,IAAA,4BAOX5B,EAAA,CAAA,oBAAAM,EAAA,IAAAuB,EAAAC,KAAA,GAAA,0BAKAhC,EAAA,EAAA,WAAA,EAAA,EAAsDE,EAAA,CAAA,mBAEpDC,EAAA,SAFoDI,EAAA,EAAAsB,EAAApB,EAAA,EAAA,EAAA,gBAAA,CAAA,0BAGtDT,EAAA,EAAA,WAAA,EAAA,EAAuDE,EAAA,CAAA,mBAErDC,EAAA,SAFqDI,EAAA,EAAAsB,EAAApB,EAAA,EAAA,EAAA,iBAAA,CAAA,4BAHvDU,EAAA,EAAAc,GAAA,EAAA,EAAA,WAAA,EAAA,EAAsD,EAAAC,GAAA,EAAA,EAAA,WAAA,EAAA,oBAA3C9B,EAAA,OAAA+B,EAAAC,OAAA,EAGA7B,EAAA,EAAAH,EAAA,OAAA,CAAA+B,EAAAC,OAAA,6BAOXlC,EAAA,CAAA,sCAAAM,EAAA,IAAAI,EAAA,EAAA,EAAA,wBAAAc,EAAA,EAAAW,GAAAC,EAAAC,aAAA,KAAA,KAAAD,EAAAC,YAAAC,UAAA,CAAA,EAAA,GAAA,4BAGRvC,EAAA,EAAA,8BAAA,EAAA,+BAEIG,EAAA,cAAAqC,CAAA,EAA2B,QAAAC,EAAAC,KAAA,GD/FnC,IAAaC,IACT,IAAA,CADE,MAAOA,UACDC,EAAmE,CAsE3EC,YACcC,EACFC,EACAC,EACAC,EAAgC,CAExC,MAAK,EALK,KAAAH,YAAAA,EACF,KAAAC,aAAAA,EACA,KAAAC,oBAAAA,EACA,KAAAC,gBAAAA,EAvEZ,KAAAC,0BAA4B,EAC5B,KAAAC,gBAAkB,eAClB,KAAAC,eAAiB,eACR,KAAAC,aAAe,KAAKC,qBAAqB,SAAS,EAClD,KAAAC,QAAU,KAAKC,uBAAsB,EACzCC,YAAW,EACXC,eAAc,EACdC,WAAW,CACR,CACI9B,KAAM,UACN+B,KAAM,CAAEC,KAAM,SAAS,EACvBC,MAAS,iBACTC,YAAa,WAEjB,CACIlC,KAAM,OACN+B,KAAM,CAAEC,KAAM,MAAM,EACpBC,MAAS,cACTC,YAAa,OAChB,CACJ,EACAC,UAAU,CACPnC,KAAM,cACN+B,KAAM,CACFC,KAAM,SACNI,UAAWC,GACXC,eAAgBC,GAASA,EAAMC,IAAIC,GAAKA,EAAE5D,EAAE,EAAE6D,KAAK,GAAG,EACtDC,iBAAkBJ,GAASA,EAAMK,MAAM,GAAG,EAAEJ,IAAI3D,IAAO,CAAEA,GAAAA,CAAE,EAAG,EAC9DgE,SAAUN,GACFA,EAAMO,SAAW,EACV,GAEPP,EAAM,CAAC,EAAEvC,KACFuC,EAAMC,IAAIC,GAAKA,EAAEzC,IAAI,EAAE0C,KAAK,IAAI,EAEhCK,GACH,KAAK9B,YAAY+B,MACZC,eAAe,CAAEC,OAAQ,CAAErE,GAAI,CAAEsE,GAAIZ,EAAMC,IAAIC,GAAKA,EAAE5D,EAAE,CAAC,CAAE,CAAE,CAAE,EAC/DuE,UAAU,CAAC,CAAEC,YAAAA,CAAW,IACrBA,EAAYC,MAAMd,IAAIe,GAAMA,EAAGvD,IAAI,EAAE0C,KAAK,IAAI,CAAC,CAClD,GAKrBT,MAAS,uBACTuB,cAAgBjB,IAAkB,CAC9BkB,aAAc,CACVN,GAAIZ,EAAMC,IAAIC,GAAKA,EAAE5D,EAAE,KAGlC,EACA6E,sBAAsB,KAAKlC,YAAY,EACvCmC,eAAe,KAAKC,KAAK,EAErB,KAAA/C,MAAQ,KAAKgD,qBAAoB,EACrCC,YAAY,YAAa,MAAM,EAC/BC,SAAS,CACN,CAAE/D,KAAM,IAAI,EACZ,CAAEA,KAAM,WAAW,EACnB,CAAEA,KAAM,WAAW,EACnB,CAAEA,KAAM,MAAM,EACd,CAAEA,KAAM,MAAM,CAAE,CACnB,EACAgE,oBAAoB,KAAKxC,YAAY,EACrCmC,eAAe,KAAKC,KAAK,EAS1B,KAAKK,UAAU,CACXC,SAAUC,GACVC,SAAUC,GAAQA,EAAKC,SACvBC,aAAcA,CAACC,EAAMC,IAAQ,CACzB,IAAMC,EAAa,KAAKC,kBAAkBpC,MACtCqC,EAAc,KAAKlD,QAAQmD,kBAAiB,EAChD,OAAIH,IACAE,EAAc,CACV5E,KAAM,CACF8E,SAAUJ,GAEdK,IAAK,CACDD,SAAUJ,KAIf,CACHM,QAAS,CACLR,KAAAA,EACAC,KAAAA,EACAvB,OAAQ+B,EAAA,GACAL,GAAe,CAAA,GAEvBM,eAAgBR,EAAaS,GAAgBC,GAAKD,GAAgBE,IAClEC,KAAM,KAAKzE,MAAM0E,gBAAe,GAG5C,EACAC,qBAAsB,CAAC,KAAK3E,MAAM4E,aAAc,KAAK/D,QAAQ+D,YAAY,EAC5E,CACL,CAEAC,oBAAkB,CACd,KAAKzE,YAAY0E,QAAQC,QAAO,EAAGC,UAAU,CAAC,CAAED,QAAAA,CAAO,IAAM,CACzD,KAAKzE,oBAAoB2E,KAAO,oBAAqB,EACrD,KAAK1E,gBAAgB2E,OAAOH,EAAQ/G,GAAImH,GAAM,CAC1C,GAAIA,EAAIC,QAAUC,GAASC,UAAW,CAClC,IAAMC,EAAO,IAAIC,KAAKC,aAAY,EAAGC,OAAOP,EAAIQ,UAAY,CAAC,EAC7D,KAAKrF,oBAAoBsF,QAAU,6BAA+B,CAC9DC,MAAOV,EAAIW,OAAOC,iBAClBR,KAAAA,EACH,EACD,KAAKS,QAAO,CAChB,MACI,KAAK1F,oBAAoB2F,MAAQ,uBAAwB,CAEjE,CAAC,CACL,CAAC,CACL,CAEAC,cAAcC,EAAiB,CAC3B,KAAK9F,aACA+F,OAAO,CACJC,MAAS,iCACTC,QAAS,CACL,CAAEpF,KAAM,YAAaE,MAAS,eAAgB,EAC9C,CAAEF,KAAM,SAAUE,MAAS,gBAAkBmF,YAAa,EAAI,CAAE,EAEvE,EACAC,KACGC,EAAUC,GAAaA,EAAW,KAAKtG,YAAY0E,QAAQoB,cAAcC,CAAS,EAAIQ,EAAM,EAG5FC,GAAM,GAAG,CAAC,EAEb5B,UACG,IAAK,CACD,KAAK1E,oBAAoBsF,QAAU,+BAAiC,CAChEiB,OAAQ,UACX,EACD,KAAKb,QAAO,CAChB,EACAc,GAAM,CACF,KAAKxG,oBAAoB2F,MAAQ,6BAA+B,CAC5DY,OAAQ,UACX,CACL,CAAC,CAEb,iDA5JS5G,GAAoB8G,EAAAC,CAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,CAAA,EAAAH,EAAAI,EAAA,CAAA,CAAA,CAAA,+BAApBlH,EAAoBmH,UAAA,CAAA,CAAA,mBAAA,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,EAAA,qBAAA,yBAAA,qBAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,QAAA,uBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,aAAA,YAAA,EAAA,CAAA,OAAA,SAAA,kBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,QAAA,UAAA,EAAA,EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,aAAA,qBAAA,uBAAA,KAAA,QAAA,eAAA,aAAA,cAAA,SAAA,EAAA,CAAA,EAAA,aAAA,gBAAA,kBAAA,EAAA,CAAA,EAAA,oBAAA,uBAAA,EAAA,CAAA,KAAA,KAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,aAAA,EAAA,UAAA,kBAAA,MAAA,EAAA,CAAA,KAAA,QAAA,EAAA,SAAA,EAAA,CAAA,KAAA,OAAA,EAAA,UAAA,WAAA,MAAA,EAAA,CAAA,KAAA,OAAA,EAAA,UAAA,MAAA,EAAA,CAAA,KAAA,UAAA,EAAA,SAAA,EAAA,CAAA,KAAA,qBAAA,EAAA,SAAA,EAAA,CAAA,EAAA,cAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,MAAA,cAAA,OAAA,EAAA,YAAA,EAAA,CAAA,QAAA,MAAA,EAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,OAAA,UAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,QAAA,QAAA,OAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,YAAA,EAAA,CAAA,QAAA,aAAA,EAAA,CAAA,YAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,SAAA,EAAA,CAAA,YAAA,SAAA,EAAA,CAAA,EAAA,cAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICtBjCvK,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EACI,EAAA,aAAA,EACC,EAAA,wBAAA,CAAA,4BAILyK,EAAA,qBAAA,SAAAC,EAAA,CAAA,OAAsBF,EAAAG,YAAAD,CAAA,CAAmB,CAAA,EAC5CvK,EAAA,EAAwB,EAE7BH,EAAA,EAAA,cAAA,EACIC,EAAA,EAAA,uBAAA,CAAA,EACAkB,EAAA,EAAAyJ,GAAA,EAAA,EAAA,IAAA,CAAA,EAQA5K,EAAA,EAAA,+BAAA,CAAA,EAAgF,GAAA,SAAA,CAAA,EACtCyK,EAAA,QAAA,UAAA,CAAA,OAASD,EAAAhD,mBAAA,CAAoB,CAAA,EAC/DvH,EAAA,GAAA,WAAA,CAAA,EACAC,EAAA,EAAA,oBACJC,EAAA,EAAS,EACkB,EACpB,EACF,EAErBH,EAAA,GAAA,mBAAA,CAAA,0DAQIyK,EAAA,aAAA,SAAAC,EAAA,CAAA,OAAcF,EAAAK,cAAAH,CAAA,CAAqB,CAAA,EAAC,qBAAA,SAAAA,EAAA,CAAA,OACdF,EAAAM,gBAAAJ,CAAA,CAAuB,CAAA,EAAC,uBAAA,SAAAA,EAAA,CAAA,OACtBF,EAAAO,kBAAAL,CAAA,CAAyB,CAAA,EAEjDzK,EAAA,GAAA,uBAAA,CAAA,EAIwB,GAAA,iBAAA,CAAA,oBAKxBD,EAAA,GAAA,iBAAA,EAAA,oBACImB,EAAA,GAAA6J,GAAA,EAAA,EAAA,aAAA,EAGJ7K,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBAKImB,EAAA,GAAA8J,GAAA,EAAA,EAAA,aAAA,EAGJ9K,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBAKImB,EAAA,GAAA+J,GAAA,EAAA,EAAA,aAAA,EAGJ/K,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACImB,EAAA,GAAAgK,GAAA,EAAA,EAAA,aAAA,EAaJhL,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACImB,EAAA,GAAAiK,GAAA,EAAA,EAAA,aAAA,EAMJjL,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACImB,EAAA,GAAAkK,GAAA,EAAA,EAAA,aAAA,EAGJlL,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACImB,EAAA,GAAAmK,GAAA,EAAA,EAAA,aAAA,EAQJnL,EAAA,EACAH,EAAA,GAAA,iBAAA,EAAA,oBACImB,EAAA,GAAAoK,GAAA,EAAA,EAAA,aAAA,EAGJpL,EAAA,EACAgB,EAAA,GAAAqK,GAAA,EAAA,EAAA,8BAAA,EAAA,EAKJrL,EAAA,SApHgBI,EAAA,CAAA,EAAAH,EAAA,yBAAAK,EAAA,EAAA,GAAA+J,EAAAiB,mBAAA,CAAA,EAAsD,sBAAAhL,EAAA,EAAA,GAAA+J,EAAAkB,gBAAA,CAAA,EAMpCnL,EAAA,CAAA,EAAAH,EAAA,aAAAoK,EAAAnH,cAAA,EAIjB9C,EAAA,EAAAH,EAAA,mBAAAC,EAAA,GAAAsL,EAAA,CAAA,EAKyBpL,EAAA,EAAAH,EAAA,aAAA,EAAA,EAAmB,aAAAoK,EAAAnH,cAAA,EAGzC9C,EAAA,CAAA,EAAAC,EAAA,IAAAC,EAAA,GAAA,GAAA,8BAAA,EAAA,GAAA,EAQhBF,EAAA,CAAA,EAAAH,EAAA,KAAAoK,EAAApH,eAAA,EAAsB,QAAA3C,EAAA,GAAA,GAAA+J,EAAAoB,MAAA,CAAA,EACE,eAAAnL,EAAA,GAAA,GAAA+J,EAAAqB,aAAA,CAAA,EACc,aAAApL,EAAA,GAAA,GAAA+J,EAAAsB,WAAA,CAAA,EACJ,cAAArL,EAAA,GAAA,GAAA+J,EAAAuB,YAAA,CAAA,EACE,UAAAvB,EAAAhH,OAAA,EAOhCjD,EAAA,CAAA,EAAAH,EAAA,aAAAoK,EAAApH,eAAA,EAA8B,gBAAAoH,CAAA,EACR,mBAAAA,EAAAwB,gBAAA,EAItBzL,EAAA,EAAAH,EAAA,oBAAAoK,EAAA/D,iBAAA,EAAuC,wBAAAhG,EAAA,GAAA,GAAA,wCAAA,CAAA,EAG3BF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,WAAA,CAAA,EAAmC,kBAAA,EAAA,EAAiC,OAAA+J,EAAA7H,MAAAsJ,IAAA,IAAA,CAAA,EAMhF1L,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EACnB,OAAA+J,EAAA7H,MAAAsJ,IAAA,WAAA,CAAA,EAQxB1L,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,mBAAA,CAAA,EAA2C,kBAAA,EAAA,EACnB,OAAA+J,EAAA7H,MAAAsJ,IAAA,WAAA,CAAA,EAOZ1L,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,cAAA,CAAA,EAeAF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,cAAA,CAAA,EAAsC,WAAA,EAAA,EAA6B,OAAA+J,EAAA7H,MAAAsJ,IAAA,MAAA,CAAA,EAQnE1L,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,aAAA,CAAA,EAAqC,OAAA+J,EAAA7H,MAAAsJ,IAAA,MAAA,CAAA,EAKrC1L,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,gBAAA,CAAA,EAUAF,EAAA,CAAA,EAAAH,EAAA,UAAAK,EAAA,GAAA,GAAA,4BAAA,CAAA,EAMYF,EAAA,CAAA,EAAAH,EAAA,UAAAoK,EAAAlH,YAAA;4ED9FnBV,CACT,GAAA,EECJ,IAAAsJ,GAAqB,SACrBC,GAAuB,qFGxBvBC,EAAA,EAAA,MAAA,CAAA,EACIC,EAAA,CAAA,gCACJC,EAAA,kBADIC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,gCAAAC,EAAA,EAAAC,GAAAC,EAAA,EAAA,EAAAC,EAAAC,QAAA,CAAA,CAAA,EAAA;CAAA,6BAEJV,EAAA,EAAA,MAAA,CAAA,EACIC,EAAA,CAAA,mEAIJC,EAAA,kBAJIC,EAAA,EAAAC,EAAA,IAAAC,EAAA,EAAA,EAAA,yCAAAM,GAAA,GAAAC,GAAAP,EAAA,EAAA,EAAAG,EAAA,EAAA,EAAAC,EAAAI,WAAA,EAAAJ,EAAAK,YAAA,EAAAN,EAAA,EAAA,EAAAC,EAAAC,QAAA,CAAA,CAAA,EAAA;CAAA,GDOJ,IAAaK,IAA2B,IAAA,CAAlC,MAAOA,CAA2B,CAYpCC,YAAoBC,EAAwB,CAAxB,KAAAA,YAAAA,EAHZ,KAAAC,aAAe,IAAIC,GAAwB,CAAC,EAC5C,KAAAC,qBAAuB,IAAID,GAAwB,EAAE,CAEd,CAE/CE,UAAQ,CACJ,IAAMC,EAAY,KAAKL,YAAYM,SAC9BC,kBAAkB,IAAK,EAAG,aAAa,EACvCC,UAAUC,GAAQA,EAAKC,SAASC,KAAK,EACpCC,EAAiB,KAAKZ,YAAYM,SACnCO,iBAAiB,aAAa,EAC9BC,uBAAsB,EACtBN,UAAUC,GAAQA,EAAKM,aAAa,EAEzC,KAAKtB,SAAWuB,GAAcJ,EAAgBP,EAAW,KAAKF,oBAAoB,EAAEc,KAChFC,EAAI,CAAC,CAACC,EAAST,EAAUU,CAAa,IAAK,CACvC,IAAMC,EAAiBF,EAAQE,eAC/B,GAAI,CAACA,EACD,MAAO,GAEX,IAAMC,EAAiBZ,EAASa,KAC5BC,GAAWA,EAAQC,KAAKC,KAAOL,EAAeK,IAAMF,EAAQG,SAASD,KAAON,CAAa,EAG7F,OAAKE,EAGEA,EAAeM,MAFX,CAGf,CAAC,CAAC,EAGN,KAAKhC,YAAcoB,GAAc,KAAKvB,SAAU,KAAKQ,YAAY,EAAEgB,KAC/DC,EAAI,CAAC,CAACM,EAASK,CAAK,IAAMC,KAAKC,MAAMF,IAAU,IAAML,GAAW,IAAI,CAAC,CAAC,CAE9E,CAEAQ,YAAYC,EAAsB,CAC1B,UAAWA,GACX,KAAKhC,aAAaiC,KAAKD,EAAQJ,MAAMM,YAAY,EAEjD,kBAAmBF,GACnB,KAAK9B,qBAAqB+B,KAAKD,EAAQb,cAAce,YAAY,CAEzE,iDApDSrC,GAA2BsC,EAAAC,CAAA,CAAA,CAAA,CAAA,+BAA3BvC,EAA2BwC,UAAA,CAAA,CAAA,0BAAA,CAAA,EAAAC,OAAA,CAAAC,iBAAA,mBAAAX,MAAA,QAAAhC,aAAA,eAAAuB,cAAA,eAAA,EAAAqB,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,QAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICZxCjE,EAAA,EAAA,QAAA,CAAA,EAAiCC,EAAA,CAAA,mBAAiCC,EAAA,EAClEiE,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,EAA4C,EAAAC,GAAA,EAAA,GAAA,MAAA,CAAA,SADXlE,EAAA,EAAAmE,EAAA9D,EAAA,EAAA,EAAA,eAAA,CAAA,EAC3BL,EAAA,CAAA,EAAAoE,EAAA,OAAAL,EAAAT,gBAAA,EAGAtD,EAAA,EAAAoE,EAAA,OAAA,CAAAL,EAAAT,gBAAA;sGDQO1C,CAA2B,GAAA,4BGZxCyD,EAAA,EAAA,MAAA,CAAA,EACIC,EAAA,EAAA,gBAAA,CAAA,oCAMAD,EAAA,EAAA,MAAA,CAAA,EAA4B,EAAA,gBAAA,CAAA,mBAEpBE,EAAA,CAAA,wBACJC,EAAA,EACAH,EAAA,EAAA,gBAAA,CAAA,oBACIE,EAAA,EAAA,yBACJC,EAAA,EAAgB,EACd,kBAZFC,EAAA,EAAAC,EAAA,QAAAC,EAAA,EAAA,EAAA,0BAAA,CAAA,EAAgD,UAAAA,EAAA,EAAA,EAAA,kCAAA,CAAA,EAMjCF,EAAA,CAAA,EAAAC,EAAA,QAAAC,EAAA,EAAA,GAAA,cAAA,CAAA,EACXF,EAAA,CAAA,EAAAG,EAAA,IAAAC,EAAA,EAAA,GAAAC,EAAAC,QAAAC,MAAAF,EAAAC,QAAAE,YAAA,EAAA,GAAA,EAEWR,EAAA,CAAA,EAAAC,EAAA,QAAAC,EAAA,GAAA,GAAA,uBAAA,CAAA,EACXF,EAAA,CAAA,EAAAG,EAAA,IAAAC,EAAA,GAAA,GAAAC,EAAAC,QAAAG,aAAAJ,EAAAC,QAAAE,YAAA,EAAA,GAAA,GDCZ,IAAaE,IAAmC,IAAA,CAA1C,MAAOA,CAAmC,CAK5CC,sCAAoC,CAChC,IAAMC,EACF,KAAKN,QAAQO,OAAOC,KAAKC,GAAKA,EAAEP,eAAiB,KAAKQ,0BAA0B,GAChF,KAAKV,QAAQO,OAAO,CAAC,EACzB,OAAKD,EAGD,KAAKK,wBACE,KAAKX,QAAQG,eAAiBG,EAAaL,MAE3C,KAAKD,QAAQC,QAAUK,EAAaL,MALpC,EAOf,iDAjBSG,EAAmC,CAAA,+BAAnCA,EAAmCQ,UAAA,CAAA,CAAA,mCAAA,CAAA,EAAAC,OAAA,CAAAF,wBAAA,0BAAAX,QAAA,UAAAU,2BAAA,4BAAA,EAAAI,WAAA,GAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,QAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,uBAAA,EAAA,CAAA,MAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,YAAA,MAAA,EAAA,CAAA,EAAA,OAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,GCbhDE,EAAA,EAAAC,GAAA,GAAA,GAAA,MAAA,CAAA,OAAM3B,EAAA,OAAAyB,EAAAf,qCAAA,CAAA;+GDaOD,CAAmC,GAAA,2BGDxCmB,EAAA,CAAA,oBAAAC,GAAA,IAAAC,EAAAC,KAAA,KAAAD,EAAAE,IAAA,IAAA,sCAZRC,EAAA,EAAA,YAAA,CAAA,gCAKIC,GAAA,gBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAAC,OAAAC,GAAAH,EAAAI,kBAAAP,CAAA,IAAAG,EAAAI,kBAAAP,GAAAQ,EAAAR,CAAA,CAAA,CAAA,EAIAS,EAAA,SAAA,SAAAT,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,EAAA,OAAAI,EAAUL,EAAAO,SAAAV,CAAA,CAAgB,CAAA,CAAA,EAE1BW,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,EAGJC,EAAA,oBAZIC,EAAA,QAAAC,EAAA,EAAA,EAAAZ,EAAAa,SAAA,CAAA,EAGAC,GAAA,UAAAd,EAAAI,iBAAA,EACAO,EAAA,WAAAX,EAAAe,QAAA,EAAqB,YAAA,EAAA,EACF,cAAAH,EAAA,EAAA,EAAA,gCAAA,CAAA,GDGvB,IAAMI,GAAkCC;;;;;;;;;;;EAoB3BC,IAAgC,IAAA,CAAvC,MAAOA,CAAgC,CAIzCC,YACYC,EACAC,EAAc,CADd,KAAAD,YAAAA,EACA,KAAAC,OAAAA,EAWZ,KAAAN,SAAW,CACPO,EACAC,IAEAA,EAAK9B,KAAK+B,YAAW,EAAGC,SAASH,EAAKE,YAAW,CAAE,GACnDD,EAAK7B,IAAI8B,YAAW,EAAGC,SAASH,EAAKE,YAAW,CAAE,CAfnD,CAEHE,UAAQ,CACJ,KAAKb,UAAY,KAAKO,YACjBO,MAAMC,GAAqC,CACxCC,GAAI,KAAKC,UACZ,EACAC,UAAUC,GAAQA,EAAKC,SAASC,UAAY,CAAA,CAAE,CACvD,CASA3B,SAASgB,EAAmF,CACpFA,GACA,KAAKF,OACAc,SAAS,CAAC,UAAW,WAAY,KAAKL,UAAW,WAAYP,EAAKM,EAAE,CAAC,EACrEO,KAAK,IAAO,KAAKhC,kBAAoBiC,MAAU,CAE5D,iDA9BSnB,GAAgCoB,EAAAC,CAAA,EAAAD,EAAAE,EAAA,CAAA,CAAA,CAAA,+BAAhCtB,EAAgCuB,UAAA,CAAA,CAAA,gCAAA,CAAA,EAAAC,OAAA,CAAAZ,UAAA,WAAA,EAAAa,WAAA,GAAAC,MAAA,EAAAC,KAAA,EAAAC,OAAA,CAAA,CAAA,WAAA,OAAA,YAAA,KAAA,EAAA,QAAA,UAAA,WAAA,YAAA,cAAA,gBAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,OAAA,YAAA,KAAA,EAAA,gBAAA,SAAA,QAAA,UAAA,WAAA,YAAA,aAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,IAAAD,EAAA,IC9B7CxC,EAAA,EAAA0C,GAAA,EAAA,EAAA,YAAA,CAAA,2BACKvC,EAAA,SAAAwC,EAAAvC,EAAA,EAAA,EAAAqC,EAAApC,SAAA,IAAA,KAAA,KAAAsC,EAAAC,QAAA,CAAA,gFD6BQlC,CAAgC,GAAA,yJLzBzBmC,EAAA,EAAA,wBAAA,CAAA,4BAMIC,EAAA,qBAAA,SAAAC,EAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAC,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAsBF,EAAAG,YAAAN,CAAA,CAAmB,CAAA,CAAA,EAC5CO,EAAA,+BAJGC,EAAA,WAAAC,EAAA,EAAA,EAAAN,EAAAO,MAAA,CAAA,EAA2B,yBAAAC,CAAA,EACkB,sBAAAF,EAAA,EAAA,EAAAN,EAAAS,aAAA,CAAA,6BALrDC,EAAA,CAAA,EACIC,EAAA,EAAAC,GAAA,EAAA,EAAA,wBAAA,CAAA,yBACKC,EAAA,EAAAR,EAAA,OAAAG,EAAAM,OAAA,CAAA,sCAcbnB,EAAA,EAAA,SAAA,CAAA,EAGIC,EAAA,QAAA,UAAA,CAAAE,EAAAiB,CAAA,EAAA,IAAAf,EAAAC,EAAA,EAAA,OAAAC,EAASF,EAAAgB,KAAA,CAAM,CAAA,CAAA,EASfC,EAAA,CAAA,mBACJb,EAAA,oBATIC,EAAA,YAAAL,EAAAkB,WAAAC,SAAAnB,EAAAoB,gBAAAD,SAAAnB,EAAAqB,WAAAF,SAAAnB,EAAAkB,WAAAI,UAAAtB,EAAAoB,gBAAAE,UAAAtB,EAAAqB,WAAAC,WAAA,CAAAtB,EAAAuB,cAAA,CAAA,EAQAV,EAAA,EAAAW,EAAA,IAAAlB,EAAA,EAAA,EAAA,eAAA,EAAA,GAAA,6BAWIX,EAAA,EAAA,oBAAA,EACI8B,EAAA,EAAA,QAAA,EAAA,EAMA9B,EAAA,EAAA,OAAA,EAAOsB,EAAA,CAAA,mBAAkCb,EAAA,EAAQ,mBAF7CS,EAAA,EAAAR,EAAA,cAAAL,EAAAkB,WAAAQ,IAAAC,EAAA,EAAAC,EAAA,CAAA,CAAA,EAEGf,EAAA,CAAA,EAAAgB,EAAAvB,EAAA,EAAA,EAAA,gBAAA,CAAA,6BAMXX,EAAA,EAAA,WAAA,EAAA,EAIC,EAAA,MAAA,EACSsB,EAAA,CAAA,EAAsCb,EAAA,EAC5Ca,EAAA,CAAA,EACJb,EAAA,iCALIC,EAAA,YAAAL,EAAA8B,gBAAAC,EAAAC,OAAA,CAAA,EAA6C,SAAA,EAAA,EAGvCnB,EAAA,CAAA,EAAAW,EAAA,GAAAxB,EAAA8B,gBAAAC,EAAAC,OAAA,EAAA,GAAA,EACNnB,EAAA,EAAAW,EAAA,IAAAxB,EAAAiC,WAAAF,CAAA,EAAA,GAAA,0BAIJpC,EAAA,EAAA,IAAA,EAAA,EAKI8B,EAAA,EAAA,WAAA,EAAA,EACAR,EAAA,CAAA,mBACJb,EAAA,SANIC,EAAA,aAAAsB,EAAA,EAAAO,EAAA,CAAA,EAKArB,EAAA,CAAA,EAAAW,EAAA,IAAAlB,EAAA,EAAA,EAAA,sBAAA,EAAA,GAAA,6BAlBZX,EAAA,EAAA,WAAA,EAAA,mBACIA,EAAA,EAAA,MAAA,EAAA,EACIgB,EAAA,EAAAwB,GAAA,EAAA,EAAA,WAAA,EAAA,cAQJ/B,EAAA,EACAT,EAAA,EAAA,KAAA,EACIgB,EAAA,EAAAyB,GAAA,EAAA,EAAA,IAAA,EAAA,EAQJhC,EAAA,EAAM,6BApB+BC,EAAA,QAAAC,EAAA,EAAA,EAAA,yBAAA,CAAA,EAGVO,EAAA,CAAA,EAAAR,EAAA,UAAAgC,EAAA,EAAA,EAAAC,EAAAC,QAAA,SAAA,CAAA,EAYlB1B,EAAA,CAAA,EAAAR,EAAA,mBAAAL,EAAAwC,iBAAA,sCASL7C,EAAA,EAAA,uBAAA,EAAA,uBAIIC,EAAA,SAAA,UAAA,CAAA,IAAA6C,EAAA3C,EAAA4C,CAAA,EAAAC,UAAA3C,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAAUF,EAAA4C,iBAAAH,EAAAI,EAAA,CAA+B,CAAA,CAAA,EAC5CzC,EAAA,mCAHGC,EAAA,aAAAoC,CAAA,EAAyB,YAAAnC,EAAA,EAAA,EAAAN,EAAAwC,iBAAA,CAAA,sCAM7B7C,EAAA,EAAA,SAAA,EAAA,EAGIC,EAAA,QAAA,UAAA,CAAAE,EAAAgD,CAAA,EAAA,IAAA9C,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAA+C,iBAAA,CAAkB,CAAA,CAAA,EAE3BtB,EAAA,EAAA,WAAA,EAAA,EACAR,EAAA,CAAA,mBACJb,EAAA,QADIS,EAAA,CAAA,EAAAW,EAAA,IAAAlB,EAAA,EAAA,EAAA,oBAAA,EAAA,GAAA,4BAMRmB,EAAA,EAAA,uBAAA,EAAA,oBAAwDpB,EAAA,SAAA2C,CAAA,6BA0B5DrD,EAAA,EAAA,WAAA,EAAA,mBACI8B,EAAA,EAAA,2BAAA,EAAA,uBAMJrB,EAAA,mBAPUC,EAAA,QAAAC,EAAA,EAAA,EAAA,sBAAA,CAAA,EAGFO,EAAA,CAAA,EAAAR,EAAA,eAAAL,EAAAiD,YAAA,EAA6B,wBAAAjD,EAAAkB,WAAAQ,IAAA,cAAA,CAAA,EAC2B,WAAA,CAAApB,EAAA,EAAA,EAAAN,EAAAwC,iBAAA,CAAA,6BAqBhD7C,EAAA,EAAA,SAAA,EAAA,EAIIsB,EAAA,CAAA,EACJb,EAAA,0BAHIC,EAAA,QAAA6C,EAAAL,EAAA,EAEAhC,EAAA,EAAAW,EAAA,IAAA0B,EAAAC,KAAA,GAAA,sCA2BJxD,EAAA,EAAA,KAAA,EAA4C,EAAA,SAAA,EAAA,EAIpCC,EAAA,QAAA,UAAA,CAAAE,EAAAsD,CAAA,EAAA,IAAAC,EAAApD,EAAA,EAAA0C,UAAA3C,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAsD,kBAAkBD,EAAA3B,IAAU,QAAQ,CAAC,CAAC,CAAA,CAAA,EAE/CD,EAAA,EAAA,WAAA,EAAA,EACJrB,EAAA,EAAS,qCAJLS,EAAA,EAAAR,EAAA,WAAAgD,EAAAE,MAAAC,eAAAxD,EAAAyD,0BAAA,6BAehB9D,EAAA,EAAA,MAAA,EAAA,EAA6D,EAAA,MAAA,EAAA,EAClC,EAAA,OAAA,EAAA,EACCsB,EAAA,CAAA,mBAAwCb,EAAA,EAAO,EAEvEqB,EAAA,EAAA,2BAAA,EAAA,uBAMJrB,EAAA,mCAR4BS,EAAA,CAAA,EAAAgB,EAAAvB,EAAA,EAAA,EAAA,sBAAA,CAAA,EAIpBO,EAAA,CAAA,EAAAR,EAAA,eAAAL,EAAA0D,iBAAA,EAAkC,wBAAAL,EAAA3B,IAAAC,EAAA,EAAAgC,EAAA,CAAA,CAAA,EACmB,WAAA,CAAArD,EAAA,EAAA,EAAAN,EAAAwC,iBAAA,CAAA,6BA/CjE7C,EAAA,EAAA,MAAA,EAAA,EAA4F,EAAA,iBAAA,EAAA,oCAapFA,EAAA,EAAA,MAAA,EAAA,EACI8B,EAAA,EAAA,qBAAA,EAAA,uBAQAd,EAAA,EAAAiD,GAAA,EAAA,EAAA,MAAA,CAAA,EASJxD,EAAA,EAAM,EAEVqB,EAAA,EAAA,2BAAA,EAAA,eAOAd,EAAA,GAAAkD,GAAA,EAAA,EAAA,MAAA,EAAA,EAWJzD,EAAA,iCAnDwEC,EAAA,YAAAgD,CAAA,EAEhExC,EAAA,EAAAR,EAAA,QAAAC,EAAA,EAAA,GAAA,eAAA,GAAA,EAAAN,EAAAqB,WAAAP,OAAA,KAAAuC,EAAAE,MAAAC,aAAA,IAAA,GAAA,EAGC,UAAA,EAAAxD,EAAAqB,WAAAP,QAAAuC,EAAAE,MAAAC,eAAAxD,EAAAyD,2BAAAnD,EAAA,EAAA,GAAA,0BAAA,EAAAwD,MAAA,EAQ0BjD,EAAA,CAAA,EAAAkD,EAAA,mBAAAV,EAAAE,MAAAS,SAAA,EAAA,EAGnBnD,EAAA,EAAAR,EAAA,eAAAgD,EAAAE,MAAAC,YAAA,EAAyC,WAAA,CAAAlD,EAAA,EAAA,GAAAN,EAAAwC,iBAAA,GAAAa,EAAAE,MAAAS,SAAA,EAAA,EAMvCnD,EAAA,CAAA,EAAAR,EAAA,OAAA,EAAAL,EAAAqB,WAAA4C,SAAAnD,MAAA,EAYVD,EAAA,EAAAR,EAAA,QAAAgD,EAAAE,MAAAW,KAAA,EAA2B,eAAAb,EAAAE,MAAAC,YAAA,EACc,mBAAAlD,EAAA,EAAA,GAAAN,EAAAmE,wBAAA,CAAA,EACY,gBAAAnE,EAAAkB,WAAAQ,IAAA,eAAA,EAAA6B,KAAA,EAI5B1C,EAAA,CAAA,EAAAR,EAAA,OAAAL,EAAA0D,kBAAA5C,MAAA,sCA4BjBnB,EAAA,EAAA,SAAA,EAAA,EAGIC,EAAA,QAAA,UAAA,CAAA,IAAAwE,EAAAtE,EAAAuE,CAAA,EAAA1B,UAAA3C,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAsE,mBAAAF,CAAA,CAAgC,CAAA,CAAA,EAEzCnD,EAAA,CAAA,4BACJb,EAAA,4BADIS,EAAA,EAAAW,EAAA,IAAAlB,EAAA,EAAA,EAAA8D,CAAA,EAAA,GAAA,6BAbhBzE,EAAA,EAAA,KAAA,EAAwC,EAAA,cAAA,EACtB,EAAA,SAAA,EAAA,EAEN8B,EAAA,EAAA,WAAA,EAAA,EACAR,EAAA,CAAA,mBACAQ,EAAA,EAAA,WAAA,EAAA,EACJrB,EAAA,EACAT,EAAA,EAAA,mBAAA,EACIgB,EAAA,EAAA4D,GAAA,EAAA,EAAA,SAAA,EAAA,EAOJnE,EAAA,EAAoB,EACT,uBAZPS,EAAA,CAAA,EAAAW,EAAA,IAAAlB,EAAA,EAAA,EAAA,uCAAA,EAAA,GAAA,EAM6BO,EAAA,CAAA,EAAAR,EAAA,UAAAmE,CAAA,6BAX7C9D,EAAA,CAAA,EACIC,EAAA,EAAA8D,GAAA,EAAA,EAAA,MAAA,CAAA,yBAAM5D,EAAA,EAAAR,EAAA,OAAAmE,EAAA1D,MAAA,6BA2EVnB,EAAA,EAAA,MAAA,EAAA,EAIC,EAAA,iBAAA,EAAA,mBASO8B,EAAA,EAAA,QAAA,EAAA,uBAMJrB,EAAA,EACAT,EAAA,EAAA,gBAAA,EAAA,mBAOIsB,EAAA,CAAA,EACJb,EAAA,EAAgB,2CAzBhBC,EAAA,YAAAqE,CAAA,EAGI7D,EAAA,EAAAR,EAAA,UAAAsE,EAAAD,EAAAhD,IAAA,mBAAA,IAAA,KAAA,KAAAiD,EAAApB,OAAA,KAAAjD,EAAA,EAAA,EAAA,uBAAA,CAAA,EAIC,MAAA,iBAAAsE,EAAAF,EAAAhD,IAAA,iBAAA,IAAA,KAAA,KAAAkD,EAAArB,MAAA,EAIG1C,EAAA,CAAA,EAAAR,EAAA,KAAA,iBAAAwE,EAAAH,EAAAhD,IAAA,iBAAA,IAAA,KAAA,KAAAmD,EAAAtB,MAAA,EAAgE,WAAA,CAAAjD,EAAA,EAAA,EAAAN,EAAAwC,iBAAA,CAAA,EAOpE3B,EAAA,CAAA,EAAAR,EAAA,UAAAyE,EAAAJ,EAAAhD,IAAA,mBAAA,IAAA,KAAA,KAAAoD,EAAAvB,OAAA,KAAAjD,EAAA,EAAA,GAAA,yBAAA,CAAA,EAMAO,EAAA,CAAA,EAAAW,EAAA,KAAAuD,EAAAL,EAAAhD,IAAA,gBAAA,IAAA,KAAA,KAAAqD,EAAAxB,MAAA,GAAA,sCAYQ5D,EAAA,EAAA,SAAA,EAAA,EAGIC,EAAA,QAAA,UAAA,CAAA,IAAAoF,EAAAlF,EAAAmF,CAAA,EAAAtC,UAAA3C,EAAAC,EAAA,CAAA,EAAA,OAAAC,EAASF,EAAAkF,iBAAAF,CAAA,CAA+B,CAAA,CAAA,EAExCvD,EAAA,EAAA,WAAA,EAAA,EAAyCR,EAAA,CAAA,EAC7Cb,EAAA,4BAD6CS,EAAA,CAAA,EAAAW,EAAA,IAAAwD,EAAA7B,KAAA,GAAA,6BAbzDxD,EAAA,EAAA,KAAA,EAAyC,EAAA,cAAA,EACvB,EAAA,SAAA,EAAA,EAEN8B,EAAA,EAAA,WAAA,EAAA,EACAR,EAAA,CAAA,mBACAQ,EAAA,EAAA,WAAA,EAAA,EACJrB,EAAA,EACAT,EAAA,EAAA,mBAAA,EACIgB,EAAA,EAAAwE,GAAA,EAAA,EAAA,SAAA,EAAA,EAOJ/E,EAAA,EAAoB,EACT,uBAZPS,EAAA,CAAA,EAAAW,EAAA,IAAAlB,EAAA,EAAA,EAAA,4BAAA,EAAA,GAAA,EAM8BO,EAAA,CAAA,EAAAR,EAAA,UAAA+E,CAAA,6BAX9C1E,EAAA,CAAA,EACIC,EAAA,EAAA0E,GAAA,EAAA,EAAA,MAAA,CAAA,yBAAMxE,EAAA,EAAAR,EAAA,OAAA+E,EAAAtE,MAAA,sCA9R1BnB,EAAA,EAAA,OAAA,EAAA,EAA+E,EAAA,wBAAA,EACnD,EAAA,yBAAA,EAEf,EAAA,UAAA,EAAU,EAAA,iBAAA,EAAA,mBAEHgB,EAAA,EAAA2E,GAAA,EAAA,EAAA,qBAAA,EAAA,EASJlF,EAAA,EAAiB,EAErBO,EAAA,EAAA4E,GAAA,EAAA,EAAA,WAAA,EAAA,EAsBA5F,EAAA,EAAA,WAAA,EAAA,mBACIA,EAAA,GAAA,MAAA,EAAA,EACIgB,EAAA,GAAA6E,GAAA,EAAA,EAAA,uBAAA,EAAA,gBAMJpF,EAAA,EACAT,EAAA,GAAA,KAAA,EACIgB,EAAA,GAAA8E,GAAA,EAAA,EAAA,SAAA,EAAA,EAQJrF,EAAA,EAAM,EAGVT,EAAA,GAAA,UAAA,EACIgB,EAAA,GAAA+E,GAAA,EAAA,EAAA,uBAAA,EAAA,gBACJtF,EAAA,EAAW,EAGfT,EAAA,GAAA,gBAAA,EACI8B,EAAA,GAAA,SAAA,EAAA,EACA9B,EAAA,GAAA,UAAA,EAAU,GAAA,MAAA,EAAA,EACiB,GAAA,iBAAA,EAAA,oBAEf8B,EAAA,GAAA,QAAA,EAAA,wBAMJrB,EAAA,EACAT,EAAA,GAAA,iBAAA,EAAA,oBACI8B,EAAA,GAAA,QAAA,EAAA,wBAMJrB,EAAA,EAAiB,EACf,EAEVO,EAAA,GAAAgF,GAAA,EAAA,EAAA,WAAA,EAAA,EAQAlE,EAAA,GAAA,mCAAA,EAAA,EAKA9B,EAAA,GAAA,WAAA,EAAA,oBACIA,EAAA,GAAA,aAAA,EAAA,EAIIC,EAAA,SAAA,SAAAC,EAAA,CAAAC,EAAA8F,CAAA,EAAA,IAAA5F,EAAAC,EAAA,EAAA,OAAAC,EAAAF,EAAA6F,aAAAhG,CAAA,CAAA,CAAA,EAJJO,EAAA,EAKE,EAENT,EAAA,GAAA,WAAA,EAAA,oBACIA,EAAA,GAAA,MAAA,EAAA,EAAuB,GAAA,iBAAA,EAAA,oBAEfA,EAAA,GAAA,SAAA,EAAA,EACIgB,EAAA,GAAAmF,GAAA,EAAA,EAAA,SAAA,EAAA,gBAMJ1F,EAAA,EAAS,EACI,EAErBO,EAAA,GAAAoF,GAAA,GAAA,GAAA,MAAA,EAAA,EAqDAtE,EAAA,GAAA,oCAAA,EAAA,gBAMAd,EAAA,GAAAqF,GAAA,EAAA,EAAA,eAAA,CAAA,gBAoBJ5F,EAAA,EACAT,EAAA,GAAA,WAAA,EAAA,oBACIA,EAAA,GAAA,MAAA,EAAA,EAAuB,GAAA,iBAAA,EAAA,sCAMfA,EAAA,GAAA,SAAA,EAAA,wBAKIA,EAAA,GAAA,SAAA,EAAA,EACIsB,EAAA,EAAA,oBACJb,EAAA,EACAT,EAAA,GAAA,SAAA,EAAA,EACIsB,EAAA,EAAA,oBACJb,EAAA,EACAT,EAAA,GAAA,SAAA,EAAA,EACIsB,EAAA,EAAA,oBACJb,EAAA,EAAS,EACJ,EAGbT,EAAA,GAAA,gBAAA,EAAA,sCAII8B,EAAA,GAAA,QAAA,EAAA,wBASA9B,EAAA,GAAA,oBAAA,EACI8B,EAAA,GAAA,QAAA,EAAA,wBASA9B,EAAA,GAAA,OAAA,EACKsB,EAAA,EAAA,oBAEEb,EAAA,EACN,EACgB,EACT,EAEpBO,EAAA,GAAAsF,GAAA,EAAA,GAAA,MAAA,EAAA,EAIC,GAAAC,GAAA,EAAA,EAAA,eAAA,CAAA,gBA8CL9F,EAAA,EAAW,EACE,EACI,+BAnTVC,EAAA,YAAAL,EAAAkB,UAAA,EAIaL,EAAA,CAAA,EAAAR,EAAA,QAAAC,EAAA,EAAA,GAAA,oBAAA,CAAA,EACSO,EAAA,CAAA,EAAAR,EAAA,mBAAAsB,EAAA,IAAAwE,EAAA,CAAA,EAWlBtF,EAAA,EAAAR,EAAA,OAAAiC,EAAAC,QAAAzB,MAAA,EAsBDD,EAAA,EAAAR,EAAA,QAAAC,EAAA,EAAA,GAAA,gBAAA,CAAA,EAGyBO,EAAA,CAAA,EAAAR,EAAA,UAAAC,EAAA,GAAA,GAAAN,EAAAoG,YAAA,CAAA,EAStBvF,EAAA,CAAA,EAAAR,EAAA,mBAAAL,EAAAwC,iBAAA,EAUc3B,EAAA,CAAA,EAAAR,EAAA,OAAAC,EAAA,GAAA,GAAAN,EAAAqG,OAAA,CAAA,EAQHxF,EAAA,CAAA,EAAAR,EAAA,QAAAC,EAAA,GAAA,GAAA,aAAA,CAAA,EAKRO,EAAA,CAAA,EAAAR,EAAA,WAAA,CAAAC,EAAA,GAAA,GAAAqB,EAAA,IAAAwE,EAAA,CAAA,CAAA,EAGQtF,EAAA,CAAA,EAAAR,EAAA,QAAAC,EAAA,GAAA,GAAA,aAAA,CAAA,EAKRO,EAAA,CAAA,EAAAR,EAAA,WAAA,CAAAC,EAAA,GAAA,GAAAN,EAAAwC,iBAAA,CAAA,EAKwC3B,EAAA,CAAA,EAAAR,EAAA,OAAAL,EAAAiD,aAAAnC,MAAA,EAUpDD,EAAA,EAAAR,EAAA,UAAAL,EAAAqG,OAAA,EAAmB,aAAArG,EAAAkB,UAAA,EAGbL,EAAA,EAAAR,EAAA,QAAAC,EAAA,GAAA,GAAA,gBAAA,CAAA,EAEFO,EAAA,CAAA,EAAAR,EAAA,SAAAL,EAAA6F,aAAAS,QAAAhE,EAAAgE,MAAA,EAAgD,gBAAAtG,EAAA6F,aAAAU,eAAAjE,EAAAiE,aAAA,EACqB,oBAAAvG,EAAAwC,iBAAA,EAKnE3B,EAAA,EAAAR,EAAA,QAAAC,EAAA,GAAA,GAAA,uBAAA,CAAA,EAEcO,EAAA,CAAA,EAAAR,EAAA,QAAAC,EAAA,GAAA,GAAA,sBAAA,CAAA,EAGoBO,EAAA,CAAA,EAAAR,EAAA,UAAAC,EAAA,GAAA,GAAAN,EAAAwG,cAAA,CAAA,EAQQ3F,EAAA,CAAA,EAAAR,EAAA,UAAAL,EAAAqB,WAAA4C,QAAA,EAsD5CpD,EAAA,EAAAR,EAAA,0BAAAC,EAAA,GAAA,GAAAN,EAAAmE,wBAAA,CAAA,EAA4D,6BAAAnE,EAAAyD,0BAAA,EACH,UAAAnB,CAAA,EAI9CzB,EAAA,CAAA,EAAAR,EAAA,OAAAC,EAAA,GAAA,GAAAN,EAAAyG,oBAAA,CAAA,EAqBT5F,EAAA,CAAA,EAAAR,EAAA,QAAAC,EAAA,GAAA,GAAA,sBAAA,CAAA,EAIEO,EAAA,CAAA,EAAAR,EAAA,QAAAC,EAAA,GAAA,GAAA,yBAAA,CAAA,EAA+C,UAAAA,EAAA,GAAA,GAAA,iCAAA,CAAA,EAM3CO,EAAA,CAAA,EAAAR,EAAA,WAAA,CAAAC,EAAA,GAAA,GAAAN,EAAAwC,iBAAA,CAAA,EAEQ3B,EAAA,CAAA,EAAAR,EAAA,QAAAL,EAAA0G,WAAAC,IAAA,EACJ9F,EAAA,EAAAW,EAAA,IAAAlB,EAAA,GAAA,GAAA,8BAAA,EAAA,GAAA,EAEIO,EAAA,CAAA,EAAAR,EAAA,QAAAL,EAAA0G,WAAAE,KAAA,EACJ/F,EAAA,EAAAW,EAAA,IAAAlB,EAAA,GAAA,GAAA,+BAAA,EAAA,GAAA,EAEIO,EAAA,CAAA,EAAAR,EAAA,QAAAL,EAAA0G,WAAAG,OAAA,EACJhG,EAAA,EAAAW,EAAA,IAAAlB,EAAA,GAAA,GAAA,iCAAA,EAAA,GAAA,EAMRO,EAAA,CAAA,EAAAR,EAAA,QAAAC,EAAA,GAAA,GAAA,gCAAA,CAAA,EAAsD,UAAAA,EAAA,GAAA,GAAA,wCAAA,CAAA,EAMlDO,EAAA,CAAA,EAAAR,EAAA,WAAA,CAAAC,EAAA,GAAA,GAAAN,EAAAwC,iBAAA,CAAA,EAAiD,gBAAAsE,EAAA9G,EAAAkB,WAAAQ,IAAA,8BAAA,IAAA,KAAA,KAAAoF,EAAAvD,SAAA,IAAAvD,EAAA+G,sBAAA/G,EAAAkB,UAAA,CAAA,EAY7CL,EAAA,CAAA,EAAAR,EAAA,cAAA,CAAAC,EAAA,GAAA,GAAAN,EAAAwC,iBAAA,GAAAxC,EAAA+G,sBAAA/G,EAAAkB,UAAA,CAAA,EAKCL,EAAA,CAAA,EAAAmG,GAAA,GAAA1G,EAAA,GAAA,GAAA,0BAAA,EAAA,KAAAN,EAAAiH,0BAAA,GAAA,EASUpG,EAAA,CAAA,EAAAR,EAAA,UAAAL,EAAAoB,gBAAA6C,QAAA,EA4BZpD,EAAA,EAAAR,EAAA,OAAAC,EAAA,GAAA,GAAAN,EAAAkH,oBAAA,CAAA,GD/P/B,IAAaC,IACT,IAAA,CADE,MAAOA,UACDC,EAAkF,CAgD1FC,YACYC,EACAC,EACAC,EACAC,EACEC,EACFC,EAAiC,CAEzC,MAAK,EAPG,KAAAL,qBAAAA,EACA,KAAAC,YAAAA,EACA,KAAAC,aAAAA,EACA,KAAAC,oBAAAA,EACE,KAAAC,YAAAA,EACF,KAAAC,eAAAA,EAnDI,KAAAnF,kBAAoB,CAACoF,EAAWC,cAAeD,EAAWE,aAAa,EAC9E,KAAA7E,aAAe,KAAK8E,qBAAqB,gBAAgB,EACzD,KAAArE,kBAAoB,KAAKqE,qBAAqB,qBAAqB,EACnE,KAAAC,mBAAqB,KAAKD,qBAAqB,eAAe,EAEvE,KAAA7G,WAAa,KAAKqG,YAAYU,MAAwB,CAClDpF,GAAI,GACJqF,QAAS,GACTC,IAAK,GACLhF,KAAM,GACNiF,cAAe,GACfC,YAAa,EACbC,6BAA8B,GAC9BC,oBAAqB,EACrBC,eAAgB9B,GAAWC,KAC3B8B,cAAe,CAAA,EACfxF,aAAc,KAAKsE,YAAYU,MAAMS,GAAwB,KAAKzF,YAAY,CAAC,EAClF,EACD,KAAA7B,gBAAkB,KAAKmG,YAAYoB,MAOjC,CAAA,CAAE,EACJ,KAAAtH,WAAa,KAAKkG,YAAYoB,MAO5B,CAAA,CAAE,EACJ,KAAA9C,aAA+B,CAAA,EAKtB,KAAAa,WAAaA,EAetB,CAEAkC,UAAQ,CACJ,KAAKC,KAAI,EACT,KAAKnB,YAAYoB,SAASC,kBAAkB,aAAa,EAAEC,QAAQC,UAAU,CAAC,CAAEC,eAAAA,CAAc,IAAM,CAChG,KAAKC,qBAAuBD,EAAeV,eAC3C,KAAKvB,0BAA4BiC,EAAeX,oBAChD,KAAKZ,eAAeyB,aAAY,CACpC,CAAC,EACD,KAAK5C,eAAiB,KAAK6C,QAAQC,KAAKC,EAAIC,GAAQA,EAAKC,cAAcC,KAAK,CAAC,EAC7E,IAAMC,EAA0B,KAAKN,QAAQC,KACzCM,GAAIJ,GAAS,KAAK/F,2BAA6B+F,EAAKK,cAAcC,mBAAoB,EACtFP,EAAIC,GAAQA,EAAKK,cAAcE,sBAAsB,CAAC,EAE1D,KAAKtD,qBAAuBuD,GAAc,KAAK3I,WAAW4I,aAAcN,CAAuB,EAAEL,KAC7FC,EAAI,CAAC,CAACW,EAAQC,CAAa,IACvBA,EAAcC,OAAOC,GAAQ,CAACH,EAAOX,IAAIe,GAAKA,EAAE9G,YAAY,EAAE+G,SAASF,CAAI,CAAC,CAAC,CAChF,EAEL,IAAMG,EAAkB,KAAKnB,QAAQC,KAAKC,EAAIC,GAAQA,EAAKiB,eAAef,KAAK,CAAC,EAChF,KAAKxC,qBAAuB8C,GAAc,KAAK3D,QAASmE,CAAe,EAAElB,KACrEC,EAAI,CAAC,CAACmB,EAAQD,CAAc,IAAK,CAC7B,IAAME,EAAUD,EAAOE,YAAYrB,IAAIsB,GAAKA,EAAEC,cAAcjI,EAAE,EAC9D,OAAO4H,EAAeL,OAAOS,GAAK,CAACF,EAAQJ,SAASM,EAAEhI,EAAE,CAAC,CAC7D,CAAC,CAAC,EAEN,KAAKsB,yBAA2B,KAAKuD,YAAYoB,SAC5CiC,iBAAiB,aAAa,EAC9BC,uBAAsB,EACtBC,UAAUzB,GAAQA,EAAKK,cAAcqB,gBAAgB,EACrD5B,KAAK6B,GAAY,CAAC,CAAC,EACxB,KAAKC,aAAe,KAAK/E,QAAQiD,KAAKC,EAAImB,GAAUA,GAAQE,aAAe,CAAA,CAAE,CAAC,EAC9E,IAAMxE,EAAe,KAAKC,QAAQiD,KAAKC,EAAI8B,GAAWA,EAAQC,aAAe,CAAA,CAAE,CAAC,EAE1EC,EAA2B,KAAKrK,WAAWQ,IAAI,eAAe,EAAGuI,aAAaX,KAChFkC,GAAK,CAAC,EACNC,GAAoB,EACpBC,EAAUC,GACN,KAAKjE,YAAYkE,MACZC,eAAe,CAAEzB,OAAQ,CAAEvH,GAAI,CAAEiJ,GAAIH,CAAG,CAAE,CAAE,CAAE,EAC9CI,UAAU,CAAC,CAAET,YAAAA,CAAW,IAAOA,EAAY5B,KAAK,CAAC,EAE1DyB,GAAY,CAAC,CAAC,EAElB,KAAK/E,aAAe4F,GAChB5F,EAAakD,KAAK2C,GAAK,CAAC,CAAC,EACzB7F,EAAakD,KAAK4C,GAAYX,CAAwB,CAAC,CAAC,CAEhE,CAEAY,aAAW,CACP,KAAKC,QAAO,CAChB,CAEA9H,mBAAmBd,EAA0B,CACzC,KAAKnC,WAAWgL,KACZ,KAAK9E,YAAYU,MAAM,CACnBzE,aAAAA,EACAU,MAAO,EACPF,OAAQ,GACRf,aAAc,KAAKsE,YAAYU,MAAMS,GAAwB,KAAKhF,iBAAiB,CAAC,EACvF,CAAC,CAEV,CAEAJ,kBAAkBgJ,EAA8B,CAC5CA,EAAkBC,SAAS,CAACD,EAAkB/I,KAAK,EACnD+I,EAAkBE,YAAW,CACjC,CAEAtH,iBAAiB4F,EAAqE,CAClF,KAAK1J,gBAAgBiL,KACjB,KAAK9E,YAAYU,MAAM,CACnBwE,gBAAiB3B,EAAcjI,GAC/B6J,kBAAmB5B,EAAc3H,KACjCkF,YAAa,EACbsE,eAAgB,EACnB,CAAC,CAEV,CAEA3L,MAAI,CACAgJ,GAAc,KAAK3D,QAAS,KAAK5F,aAAa,EACzC6I,KACG2C,GAAK,CAAC,EACNW,GAAS,CAAC,CAACvB,EAASwB,CAAY,IAAK,CACjC,IAAMC,KAAQC,SACV,KAAKC,kBACD3B,EACA,KAAKnK,WACL2L,CAAY,EAEhB,CACI,KACA,UACA,eACA,MACA,gBACA,gBACA,kBACA,WACA,iBACA,sBACA,+BACA,cAAc,CACjB,EAEL,OAAI,KAAKzL,gBAAgB6L,QACrBH,EAAMlC,YAAc,KAAKxJ,gBAAgB6C,SACpCmG,OAAO8C,GAAWA,EAAQD,KAAK,EAC/B1D,IAAI2D,IAAY,CAEbT,gBAAiBS,EAAQ3J,MAAMkJ,gBAE/BpE,YAAa6E,EAAQ3J,MAAM8E,aAC7B,GAEN,KAAKhH,WAAW4L,QAChBH,EAAM5C,OAAS,KAAK7I,WAAW4C,SAC1BmG,OAAO8C,GAAWA,EAAQD,KAAK,EAC/B1D,IAAI2D,IAAY,CAEbhJ,MAAOgJ,EAAQ3J,MAAMW,MAErBV,aAAc0J,EAAQ3J,MAAMC,aAC5BQ,OAAQkJ,EAAQ3J,MAAMS,SAAW,GACjCf,aAAciK,EAAQxL,IAAI,cAAc,GAAG6B,OAC7C,GAEH,KAAKmE,YAAYyF,OAAOC,GAAsC,CACjEN,MAAO,CAACA,CAAK,EAChB,CACL,CAAC,CAAC,EAEL7D,UACGoE,GAAS,CACL,KAAKnM,WAAWoM,eAAc,EAC9B,KAAKlM,gBAAgBkM,eAAc,EACnC,KAAKjM,WAAWiM,eAAc,EAC9B,KAAKzH,aAAe,CAAA,EACpB,KAAK4B,oBAAoB8F,QAAU,+BAAiC,CAChE7C,OAAQ,iBACX,EACD,KAAK/C,eAAeyB,aAAY,CACpC,EACAoE,GAAM,CACF,KAAK/F,oBAAoBgG,MAAQ,6BAA+B,CAC5D/C,OAAQ,iBACX,CACL,CAAC,CAEb,CAEAnJ,eAAa,CACT,MAAO,CAAC,CAACmM,OAAOC,OAAO,KAAK9H,YAAY,EAAE/E,MAC9C,CAEAiG,sBAAsB6G,EAA2B,CAC7C,IAAMpF,EAAiBoF,EAAUlM,IAAI,gBAAgB,GAAG6B,MACxD,OACIiF,IAAmB9B,GAAWE,OAC7B4B,IAAmB9B,GAAWG,SAAW,KAAKsC,uBAAyB,EAEhF,CAEArH,gBAAgB+L,EAAqB,CAEjC,OADc,KAAKnD,QAAQoD,QAAQC,aAAaC,KAAKC,GAAKA,EAAEpL,KAAOgL,CAAa,GAClExD,IAClB,CAEApI,WAAWiM,EAA6B,CAGpC,OADIA,EAAOC,aAAaH,KAAKI,GAAKA,EAAEvB,eAAiB,KAAKA,YAAY,GAAKqB,EAAOC,aAAa,CAAC,GAC7EhL,IACvB,CAEAP,iBAAiByL,EAAoB,CACjC,IAAMC,EAAuB,KAAKpN,WAAW+C,SAASwE,cAChD8F,EAAuBD,EAAqB/K,OAAS,CAAA,EAC3D+K,EAAqB/B,SAASgC,EAAqBnE,OAAOvH,GAAMA,IAAOwL,CAAY,CAAC,EACpFC,EAAqB9B,YAAW,CACpC,CAEAzJ,kBAAgB,CACZ,KAAKyL,uBAAsB,EAAGvF,UAAUR,GAAgB,CACpD,GAAIA,EAAe,CACf,IAAM6F,EAAuB,KAAKpN,WAAW+C,SAASwE,cAChD8F,EAAuBD,EAAqB/K,OAAS,CAAA,EAC3D+K,EAAqB/B,YAASkC,WAAO,CAAC,GAAGF,EAAsB,GAAG9F,CAAa,CAAC,CAAC,EACjF6F,EAAqB9B,YAAW,CACpC,CACJ,CAAC,CACL,CAEQgC,wBAAsB,CAC1B,OAAO,KAAKhH,aACPkH,cAAcC,GAA2B,CACtCC,KAAM,KACNC,SAAU,GACb,EACAvF,KAAKC,EAAI+B,GAAeA,GAAeA,EAAY/B,IAAIuF,GAAKA,EAAEjM,EAAE,CAAC,CAAC,CAC3E,CAEUkM,cACN1D,EACAwB,EAA0B,CAE1B,IAAMmC,EAAqBC,GAAgB5D,EAASwB,CAAY,EAC1DpE,EAAgB4C,EAAQC,YAAY/B,IAAI2F,GAAMA,EAAGrM,EAAE,EACzD,KAAK3B,WAAWiO,WAAW,CACvBtM,GAAIwI,EAAQxI,GACZqF,QAASmD,EAAQnD,QACjBC,IAAKkD,EAAQlD,IACbhF,KAAM6L,EAAqBA,EAAmB7L,KAAO,GACrDiF,cAAeiD,EAAQ+D,YAAYvM,GACnCwF,YAAagD,EAAQT,YAAY,CAAC,GAAGvC,aAAe,EACpDC,6BAA8B+C,EAAQ/C,6BACtCC,oBAAqB8C,EAAQ9C,oBAC7BC,eAAgB6C,EAAQ7C,eACxBC,cAAAA,EACH,EACD,KAAKrH,gBAAgBiO,MAAK,EAC1B,QAAWC,KAAcjE,EAAQT,YAC7B,KAAKxJ,gBAAgBiL,KACjB,KAAK9E,YAAYU,MAAM,CACnBwE,gBAAiB6C,EAAWxE,cAAcjI,GAC1C6J,kBAAmB4C,EAAWxE,cAAc3H,KAC5CkF,YAAaiH,EAAWjH,YACxBsE,eAAgB2C,EAAW3C,eAC9B,CAAC,EAGV,KAAKtL,WAAWgO,MAAK,EACrB,QAAWnL,KAASmH,EAAQnB,OAAQ,CAChC,IAAMqF,EAAY,KAAKhI,YAAYU,MAAM,CACrC/D,MAAOA,EAAMA,MACbV,aAAcU,EAAMV,aACpBQ,OAAQ,GACRf,aAAc,KAAKsE,YAAYU,MAAMS,GAAwB,KAAKhF,iBAAiB,CAAC,EACvF,EACG,KAAKA,kBAAkB5C,QACvB,KAAK0O,yBAAyB,KAAK9L,kBAAmB6L,EAAU7N,IAAI,CAAC,cAAc,CAAC,EAAGwC,CAAK,EAEhG,KAAK7C,WAAWgL,KAAKkD,CAAS,CAClC,CACI,KAAKtM,aAAanC,QAClB,KAAK0O,yBACD,KAAKvM,aACL,KAAK/B,WAAWQ,IAAI,cAAc,EAClC2J,EACA2D,CAAkB,CAG9B,CAMQhC,kBACJ3B,EACAoE,EACA5C,EAA0B,CAE1B,IAAM6C,EAAiBC,GAA0B,CAC7CC,aAAcvE,EACdwE,cAAeJ,EAAiBlM,MAChCuM,kBAAmB,KAAK7M,aACxB4J,aAAAA,EACAkD,mBAAoB,CAChBlD,aAAAA,EACA1J,KAAMkI,EAAQlI,MAAQ,IAE7B,EACD,OAAO6M,GAAAC,EAAA,GACAP,GADA,CAEHQ,SAAU,KAAKrK,aAAaS,QAAQiD,IAAI4G,GAAKA,EAAEtN,EAAE,EACjDuN,gBAAiB,KAAKvK,aAAaU,eAAe1D,GAClD4F,cAAegH,EAAiBxL,SAASwE,cAAcwE,MACjDwC,EAAiBlM,MAAMkF,cACvB3E,OACNsE,cAAeqH,EAAiBxL,SAASmE,cAAc6E,MACjDwC,EAAiBlM,MAAM6E,cACvBtE,QAEd,iDAvVSqD,GAA6BkJ,EAAAC,EAAA,EAAAD,EAAAE,EAAA,EAAAF,EAAAG,EAAA,EAAAH,EAAAI,CAAA,EAAAJ,EAAAK,CAAA,EAAAL,EAAAM,EAAA,CAAA,CAAA,CAAA,+BAA7BxJ,EAA6ByJ,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,WAAA,GAAAC,SAAA,CAAAC,EAAA,EAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,aAAA,wBAAA,EAAA,CAAA,QAAA,kBAAA,EAAA,WAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,QAAA,OAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,QAAA,OAAA,EAAA,WAAA,yBAAA,sBAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,qBAAA,WAAA,yBAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,cAAA,EAAA,QAAA,UAAA,EAAA,CAAA,EAAA,OAAA,EAAA,WAAA,EAAA,CAAA,MAAA,aAAA,EAAA,OAAA,EAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,EAAA,aAAA,YAAA,SAAA,EAAA,QAAA,SAAA,EAAA,CAAA,QAAA,oBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,OAAA,SAAA,SAAA,GAAA,SAAA,kDAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,KAAA,OAAA,OAAA,OAAA,kBAAA,OAAA,EAAA,UAAA,EAAA,CAAA,MAAA,MAAA,EAAA,OAAA,EAAA,CAAA,KAAA,MAAA,OAAA,OAAA,kBAAA,MAAA,EAAA,UAAA,EAAA,CAAA,aAAA,yBAAA,EAAA,UAAA,YAAA,EAAA,CAAA,EAAA,SAAA,SAAA,gBAAA,mBAAA,EAAA,CAAA,MAAA,cAAA,EAAA,OAAA,EAAA,CAAA,OAAA,cAAA,kBAAA,eAAA,EAAA,CAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,QAAA,mBAAA,EAAA,YAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,0BAAA,6BAAA,SAAA,EAAA,CAAA,MAAA,kBAAA,EAAA,QAAA,SAAA,EAAA,CAAA,OAAA,kBAAA,kBAAA,iBAAA,EAAA,UAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,OAAA,SAAA,kBAAA,sBAAA,EAAA,WAAA,aAAA,EAAA,CAAA,OAAA,WAAA,YAAA,GAAA,OAAA,+BAAA,kBAAA,+BAAA,EAAA,aAAA,EAAA,CAAA,QAAA,yBAAA,EAAA,YAAA,EAAA,QAAA,SAAA,EAAA,CAAA,OAAA,WAAA,YAAA,GAAA,OAAA,UAAA,EAAA,aAAA,EAAA,CAAA,EAAA,SAAA,EAAA,CAAA,EAAA,YAAA,SAAA,EAAA,QAAA,SAAA,EAAA,CAAA,QAAA,oBAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,YAAA,QAAA,EAAA,CAAA,EAAA,eAAA,OAAA,EAAA,YAAA,EAAA,CAAA,QAAA,QAAA,EAAA,CAAA,EAAA,SAAA,aAAA,WAAA,EAAA,CAAA,EAAA,eAAA,OAAA,EAAA,OAAA,EAAA,CAAA,QAAA,MAAA,EAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,iBAAA,EAAA,eAAA,wBAAA,UAAA,EAAA,CAAA,EAAA,YAAA,SAAA,EAAA,WAAA,EAAA,CAAA,MAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,eAAA,EAAA,CAAA,OAAA,QAAA,kBAAA,QAAA,EAAA,eAAA,UAAA,EAAA,CAAA,EAAA,QAAA,eAAA,mBAAA,eAAA,EAAA,CAAA,QAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,EAAA,eAAA,gBAAA,EAAA,QAAA,UAAA,EAAA,CAAA,QAAA,OAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,sBAAA,EAAA,eAAA,wBAAA,UAAA,EAAA,CAAA,qBAAA,GAAA,EAAA,SAAA,MAAA,EAAA,CAAA,QAAA,mBAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,QAAA,EAAA,QAAA,SAAA,EAAA,CAAA,kBAAA,GAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,eAAA,EAAA,WAAA,EAAA,CAAA,EAAA,QAAA,KAAA,EAAA,CAAA,OAAA,SAAA,kBAAA,cAAA,EAAA,KAAA,UAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,YAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,ICpE1CzR,EAAA,EAAA,gBAAA,EAAgB,EAAA,gBAAA,EACI,EAAA,cAAA,CAAA,EACe,EAAA,MAAA,CAAA,EAEnBgB,EAAA,EAAA2Q,GAAA,EAAA,EAAA,eAAA,CAAA,eAUA7P,EAAA,EAAA,iCAAA,CAAA,EACJrB,EAAA,EAAM,EAGVT,EAAA,EAAA,cAAA,EACI8B,EAAA,EAAA,uBAAA,CAAA,EACAd,EAAA,EAAA4Q,GAAA,EAAA,EAAA,SAAA,CAAA,EAcA9P,EAAA,GAAA,+BAAA,CAAA,EACJrB,EAAA,EAAe,EACF,EAErBO,EAAA,GAAA6Q,GAAA,GAAA,IAAA,OAAA,CAAA,uBApCqB3Q,EAAA,CAAA,EAAAR,EAAA,OAAA,EAAA,EAEUQ,EAAA,CAAA,EAAAR,EAAA,OAAAC,EAAA,EAAA,EAAA+Q,EAAAI,mBAAA,CAAA,EAUiB5Q,EAAA,CAAA,EAAAR,EAAA,YAAAgR,EAAA3G,QAAA,KAAA,KAAA2G,EAAA3G,OAAAoD,QAAAjL,EAAA,EAO/BhC,EAAA,CAAA,EAAAR,EAAA,mBAAAsB,EAAA,EAAAwE,EAAA,CAAA,EAiB4BtF,EAAA,CAAA,EAAAR,EAAA,OAAAC,EAAA,GAAA,EAAA+Q,EAAAhL,OAAA,CAAA;wGD8BhCc,CACT,GAAA,EQvDJ,IAAAuK,GAAuB,SAOhB,IAAMC,GAGT,CACAC,SAAU,uBACVC,MAAS,2BACTC,KAAM,SACNC,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWC,aAAa,GACjDH,EAAgBC,SAASC,EAAWE,aAAa,EACrDC,UAAWA,CAAC,CAAEC,SAAAA,CAAQ,IAAOC,GAAeD,EAASE,IAAIC,CAAW,CAAC,EACrEC,QAASA,CAAC,CAAEJ,SAAAA,EAAUK,UAAAA,EAAWC,eAAAA,CAAc,IAAM,CAC5BN,EAASE,IAAIK,EAAY,EAEzCC,cAAcC,GAAwC,CACnDC,KAAM,KACNC,OAAQ,CACJC,qBAAmBC,WAAOR,EAAUS,IAAIC,GAAKA,EAAEC,EAAE,CAAC,EAClDC,kBAAmB,CAAA,GAE1B,EACAC,UAAUC,GAAS,CACZA,GACAb,EAAc,CAEtB,CAAC,CACT,GAGSc,GAA6CC,GAExD,CACE/B,SAAU,uBACVG,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWC,aAAa,GACjDH,EAAgBC,SAASC,EAAWE,aAAa,EACrDwB,YAAaC,GAAQA,EAAKC,KAC1BC,sBAAuBA,CAACC,EAAaC,EAAKC,IACtCF,EAAYG,QACPC,0BAA0B,CACvBF,UAAWA,EACXhB,kBAAmBe,EACtB,EACAI,KAAKjB,EAAIkB,GAAOA,EAAIC,gCAAgC,CAAC,EACjE,EAEYC,GAA2F,CACpG5C,SAAU,uBACVC,MAAS,gBACTC,KAAM,QACN2C,UAAW,YACX1C,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWwC,aAAa,GACjD1C,EAAgBC,SAASC,EAAWyC,aAAa,EACrDjC,QAASA,CAAC,CAAEJ,SAAAA,EAAUK,UAAAA,EAAWiC,cAAAA,EAAehC,eAAAA,CAAc,IAAM,CAChE,IAAMiC,EAAevC,EAASE,IAAIK,EAAY,EACxCmB,EAAc1B,EAASE,IAAIC,CAAW,EACtCqC,EAAsBxC,EAASE,IAAIuC,CAAmB,EAC5DF,EACKG,OAAO,CACJC,MAAS,6BACTC,gBAAiB,CACbC,MAAOxC,EAAUyC,QAErBC,QAAS,CACL,CAAEC,KAAM,YAAazD,MAAS,eAAgB,EAC9C,CAAEyD,KAAM,SAAUzD,MAAS,gBAAkB0D,YAAa,EAAI,CAAE,EAEvE,EACAlB,KACGmB,EAAUC,GACNA,EACMzB,EAAYG,QAAQuB,yBAAsBvC,WAAOR,EAAUS,IAAIC,GAAKA,EAAEC,EAAE,CAAC,CAAC,EAC1EqC,EAAK,CACd,EAEJnC,UAAUC,GAAS,CAChB,IAAImC,EAAU,EACRC,EAAmB,CAAA,EACzB,QAAWhC,KAAQJ,EAAOiC,sBAClB7B,EAAKJ,SAAWqC,GAAeC,QAC/BH,IACO/B,EAAKmC,SACZH,EAAOI,KAAKpC,EAAKmC,OAAO,EAG5B,EAAIJ,GACJd,EAAoBoB,QAAU,8CAAgD,CAC1Ef,MAAOS,EACV,EAED,EAAIC,EAAOT,QACXN,EAAoBqB,MAAMN,EAAOO,KAAK;CAAI,CAAC,EAE/CxB,EAAcyB,QAAO,EACrBzD,EAAc,CAClB,CAAC,CACT,GAGS0D,GAGT,CACA1E,SAAU,uBACVC,MAAS,4BACTC,KAAM,MACNC,mBAAoBC,GAChBA,EAAgBC,SAASC,EAAWC,aAAa,GACjDH,EAAgBC,SAASC,EAAWE,aAAa,EACrDM,QAASA,CAAC,CAAEJ,SAAAA,EAAUK,UAAAA,EAAWC,eAAAA,CAAc,IAAM,CACjD,IAAMiC,EAAevC,EAASE,IAAIK,EAAY,EACxCiC,EAAsBxC,EAASE,IAAIuC,CAAmB,EACtDwB,EAAO,UACPtC,KAAMd,WAAOR,EAAUS,IAAIC,GAAKA,EAAEC,EAAE,CAAC,EAC3C,OAAOuB,EACF/B,cAAc0D,GAAmC,CAC9CxD,KAAM,KACNC,OAAQ,CACJsD,KAAAA,EACAtC,IAAAA,GAEP,EACAT,UAAUC,GAAS,CACZA,IACAqB,EAAoBoB,QAAU,oCAAsC,CAChEf,MAAOxC,EAAUyC,OACjBqB,OAAQF,IAAS,UAAY,WAAa,kBAC7C,EACD3D,EAAc,EAEtB,CAAC,CACT,6BEnJQ8D,EAAA,CAAA,EACIC,EAAA,EAAA,IAAA,EAAIC,EAAA,CAAA,EAAsBC,EAAA,8BAAtBC,EAAA,CAAA,EAAAC,EAAAC,EAAAC,IAAA,6BAaQC,EAAA,EAAA,MAAA,EAAA,yCAEIC,EAAA,MAAAC,EAAA,EAAA,EAAAC,EAAA,MAAA,EAAAC,EAAA,0BAGAX,EAAA,EAAA,MAAA,EAAA,EACIO,EAAA,EAAA,WAAA,EAAA,EACJL,EAAA,6BA2BhBH,EAAA,CAAA,EACIC,EAAA,EAAA,KAAA,CAAA,uBAKIC,EAAA,CAAA,EACJC,EAAA,gDAHIC,EAAA,EAAAS,GAAA,QAAAC,EAAA,EAAA,EAAAC,EAAAC,gBAAAC,EAAAC,OAAA,CAAA,CAAA,EADAC,EAAA,WAAA,CAAAC,EAAAC,IAAA,SAAA,EAAAC,KAAA,EAGAlB,EAAA,CAAA,EAAAmB,EAAA,IAAAN,EAAAV,KAAA,GAAA,6BAKAC,EAAA,EAAA,qBAAA,EAAA,wDAGIC,EAAA,eAAAe,EAAAC,YAAA,EAAqC,WAAA,CAAAX,EAAA,EAAA,EAAAC,EAAAW,gBAAA,CAAA,6BAIzClB,EAAA,EAAA,qBAAA,EAAA,wDAGIC,EAAA,eAAAe,EAAAC,YAAA,EAAqC,WAAA,CAAAX,EAAA,EAAA,EAAAC,EAAAW,gBAAA,CAAA,6BA3DrD1B,EAAA,EAAA,CAAA,EACIC,EAAA,EAAA,KAAA,CAAA,EAAkF,EAAA,MAAA,CAAA,EACxD,EAAA,MAAA,CAAA,EAEd0B,EAAA,EAAAC,GAAA,EAAA,EAAA,MAAA,CAAA,EAGE,EAAAC,GAAA,EAAA,EAAA,cAAA,KAAA,EAAAC,CAAA,EAMN3B,EAAA,EAAM,EACJ,EAEVF,EAAA,EAAA,KAAA,CAAA,EAAkF,EAAA,qBAAA,EAE1EO,EAAA,EAAA,QAAA,EAAA,0CAOJL,EAAA,EAAsB,EAE1BF,EAAA,GAAA,KAAA,CAAA,EAAkF,GAAA,qBAAA,EAE1EO,EAAA,GAAA,QAAA,EAAA,0CAOJL,EAAA,EAAsB,EAE1BwB,EAAA,GAAAI,GAAA,EAAA,EAAA,eAAA,CAAA,eASA9B,EAAA,GAAA,KAAA,EAAA,EAAwF,GAAA,qBAAA,EAEhF0B,EAAA,GAAAK,GAAA,EAAA,EAAA,qBAAA,EAAA,EAMC,GAAAC,GAAA,EAAA,EAAA,qBAAA,EAAA,EAQL9B,EAAA,EAAsB,EAE1BF,EAAA,GAAA,KAAA,EAAA,EAAwF,GAAA,qBAAA,EAEhFO,EAAA,GAAA,QAAA,EAAA,wBAQJL,EAAA,EAAsB,EAE1BF,EAAA,GAAA,KAAA,EAAA,EAAwF,GAAA,oBAAA,EAEhFO,EAAA,GAAA,QAAA,EAAA,wBAOJL,EAAA,EAAqB,sDAtFmCM,EAAA,YAAAW,CAAA,EAC9BhB,EAAA,EAAAe,EAAA,WAAA,CAAAC,EAAAC,IAAA,SAAA,EAAAC,KAAA,EAIblB,EAAA,CAAA,EAAAK,EAAA,OAAAM,EAAAmB,iBAAAV,CAAA,CAAA,EAAgC,WAAAW,CAAA,EAWnB/B,EAAA,CAAA,EAAAe,EAAA,WAAA,CAAAC,EAAAC,IAAA,SAAA,EAAAC,KAAA,EAMlBlB,EAAA,CAAA,EAAAK,EAAA,WAAA,CAAAK,EAAA,GAAA,GAAAC,EAAAW,gBAAA,CAAA,EAAgD,cAAAZ,EAAA,GAAA,GAAA,aAAA,CAAA,EAK9BV,EAAA,CAAA,EAAAe,EAAA,WAAA,CAAAC,EAAAC,IAAA,SAAA,EAAAC,KAAA,EAMlBlB,EAAA,CAAA,EAAAK,EAAA,WAAA,CAAAK,EAAA,GAAA,GAAAC,EAAAW,gBAAA,CAAA,EAAgD,cAAAZ,EAAA,GAAA,GAAA,aAAA,CAAA,EAK3BV,EAAA,CAAA,EAAAK,EAAA,UAAAC,EAAA,GAAA,GAAAc,EAAAY,QAAA,SAAA,CAAA,EASGhC,EAAA,CAAA,EAAAe,EAAA,WAAA,CAAAC,EAAAC,IAAA,SAAA,EAAAC,KAAA,EAGvBlB,EAAA,CAAA,EAAAK,EAAA,OAAA,CAAAM,EAAAsB,uBAAA,EAOAjC,EAAA,EAAAK,EAAA,OAAAM,EAAAsB,uBAAA,EAQuBjC,EAAA,EAAAe,EAAA,WAAA,CAAAC,EAAAC,IAAA,SAAA,EAAAC,KAAA,EAQxBlB,EAAA,CAAA,EAAAK,EAAA,WAAA,CAAAK,EAAA,GAAA,GAAAC,EAAAW,gBAAA,CAAA,EAIwBtB,EAAA,CAAA,EAAAe,EAAA,WAAA,CAAAC,EAAAC,IAAA,SAAA,EAAAC,KAAA,EAOxBlB,EAAA,CAAA,EAAAK,EAAA,cAAA,CAAAK,EAAA,GAAA,GAAAC,EAAAW,gBAAA,CAAA,6BArFpBzB,EAAA,EAAA,IAAA,EACI0B,EAAA,EAAAW,GAAA,GAAA,GAAA,eAAA,CAAA,EAyFJnC,EAAA,gCAzFmBC,EAAA,EAAAK,EAAA,OAAAM,EAAAwB,aAAAlB,IAAAG,EAAAgB,EAAA,CAAA,GDe3B,IAAaC,IAA6B,IAAA,CAApC,MAAOA,CAA6B,CAWtCC,YAAoBC,EAAiC,CAAjC,KAAAA,eAAAA,EAJpB,KAAAJ,aAAe,IAAIK,IACV,KAAAlB,iBAAmB,CAACmB,EAAWC,cAAeD,EAAWE,aAAa,CAGvB,CAExDC,UAAQ,CACJ,KAAKC,aAAe,KAAKC,UAAUC,aAC9BC,KACGC,EAAI/B,GAASA,EAAMgC,MAAM,EACzBC,GAAa,CAAC,EACdC,GAAoB,CAAE,EAEzBC,UAAU,IAAK,CACZ,KAAKC,kBAAiB,CAC1B,CAAC,EAEL,KAAKA,kBAAiB,CAC1B,CAEAC,aAAW,CACH,KAAKV,cACL,KAAKA,aAAaW,YAAW,CAErC,CAEAC,UAAUC,EAAeC,EAAS,CAC9B,OAAKA,EAAavB,IAAM,KACZuB,EAAavB,GAEdsB,CAEf,CAEA5B,iBAAiB8B,EAA+B,CAC5C,OAAO,KAAKC,oBAAoBD,EAAQxB,EAAE,GAAG0B,eAAiBF,EAAQE,aAC1E,CAEAlD,gBAAgBmD,EAAqB,CACjC,IAAMC,EAAQ,KAAKC,aAAaC,KAAKC,GAAKA,EAAE/B,KAAO2B,CAAa,EAChE,OAAOC,GAASA,EAAM7D,IAC1B,CAEQmD,mBAAiB,CACrB,KAAKnB,aAAaiC,MAAK,EACvB,QAAWC,KAAgB,KAAKvB,UAAUwB,SACtC,KAAKnC,aAAaoC,IAAIF,EAAanD,MAAMkB,GAAIiC,CAAgC,EAEjF,KAAK9B,eAAeiC,aAAY,CACpC,iDAxDSnC,GAA6BoC,EAAAC,EAAA,CAAA,CAAA,CAAA,+BAA7BrC,EAA6BsC,UAAA,CAAA,CAAA,4BAAA,CAAA,EAAAC,OAAA,CAAA9B,UAAA,CAAA,EAAA,2BAAA,WAAA,EAAA+B,SAAA,WAAAC,iBAAA,mBAAA7C,wBAAA,0BAAAgC,aAAA,eAAAJ,oBAAA,qBAAA,EAAAkB,WAAA,GAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,cAAA,EAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAA,EAAA,QAAA,SAAA,EAAA,CAAA,EAAA,QAAA,UAAA,cAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,OAAA,cAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,OAAA,UAAA,EAAA,CAAA,WAAA,GAAA,OAAA,OAAA,kBAAA,OAAA,EAAA,WAAA,aAAA,EAAA,CAAA,WAAA,GAAA,OAAA,OAAA,kBAAA,MAAA,EAAA,WAAA,aAAA,EAAA,CAAA,EAAA,OAAA,eAAA,OAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,QAAA,EAAA,eAAA,WAAA,EAAA,MAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,eAAA,EAAA,eAAA,WAAA,EAAA,MAAA,EAAA,CAAA,EAAA,OAAA,eAAA,OAAA,EAAA,CAAA,WAAA,GAAA,OAAA,SAAA,MAAA,IAAA,OAAA,IAAA,kBAAA,cAAA,EAAA,UAAA,EAAA,CAAA,OAAA,WAAA,YAAA,GAAA,OAAA,UAAA,kBAAA,UAAA,EAAA,aAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,aAAA,EAAA,CAAA,QAAA,QAAA,OAAA,IAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,QAAA,EAAA,eAAA,UAAA,EAAA,CAAA,WAAA,GAAA,kBAAA,eAAA,EAAA,eAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAAD,EAAA,IC/B1CvF,EAAA,EAAA,QAAA,CAAA,EAAqB,EAAA,OAAA,EACV,EAAA,IAAA,EAECO,EAAA,EAAA,IAAA,EACAP,EAAA,EAAA,IAAA,EAAIC,EAAA,CAAA,mBAA+BC,EAAA,EACnCF,EAAA,EAAA,IAAA,EAAIC,EAAA,CAAA,mBAA+BC,EAAA,EACnCwB,EAAA,GAAA+D,GAAA,EAAA,EAAA,eAAA,CAAA,eAGAzF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAiCC,EAAA,EACrCF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAyCC,EAAA,EAC7CF,EAAA,GAAA,IAAA,EAAIC,EAAA,EAAA,oBAAkCC,EAAA,EAAK,EAC1C,EAETF,EAAA,GAAA,OAAA,EACI0B,EAAA,GAAAgE,GAAA,EAAA,EAAA,KAAA,CAAA,mBA2FJxF,EAAA,EAAQ,SAtGIC,EAAA,CAAA,EAAAC,EAAAS,EAAA,EAAA,EAAA,aAAA,CAAA,EACAV,EAAA,CAAA,EAAAC,EAAAS,EAAA,EAAA,GAAA,aAAA,CAAA,EACkCV,EAAA,CAAA,EAAAK,EAAA,UAAAC,EAAA,GAAA,GAAA+E,EAAApB,aAAA,IAAA,CAAA,EAGlCjE,EAAA,CAAA,EAAAC,EAAAS,EAAA,GAAA,GAAA,eAAA,CAAA,EACAV,EAAA,CAAA,EAAAC,EAAAS,EAAA,GAAA,GAAA,uBAAA,CAAA,EACAV,EAAA,CAAA,EAAAC,EAAAS,EAAA,GAAA,GAAA,gBAAA,CAAA,EAIgBV,EAAA,CAAA,EAAAK,EAAA,UAAAC,EAAA,GAAA,GAAA+E,EAAAR,SAAAQ,EAAAP,gBAAA,CAAA,EAA0C,eAAAO,EAAA5B,SAAA;wGDgB7DpB,CAA6B,GAAA,EEpB1C,IAAAmD,GAAgC,6ECXJC,EAAA,CAAA,yBAAAC,EAAAC,EAAA,EAAA,EAAA,+BAAA,CAAA,4BAkB5BC,EAAA,EAAA,SAAA,EAAqC,EAAA,OAAA,EAC1BH,EAAA,CAAA,mBAAwCI,EAAA,EAC/CC,EAAA,EAAA,2BAAA,EAAA,uBAMJD,EAAA,kBAPWE,EAAA,CAAA,EAAAL,EAAAC,EAAA,EAAA,EAAA,sBAAA,CAAA,EAGHI,EAAA,CAAA,EAAAC,EAAA,eAAAC,EAAAC,YAAA,EAA6B,wBAAAD,EAAAE,gBAAA,EACa,WAAA,CAAAR,EAAA,EAAA,EAAAS,EAAA,EAAAC,EAAA,CAAA,CAAA,sCAM9CT,EAAA,EAAA,SAAA,EAAA,EAAkCU,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAP,EAAAQ,EAAA,EAAA,OAAAC,EAAST,EAAAU,OAAA,CAAQ,CAAA,CAAA,EAAElB,EAAA,CAAA,mBAAiCI,EAAA,EACtFD,EAAA,EAAA,SAAA,EAAA,EAEIU,EAAA,QAAA,UAAA,CAAAC,EAAAC,CAAA,EAAA,IAAAP,EAAAQ,EAAA,EAAA,OAAAC,EAAST,EAAAW,OAAA,CAAQ,CAAA,CAAA,EAQjBnB,EAAA,CAAA,mBACJI,EAAA,kCAZqDE,EAAA,EAAAL,EAAAC,EAAA,EAAA,EAAA,eAAA,CAAA,EAIjDI,EAAA,CAAA,EAAAC,EAAA,WAAAa,EAAAC,SAAAC,EAAAD,SAAAD,EAAAG,UAAAD,EAAAC,UAAAf,EAAAE,iBAAAa,QAAA,EAOAjB,EAAA,EAAAkB,EAAA,IAAAtB,EAAA,EAAA,EAAA,+BAAA,EAAA,GAAA,GDpBR,IAAauB,IAAkC,IAAA,CAAzC,MAAOA,CAAkC,CAP/CC,aAAA,CAWI,KAAAC,kBAAoB,GAOpB,KAAAC,iBAAmB,GAGnBC,UAAQ,CACJ,IAAMC,EAAqB,KAAKC,cAAcC,aAAaC,KACvDC,GAAKA,EAAEC,eAAiB,KAAKC,cAAc,EAK/C,GAHA,KAAKC,KAAOP,GAAoBO,MAAQ,GACxC,KAAKC,KAAO,KAAKP,cAAcO,KAC/B,KAAK5B,iBAAmB,IAAI6B,GAAiB,CAAA,CAAE,EAC3C,KAAK9B,aAAc,CACnB,IAAM+B,EACDV,GAAuBA,EAA2BrB,cAAiB,CAAA,EAExE,QAAWgC,KAAY,KAAKhC,aAAc,CACtC,IAAMiC,EAAMD,EAASJ,KACfM,EACFF,EAASG,OAAS,eACZJ,EAAqBE,CAAG,EACvB,KAAKX,cAAsBtB,aAAaiC,CAAG,EACtD,KAAKhC,iBAAiBmC,WAAWJ,EAASJ,KAAM,IAAIS,GAAmBH,CAAK,CAAC,CACjF,CACJ,CACJ,CAEAxB,QAAM,CACF,IAAM4B,EAASC,GAA0B,CACrCC,aAAc,KAAKlB,cACnBI,aAAc,KAAKC,eACnBc,cAAe,CACXZ,KAAM,KAAKA,KACXD,KAAM,KAAKA,KACX5B,aAAc,KAAKC,iBAAiBiC,OAExCQ,kBAAmB,KAAK1C,aACxB2C,mBAAoB,CAChBjB,aAAc,KAAKC,eACnBC,KAAM,IAEb,EACD,KAAKgB,YAAYC,GAAAC,EAAA,GAAKR,GAAL,CAAaS,WAAY,KAAK7B,iBAAiB,EAAE,CACtE,CAEAT,QAAM,CACF,KAAKmC,YAAW,CACpB,CAEAI,WAAWC,EAAiB,CACpB,CAAC,KAAK9B,kBAAoB,CAAC,KAAKG,cAAcO,OAC9C,KAAKA,QAAOqB,oBAAgBD,EAAW,GAAG,EAElD,iDA9DSjC,EAAkC,CAAA,+BAAlCA,EAAkCmC,UAAA,CAAA,CAAA,kCAAA,CAAA,EAAAC,WAAA,GAAAC,MAAA,GAAAC,KAAA,GAAAC,OAAA,CAAA,CAAA,YAAA,SAAA,EAAA,CAAA,YAAA,SAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,KAAA,OAAA,OAAA,OAAA,WAAA,GAAA,EAAA,gBAAA,QAAA,SAAA,EAAA,CAAA,MAAA,OAAA,EAAA,OAAA,EAAA,CAAA,KAAA,OAAA,OAAA,OAAA,WAAA,GAAA,UAAA,cAAA,EAAA,gBAAA,SAAA,EAAA,CAAA,OAAA,WAAA,cAAA,GAAA,EAAA,gBAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,EAAA,CAAA,aAAA,gBAAA,EAAA,eAAA,wBAAA,UAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,CAAA,OAAA,SAAA,EAAA,MAAA,cAAA,EAAA,QAAA,UAAA,CAAA,EAAAC,SAAA,SAAAC,EAAAC,EAAA,CAAA,GAAAD,EAAA,EAAA,WCpB/CE,EAAA,EAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,EACAlE,EAAA,EAAA,iBAAA,CAAA,mBACIA,EAAA,EAAA,QAAA,EAAA,CAAA,EAIImE,GAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAA1D,EAAA2D,CAAA,EAAAC,GAAAP,EAAA9B,KAAAkC,CAAA,IAAAJ,EAAA9B,KAAAkC,GAAAtD,EAAAsD,CAAA,CAAA,CAAA,EAEA1D,EAAA,QAAA,SAAA0D,EAAA,CAAAC,OAAA1D,EAAA2D,CAAA,EAAAxD,EAASkD,EAAAV,WAAAc,EAAAI,OAAAhC,KAAA,CAA+B,CAAA,CAAA,EAN5CvC,EAAA,EAOE,EAEND,EAAA,EAAA,iBAAA,CAAA,mBACIA,EAAA,EAAA,QAAA,EAAA,CAAA,EAA2DmE,GAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAA1D,EAAA2D,CAAA,EAAAC,GAAAP,EAAA7B,KAAAiC,CAAA,IAAAJ,EAAA7B,KAAAiC,GAAAtD,EAAAsD,CAAA,CAAA,CAAA,EAA3DnE,EAAA,EAAsG,EAE1GD,EAAA,EAAA,sBAAA,EAAsB,GAAA,QAAA,CAAA,EACiBmE,GAAA,gBAAA,SAAAC,EAAA,CAAAC,OAAA1D,EAAA2D,CAAA,EAAAC,GAAAP,EAAAxC,kBAAA4C,CAAA,IAAAJ,EAAAxC,kBAAA4C,GAAAtD,EAAAsD,CAAA,CAAA,CAAA,EAAnCnE,EAAA,EACAD,EAAA,GAAA,OAAA,EAAOH,EAAA,EAAA,oBAA2DI,EAAA,EAAQ,EAE9EgE,EAAA,GAAAQ,GAAA,EAAA,EAAA,UAAA,CAAA,EAAqC,GAAAC,GAAA,EAAA,EAAA,cAAA,CAAA,QAjBrBvE,EAAA,EAAAC,EAAA,QAAAL,EAAA,EAAA,EAAA,qBAAA,CAAA,EAKRI,EAAA,CAAA,EAAAwE,GAAA,UAAAX,EAAA9B,IAAA,EAKQ/B,EAAA,CAAA,EAAAC,EAAA,QAAAL,EAAA,EAAA,EAAA,aAAA,CAAA,EAC+CI,EAAA,CAAA,EAAAwE,GAAA,UAAAX,EAAA7B,IAAA,EAGxBhC,EAAA,CAAA,EAAAwE,GAAA,UAAAX,EAAAxC,iBAAA,EAC5BrB,EAAA,CAAA,EAAAL,EAAAC,EAAA,GAAA,GAAA,yCAAA,CAAA,EAEDI,EAAA,CAAA,EAAAC,EAAA,OAAA4D,EAAA1D,aAAAsE,MAAA,8GDEGtD,CAAkC,GAAA,EzEyG/C,IAAauD,IAAa,IAAA,CAApB,MAAOA,CAAa,QACP,KAAAC,gCAAkC,EAAM,CAEvDC,YAAYC,EAAsDC,EAAwB,CAClFJ,EAAcC,kCAGlBE,EAA0BE,mBAAmBC,EAAqC,EAClFH,EAA0BE,mBAAmBE,EAAiC,EAC9EJ,EAA0BE,mBAAmBG,EAA2B,EACxEL,EAA0BE,mBAAmBI,EAAmC,EAChFN,EAA0BE,mBAAmBK,EAAwB,EAErEP,EAA0BE,mBAAmBM,EAA4C,EACzFR,EAA0BE,mBAAmBO,EAAwC,EACrFT,EAA0BE,mBAAmBQ,EAA0C,EACvFV,EAA0BE,mBAAmBS,EAA+B,EAE5EX,EAA0BE,mBAAmBU,EAA+B,EAC5EZ,EAA0BE,mBAAmBW,EAAyB,EACtEb,EAA0BE,mBAAmBY,EAAiC,EAC9Ed,EAA0BE,mBAAmBa,EAAsB,EAEnEf,EAA0BE,mBAAmBc,EAAyB,EACtEhB,EAA0BE,mBAAmBe,EAAoC,EACjFjB,EAA0BE,mBAAmBgB,EAA8B,EAC3ElB,EAA0BE,mBAAmBiB,EAAsC,EACnFnB,EAA0BE,mBAAmBkB,EAA2B,EAExEnB,EAAYoB,gBAAgB,CACxBC,SAAU,EACVC,SAAU,eACVC,IAAO,mBACPC,MAAO,GACPC,UAAWC,GACd,EACD1B,EAAYoB,gBAAgB,CACxBC,SAAU,EACVC,SAAU,iBACVC,IAAO,kBACPC,MAAO,GACPC,UAAWE,GAA4B,CACnCF,UAAWG,GACXC,MAAOC,GACPC,UAAW,UACXC,eAAgBC,GAAU,CACtB,CACIC,MAAOD,EAASA,EAAOE,KAAS,6BAChCC,KAAM,CAACH,GAAQI,EAAE,EACpB,EAER,EACJ,EACDrC,EAAYoB,gBAAgB,CACxBC,SAAU,EACVC,SAAU,eACVC,IAAO,2BACPC,MAAO,WACPC,UAAWa,GACd,EACDtC,EAAYoB,gBAAgB,CACxBC,SAAU,EACVC,SAAU,yBACVC,IAAO,2BACPC,MAAO,GACPC,UAAWE,GAA4B,CACnCF,UAAWc,GACXV,MAAOW,GACPT,UAAW,iBACXC,eAAgBC,GAAU,CACtB,CACIC,MAAO,GAAGD,GAAQQ,QAAQN,IAAI,GAC9BC,KAAM,CAAC,WAAY,WAAYH,GAAQQ,QAAQJ,EAAE,GAErD,CACIH,MAAO,GAAGD,GAAQE,IAAI,KAAKF,GAAQS,GAAG,IACtCN,KAAM,CAAC,WAAYH,GAAQI,EAAE,EAChC,EAER,EACJ,EACDrC,EAAYoB,gBAAgB,CACxBC,SAAU,EACVC,SAAU,aACVC,IAAO,iBACPC,MAAO,GACPC,UAAWkB,GACd,EACD3C,EAAYoB,gBAAgB,CACxBC,SAAU,EACVC,SAAU,eACVC,IAAO,gBACPC,MAAO,GACPC,UAAWE,GAA4B,CACnCF,UAAWmB,GACXf,MAAOgB,GACPC,UAAW,CACPC,sBAAuB,CACnBC,KAAM,GACNC,KAAM,EACNC,KAAM,CACFC,UAAWC,aAAUC,QAIjCtB,UAAW,QACXC,eAAgBC,GAAU,CACtB,CACIC,MAAOD,EAASA,EAAOE,KAAS,2BAChCC,KAAM,CAACH,GAAQI,EAAE,EACpB,EAER,EACJ,EACDrC,EAAYoB,gBAAgB,CACxBC,SAAU,EACVC,SAAU,kBACVC,IAAO,sBACPC,MAAO,GACPC,UAAW6B,GACd,EACDtD,EAAYoB,gBAAgB,CACxBC,SAAU,EACVC,SAAU,oBACVC,IAAO,qBACPC,MAAO,GACPC,UAAWE,GAA4B,CACnCF,UAAW8B,GACX1B,MAAO2B,GACPzB,UAAW,aACXC,eAAgBC,GAAU,CACtB,CACIC,MAAOD,EAASA,EAAOE,KAAS,gCAChCC,KAAM,CAACH,GAAQI,EAAE,EACpB,EAER,EACJ,EACDrC,EAAYoB,gBAAgB,CACxBC,SAAU,EACVC,SAAU,aACVC,IAAO,iBACPC,MAAO,GACPC,UAAWgC,GACd,EACDzD,EAAYoB,gBAAgB,CACxBC,SAAU,EACVC,SAAU,eACVC,IAAO,gBACPC,MAAO,GACPC,UAAWE,GAA4B,CACnCF,UAAWiC,GACX7B,MAAO8B,GACP5B,UAAW,QACXC,eAAgBC,GAAU,CACtB,CACIC,MAAO,GAAGD,GAAQE,IAAI,GACtBC,KAAM,CAACH,GAAQI,EAAE,EACpB,EAER,EACJ,EACDzC,EAAcC,gCAAkC,GACpD,iDAnKSD,GAAagE,GAAAC,EAAA,EAAAD,GAAAE,EAAA,CAAA,CAAA,CAAA,gCAAblE,CAAa,CAAA,CAAA,qCATX,CACP,CACImE,QAASC,GACTC,WAAajE,GAA6BkE,GAAalE,CAAW,EAClEmE,MAAO,GACPC,KAAM,CAACN,EAAW,EACrB,EACJO,QAAA,CAVSC,GAAcC,GAAaC,SAAS,CAAA,CAAE,CAAC,CAAA,CAAA,CAAA,SAYxC5E,CAAa,GAAA,E2E3H1B,IAAM6E,GAAsCC;;;;;;;;;;;;;;;;;;;;;;;EAyB/BC,GAAqBD;;;;;;;;;MAS5BD,EAAmC;EC7BlC,IAAMG,GAAwDC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAqF/DC,EAA8B;EAGvBC,GAA+BF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA8BtCD,EAAqD;EAG9CI,GAAkCH;;;;;;MAMzCD,EAAqD;ECnI3D,IAAMK,GAAsDC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmCtDC,EAAc;EAGPC,GAA6BF;;;;;;;;;MASpCD,EAAmD;",
6
- "names": ["AdjustmentType", "exports", "AssetType", "CurrencyCode", "DeletionResult", "ErrorCode", "GlobalFlag", "HistoryEntryType", "JobState", "LanguageCode", "LogicalOperator", "MetricInterval", "MetricType", "OrderType", "Permission", "SortOrder", "StockMovementType", "import_generated_types", "import_normalize_string", "import_shared_utils", "replaceLast", "target", "search", "replace", "lastIndex", "lastIndexOf", "head", "substr", "tail", "ProductDetailService", "constructor", "dataService", "getTaxCategories", "settings", "mapSingle", "data", "taxCategories", "items", "pipe", "shareReplay", "createProductWithVariants", "input", "createVariantsConfig", "languageCode", "createProduct$", "product", "createProduct", "nonEmptyOptionGroups", "groups", "filter", "g", "values", "length", "createOptionGroups$", "createProductOptionGroups", "forkJoin", "mergeMap", "optionGroups", "map", "optionGroup", "addOptionGroupToProduct", "productId", "id", "optionGroupId", "of", "variants", "v", "optionIds", "optionValues", "optionName", "index", "option", "options", "find", "o", "name", "Error", "__spreadProps", "__spreadValues", "og", "reduce", "flat", "createProductVariants", "stockLocationId", "c", "code", "normalizeString", "translations", "createProductOptionGroup", "variantData", "notNullOrUndefined", "join", "price", "sku", "stockLevels", "stockOnHand", "stock", "updateProduct", "updateOptions", "autoUpdate", "productInput", "variantsInput", "updateOperations", "updateVariantsInput", "getProductVariantsForProduct", "productVariants", "push", "productOldName", "findTranslation", "productNewName", "variant", "currentVariantName", "variantInput", "existingVariantInput", "i", "variantTranslation", "replaceLast", "updateProductVariants", "updateProductOptions", "inputs", "autoUpdateProductNames", "updateProductVariantNames$", "replacementMap", "Map", "newOptionName", "oldOptionName", "includes", "set", "variantsToUpdate", "size", "oldOptionNames", "Array", "from", "keys", "variantName", "some", "updatedVariantName", "get", "updateProductOption", "deleteProductVariant", "switchMap", "result", "DeletionResult", "DELETED", "getProduct", "single$", "throwError", "message", "\u0275\u0275inject", "DataService", "factory", "\u0275fac", "providedIn", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r1", "ctx_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "save", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "detailForm", "pristine", "invalid", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "\u0275\u0275elementContainerStart", "\u0275\u0275element", "optionGroupCustomFields", "optionGroup_r3", "get", "updatePermission", "optionControl_r5", "value", "id", "\u0275\u0275pipeBind2", "optionControl_r6", "createdAt", "optionControl_r7", "updatedAt", "optionControl_r8", "optionControl_r9", "optionCustomFields", "optionControl_r10", "$event", "_r4", "$implicit", "paginationSettings", "currentPage", "itemsPerPage", "\u0275\u0275template", "ProductOptionsEditorComponent_form_22_vdr_card_2_vdr_data_table_2_12_ng_template_3_Template", "ProductOptionsEditorComponent_form_22_vdr_card_2_vdr_data_table_2_12_ng_template_6_Template", "ProductOptionsEditorComponent_form_22_vdr_card_2_vdr_data_table_2_12_ng_template_9_Template", "ProductOptionsEditorComponent_form_22_vdr_card_2_vdr_data_table_2_12_ng_template_12_Template", "ProductOptionsEditorComponent_form_22_vdr_card_2_vdr_data_table_2_12_ng_template_15_Template", "ProductOptionsEditorComponent_form_22_vdr_card_2_vdr_data_table_2_12_ng_template_18_Template", "options_r11", "length", "ProductOptionsEditorComponent_form_22_vdr_card_2_ng_container_11_Template", "ProductOptionsEditorComponent_form_22_vdr_card_2_vdr_data_table_2_12_Template", "i_r12", "code", "getOptions", "ProductOptionsEditorComponent_form_22_vdr_card_2_Template", "getOptionGroups", "ProductOptionsEditorComponent", "BaseDetailComponent", "constructor", "route", "router", "serverConfigService", "dataService", "permissionsService", "productDetailService", "formBuilder", "changeDetector", "notificationService", "autoUpdateVariantNames", "Permission", "UpdateCatalog", "UpdateProduct", "getCustomFieldConfig", "ngOnInit", "optionGroups$", "snapshot", "data", "entity", "pipe", "map", "product", "optionGroups", "tap", "group", "UntypedFormGroup", "UntypedFormArray", "init", "controls", "optionGroup", "$product", "getProduct", "mapSingle", "combineLatest", "entity$", "languageCode$", "take", "mergeMap", "languageCode", "updateOperations", "updatedProductOptionInputs", "optionGroupForm", "dirty", "optionGroupEntity", "find", "og", "input", "getUpdatedOptionGroup", "push", "updateProductOptionGroup", "optionForm", "options", "o", "getUpdatedOption", "updateProductOptions", "forkJoin", "subscribe", "markAsPristine", "markForCheck", "success", "err", "error", "optionGroupFormGroup", "createUpdatedTranslatable", "translatable", "updatedFields", "customFieldConfig", "defaultTranslation", "name", "option", "optionFormGroup", "setFormValues", "groupsForm", "groupTranslation", "findTranslation", "groupForm", "setOptionGroupForm", "setCustomFieldsForm", "optionsForm", "array", "addControl", "optionTranslation", "setOptionForm", "customFields", "formGroup", "currentTranslation", "customValueFieldsGroup", "reduce", "hash", "field", "__spreadProps", "__spreadValues", "setCustomFieldFormValues", "control", "setValue", "\u0275\u0275directiveInject", "ActivatedRoute", "Router", "ServerConfigService", "DataService", "PermissionsService", "ProductDetailService", "UntypedFormBuilder", "ChangeDetectorRef", "NotificationService", "selectors", "standalone", "features", "\u0275\u0275InheritDefinitionFeature", "decls", "vars", "consts", "template", "rf", "ctx", "setLanguage", "\u0275\u0275twoWayListener", "i0", "\u0275\u0275twoWayBindingSet", "ProductOptionsEditorComponent_button_20_Template", "ProductOptionsEditorComponent_form_22_Template", "\u0275\u0275textInterpolate", "availableLanguages$", "\u0275\u0275twoWayProperty", "import_normalize_string", "import_unique", "import_normalize_string", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r1", "ctx_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "cancel", "\u0275\u0275elementEnd", "confirm", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "\u0275\u0275property", "form", "invalid", "CreateProductOptionGroupDialogComponent", "constructor", "formBuilder", "group", "name", "Validators", "required", "code", "updateCode", "nameControl", "get", "codeControl", "pristine", "setValue", "normalizeString", "value", "resolveWith", "options", "translations", "languageCode", "\u0275\u0275directiveInject", "FormBuilder", "selectors", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "CreateProductOptionGroupDialogComponent_ng_template_0_Template", "\u0275\u0275element", "CreateProductOptionGroupDialogComponent_ng_template_8_Template", "import_shared_utils", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275elementEnd", "\u0275\u0275property", "optionGroup_r1", "name", "\u0275\u0275advance", "options", "code", "\u0275\u0275textInterpolate3", "ctx_r1", "existingVariant", "sku", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r3", "\u0275\u0275nextContext", "\u0275\u0275resetView", "cancel", "confirm", "\u0275\u0275textInterpolate", "form", "invalid", "product", "optionGroups", "length", "CreateProductVariantDialogComponent", "constructor", "formBuilder", "group", "Validators", "required", "price", "record", "ngOnInit", "currencyCode", "variants", "optionGroup", "get", "addControl", "FormControl", "valueChanges", "subscribe", "value", "nameControl", "Object", "values", "every", "v", "dirty", "entries", "map", "groupCode", "optionId", "find", "og", "o", "id", "join", "setValue", "groupId", "getGroupIdFromCode", "optionIds", "filter", "notNullOrUndefined", "resolveWith", "productId", "Number", "translations", "languageCode", "getGroupCodeFromId", "\u0275\u0275directiveInject", "FormBuilder", "selectors", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "CreateProductVariantDialogComponent_ng_template_0_Template", "CreateProductVariantDialogComponent_vdr_form_field_3_Template", "CreateProductVariantDialogComponent_clr_alert_4_Template", "CreateProductVariantDialogComponent_div_5_Template", "CreateProductVariantDialogComponent_ng_template_16_Template", "import_unique", "\u0275\u0275elementStart", "\u0275\u0275listener", "option_r4", "\u0275\u0275restoreView", "_r3", "$implicit", "ctx_r4", "\u0275\u0275nextContext", "\u0275\u0275resetView", "removeOption", "$event", "i_r6", "index", "updateOption", "i0", "cancelBubble", "\u0275\u0275elementEnd", "editName", "\u0275\u0275text", "\u0275\u0275classProp", "isLast_r7", "lastSelected", "locked", "\u0275\u0275property", "groupName", "\u0275\u0275advance", "editingIndex", "name", "id", "\u0275\u0275textInterpolate", "\u0275\u0275template", "OptionValueInputComponent_div_1_vdr_chip_1_Template", "optionValues", "OPTION_VALUE_INPUT_VALUE_ACCESSOR", "provide", "NG_VALUE_ACCESSOR", "useExisting", "forwardRef", "OptionValueInputComponent", "multi", "formValue", "options", "constructor", "changeDetector", "add", "EventEmitter", "remove", "edit", "disabled", "input", "isFocussed", "registerOnChange", "fn", "onChangeFn", "registerOnTouched", "onTouchFn", "setDisabledState", "isDisabled", "markForCheck", "writeValue", "obj", "focus", "textArea", "nativeElement", "event", "optionValue", "nameInputs", "get", "setTimeout", "newName", "target", "value", "emit", "option", "filter", "o", "handleKey", "key", "addOptionValue", "preventDefault", "removeLastOption", "handleBlur", "parseInputIntoOptions", "find", "unique", "split", "map", "s", "trim", "length", "\u0275\u0275directiveInject", "ChangeDetectorRef", "selectors", "viewQuery", "rf", "ctx", "ElementRef", "decls", "vars", "consts", "template", "_r1", "textArea_r2", "\u0275\u0275reference", "OptionValueInputComponent_div_1_Template", "\u0275\u0275twoWayListener", "\u0275\u0275twoWayBindingSet", "\u0275\u0275twoWayProperty", "\u0275\u0275elementStart", "\u0275\u0275twoWayListener", "$event", "group_r2", "\u0275\u0275restoreView", "_r1", "$implicit", "i0", "\u0275\u0275twoWayBindingSet", "name", "\u0275\u0275resetView", "\u0275\u0275elementEnd", "\u0275\u0275listener", "i_r3", "index", "ctx_r3", "\u0275\u0275nextContext", "addOption", "removeOption", "removeOptionGroup", "\u0275\u0275element", "\u0275\u0275advance", "\u0275\u0275property", "\u0275\u0275pipeBind1", "\u0275\u0275twoWayProperty", "isNew", "values", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "variant_r5", "id", "\u0275\u0275pipeBind2", "variant_r6", "createdAt", "variant_r7", "updatedAt", "variant_r8", "variant_r9", "sku", "optionGroup_r11", "code", "\u0275\u0275textInterpolate", "option_r10", "_r12", "variant_r13", "item", "setOptionToAddToVariant", "addOptionToVariant", "options", "\u0275\u0275classProp", "optionsToAddToVariant", "\u0275\u0275template", "ProductVariantsEditorComponent_vdr_dt2_column_33_ng_template_1_vdr_chip_0_Template", "ProductVariantsEditorComponent_vdr_dt2_column_33_ng_template_1_ng_template_1_Template", "\u0275\u0275templateRefExtractor", "getOption", "selectOption_r14", "ProductVariantsEditorComponent_vdr_dt2_column_33_ng_template_1_Template", "variant_r15", "price", "currencyCode", "variant_r16", "priceWithTax", "variant_r18", "_r17", "deleteVariant", "GeneratedVariant", "constructor", "config", "key", "Object", "keys", "ProductVariantsEditorComponent", "route", "dataService", "productDetailService", "notificationService", "modalService", "changeDetector", "formValueChanged", "optionsChanged", "itemsPerPage", "currentPage", "searchTermControl", "FormControl", "selectionManager", "SelectionManager", "multiSelect", "itemsAreEqual", "a", "b", "additiveMode", "refresh$", "Subject", "ngOnInit", "languageCode", "snapshot", "paramMap", "get", "getDefaultUiLanguage", "settings", "getActiveChannel", "single$", "subscribe", "data", "activeChannel", "defaultCurrencyCode", "product$", "pipe", "switchMap", "product", "getProductVariantsOptions", "parent", "mapSingle", "startWith", "variants$", "valueChanges", "map", "term", "variants", "filter", "v", "toLowerCase", "includes", "optionGroups$", "optionGroups", "totalItems$", "length", "p", "allUsedOptionIds", "option", "flat", "allUsedOptionGroupIds", "groupId", "og", "locked", "o", "setItemsPerPage", "setPageNumber", "page", "onFormChanged", "variantInfo", "enabled", "canDeactivate", "addOptionGroup", "fromComponent", "CreateProductOptionGroupDialogComponent", "locals", "result", "createProductOptionGroups", "createProductOptionGroup", "addOptionGroupToProduct", "optionGroupId", "productId", "EMPTY", "success", "entity", "next", "markForCheck", "optionGroup", "usedByVariantsCount", "dialog", "title", "body", "translationVars", "count", "buttons", "type", "label", "returnValue", "val", "removeOptionGroupFromProduct", "force", "__typename", "error", "message", "optionName", "group", "addOptionToGroup", "productOptionGroupId", "normalizeString", "translations", "createProductOption", "deleteProductOption", "DeletionResult", "DELETED", "variantId", "optionId", "variant", "optionIds", "updateProductVariants", "unique", "response", "deleteProductVariant", "err", "createNewVariant", "CreateProductVariantDialogComponent", "createProductVariants", "find", "\u0275\u0275directiveInject", "ActivatedRoute", "DataService", "ProductDetailService", "NotificationService", "ModalService", "ChangeDetectorRef", "selectors", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "ProductVariantsEditorComponent_div_2_Template", "ProductVariantsEditorComponent_ng_template_20_Template", "ProductVariantsEditorComponent_ng_template_23_Template", "ProductVariantsEditorComponent_ng_template_26_Template", "ProductVariantsEditorComponent_ng_template_29_Template", "ProductVariantsEditorComponent_ng_template_32_Template", "ProductVariantsEditorComponent_vdr_dt2_column_33_Template", "ProductVariantsEditorComponent_ng_template_37_Template", "ProductVariantsEditorComponent_ng_template_40_Template", "ProductVariantsEditorComponent_ng_template_43_Template", "ProductVariantsResolver", "BaseEntityResolver", "constructor", "router", "dataService", "__typename", "id", "createdAt", "updatedAt", "name", "languageCode", "optionGroups", "variants", "product", "getProductVariantsOptions", "mapStream", "data", "\u0275\u0275inject", "Router", "DataService", "factory", "\u0275fac", "providedIn", "createRoutes", "pageService", "path", "component", "PageComponent", "data", "locationId", "breadcrumb", "children", "getPageTabRoutes", "redirectTo", "label", "link", "ProductVariantsEditorComponent", "canDeactivate", "CanDeactivateDetailGuard", "product", "name", "resolve", "route", "inject", "DataService", "getProductVariantsOptions", "parent", "params", "id", "mapSingle", "ProductOptionsEditorComponent", "createResolveData", "ProductVariantsResolver", "productOptionsEditorBreadcrumb", "entity", "pipe", "map", "\u0275\u0275text", "\u0275\u0275textInterpolate", "\u0275\u0275pipeBind1", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r1", "ctx_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "cancel", "\u0275\u0275elementEnd", "selectValues", "\u0275\u0275advance", "\u0275\u0275property", "selectedValues", "length", "\u0275\u0275textInterpolate1", "ApplyFacetDialogComponent", "constructor", "changeDetector", "ngAfterViewInit", "setTimeout", "selector", "focus", "resolveWith", "\u0275\u0275directiveInject", "ChangeDetectorRef", "selectors", "viewQuery", "rf", "ctx", "FacetValueSelectorComponent", "\u0275\u0275template", "ApplyFacetDialogComponent_ng_template_0_Template", "$event", "ApplyFacetDialogComponent_ng_template_2_Template", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r1", "ctx_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "save", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "detailForm", "invalid", "pristine", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "ASSET_DETAIL_QUERY", "gql", "ASSET_FRAGMENT", "TAG_FRAGMENT", "AssetDetailComponent", "TypedBaseDetailComponent", "constructor", "notificationService", "dataService", "formBuilder", "customFields", "getCustomFieldConfig", "FormGroup", "name", "FormControl", "tags", "group", "getCustomFieldsDefaults", "ngOnInit", "init", "ngOnDestroy", "destroy", "onAssetChange", "event", "get", "setValue", "markAsDirty", "product", "updateAsset", "id", "value", "subscribe", "success", "entity", "err", "error", "setFormValues", "languageCode", "map", "t", "length", "setCustomFieldFormValues", "\u0275\u0275directiveInject", "NotificationService", "DataService", "UntypedFormBuilder", "selectors", "standalone", "features", "\u0275\u0275InheritDefinitionFeature", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275element", "\u0275\u0275template", "AssetDetailComponent_button_5_Template", "$event", "\u0275\u0275pureFunction0", "_c0", "entity$", "AssetListComponent", "BaseListComponent", "constructor", "notificationService", "modalService", "dataService", "router", "route", "searchTerm$", "BehaviorSubject", "undefined", "filterByTags$", "uploading", "setQueryFn", "args", "product", "getAssetList", "refetchOnChannelChange", "data", "assets", "skip", "take", "searchTerm", "value", "tags", "map", "t", "options", "__spreadProps", "__spreadValues", "filter", "name", "contains", "sort", "createdAt", "SortOrder", "DESC", "tagsOperator", "LogicalOperator", "AND", "ngOnInit", "paginationConfig$", "combineLatest", "itemsPerPage$", "currentPage$", "totalItems$", "pipe", "itemsPerPage", "currentPage", "totalItems", "debounceTime", "takeUntil", "destroy$", "subscribe", "refresh", "allTags$", "getTagList", "mapStream", "items", "filesSelected", "files", "length", "createAssets", "finalize", "successCount", "result", "__typename", "error", "message", "success", "count", "deleteAssets", "showModalAndDelete", "a", "id", "switchMap", "response", "DeletionResult", "DELETED", "r", "entity", "err", "assetIds", "dialog", "title", "translationVars", "body", "buttons", "type", "label", "returnValue", "res", "EMPTY", "\u0275\u0275directiveInject", "NotificationService", "ModalService", "DataService", "Router", "ActivatedRoute", "selectors", "standalone", "features", "\u0275\u0275InheritDefinitionFeature", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275elementStart", "\u0275\u0275listener", "$event", "next", "\u0275\u0275elementEnd", "setItemsPerPage", "setPageNumber", "\u0275\u0275advance", "\u0275\u0275property", "\u0275\u0275pipeBind1", "\u0275\u0275pipeBind2", "items$", "\u0275\u0275pureFunction0", "_c0", "_c1", "\u0275\u0275elementContainerStart", "\u0275\u0275text", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "\u0275\u0275pipeBind1", "\u0275\u0275template", "AssignProductsToChannelDialogComponent_ng_template_0_ng_container_0_Template", "AssignProductsToChannelDialogComponent_ng_template_0_ng_template_1_Template", "\u0275\u0275templateRefExtractor", "\u0275\u0275property", "ctx_r1", "isProductVariantMode", "productModeTitle_r1", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind2", "\u0275\u0275pureFunction1", "_c0", "selectedChannel", "code", "row_r3", "pricePreview", "defaultCurrencyCode", "\u0275\u0275elementStart", "\u0275\u0275elementEnd", "AssignProductsToChannelDialogComponent_tr_33_ng_template_7_Template", "AssignProductsToChannelDialogComponent_tr_33_ng_template_8_Template", "name", "price", "currentChannel", "noChannelSelected_r4", "_c1", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r5", "\u0275\u0275nextContext", "\u0275\u0275resetView", "cancel", "assign", "AssignProductsToChannelDialogComponent_ng_template_35_ng_template_4_Template", "AssignProductsToChannelDialogComponent_ng_template_35_ng_template_5_Template", "noSelection_r6", "AssignProductsToChannelDialogComponent", "productVariantIds", "constructor", "dataService", "notificationService", "priceFactorControl", "UntypedFormControl", "selectedChannelIdControl", "ngOnInit", "activeChannelId$", "client", "userStatus", "mapSingle", "activeChannelId", "allChannels$", "settings", "getChannels", "data", "channels", "combineLatest", "subscribe", "items", "find", "c", "id", "availableChannels", "valueChanges", "ids", "selectChannel", "variantsPreview$", "from", "getTopVariants", "pipe", "startWith", "map", "variants", "factor", "v", "channelIds", "product", "assignVariantsToChannel", "channelId", "priceFactor", "value", "success", "channel", "count", "length", "resolveWith", "assignProductsToChannel", "productIds", "take", "__async", "lastValueFrom", "getProductVariants", "filterOperator", "LogicalOperator", "OR", "filter", "productId", "in", "single$", "productVariants", "\u0275\u0275directiveInject", "DataService", "NotificationService", "selectors", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "AssignProductsToChannelDialogComponent_ng_template_0_Template", "\u0275\u0275element", "AssignProductsToChannelDialogComponent_ng_template_29_Template", "AssignProductsToChannelDialogComponent_ng_template_30_Template", "AssignProductsToChannelDialogComponent_tr_33_Template", "AssignProductsToChannelDialogComponent_ng_template_35_Template", "currentChannelIds", "noSelection_r7", "import_unique", "GET_PRODUCTS_WITH_FACET_VALUES_BY_IDS", "gql", "GET_VARIANTS_WITH_FACET_VALUES_BY_IDS", "UPDATE_PRODUCTS_BULK", "UPDATE_VARIANTS_BULK", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "\u0275\u0275elementStart", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "item_r2", "sku", "\u0275\u0275listener", "facetValue_r4", "\u0275\u0275restoreView", "_r3", "$implicit", "\u0275\u0275nextContext", "ctx_r4", "\u0275\u0275resetView", "removeFacetValue", "id", "\u0275\u0275property", "\u0275\u0275template", "BulkAddFacetValuesDialogComponent_table_7_tr_2_div_4_Template", "BulkAddFacetValuesDialogComponent_table_7_tr_2_vdr_facet_value_chip_6_Template", "name", "facetValues", "BulkAddFacetValuesDialogComponent_table_7_tr_2_Template", "items", "\u0275\u0275element", "_r6", "cancel", "addFacetValues", "selectedValues", "length", "facetValuesRemoved", "BulkAddFacetValuesDialogComponent", "constructor", "dataService", "changeDetectorRef", "mode", "state", "ngOnInit", "fetchData$", "query", "GET_PRODUCTS_WITH_FACET_VALUES_BY_IDS", "ids", "mapSingle", "products", "map", "p", "__spreadProps", "__spreadValues", "GET_VARIANTS_WITH_FACET_VALUES_BY_IDS", "productVariants", "subscription", "subscribe", "next", "markForCheck", "ngOnDestroy", "unsubscribe", "resolveWith", "item", "facetValueId", "filter", "fv", "selectedFacetValueIds", "sv", "mutate", "UPDATE_PRODUCTS_BULK", "input", "product", "facetValueIds", "unique", "UPDATE_VARIANTS_BULK", "result", "\u0275\u0275directiveInject", "DataService", "ChangeDetectorRef", "selectors", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "BulkAddFacetValuesDialogComponent_ng_template_0_Template", "$event", "i0", "_r1", "BulkAddFacetValuesDialogComponent_table_7_Template", "BulkAddFacetValuesDialogComponent_ng_template_8_Template", "\u0275\u0275templateRefExtractor", "BulkAddFacetValuesDialogComponent_ng_template_10_Template", "placeholder_r7", "\u0275\u0275elementContainer", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "variant_r1", "id", "\u0275\u0275pipeBind2", "variant_r2", "createdAt", "variant_r3", "updatedAt", "\u0275\u0275elementStart", "\u0275\u0275elementEnd", "\u0275\u0275element", "\u0275\u0275property", "\u0275\u0275pureFunction1", "_c1", "variant_r4", "productId", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "name", "variant_r5", "sku", "CollectionContentsComponent", "constructor", "route", "router", "dataService", "previewUpdatedFilters", "filterTermControl", "UntypedFormControl", "isLoading", "collectionIdChange$", "BehaviorSubject", "parentIdChange$", "filterChanges$", "inheritFiltersChanges$", "refresh$", "destroy$", "Subject", "ngOnInit", "contentsCurrentPage$", "queryParamMap", "pipe", "map", "qpm", "get", "page", "startWith", "distinctUntilChanged", "contentsItemsPerPage$", "perPage", "filterTerm$", "valueChanges", "debounceTime", "tap", "setContentsPageNumber", "asObservable", "filter", "inheritFilters", "collection$", "combineLatest", "takeUntil", "switchMap", "parentId", "currentPage", "itemsPerPage", "filterTerm", "filters", "take", "skip", "length", "filterClause", "contains", "undefined", "collection", "previewCollectionVariants", "mapSingle", "data", "catchError", "of", "items", "totalItems", "getCollectionContents", "productVariants", "finalize", "contents$", "result", "contentsTotalItems$", "ngOnChanges", "changes", "next", "collectionId", "currentValue", "updatedFilters", "ngOnDestroy", "complete", "setParam", "setContentsItemsPerPage", "refresh", "key", "value", "navigate", "relativeTo", "queryParams", "queryParamsHandling", "replaceUrl", "\u0275\u0275directiveInject", "ActivatedRoute", "Router", "DataService", "selectors", "contentQueries", "rf", "ctx", "dirIndex", "TemplateRef", "\u0275\u0275template", "CollectionContentsComponent_ng_container_3_Template", "\u0275\u0275listener", "$event", "CollectionContentsComponent_ng_template_14_Template", "CollectionContentsComponent_ng_template_17_Template", "CollectionContentsComponent_ng_template_20_Template", "CollectionContentsComponent_ng_template_23_Template", "CollectionContentsComponent_ng_template_26_Template", "\u0275\u0275classProp", "headerTemplate", "_c0", "\u0275\u0275pipeBind1", "\u0275\u0275element", "\u0275\u0275property", "ctx_r1", "filters", "id", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r3", "\u0275\u0275nextContext", "\u0275\u0275resetView", "onToggleAllClick", "\u0275\u0275elementEnd", "\u0275\u0275advance", "selectionManager", "areAllCurrentItemsSelected", "\u0275\u0275text", "\u0275\u0275textInterpolate", "sort_r5", "sortOrder", "_r4", "ngIf", "toggleSortOrder", "\u0275\u0275template", "CollectionDataTableComponent_th_8_div_5_clr_icon_2_Template", "CollectionDataTableComponent_th_8_div_5_clr_icon_3_Template", "CollectionDataTableComponent_th_8_div_5_clr_icon_4_Template", "CollectionDataTableComponent_th_8_div_5_div_5_Template", "\u0275\u0275classProp", "CollectionDataTableComponent_th_8_div_5_Template", "column_r6", "expand", "align", "heading", "sort", "\u0275\u0275elementContainer", "activeFilter_r8", "\u0275\u0275elementContainerStart", "CollectionDataTableComponent_tr_13_ng_container_8_vdr_data_table_filters_2_Template", "CollectionDataTableComponent_tr_13_ng_container_8_vdr_data_table_filters_3_Template", "activeFilters", "length", "_r7", "toggleSearchFilterRow", "CollectionDataTableComponent_tr_13_ng_container_6_Template", "CollectionDataTableComponent_tr_13_ng_container_7_Template", "CollectionDataTableComponent_tr_13_ng_container_8_Template", "showSearchFilterRow", "\u0275\u0275pipeBind1", "searchComponent", "template", "customSearchTemplate", "collectionRowTmp_r11", "\u0275\u0275pureFunction2", "_c4", "item_r9", "i_r10", "emptyStateLabel", "$event", "_r12", "itemsPerPageChange", "emit", "itemsPerPage", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind2", "\u0275\u0275pureFunction3", "_c5", "currentStart", "currentEnd", "totalItems", "_r13", "pageChange", "currentPage", "_r14", "item_r15", "item", "onRowClick", "activeIndex", "absoluteIndex", "isSelected", "CollectionDataTableComponent_ng_template_23_td_3_ng_container_2_ng_container_1_Template", "componentConfig_r16", "config", "component", "\u0275\u0275pureFunction1", "_c7", "injector", "CollectionDataTableComponent_ng_template_23_td_3_ng_template_3_ng_container_0_Template", "column_r17", "_c8", "depth_r19", "CollectionDataTableComponent_ng_template_23_td_3_ng_container_2_Template", "CollectionDataTableComponent_ng_template_23_td_3_ng_template_3_Template", "\u0275\u0275templateRefExtractor", "customComponents", "get", "defaultComponent_r20", "CollectionDataTableComponent_ng_template_23_ng_container_5_ng_container_1_Template", "subCollection_r21", "CollectionDataTableComponent_ng_template_23_td_2_Template", "CollectionDataTableComponent_ng_template_23_td_3_Template", "CollectionDataTableComponent_ng_template_23_ng_container_5_Template", "_c6", "visibleSortedColumns", "getSubcollections", "CollectionDataTableComponent", "DataTable2Component", "constructor", "changeDetectorRef", "dataService", "changeOrder", "EventEmitter", "dragRefs", "sortPredicate", "index", "dropList", "getSortedItems", "data", "collection", "parentId", "ngOnChanges", "changes", "subCollections", "items", "allCollections", "push", "subCollectionMatches", "flat", "forEach", "ngAfterViewInit", "collectionRowList", "subscribe", "val", "removeItem", "ref", "toArray", "dropContainer", "_dragRef", "_withDropContainer", "_dropListRef", "addItem", "filter", "c", "onDrop", "event", "isTopLevel", "breadcrumbs", "pageIndexOffset", "parentIndex", "findIndex", "i", "adjustedIndex", "currentIndex", "collectionId", "splice", "previousIndex", "parent", "find", "adjustedPreviousIndex", "markForCheck", "\u0275\u0275directiveInject", "ChangeDetectorRef", "DataService", "selectors", "viewQuery", "rf", "ctx", "CdkDropList", "CdkDrag", "CollectionDataTableComponent_vdr_data_table_filter_presets_0_Template", "\u0275\u0275projection", "CollectionDataTableComponent_th_7_Template", "CollectionDataTableComponent_th_8_Template", "i0", "_r1", "onColumnReorder", "onColumnsReset", "CollectionDataTableComponent_tr_13_Template", "CollectionDataTableComponent_ng_container_15_Template", "CollectionDataTableComponent_tr_18_Template", "CollectionDataTableComponent_vdr_items_per_page_controls_20_Template", "CollectionDataTableComponent_div_21_Template", "CollectionDataTableComponent_vdr_pagination_controls_22_Template", "CollectionDataTableComponent_ng_template_23_Template", "disableSelect", "selection", "uiLanguage$", "sortedColumns", "\u0275\u0275pureFunction4", "_c3", "trackByFn", "bind", "import_normalize_string", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r2", "ctx_r2", "\u0275\u0275nextContext", "\u0275\u0275resetView", "create", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "detailForm", "invalid", "pristine", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "_r4", "save", "assetsChanged", "\u0275\u0275template", "CollectionDetailComponent_ng_template_11_button_0_Template", "updatePermission", "\u0275\u0275elementContainerStart", "\u0275\u0275textInterpolate", "\u0275\u0275element", "entity_r5", "\u0275\u0275pureFunction0", "_c2", "\u0275\u0275pureFunction1", "_c3", "breadcrumb_r6", "id", "name", "CollectionDetailComponent_vdr_page_block_29_li_3_a_1_Template", "CollectionDetailComponent_vdr_page_block_29_li_3_a_2_Template", "CollectionDetailComponent_vdr_page_block_29_li_3_ng_container_3_Template", "isFirst_r7", "isLast_r8", "CollectionDetailComponent_vdr_page_block_29_li_3_Template", "entity_r9", "breadcrumbs", "customFields", "get", "i_r11", "_r10", "index", "removeFilter", "filter_r12", "getFilterDefinition", "filter_r14", "_r13", "$implicit", "addFilter", "description", "CollectionDetailComponent_div_65_button_9_Template", "allFilters", "_r15", "toggleLivePreview", "\u0275\u0275textInterpolate2", "\u0275\u0275pipeBind2", "_c4", "count_r16", "\u0275\u0275classProp", "tmp_7_0", "_c5", "tmp_9_0", "livePreview", "COLLECTION_DETAIL_QUERY", "gql", "COLLECTION_FRAGMENT", "CollectionDetailComponent", "TypedBaseDetailComponent", "constructor", "changeDetector", "dataService", "formBuilder", "notificationService", "modalService", "localStorageService", "getCustomFieldConfig", "group", "Validators", "required", "slug", "unicodePatternValidator", "visible", "inheritFilters", "filters", "array", "getCustomFieldsDefaults", "assetChanges", "Permission", "UpdateCatalog", "UpdateCollection", "filterRemoved$", "Subject", "ngOnInit", "init", "collection", "getCollectionFilters", "single$", "subscribe", "res", "collectionFilters", "filtersFormArray", "inheritFiltersControl", "inheritFilters$", "valueChanges", "pipe", "distinctUntilChanged", "updatedFilters$", "merge", "statusChanges", "debounceTime", "filter", "touched", "map", "mapOperationsToInputs", "value", "_filter", "arg", "arguments", "parentId$", "route", "paramMap", "pm", "undefined", "switchMap", "parentId", "of", "entity$", "parent", "ngOnDestroy", "destroy", "find", "f", "code", "Object", "values", "length", "updateSlug", "nameValue", "slugControl", "currentTranslation", "entity", "findTranslation", "languageCode", "currentSlugIsEmpty", "setValue", "normalizeString", "collectionFilter", "filtersArray", "argsHash", "args", "reduce", "output", "__spreadProps", "__spreadValues", "getConfigArgValue", "push", "control", "a", "removeAt", "markAsDirty", "markAsTouched", "splice", "next", "dirty", "input", "getUpdatedCollection", "createdAt", "updatedAt", "isPrivate", "featuredAsset", "assets", "translations", "children", "snapshot", "createCollection", "data", "success", "markAsPristine", "markForCheck", "router", "navigate", "relativeTo", "err", "error", "combineLatest", "languageCode$", "take", "mergeMap", "category", "updateCollection", "contentsComponent", "refresh", "canDeactivate", "set", "trackByFn", "item", "JSON", "stringify", "setFormValues", "patchValue", "formArray", "clear", "forEach", "setCustomFieldFormValues", "form", "updatedCategory", "createUpdatedTranslatable", "translatable", "updatedFields", "customFieldConfig", "defaultTranslation", "assetIds", "featuredAssetId", "operations", "formValueOperations", "o", "i", "entries", "j", "encodeConfigArgValue", "\u0275\u0275directiveInject", "ChangeDetectorRef", "DataService", "FormBuilder", "NotificationService", "ModalService", "LocalStorageService", "selectors", "viewQuery", "rf", "ctx", "$event", "i0", "_r1", "setLanguage", "CollectionDetailComponent_button_9_Template", "CollectionDetailComponent_ng_template_11_Template", "\u0275\u0275templateRefExtractor", "CollectionDetailComponent_ng_container_24_Template", "CollectionDetailComponent_ng_template_25_Template", "CollectionDetailComponent_vdr_card_27_Template", "CollectionDetailComponent_vdr_page_block_29_Template", "target", "CollectionDetailComponent_vdr_card_47_Template", "CollectionDetailComponent_ng_container_60_Template", "CollectionDetailComponent_ng_template_61_Template", "CollectionDetailComponent_ng_container_64_Template", "CollectionDetailComponent_div_65_Template", "CollectionDetailComponent_ng_template_73_Template", "isNew$", "availableLanguages$", "updateButton_r17", "private_r18", "_c1", "noInherit_r19", "CollectionBreadcrumbPipe", "transform", "value", "breadcrumbs", "slice", "pure", "standalone", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "collection_r1", "id", "\u0275\u0275element", "\u0275\u0275classProp", "depth_r3", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r4", "collection_r5", "\u0275\u0275nextContext", "item", "ctx_r5", "\u0275\u0275resetView", "toggleExpanded", "\u0275\u0275template", "MoveCollectionsDialogComponent_ng_template_14_button_2_clr_icon_1_Template", "MoveCollectionsDialogComponent_ng_template_14_button_2_clr_icon_2_Template", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275property", "expandedIds", "includes", "MoveCollectionsDialogComponent_ng_template_14_clr_icon_1_Template", "MoveCollectionsDialogComponent_ng_template_14_button_2_Template", "MoveCollectionsDialogComponent_ng_template_14_button_3_Template", "_r2", "resolveWith", "children", "length", "parentId", "\u0275\u0275textInterpolate", "\u0275\u0275pipeBind2", "\u0275\u0275pureFunction1", "_c0", "name", "item_r7", "\u0275\u0275elementContainerStart", "MoveCollectionsDialogComponent_ng_template_17_ng_container_1_ng_container_1_div_1_Template", "breadcrumbs_r8", "MoveCollectionsDialogComponent_ng_template_17_ng_container_1_ng_container_1_Template", "MoveCollectionsDialogComponent_ng_template_17_ng_container_1_span_2_Template", "MoveCollectionsDialogComponent_ng_template_17_ng_container_1_Template", "collection_r9", "collection_r10", "slug", "MoveCollectionsDialogComponent", "constructor", "dataService", "i18nService", "searchTermControl", "FormControl", "currentPage$", "BehaviorSubject", "itemsPerPage$", "expandedIds$", "Subject", "ngOnInit", "getCollectionsResult", "collection", "getCollections", "searchTerm$", "valueChanges", "pipe", "debounceTime", "distinctUntilChanged", "startWith", "combineLatest", "subscribe", "searchTerm", "currentPage", "itemsPerPage", "topLevelOnly", "ref", "refetch", "options", "skip", "take", "filter", "contains", "rootCollectionId$", "mapSingle", "data", "collections", "items", "items$", "mapStream", "map", "rootCollectionId", "translate", "position", "featuredAsset", "breadcrumbs", "isPrivate", "createdAt", "updatedAt", "totalItems$", "totalItems", "subCollections$", "tap", "val", "switchMap", "ids", "in", "of", "push", "next", "\u0275\u0275directiveInject", "DataService", "I18nService", "selectors", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "MoveCollectionsDialogComponent_ng_template_0_Template", "$event", "MoveCollectionsDialogComponent_ng_template_11_Template", "MoveCollectionsDialogComponent_ng_template_14_Template", "MoveCollectionsDialogComponent_ng_template_17_Template", "MoveCollectionsDialogComponent_ng_template_20_Template", "deleteCollectionsBulkAction", "createBulkDeleteAction", "location", "requiresPermission", "userPermissions", "includes", "Permission", "DeleteCollection", "DeleteCatalog", "getItemName", "item", "name", "bulkDelete", "dataService", "ids", "collection", "deleteCollections", "pipe", "map", "res", "moveCollectionsBulkAction", "label", "icon", "UpdateCatalog", "UpdateCollection", "onClick", "injector", "selection", "hostComponent", "clearSelection", "modalService", "get", "ModalService", "DataService", "notificationService", "NotificationService", "fromComponent", "MoveCollectionsDialogComponent", "size", "closable", "switchMap", "result", "inputs", "c", "collectionId", "id", "parentId", "index", "moveCollection", "EMPTY", "subscribe", "success", "count", "length", "refresh", "assignCollectionsToChannelBulkAction", "createBulkAssignToChannelAction", "bulkAssignToChannel", "collectionIds", "channelIds", "channelId", "assignCollectionsToChannel", "removeCollectionsFromChannelBulkAction", "createBulkRemoveFromChannelAction", "bulkRemoveFromChannel", "removeCollectionsFromChannel", "duplicateCollectionsBulkAction", "DuplicateEntityDialogComponent", "locals", "entities", "entityName", "title", "getEntityName", "entity", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "\u0275\u0275pureFunction0", "_c1", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "collection_r3", "id", "\u0275\u0275pipeBind2", "collection_r4", "createdAt", "collection_r5", "updatedAt", "collection_r6", "position", "\u0275\u0275classProp", "depth_r7", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r8", "collection_r9", "\u0275\u0275nextContext", "item", "ctx_r1", "\u0275\u0275resetView", "toggleExpanded", "\u0275\u0275template", "CollectionListComponent_ng_template_12_ng_template_24_button_2_clr_icon_1_Template", "CollectionListComponent_ng_template_12_ng_template_24_button_2_clr_icon_2_Template", "expandedIds", "includes", "CollectionListComponent_ng_template_12_ng_template_24_clr_icon_1_Template", "CollectionListComponent_ng_template_12_ng_template_24_button_2_Template", "children", "length", "\u0275\u0275pureFunction1", "_c2", "\u0275\u0275textInterpolate", "name", "item_r10", "\u0275\u0275elementContainerStart", "CollectionListComponent_ng_template_12_ng_template_27_ng_container_1_ng_container_1_div_1_Template", "breadcrumbs_r11", "CollectionListComponent_ng_template_12_ng_template_27_ng_container_1_ng_container_1_Template", "CollectionListComponent_ng_template_12_ng_template_27_ng_container_1_span_2_Template", "CollectionListComponent_ng_template_12_ng_template_27_ng_container_1_Template", "collection_r12", "collection_r13", "slug", "CollectionListComponent_ng_template_12_ng_template_33_vdr_chip_0_Template", "CollectionListComponent_ng_template_12_ng_template_33_vdr_chip_1_Template", "collection_r14", "isPrivate", "_c3", "collection_r15", "_c4", "customField_r16", "sorts", "$event", "_r1", "setPageNumber", "setItemsPerPage", "onRearrange", "setVisibleColumns", "CollectionListComponent_ng_template_12_ng_template_12_Template", "CollectionListComponent_ng_template_12_ng_template_15_Template", "CollectionListComponent_ng_template_12_ng_template_18_Template", "CollectionListComponent_ng_template_12_ng_template_21_Template", "CollectionListComponent_ng_template_12_ng_template_24_Template", "CollectionListComponent_ng_template_12_ng_template_27_Template", "CollectionListComponent_ng_template_12_ng_template_30_Template", "CollectionListComponent_ng_template_12_ng_template_33_Template", "CollectionListComponent_ng_template_12_ng_template_36_Template", "CollectionListComponent_ng_template_12_vdr_dt2_custom_field_column_37_Template", "dataTableListId", "items$", "subCollections$", "itemsPerPage$", "totalItems$", "currentPage$", "filters", "activeCollectionIndex$", "selectionManager", "searchTermControl", "get", "customFields", "activeCollectionId$", "CollectionListComponent_ng_template_13_ng_container_0_Template", "CollectionListComponent", "TypedBaseListComponent", "constructor", "dataService", "notificationService", "getCustomFieldConfig", "createFilterCollection", "addIdFilter", "addDateFilters", "addFilter", "label", "type", "kind", "filterField", "toFilterInput", "value", "eq", "addCustomFieldFilters", "connectToRoute", "route", "createSortCollection", "defaultSort", "addSort", "addCustomFieldSorts", "configure", "document", "GetCollectionListDocument", "getItems", "data", "collections", "setVariables", "skip", "_take", "topLevelOnly", "activeFilters", "undefined", "options", "take", "filter", "__spreadValues", "contains", "createFilterInput", "sort", "createSortInput", "refreshListOnChanges", "valueChanges", "ngOnInit", "paramMap", "pipe", "map", "pm", "distinctUntilChanged", "expandedIds$", "queryParamMap", "qpm", "ids", "split", "takeUntil", "destroy$", "subscribe", "combineLatest", "refresh$", "switchMap", "collection", "getCollections", "parentId", "in", "mapStream", "items", "of", "activeCollectionTitle$", "subCollections", "match", "find", "c", "allCollections", "push", "subCollectionMatches", "findIndex", "event", "moveCollection", "next", "success", "refresh", "error", "err", "closeContents", "params", "snapshot", "contents", "router", "navigate", "relativeTo", "queryParamsHandling", "setLanguage", "code", "client", "setContentLanguage", "queryParams", "expanded", "join", "\u0275\u0275directiveInject", "DataService", "NotificationService", "selectors", "standalone", "features", "\u0275\u0275InheritDefinitionFeature", "decls", "vars", "consts", "template", "rf", "ctx", "CollectionListComponent_a_8_Template", "CollectionListComponent_ng_template_12_Template", "CollectionListComponent_ng_template_13_Template", "availableLanguages$", "contentLanguage$", "_c0", "CollectionTreeService", "constructor", "allMoveListItems", "_rearrange$", "Subject", "_delete$", "rearrange$", "asObservable", "delete$", "ngOnDestroy", "complete", "setCollectionTree", "tree", "collectionTree", "resetMoveList", "getMoveListItems", "collection", "length", "calculateAllMoveListItems", "filter", "item", "id", "ancestorIdPath", "has", "parent", "onDrop", "event", "data", "newParentId", "container", "Error", "next", "collectionId", "parentId", "index", "currentIndex", "onMove", "onDelete", "visit", "node", "parentPath", "output", "path", "concat", "name", "push", "slice", "join", "children", "forEach", "child", "Set", "factory", "\u0275fac", "\u0275\u0275element", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r5", "collection_r3", "\u0275\u0275nextContext", "$implicit", "ctx_r3", "\u0275\u0275resetView", "toggleExpanded", "\u0275\u0275template", "CollectionTreeNodeComponent_div_3_button_5_clr_icon_1_Template", "CollectionTreeNodeComponent_div_3_button_5_clr_icon_2_Template", "\u0275\u0275elementEnd", "\u0275\u0275property", "expandAll", "\u0275\u0275advance", "expanded", "\u0275\u0275text", "\u0275\u0275textInterpolate", "\u0275\u0275pipeBind1", "\u0275\u0275pureFunction1", "_c6", "_c5", "id", "\u0275\u0275textInterpolate1", "item_r10", "_r9", "move", "hasUpdatePermission$", "path", "activeCollectionId", "selectionManager", "$event", "_r2", "toggleSelection", "CollectionTreeNodeComponent_div_3_button_5_Template", "CollectionTreeNodeComponent_div_3_ng_template_6_Template", "\u0275\u0275templateRefExtractor", "CollectionTreeNodeComponent_div_3_vdr_chip_10_Template", "CollectionTreeNodeComponent_div_3_div_19_Template", "getMoveListItems", "CollectionTreeNodeComponent_div_3_a_24_Template", "ctx_r5", "i_r7", "index", "moveUp", "ctx_r7", "moveDown", "CollectionTreeNodeComponent_div_3_button_39_Template", "delete", "CollectionTreeNodeComponent_div_3_vdr_collection_tree_node_46_Template", "\u0275\u0275classProp", "isPrivate", "depth", "isSelected", "children", "length", "folderSpacer_r11", "name", "_c1", "_c0", "_c2", "\u0275\u0275pureFunction0", "_c3", "_c4", "collectionTree", "moveListItems", "hasDeletePermission$", "CollectionTreeNodeComponent", "constructor", "parent", "dataService", "collectionTreeService", "router", "route", "changeDetectorRef", "ngOnInit", "parentName", "permissions$", "client", "userStatus", "mapStream", "data", "permissions", "pipe", "shareReplay", "map", "perms", "includes", "Permission", "UpdateCatalog", "UpdateCollection", "DeleteCatalog", "DeleteCollection", "subscription", "selectionChanges$", "subscribe", "markForCheck", "ngOnChanges", "changes", "expandAllChange", "previousValue", "currentValue", "forEach", "c", "ngOnDestroy", "unsubscribe", "trackByFn", "item", "collection", "expandedIds", "snapshot", "queryParamMap", "get", "split", "push", "filter", "navigate", "queryParams", "join", "queryParamsHandling", "relativeTo", "parentId", "onMove", "collectionId", "currentIndex", "drop", "event", "moveItemInArray", "previousIndex", "onDrop", "onDelete", "\u0275\u0275directiveInject", "DataService", "CollectionTreeService", "Router", "ActivatedRoute", "ChangeDetectorRef", "selectors", "inputs", "standalone", "features", "\u0275\u0275NgOnChangesFeature", "decls", "vars", "consts", "template", "rf", "ctx", "i0", "_r1", "CollectionTreeNodeComponent_div_3_Template", "AsyncPipe", "TranslatePipe", "styles", "changeDetection", "arrayToTree", "nodes", "currentState", "expandedIds", "topLevelNodes", "mappedArr", "currentStateMap", "treeToMap", "node", "id", "__spreadProps", "__spreadValues", "children", "map", "n", "hasOwnProperty", "mappedElem", "expanded", "get", "includes", "parent", "push", "length", "undefined", "tree", "nodeMap", "Map", "visit", "set", "forEach", "\u0275\u0275element", "\u0275\u0275property", "ctx_r0", "expandAll", "collectionTree", "selectionManager", "activeCollectionId", "CollectionTreeComponent", "constructor", "collectionTreeService", "expandedIds", "rearrange", "EventEmitter", "deleteCollection", "ngOnChanges", "changes", "collections", "arrayToTree", "setCollectionTree", "resetMoveList", "ngOnInit", "rearrange$", "subscribe", "event", "emit", "delete$", "id", "\u0275\u0275directiveInject", "CollectionTreeService", "selectors", "inputs", "outputs", "standalone", "features", "\u0275\u0275ProvidersFeature", "\u0275\u0275NgOnChangesFeature", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "CollectionTreeComponent_vdr_collection_tree_node_0_Template", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "\u0275\u0275elementStart", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate2", "variant_r1", "name", "sku", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r2", "ctx_r2", "\u0275\u0275nextContext", "\u0275\u0275resetView", "cancel", "confirm", "\u0275\u0275textInterpolate", "ConfirmVariantDeletionDialogComponent", "constructor", "variants", "resolveWith", "selectors", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "ConfirmVariantDeletionDialogComponent_ng_template_0_Template", "ConfirmVariantDeletionDialogComponent_li_4_Template", "ConfirmVariantDeletionDialogComponent_ng_template_5_Template", "\u0275\u0275property", "import_normalize_string", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r1", "ctx_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "cancel", "\u0275\u0275elementEnd", "confirm", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "\u0275\u0275property", "form", "invalid", "CreateFacetValueDialogComponent", "constructor", "formBuilder", "group", "name", "Validators", "required", "code", "updateCode", "nameControl", "get", "codeControl", "pristine", "setValue", "normalizeString", "value", "resolveWith", "facetId", "translations", "languageCode", "\u0275\u0275directiveInject", "FormBuilder", "selectors", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "CreateFacetValueDialogComponent_ng_template_0_Template", "\u0275\u0275element", "CreateFacetValueDialogComponent_ng_template_8_Template", "import_generated_types", "import_normalize_string", "import_shared_utils", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r2", "ctx_r2", "\u0275\u0275nextContext", "\u0275\u0275resetView", "create", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "detailForm", "invalid", "pristine", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "_r4", "save", "\u0275\u0275template", "FacetDetailComponent_ng_template_11_button_0_Template", "updatePermission", "\u0275\u0275elementContainerStart", "\u0275\u0275textInterpolate", "\u0275\u0275element", "entity_r5", "customFields", "get", "filterControl", "customValueFields", "\u0275\u0275pureFunction1", "_c3", "value_r8", "id", "$event", "_r7", "$implicit", "updateValueCode", "code", "target", "value", "FacetDetailComponent_vdr_card_43_ng_container_3_tr_14_td_8_Template", "deleteFacetValue", "_c2", "length", "FacetDetailComponent_vdr_card_43_ng_container_3_ng_container_11_Template", "FacetDetailComponent_vdr_card_43_ng_container_3_tr_14_Template", "_r6", "setItemsPerPage", "setCurrentPage", "\u0275\u0275pipeBind2", "filteredValues_r9", "\u0275\u0275pureFunction3", "_c1", "currentPage", "itemsPerPage", "totalItems", "_r10", "addFacetValue", "FacetDetailComponent_vdr_card_43_ng_template_2_Template", "FacetDetailComponent_vdr_card_43_ng_container_3_Template", "FacetDetailComponent_vdr_card_43_button_6_Template", "values$", "\u0275\u0275pureFunction0", "_c0", "FACET_DETAIL_QUERY", "gql", "FACET_WITH_VALUE_LIST_FRAGMENT", "FacetDetailComponent", "TypedBaseDetailComponent", "constructor", "changeDetector", "dataService", "formBuilder", "notificationService", "modalService", "getCustomFieldConfig", "group", "facet", "Validators", "required", "name", "visible", "getCustomFieldsDefaults", "values", "record", "FormControl", "BehaviorSubject", "Permission", "UpdateCatalog", "UpdateFacet", "ngOnInit", "init", "valueChanges", "pipe", "debounceTime", "takeUntil", "destroy$", "subscribe", "filterTerm", "fetchFacetValues", "ngOnDestroy", "destroy", "updateCode", "currentCode", "nameValue", "codeControl", "setValue", "normalizeString", "valueId", "customValueFieldIsSet", "index", "fromComponent", "CreateFacetValueDialogComponent", "locals", "languageCode", "facetId", "switchMap", "result", "createFacetValues", "EMPTY", "success", "entity", "facetForm", "dirty", "newFacet", "getUpdatedFacet", "createdAt", "updatedAt", "isPrivate", "translations", "createFacet", "data", "markAsPristine", "markForCheck", "router", "navigate", "relativeTo", "route", "err", "error", "valuesFormRecord", "combineLatest", "entity$", "languageCode$", "take", "mergeMap", "updateOperations", "updatedFacetInput", "push", "updateFacet", "updatedValues", "getUpdatedFacetValues", "updateFacetValues", "forkJoin", "facetValueId", "showModalAndDelete", "response", "DeletionResult", "DELETED", "message", "map", "r", "deleted", "query", "GetFacetDetailDocument", "single$", "dialog", "title", "body", "buttons", "type", "label", "returnValue", "deleteFacetValues", "newPage", "facetValueListOptions", "__spreadValues", "skip", "sort", "SortOrder", "DESC", "filter", "contains", "next", "valueList", "items", "setFacetValueFormValues", "setFormValues", "currentTranslation", "findTranslation", "patchValue", "setCustomFieldFormValues", "currentValuesFormGroup", "forEach", "valueTranslation", "valueControl", "addControl", "customValueFieldsGroup", "UntypedFormGroup", "fieldDef", "key", "fieldValue", "control", "UntypedFormControl", "facetFormGroup", "input", "createUpdatedTranslatable", "translatable", "updatedFields", "customFieldConfig", "defaultTranslation", "valuesFormGroup", "Object", "controls", "c", "i", "notNullOrUndefined", "\u0275\u0275directiveInject", "ChangeDetectorRef", "DataService", "FormBuilder", "NotificationService", "ModalService", "selectors", "standalone", "features", "\u0275\u0275InheritDefinitionFeature", "decls", "vars", "consts", "template", "rf", "ctx", "i0", "_r1", "setLanguage", "FacetDetailComponent_button_9_Template", "FacetDetailComponent_ng_template_11_Template", "\u0275\u0275templateRefExtractor", "FacetDetailComponent_ng_container_24_Template", "FacetDetailComponent_ng_template_25_Template", "FacetDetailComponent_vdr_page_entity_info_28_Template", "FacetDetailComponent_vdr_card_41_Template", "FacetDetailComponent_vdr_card_43_Template", "isNew$", "availableLanguages$", "updateButton_r11", "private_r12", "import_unique", "deleteFacetsBulkAction", "createBulkDeleteAction", "location", "requiresPermission", "userPermissions", "includes", "Permission", "DeleteFacet", "DeleteCatalog", "getItemName", "item", "name", "shouldRetryItem", "response", "message", "bulkDelete", "dataService", "ids", "retrying", "facet", "deleteFacets", "pipe", "map", "res", "assignFacetsToChannelBulkAction", "createBulkAssignToChannelAction", "UpdateCatalog", "UpdateFacet", "bulkAssignToChannel", "facetIds", "channelIds", "channelId", "assignFacetsToChannel", "removeFacetsFromChannelBulkAction", "createBulkRemoveFromChannelAction", "bulkRemoveFromChannel", "removeFacetsFromChannel", "force", "isErrorResult", "result", "__typename", "undefined", "removeFacetsFromChannelBulkAction2", "label", "getTranslationVars", "injector", "getChannelCodeFromUserStatus", "get", "DataService", "icon", "iconClass", "isVisible", "currentChannelIsNotDefault", "onClick", "selection", "hostComponent", "clearSelection", "modalService", "ModalService", "notificationService", "NotificationService", "activeChannelId$", "client", "userStatus", "mapSingle", "activeChannelId", "showModalAndDelete", "dialog", "title", "translationVars", "count", "length", "size", "body", "buttons", "type", "returnValue", "switchMap", "EMPTY", "res2", "unique", "f", "id", "removedCount", "errors", "errorIds", "i", "push", "join", "result2", "notRemovedCount", "filter", "r", "of", "then", "channelCode", "subscribe", "refresh", "success", "duplicateFacetsBulkAction", "fromComponent", "DuplicateEntityDialogComponent", "locals", "entities", "entityName", "getEntityName", "entity", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "\u0275\u0275pureFunction0", "_c1", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "facet_r1", "id", "\u0275\u0275pipeBind2", "facet_r2", "createdAt", "facet_r3", "updatedAt", "\u0275\u0275pureFunction1", "_c2", "facet_r4", "\u0275\u0275textInterpolate", "name", "facet_r5", "code", "\u0275\u0275template", "FacetListComponent_ng_template_35_vdr_chip_0_Template", "FacetListComponent_ng_template_35_vdr_chip_1_Template", "facet_r6", "isPrivate", "value_r7", "facet_r8", "valueList", "totalItems", "items", "length", "\u0275\u0275elementContainerStart", "ctx_r9", "initialLimit", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r9", "\u0275\u0275nextContext", "item", "\u0275\u0275resetView", "toggleDisplayLimit", "FacetListComponent_ng_template_38_button_4_ng_container_1_Template", "FacetListComponent_ng_template_38_button_4_ng_template_2_Template", "\u0275\u0275templateRefExtractor", "displayLimit", "collapse_r11", "FacetListComponent_ng_template_38_vdr_facet_value_chip_1_Template", "FacetListComponent_ng_template_38_vdr_chip_3_Template", "FacetListComponent_ng_template_38_button_4_Template", "\u0275\u0275pipeBind3", "customField_r12", "sorts", "FACET_LIST_QUERY", "gql", "FACET_WITH_VALUE_LIST_FRAGMENT", "FacetListComponent", "TypedBaseListComponent", "constructor", "dataService", "dataTableListId", "customFields", "getCustomFieldConfig", "filters", "createFilterCollection", "addIdFilter", "addDateFilters", "addFilter", "type", "kind", "label", "toFilterInput", "value", "eq", "addCustomFieldFilters", "connectToRoute", "route", "createSortCollection", "defaultSort", "addSort", "addCustomFieldSorts", "configure", "document", "GetFacetListDocument", "getItems", "data", "facets", "setVariables", "skip", "take", "options", "filter", "__spreadValues", "contains", "searchTermControl", "createFilterInput", "sort", "createSortInput", "facetValueListOptions", "refreshListOnChanges", "valueChanges", "facet", "setLanguage", "client", "setContentLanguage", "subscribe", "\u0275\u0275directiveInject", "DataService", "selectors", "standalone", "features", "\u0275\u0275InheritDefinitionFeature", "decls", "vars", "consts", "template", "rf", "ctx", "$event", "FacetListComponent_a_8_Template", "setPageNumber", "setItemsPerPage", "setVisibleColumns", "FacetListComponent_ng_template_20_Template", "FacetListComponent_ng_template_23_Template", "FacetListComponent_ng_template_26_Template", "FacetListComponent_ng_template_29_Template", "FacetListComponent_ng_template_32_Template", "FacetListComponent_ng_template_35_Template", "FacetListComponent_ng_template_38_Template", "FacetListComponent_vdr_dt2_custom_field_column_39_Template", "availableLanguages$", "contentLanguage$", "_c0", "items$", "itemsPerPage$", "totalItems$", "currentPage$", "selectionManager", "get", "import_shared_utils", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275twoWayListener", "$event", "group_r2", "\u0275\u0275restoreView", "_r1", "$implicit", "i0", "\u0275\u0275twoWayBindingSet", "name", "\u0275\u0275resetView", "\u0275\u0275listener", "optionValueInputComponent_r3", "\u0275\u0275reference", "ctx_r3", "\u0275\u0275nextContext", "handleEnter", "values", "generateVariants", "removeOption", "\u0275\u0275element", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "\u0275\u0275pipeBind1", "\u0275\u0275twoWayProperty", "\u0275\u0275property", "\u0275\u0275textInterpolate1", "location_r6", "id", "_r5", "selectedStockLocationId", "\u0275\u0275template", "GenerateProductVariantsComponent_ng_container_5_vdr_form_field_3_option_3_Template", "stockLocations_r7", "variant_r8", "join", "GenerateProductVariantsComponent_ng_container_5_div_4_tr_15_td_1_Template", "GenerateProductVariantsComponent_ng_container_5_div_4_tr_15_td_2_Template", "\u0275\u0275classProp", "variantFormValues", "value", "enabled", "variants", "length", "currencyCode", "GenerateProductVariantsComponent_ng_container_5_div_4_th_4_Template", "GenerateProductVariantsComponent_ng_container_5_div_4_th_5_Template", "GenerateProductVariantsComponent_ng_container_5_div_4_tr_15_Template", "trackByFn", "\u0275\u0275elementContainerStart", "GenerateProductVariantsComponent_ng_container_5_clr_alert_1_Template", "GenerateProductVariantsComponent_ng_container_5_vdr_form_field_3_Template", "GenerateProductVariantsComponent_ng_container_5_div_4_Template", "DEFAULT_VARIANT_CODE", "GenerateProductVariantsComponent", "constructor", "dataService", "formBuilder", "variantsChange", "EventEmitter", "optionGroups", "ngOnInit", "settings", "getActiveChannel", "single$", "subscribe", "data", "activeChannel", "defaultCurrencyCode", "stockLocations$", "query", "GetStockLocationListDocument", "options", "take", "refetchOnChannelChange", "mapStream", "stockLocations", "items", "pipe", "tap", "onFormChange", "addOption", "push", "index", "setTimeout", "groupNameInputs", "get", "nativeElement", "focus", "filter", "g", "groups", "reduce", "sum", "group", "map", "v", "generateAllCombinations", "forEach", "variant", "formGroup", "nonNullable", "optionValues", "price", "copyFromDefault", "sku", "stock", "valueChanges", "copyValuesToPristine", "event", "optionValueInputComponent", "preventDefault", "stopPropagation", "field", "formControl", "Object", "correspondingFormControl", "pristine", "setValue", "emitEvent", "variantsToCreate", "emit", "og", "stockLocationId", "variantId", "prop", "\u0275\u0275directiveInject", "DataService", "FormBuilder", "selectors", "viewQuery", "rf", "ctx", "ElementRef", "GenerateProductVariantsComponent_div_0_Template", "GenerateProductVariantsComponent_ng_container_5_Template", "import_normalize_string", "import_shared_constants", "import_unique", "\u0275\u0275elementStart", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r1", "ctx_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "setLanguage", "\u0275\u0275elementEnd", "\u0275\u0275property", "\u0275\u0275pipeBind1", "availableLanguages$", "contentLanguage$", "\u0275\u0275text", "\u0275\u0275textInterpolate1", "variant_r3", "id", "\u0275\u0275pipeBind2", "variant_r4", "createdAt", "variant_r5", "updatedAt", "\u0275\u0275element", "asset_r6", "\u0275\u0275sanitizeUrl", "\u0275\u0275template", "ProductVariantListComponent_ng_template_26_img_1_Template", "ProductVariantListComponent_ng_template_26_ng_template_2_Template", "\u0275\u0275templateRefExtractor", "\u0275\u0275advance", "variant_r7", "featuredAsset", "imagePlaceholder_r8", "\u0275\u0275pureFunction2", "_c0", "variant_r9", "productId", "\u0275\u0275textInterpolate", "name", "variant_r10", "sku", "ProductVariantListComponent_ng_template_35_vdr_chip_0_Template", "ProductVariantListComponent_ng_template_35_vdr_chip_1_Template", "variant_r11", "enabled", "variant_r12", "price", "currencyCode", "variant_r13", "priceWithTax", "stockLevel_r14", "stockAllocated", "ProductVariantListComponent_ng_template_44_vdr_chip_0_span_4_Template", "stockLocation", "stockOnHand", "ProductVariantListComponent_ng_template_44_vdr_chip_0_Template", "variant_r15", "stockLevels", "field_r16", "sorts", "ProductVariantListComponent", "TypedBaseListComponent", "constructor", "hideLanguageSelect", "pageLocationId", "customFields", "getCustomFieldConfig", "filters", "createFilterCollection", "addIdFilter", "addDateFilters", "addFilters", "type", "kind", "label", "filterField", "inputType", "addCustomFieldFilters", "connectToRoute", "route", "createSortCollection", "addSorts", "addCustomFieldSorts", "configure", "document", "ProductVariantListQueryDocument", "getItems", "data", "productVariants", "setVariables", "skip", "take", "searchTerm", "searchTermControl", "value", "filterParam", "_and", "filterInput", "createFilterInput", "Object", "keys", "length", "push", "_or", "contains", "eq", "options", "filter", "sort", "createSortInput", "refreshListOnChanges", "valueChanges", "selectors", "inputs", "dataTableId", "standalone", "features", "\u0275\u0275InheritDefinitionFeature", "decls", "vars", "consts", "template", "rf", "ctx", "ProductVariantListComponent_vdr_language_selector_3_Template", "setPageNumber", "setItemsPerPage", "ProductVariantListComponent_ng_template_17_Template", "ProductVariantListComponent_ng_template_20_Template", "ProductVariantListComponent_ng_template_23_Template", "ProductVariantListComponent_ng_template_26_Template", "ProductVariantListComponent_ng_template_29_Template", "ProductVariantListComponent_ng_template_32_Template", "ProductVariantListComponent_ng_template_35_Template", "ProductVariantListComponent_ng_template_38_Template", "ProductVariantListComponent_ng_template_41_Template", "ProductVariantListComponent_ng_template_44_Template", "ProductVariantListComponent_vdr_dt2_custom_field_column_45_Template", "items$", "itemsPerPage$", "totalItems$", "currentPage$", "selectionManager", "get", "\u0275\u0275elementStart", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r2", "ctx_r2", "\u0275\u0275nextContext", "\u0275\u0275resetView", "create", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "detailForm", "invalid", "pristine", "createVariantsConfig", "variants", "length", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "_r4", "save", "assetsChanged", "\u0275\u0275template", "ProductDetailComponent_ng_template_12_button_0_Template", "updatePermissions", "\u0275\u0275element", "get", "\u0275\u0275pureFunction0", "_c2", "\u0275\u0275textInterpolate", "_r6", "channel_r7", "$implicit", "removeFromChannel", "id", "code", "\u0275\u0275elementContainerStart", "ProductDetailComponent_ng_container_22_vdr_card_1_vdr_form_item_2_ng_container_3_vdr_chip_1_Template", "isDefaultChannel", "ProductDetailComponent_ng_container_22_vdr_card_1_vdr_form_item_2_ng_container_3_Template", "_r5", "assignToChannel", "productChannels$", "ProductDetailComponent_ng_container_22_vdr_card_1_vdr_form_item_2_Template", "ProductDetailComponent_ng_container_22_vdr_card_1_Template", "optionGroup_r8", "name", "_c3", "ProductDetailComponent_vdr_card_24_vdr_chip_3_Template", "ProductDetailComponent_vdr_card_24_a_6_Template", "\u0275\u0275pipeBind2", "entity", "optionGroups", "facetValue_r10", "_r9", "removeProductFacetValue", "_r11", "selectProductFacetValue", "entity_r12", "customFields", "$event", "_r13", "_c4", "GET_PRODUCT_DETAIL", "gql", "PRODUCT_DETAIL_FRAGMENT", "ProductDetailComponent", "TypedBaseDetailComponent", "constructor", "productDetailService", "formBuilder", "modalService", "notificationService", "dataService", "changeDetector", "getCustomFieldConfig", "group", "enabled", "Validators", "required", "autoUpdateVariantNames", "slug", "unicodePatternValidator", "description", "facetValueIds", "getCustomFieldsDefaults", "assetChanges", "groups", "stockLocationId", "Permission", "UpdateCatalog", "UpdateProduct", "ngOnInit", "init", "productFacetValues$", "isNew$", "pipe", "switchMap", "isNew", "of", "entity$", "map", "product", "facetValues", "formFacetValueIdChanges$", "valueChanges", "distinctUntilChanged", "ids", "facet", "getFacetValues", "filter", "in", "mapSingle", "items", "shareReplay", "facetValues$", "concat", "take", "p", "channels", "ngOnDestroy", "destroy", "channelCode", "DEFAULT_CHANNEL_CODE", "fromComponent", "AssignProductsToChannelDialogComponent", "size", "locals", "productIds", "currentChannelIds", "c", "subscribe", "channelId", "from", "getChannelCodeFromUserStatus", "dialog", "title", "buttons", "type", "label", "translationVars", "returnValue", "response", "removeProductsFromChannel", "EMPTY", "success", "err", "error", "assignVariantToChannel", "variant", "productVariantIds", "removeVariantFromChannel", "removeVariantsFromChannel", "Object", "values", "updateSlug", "nameValue", "slugControl", "currentTranslation", "findTranslation", "languageCode", "undefined", "currentSlugIsEmpty", "setValue", "normalizeString", "displayFacetValueModal", "facetValueIdsControl", "controls", "currentFacetValueIds", "value", "unique", "markAsDirty", "facetValueId", "ApplyFacetDialogComponent", "closable", "v", "productGroup", "dirty", "newProduct", "getUpdatedProduct", "createdAt", "updatedAt", "featuredAsset", "assets", "translations", "createProductWithVariants", "createProductVariants", "productId", "markAsPristine", "router", "navigate", "relativeTo", "route", "console", "combineLatest", "languageCode$", "mergeMap", "productInput", "variantsInput", "updateProduct", "autoUpdate", "result", "updateSlugAfterSave", "markForCheck", "canDeactivate", "setFormValues", "patchValue", "fv", "setCustomFieldFormValues", "productFormGroup", "updatedProduct", "createUpdatedTranslatable", "translatable", "updatedFields", "customFieldConfig", "defaultTranslation", "__spreadProps", "__spreadValues", "assetIds", "a", "featuredAssetId", "results", "firstResult", "isUpdateMutation", "input", "hasOwnProperty", "emitEvent", "\u0275\u0275directiveInject", "ProductDetailService", "FormBuilder", "ModalService", "NotificationService", "DataService", "ChangeDetectorRef", "selectors", "standalone", "features", "\u0275\u0275InheritDefinitionFeature", "decls", "vars", "consts", "template", "rf", "ctx", "i0", "_r1", "setLanguage", "ProductDetailComponent_button_10_Template", "ProductDetailComponent_ng_template_12_Template", "\u0275\u0275templateRefExtractor", "ProductDetailComponent_clr_toggle_wrapper_21_Template", "ProductDetailComponent_ng_container_22_Template", "ProductDetailComponent_vdr_card_24_Template", "ProductDetailComponent_vdr_facet_value_chip_28_Template", "ProductDetailComponent_button_31_Template", "ProductDetailComponent_vdr_card_32_Template", "target", "ProductDetailComponent_div_43_Template", "ProductDetailComponent_vdr_card_55_Template", "ProductDetailComponent_div_63_Template", "ProductDetailComponent_ng_template_65_Template", "ProductDetailComponent_div_67_Template", "availableLanguages$", "updateButton_r14", "tmp_18_0", "_c0", "\u0275\u0275pureFunction1", "_c1", "variantList_r15", "import_unique", "deleteProductsBulkAction", "location", "label", "icon", "iconClass", "requiresPermission", "userPermissions", "includes", "Permission", "DeleteProduct", "DeleteCatalog", "onClick", "injector", "selection", "hostComponent", "clearSelection", "modalService", "get", "ModalService", "dataService", "DataService", "notificationService", "NotificationService", "dialog", "title", "translationVars", "count", "length", "buttons", "type", "returnValue", "pipe", "switchMap", "response", "product", "deleteProducts", "unique", "map", "p", "id", "EMPTY", "subscribe", "result", "deleted", "errors", "item", "DeletionResult", "DELETED", "message", "push", "success", "error", "join", "refresh", "assignProductsToChannelBulkAction", "UpdateCatalog", "UpdateProduct", "isVisible", "isMultiChannel", "fromComponent", "AssignProductsToChannelDialogComponent", "size", "locals", "productIds", "currentChannelIds", "removeProductsFromChannelBulkAction", "createBulkRemoveFromChannelAction", "getItemName", "name", "bulkRemoveFromChannel", "channelId", "removeProductsFromChannel", "res", "assignFacetValuesToProductsBulkAction", "mode", "ids", "BulkAddFacetValuesDialogComponent", "entity", "duplicateProductsBulkAction", "DuplicateEntityDialogComponent", "entities", "entityName", "getEntityName", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275property", "\u0275\u0275pureFunction0", "_c1", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind1", "product_r1", "id", "\u0275\u0275pipeBind2", "product_r2", "createdAt", "product_r3", "updatedAt", "asset_r4", "\u0275\u0275sanitizeUrl", "\u0275\u0275template", "ProductListComponent_ng_template_33_img_1_Template", "ProductListComponent_ng_template_33_ng_template_2_Template", "\u0275\u0275templateRefExtractor", "product_r5", "featuredAsset", "imagePlaceholder_r6", "\u0275\u0275pureFunction1", "_c2", "product_r7", "\u0275\u0275textInterpolate", "name", "product_r8", "slug", "ProductListComponent_ng_template_42_vdr_chip_0_Template", "ProductListComponent_ng_template_42_vdr_chip_1_Template", "product_r9", "enabled", "_c3", "product_r10", "variantList", "totalItems", "customField_r11", "ctx_r11", "sorts", "ProductListComponent", "TypedBaseListComponent", "constructor", "dataService", "modalService", "notificationService", "jobQueueService", "pendingSearchIndexUpdates", "dataTableListId", "pageLocationId", "customFields", "getCustomFieldConfig", "filters", "createFilterCollection", "addIdFilter", "addDateFilters", "addFilters", "type", "kind", "label", "filterField", "addFilter", "component", "FacetValueFormInputComponent", "serializeValue", "value", "map", "v", "join", "deserializeValue", "split", "getLabel", "length", "lastValueFrom", "facet", "getFacetValues", "filter", "in", "mapSingle", "facetValues", "items", "fv", "toFilterInput", "facetValueId", "addCustomFieldFilters", "connectToRoute", "route", "createSortCollection", "defaultSort", "addSorts", "addCustomFieldSorts", "configure", "document", "ProductListQueryDocument", "getItems", "data", "products", "setVariables", "skip", "take", "searchTerm", "searchTermControl", "filterInput", "createFilterInput", "contains", "sku", "options", "__spreadValues", "filterOperator", "LogicalOperator", "OR", "AND", "sort", "createSortInput", "refreshListOnChanges", "valueChanges", "rebuildSearchIndex", "product", "reindex", "subscribe", "info", "addJob", "job", "state", "JobState", "COMPLETED", "time", "Intl", "NumberFormat", "format", "duration", "success", "count", "result", "indexedItemCount", "refresh", "error", "deleteProduct", "productId", "dialog", "title", "buttons", "returnValue", "pipe", "switchMap", "response", "EMPTY", "delay", "entity", "err", "\u0275\u0275directiveInject", "DataService", "ModalService", "NotificationService", "JobQueueService", "selectors", "standalone", "features", "\u0275\u0275InheritDefinitionFeature", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275listener", "$event", "setLanguage", "ProductListComponent_a_8_Template", "setPageNumber", "setItemsPerPage", "setVisibleColumns", "ProductListComponent_ng_template_24_Template", "ProductListComponent_ng_template_27_Template", "ProductListComponent_ng_template_30_Template", "ProductListComponent_ng_template_33_Template", "ProductListComponent_ng_template_36_Template", "ProductListComponent_ng_template_39_Template", "ProductListComponent_ng_template_42_Template", "ProductListComponent_ng_template_45_Template", "ProductListComponent_vdr_dt2_custom_field_column_46_Template", "availableLanguages$", "contentLanguage$", "_c0", "items$", "itemsPerPage$", "totalItems$", "currentPage$", "selectionManager", "get", "import_pick", "import_unique", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind2", "\u0275\u0275pureFunction1", "_c0", "\u0275\u0275pipeBind1", "ctx_r0", "taxRate$", "\u0275\u0275pureFunction2", "_c1", "grossPrice$", "currencyCode", "VariantPriceDetailComponent", "constructor", "dataService", "priceChange$", "BehaviorSubject", "taxCategoryIdChange$", "ngOnInit", "taxRates$", "settings", "getTaxRatesSimple", "mapStream", "data", "taxRates", "items", "activeChannel$", "getActiveChannel", "refetchOnChannelChange", "activeChannel", "combineLatest", "pipe", "map", "channel", "taxCategoryId", "defaultTaxZone", "applicableRate", "find", "taxRate", "zone", "id", "category", "value", "price", "Math", "round", "ngOnChanges", "changes", "next", "currentValue", "\u0275\u0275directiveInject", "DataService", "selectors", "inputs", "priceIncludesTax", "standalone", "features", "\u0275\u0275NgOnChangesFeature", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "VariantPriceDetailComponent_div_3_Template", "VariantPriceDetailComponent_div_4_Template", "\u0275\u0275textInterpolate", "\u0275\u0275property", "\u0275\u0275elementStart", "\u0275\u0275element", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275property", "\u0275\u0275pipeBind1", "\u0275\u0275textInterpolate1", "\u0275\u0275pipeBind2", "ctx_r0", "variant", "price", "currencyCode", "priceWithTax", "VariantPriceStrategyDetailComponent", "calculatedPriceDiffersFromInputPrice", "defaultPrice", "prices", "find", "p", "channelDefaultCurrencyCode", "channelPriceIncludesTax", "selectors", "inputs", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "VariantPriceStrategyDetailComponent_div_0_Template", "\u0275\u0275text", "\u0275\u0275textInterpolate2", "item_r3", "name", "sku", "\u0275\u0275elementStart", "\u0275\u0275twoWayListener", "$event", "\u0275\u0275restoreView", "_r1", "ctx_r1", "\u0275\u0275nextContext", "i0", "\u0275\u0275twoWayBindingSet", "selectedVariantId", "\u0275\u0275resetView", "\u0275\u0275listener", "onSelect", "\u0275\u0275template", "ProductVariantQuickJumpComponent_ng_select_0_ng_template_3_Template", "\u0275\u0275elementEnd", "\u0275\u0275property", "\u0275\u0275pipeBind1", "variants$", "\u0275\u0275twoWayProperty", "searchFn", "GET_PRODUCT_VARIANTS_QUICK_JUMP", "gql", "ProductVariantQuickJumpComponent", "constructor", "dataService", "router", "term", "item", "toLowerCase", "includes", "ngOnInit", "query", "GetProductVariantsQuickJumpDocument", "id", "productId", "mapStream", "data", "product", "variants", "navigate", "then", "undefined", "\u0275\u0275directiveInject", "DataService", "Router", "selectors", "inputs", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "ProductVariantQuickJumpComponent_ng_select_0_Template", "tmp_0_0", "length", "\u0275\u0275elementStart", "\u0275\u0275listener", "$event", "\u0275\u0275restoreView", "_r1", "ctx_r1", "\u0275\u0275nextContext", "\u0275\u0275resetView", "setLanguage", "\u0275\u0275elementEnd", "\u0275\u0275property", "\u0275\u0275pipeBind1", "isNew$", "availableLanguages_r3", "languageCode$", "\u0275\u0275elementContainerStart", "\u0275\u0275template", "ProductVariantDetailComponent_ng_container_4_vdr_language_selector_1_Template", "\u0275\u0275advance", "length", "_r4", "save", "\u0275\u0275text", "detailForm", "invalid", "stockLevelsForm", "pricesForm", "pristine", "assetsChanged", "\u0275\u0275textInterpolate1", "\u0275\u0275element", "get", "\u0275\u0275pureFunction0", "_c1", "\u0275\u0275textInterpolate", "optionGroupCode", "option_r6", "groupId", "optionName", "_c2", "ProductVariantDetailComponent_form_11_vdr_card_7_vdr_chip_3_Template", "ProductVariantDetailComponent_form_11_vdr_card_7_a_6_Template", "\u0275\u0275pipeBind2", "variant_r7", "options", "updatePermissions", "facetValue_r9", "_r8", "$implicit", "removeFacetValue", "id", "_r10", "selectFacetValue", "entity_r11", "customFields", "taxCategory_r12", "name", "_r13", "price_r14", "toggleDeletePrice", "value", "currencyCode", "channelDefaultCurrencyCode", "customPriceFields", "_c3", "ProductVariantDetailComponent_form_11_div_43_div_7_Template", "ProductVariantDetailComponent_form_11_div_43_div_10_Template", "undefined", "\u0275\u0275classProp", "delete", "controls", "price", "channelPriceIncludesTax$", "currencyCode_r16", "_r15", "addPriceInCurrency", "ProductVariantDetailComponent_form_11_ng_container_46_div_1_button_8_Template", "unusedCurrencyCodes_r17", "ProductVariantDetailComponent_form_11_ng_container_46_div_1_Template", "stockLevel_r18", "tmp_5_0", "tmp_6_0", "tmp_7_0", "tmp_9_0", "tmp_10_0", "stockLocation_r20", "_r19", "addStockLocation", "ProductVariantDetailComponent_form_11_ng_container_77_div_1_button_8_Template", "unusedStockLocations_r21", "ProductVariantDetailComponent_form_11_ng_container_77_div_1_Template", "ProductVariantDetailComponent_form_11_clr_toggle_wrapper_6_Template", "ProductVariantDetailComponent_form_11_vdr_card_7_Template", "ProductVariantDetailComponent_form_11_vdr_facet_value_chip_11_Template", "ProductVariantDetailComponent_form_11_button_14_Template", "ProductVariantDetailComponent_form_11_vdr_page_entity_info_16_Template", "ProductVariantDetailComponent_form_11_vdr_card_30_Template", "_r5", "assetChanges", "ProductVariantDetailComponent_form_11_option_41_Template", "ProductVariantDetailComponent_form_11_div_43_Template", "ProductVariantDetailComponent_form_11_ng_container_46_Template", "ProductVariantDetailComponent_form_11_div_76_Template", "ProductVariantDetailComponent_form_11_ng_container_77_Template", "_c0", "facetValues$", "entity$", "assets", "featuredAsset", "taxCategories$", "unusedCurrencyCodes$", "GlobalFlag", "TRUE", "FALSE", "INHERIT", "tmp_42_0", "inventoryIsNotTracked", "\u0275\u0275textInterpolate2", "globalOutOfStockThreshold", "unusedStockLocation$", "ProductVariantDetailComponent", "TypedBaseDetailComponent", "constructor", "productDetailService", "formBuilder", "modalService", "notificationService", "dataService", "changeDetector", "Permission", "UpdateCatalog", "UpdateProduct", "getCustomFieldConfig", "customOptionFields", "group", "enabled", "sku", "taxCategoryId", "stockOnHand", "useGlobalOutOfStockThreshold", "outOfStockThreshold", "trackInventory", "facetValueIds", "getCustomFieldsDefaults", "array", "ngOnInit", "init", "settings", "getGlobalSettings", "single$", "subscribe", "globalSettings", "globalTrackInventory", "markForCheck", "result$", "pipe", "map", "data", "taxCategories", "items", "availableCurrencyCodes$", "tap", "activeChannel", "defaultCurrencyCode", "availableCurrencyCodes", "combineLatest", "valueChanges", "prices", "currencyCodes", "filter", "code", "p", "includes", "stockLocations$", "stockLocations", "entity", "usedIds", "stockLevels", "l", "stockLocation", "getActiveChannel", "refetchOnChannelChange", "mapStream", "pricesIncludeTax", "shareReplay", "stockLevels$", "variant", "facetValues", "formFacetValueIdChanges$", "skip", "distinctUntilChanged", "switchMap", "ids", "facet", "getFacetValues", "in", "mapSingle", "concat", "take", "switchMapTo", "ngOnDestroy", "destroy", "push", "deleteFormControl", "setValue", "markAsDirty", "stockLocationId", "stockLocationName", "stockAllocated", "mergeMap", "languageCode", "input", "pick", "getUpdatedVariant", "dirty", "control", "mutate", "ProductVariantUpdateMutationDocument", "result", "markAsPristine", "success", "err", "error", "Object", "values", "formGroup", "optionGroupId", "product", "optionGroups", "find", "g", "option", "translations", "t", "facetValueId", "facetValueIdsControl", "currentFacetValueIds", "displayFacetValueModal", "unique", "fromComponent", "ApplyFacetDialogComponent", "size", "closable", "v", "setFormValues", "variantTranslation", "findTranslation", "fv", "patchValue", "taxCategory", "clear", "stockLevel", "priceForm", "setCustomFieldFormValues", "variantFormGroup", "updatedProduct", "createUpdatedTranslatable", "translatable", "updatedFields", "customFieldConfig", "defaultTranslation", "__spreadProps", "__spreadValues", "assetIds", "a", "featuredAssetId", "\u0275\u0275directiveInject", "ProductDetailService", "FormBuilder", "ModalService", "NotificationService", "DataService", "ChangeDetectorRef", "selectors", "standalone", "features", "\u0275\u0275InheritDefinitionFeature", "decls", "vars", "consts", "template", "rf", "ctx", "ProductVariantDetailComponent_ng_container_4_Template", "ProductVariantDetailComponent_button_9_Template", "ProductVariantDetailComponent_form_11_Template", "availableLanguages$", "import_unique", "assignProductVariantsToChannelBulkAction", "location", "label", "icon", "requiresPermission", "userPermissions", "includes", "Permission", "UpdateCatalog", "UpdateProduct", "isVisible", "injector", "isMultiChannel", "get", "DataService", "onClick", "selection", "clearSelection", "ModalService", "fromComponent", "AssignProductsToChannelDialogComponent", "size", "locals", "productVariantIds", "unique", "map", "p", "id", "currentChannelIds", "subscribe", "result", "removeProductVariantsFromChannelBulkAction", "createBulkRemoveFromChannelAction", "getItemName", "item", "name", "bulkRemoveFromChannel", "dataService", "ids", "channelId", "product", "removeVariantsFromChannel", "pipe", "res", "removeProductVariantsFromChannel", "deleteProductVariantsBulkAction", "iconClass", "DeleteProduct", "DeleteCatalog", "hostComponent", "modalService", "notificationService", "NotificationService", "dialog", "title", "translationVars", "count", "length", "buttons", "type", "returnValue", "switchMap", "response", "deleteProductVariants", "EMPTY", "deleted", "errors", "DeletionResult", "DELETED", "message", "push", "success", "error", "join", "refresh", "assignFacetValuesToProductVariantsBulkAction", "mode", "BulkAddFacetValuesDialogComponent", "entity", "\u0275\u0275elementContainerStart", "\u0275\u0275elementStart", "\u0275\u0275text", "\u0275\u0275elementEnd", "\u0275\u0275advance", "\u0275\u0275textInterpolate", "optionGroup_r1", "name", "\u0275\u0275element", "\u0275\u0275property", "\u0275\u0275pipeBind2", "featuredAsset_r2", "\u0275\u0275sanitizeUrl", "\u0275\u0275styleProp", "\u0275\u0275pipeBind1", "ctx_r4", "optionGroupName", "option_r3", "groupId", "\u0275\u0275classProp", "formGroup_r4", "get", "value", "\u0275\u0275textInterpolate1", "variant_r6", "currencyCode", "updatePermission", "\u0275\u0275template", "ProductVariantsTableComponent_tr_22_ng_container_1_img_4_Template", "ProductVariantsTableComponent_tr_22_ng_container_1_ng_template_5_Template", "\u0275\u0275templateRefExtractor", "ProductVariantsTableComponent_tr_22_ng_container_1_ng_container_17_Template", "ProductVariantsTableComponent_tr_22_ng_container_1_vdr_currency_input_21_Template", "ProductVariantsTableComponent_tr_22_ng_container_1_vdr_currency_input_22_Template", "getFeaturedAsset", "placeholder_r7", "options", "channelPriceIncludesTax", "ProductVariantsTableComponent_tr_22_ng_container_1_Template", "formGroupMap", "id", "ProductVariantsTableComponent", "constructor", "changeDetector", "Map", "Permission", "UpdateCatalog", "UpdateProduct", "ngOnInit", "subscription", "formArray", "valueChanges", "pipe", "map", "length", "debounceTime", "distinctUntilChanged", "subscribe", "buildFormGroupMap", "ngOnDestroy", "unsubscribe", "trackByFn", "index", "item", "variant", "pendingAssetChanges", "featuredAsset", "optionGroupId", "group", "optionGroups", "find", "g", "clear", "controlGroup", "controls", "set", "markForCheck", "\u0275\u0275directiveInject", "ChangeDetectorRef", "selectors", "inputs", "variants", "paginationConfig", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "ProductVariantsTableComponent_ng_container_10_Template", "ProductVariantsTableComponent_tr_22_Template", "import_normalize_string", "\u0275\u0275text", "\u0275\u0275textInterpolate", "\u0275\u0275pipeBind1", "\u0275\u0275elementStart", "\u0275\u0275elementEnd", "\u0275\u0275element", "\u0275\u0275advance", "\u0275\u0275property", "ctx_r1", "customFields", "customFieldsForm", "\u0275\u0275pureFunction0", "_c0", "\u0275\u0275listener", "\u0275\u0275restoreView", "_r3", "\u0275\u0275nextContext", "\u0275\u0275resetView", "cancel", "update", "nameInput_r4", "invalid", "codeInput_r5", "pristine", "\u0275\u0275textInterpolate1", "UpdateProductOptionDialogComponent", "constructor", "updateVariantName", "codeInputTouched", "ngOnInit", "currentTranslation", "productOption", "translations", "find", "t", "languageCode", "activeLanguage", "name", "code", "UntypedFormGroup", "cfCurrentTranslation", "fieldDef", "key", "value", "type", "addControl", "UntypedFormControl", "result", "createUpdatedTranslatable", "translatable", "updatedFields", "customFieldConfig", "defaultTranslation", "resolveWith", "__spreadProps", "__spreadValues", "autoUpdate", "updateCode", "nameValue", "normalizeString", "selectors", "standalone", "decls", "vars", "consts", "template", "rf", "ctx", "\u0275\u0275template", "UpdateProductOptionDialogComponent_ng_template_0_Template", "\u0275\u0275twoWayListener", "$event", "i0", "_r1", "\u0275\u0275twoWayBindingSet", "target", "UpdateProductOptionDialogComponent_section_14_Template", "UpdateProductOptionDialogComponent_ng_template_15_Template", "\u0275\u0275twoWayProperty", "length", "CatalogModule", "hasRegisteredTabsAndBulkActions", "constructor", "bulkActionRegistryService", "pageService", "registerBulkAction", "assignFacetValuesToProductsBulkAction", "assignProductsToChannelBulkAction", "duplicateProductsBulkAction", "removeProductsFromChannelBulkAction", "deleteProductsBulkAction", "assignFacetValuesToProductVariantsBulkAction", "assignProductVariantsToChannelBulkAction", "removeProductVariantsFromChannelBulkAction", "deleteProductVariantsBulkAction", "assignFacetsToChannelBulkAction", "duplicateFacetsBulkAction", "removeFacetsFromChannelBulkAction", "deleteFacetsBulkAction", "moveCollectionsBulkAction", "assignCollectionsToChannelBulkAction", "duplicateCollectionsBulkAction", "removeCollectionsFromChannelBulkAction", "deleteCollectionsBulkAction", "registerPageTab", "priority", "location", "tab", "route", "component", "ProductListComponent", "detailComponentWithResolver", "ProductDetailComponent", "query", "GetProductDetailDocument", "entityKey", "getBreadcrumbs", "entity", "label", "name", "link", "id", "ProductVariantListComponent", "ProductVariantDetailComponent", "GetProductVariantDetailDocument", "product", "sku", "FacetListComponent", "FacetDetailComponent", "GetFacetDetailDocument", "variables", "facetValueListOptions", "take", "skip", "sort", "createdAt", "SortOrder", "DESC", "CollectionListComponent", "CollectionDetailComponent", "CollectionDetailQueryDocument", "AssetListComponent", "AssetDetailComponent", "AssetDetailQueryDocument", "\u0275\u0275inject", "BulkActionRegistryService", "PageService", "provide", "ROUTES", "useFactory", "createRoutes", "multi", "deps", "imports", "SharedModule", "RouterModule", "forChild", "PRODUCT_LIST_QUERY_PRODUCT_FRAGMENT", "gql", "PRODUCT_LIST_QUERY", "PRODUCT_VARIANT_DETAIL_QUERY_PRODUCT_VARIANT_FRAGMENT", "gql", "PRODUCT_VARIANT_PRICE_FRAGMENT", "PRODUCT_VARIANT_DETAIL_QUERY", "PRODUCT_VARIANT_UPDATE_MUTATION", "PRODUCT_VARIANT_LIST_QUERY_PRODUCT_VARIANT_FRAGMENT", "gql", "ASSET_FRAGMENT", "PRODUCT_VARIANT_LIST_QUERY"]
7
- }